Skip to content
All library documents

Compounding Returns and Measuring a Trading System’s Performance

Article Quant Q&A · Author: Milktrader

Summary

The discussion contrasts trade-based expectation with analysis of a daily return series for a system that usually holds either a long or short position. Trade-based expectation combines average wins and losses with their frequencies, but using daily observations raises a different question: returns compound across time, so simple returns cannot be treated as additive. The accepted answer illustrates compounding by multiplying each period’s growth factor and taking a geometric mean to express an equivalent average daily return.

A second answer uses a sequence of gains and a loss to show that arithmetic averaging or summing simple returns can suggest a positive result even when compounding leaves less capital at the end. It then clarifies that log returns add across periods and recover the same compounded outcome when converted back. The examples highlight the distinction between cumulative performance and an expected return estimate. They do not establish that daily returns alone determine a trading system’s expected value; position changes, return frequency, and the definition of the statistic matter, and the discussion itself includes a correction to an earlier claim.

Key ideas

  • Simple returns compound by multiplying their growth factors across periods.
  • The geometric mean expresses the compounded growth rate as an equivalent per-period return.
  • Adding simple returns can misrepresent cumulative performance.
  • Log returns are additive across periods, and their sum maps back to compounded growth.
  • The appropriate performance measure depends on whether the goal is cumulative growth or expectation.

Tags

Full text
# How does return-based analysis calculate expected return of a trading system?


# How does return-based analysis calculate expected return of a trading system?












Suppose you have a trading system that is never flat, but either long or short the market. You have four years of performance. During that period, your system changed its position 10 times. So you have 10 trades from which to calculate expected return. Assume you always traded the same lot size. In a transaction-based analysis, you would compute your expected return based on the average win amount, average loss amount, percentage of trades that were winners and percentage of trades that were losers.

Assume the system had 5 winning trades and 5 losing trades. The average win was 100 dollars and the average loss was 50 dollars. You don't need the expected return formula to figure out if there is a positive expectation to this system.

```
Expected Return = (ave win * win percent) - (ave loss * lose percent)
```

Plug in our values we find:

```
Expected Return = (100 * .5) - (50 * .5) = 25 (dollars)
```

Alright, wonderful. Too bad we only have 10 trades though. Curiously, if you watch daily returns versus trade returns, you have 1008 observations (252*4). Does returns-based analysis calculate average positive daily returns, average negative daily returns and win/loss percentages in a manner similar to the transaction-based analysis? The `Expected Return` would not be a dollar value obviously, but a daily return value. So instead of 25 dollars, you'd get 0.0023423 for example. (NOTE: 0.0023423 is a completely made-up number in this example)

EDIT:

To the question of what frequency we calculate returns. Let's assume the trade system decides what position to be in tomorrow based on a signal given at the end of the current trading day. So our system calculates its signal daily, ergo we rationally only consider daily returns.

EDIT #2: Our system generates a signal every day, but in our example that signal has only changed 10 times during the course of 4 years. The signal can be either a 1 (long) or -1 (short). If we were previously short (-1) and the signal triggered a change to long (1), we would switch our short position to a long position. If the next day the signal triggered long, we would maintain our current position.

## Answer by glyphard (score 1, accepted)

https://quant.stackexchange.com/a/1000

You can't add returns. You must multiply them. In your example above where daily returns are 25%, 25%, and -40%

To compute expected return from a return series, simply use this formula: return = product( 1+return);

in the case of you example this yields: return = (1.25 * 1.25 * .6) = .9375

To get the expected daily return use the geometric mean: expected return = (1.25 * 1.25 * .6)^(1/3) -1 = -2.13%

http://en.wikipedia.org/wiki/Geometric_mean

## Answer by Milktrader (score 2)

https://quant.stackexchange.com/a/1010

Returns-based analysis cannot calculate the expected return of a trading system. It yields nonsensical results and is not suited to this particular calculation.

Consider a game where every time you play, you win 25% twice and lose 40% once. There are basically three permutations of this game. Represented in R vectors:

```
first  <- c(.25, .25, -.4)
second <- c(-.4, .25, .25)
third  <- c(.25, -.4, .25)
```

Here is a simple function that takes each sequence individually and returns what's left from your stack of 100 chips.

```
game <- function(x){

start <- 100

for(i in 1:NROW(x))

start <- start + start*x[i]

return(start)   
}
```

Try it yourself and you will see that each time, the result is `93.75`. You lose every time. If you calculate the expected return in the canonical manner, you get the following:

```
Expected Return = (.25 * .33) + (.25 * .33) + (-.40 * .33) = 0.033
```

This is a positive value for a game in which you cannot win. If you sum returns, you get the following:

```
Sum Returns = .25 + .25 + (-.40) = .10
```

Again, a positive value for a game in which you always lose.

If you analyze your expected return using transaction-based analysis as given in the original question, you get the same result each time. The answer comes to `-2.0625`. A negative expectation that will keep you clear from playing this game.

UPDATE: this answer was based on the false assumption that you can add simple returns, and of course you can only add log returns.

```
Simple Returns = 1.25 * 1.25 * .6 = .9375

Log Returns = log(1.25) + log(1.25) + log(.6) =  -0.06453852
antilog of sum = exp( -0.06453852) = .9375
```

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.