Some Tricks for Choosing Investment Performance Measures

In daily conversations about investing, two of the most common performance metrics are earnings and ROI.

To be precise:

The advantage of using ROI instead of raw earnings is that it allows us to compare investments of very different sizes on a fair basis. That said, the earnings number is still informative, because ROI is not independent of investment size: it is usually much harder to achieve a high ROI on a very large investment than on a small one.

The Asymmetry Problem of ROI

Besides the potential diminishing pattern with investment size, ROI has another issue: its values reflect gains and losses asymmetrically.

A typical example is comparing a +100% ROI with a −100% ROI. A +100% ROI doubles your equity, but a −100% ROI completely obliterates your wealth. The magnitudes look symmetric as percentages, but the economic impact is very different.

A multiplicative version, \(Equity_t / Equity_0\), can help mitigate this asymmetry by focusing on the wealth ratio instead of percentage points. However, when we need to aggregate the performance of multiple investments, multiplicative thinking is less intuitive and requires more cognitive effort.

This is why people prefer a logarithmic measure, which is additive over time and across trades. Let’s call this logarithmic measure logr:

\[ \text{logr}_t = \log\left(\frac{Equity_t}{Equity_0}\right) = \log(1 + ROI_t). \]

Non-Uniform Investment Horizons and Cash Flows

Another annoying issue in performance measurement is non-unified investment horizons, which arise when we add capital or pay out cash dividends during the investment period.

When part of the initial investment is added later, or part of the investment is withdrawn earlier, we can interpret the situation as a combination of different investments with different horizons. If the fair value of the investment is not observable at the time of these cash flows (for example, in a construction project), calculating project ROI can become tricky.

For traded securities, however, the fair value is always observable on the market. In that case, we can use the logr framework to evaluate performance. The problem then shifts to the equity curve, which becomes discontinuous at the points where cash is added or withdrawn:

  • When new capital is injected, equity jumps up for reasons unrelated to performance.
  • When cash dividends are paid out and not reinvested, equity drops even if the underlying asset price does not change.

A reasonable solution is to rescale the equity at these discontinuity points so that it is consistent with the previous path. This adjustment attempts to remove the impact of external cash flows and isolate pure investment performance.

  • For stepping investments (adding capital), we scale back the equity series at the jump so that the path remains continuous.
  • For cash dividends (or bond coupon payments), if we also scale the equity, it becomes equivalent to reinvesting those cash flows back into the portfolio.

If the cash flows are not reinvested into the same portfolio, we must make an assumption about how that capital is invested elsewhere. A common and reasonable assumption is to invest it at a risk-free rate.

From Equity Path to Vectorized Returns

Everything above is described from the perspective of following the equity path of a portfolio over time. This is intuitive and straightforward, but from a computing perspective it usually requires a loop.

For some quantitative tools, especially in high-frequency backtesting, it can be more efficient to rely on pure vectorized operations. In that case, we often start from price vectors (or OHLC data) and derive a vector of log returns.

At this point, we encounter another subtle issue: how to calculate log returns for short positions.

For a long position, the log return is simply:

\[ \log\left(\frac{p_t}{p_0}\right). \]

For a short position, however, the situation is more complicated. We cannot simply take

\[ \log\left(\frac{p_0}{p_t}\right) \quad \text{or} \quad -\log\left(\frac{p_t}{p_0}\right) \]

and claim that this is the correct logr for the short.

For a typical short position (at least for a perpetual futures contract), you are effectively borrowing the security with a 100% margin deposit at the current market price. Under this setup, the equity change of a short position is driven by \((p_0 - p_t)/p_0\). The corresponding log measure is:

\[ \text{logr}_\text{short} = \log\bigl(1 + (p_0 - p_t)/p_0\bigr). \]

This formula does not translate as neatly into a simple vectorized ratio of \(p_t / p_0\) in the same way as the long position. Implementing it correctly in a fully vectorized way (without loops or stateful tracking of margin and equity) is less straightforward.

In practice, a vectorized approximation using \(-log(p_t/p_0)\) can be a fast and reasonably useful estimate of short-performance in backtesting, as long as we understand its limitations and the assumptions behind it.


This note is not intended to provide a universal “best” measure, but to highlight some practical tricks and caveats when choosing metrics to evaluate investment performance, especially when we care about:

  • comparability across different investment sizes,
  • handling of intermediate cash flows,
  • additivity and aggregation properties, and
  • the correct treatment (or approximation) of short positions.