Autocorrelation of Returns
10 min read
Detect non-random patterns in your trade sequence — do wins cluster, or alternate with losses?
10 min read
Detect non-random patterns in your trade sequence — do wins cluster, or alternate with losses?
Autocorrelation measures whether your trade outcomes are statistically related to previous outcomes. In plain terms: do your wins tend to cluster together? Do losses follow losses? Or are your results truly independent?
Autocorrelation (also called serial correlation) at lag k is the Pearson correlation between a sequence of values and the same sequence shifted by k positions.
Formula (Lag-1 Autocorrelation):
AC(1) = Σ[(Rᵢ - R̄)(Rᵢ₋₁ - R̄)] / Σ[(Rᵢ - R̄)²]
Where:
This gives a value between -1 and +1.
| AC(1) Value | Pattern | Implication |
|---|---|---|
| +0.3 to +1.0 | Strong positive | Wins follow wins, losses follow losses (streaks) |
| +0.1 to +0.3 | Mild positive | Slight clustering tendency |
| -0.1 to +0.1 | Near zero | Results are approximately independent |
| -0.3 to -0.1 | Mild negative | Alternating pattern (win-loss-win-loss) |
| -1.0 to -0.3 | Strong negative | Strong alternation |
If your returns have AC(1) ≈ 0, each trade is effectively independent of the previous one. This is the assumption behind most position sizing models — Kelly criterion, fixed fractional, etc.
If AC(1) is significantly positive (say > +0.2), your strategy exhibits momentum in returns — winning streaks and losing streaks are longer than random chance would predict. This could be because:
If AC(1) is significantly negative (say < -0.2), your returns tend to alternate. This could mean:
If returns are positively autocorrelated, you can increase size during winning streaks and decrease during losing streaks — a momentum-based sizing approach. If returns are negatively autocorrelated, the opposite might work.
But if returns are near zero autocorrelation, any streak-based sizing adjustment is just noise-fitting.
Standard risk-of-ruin formulas assume independent trades (AC ≈ 0). If your returns are positively autocorrelated, the actual risk of ruin is higher than the formula suggests, because losing streaks are longer than random.
If you run Monte Carlo simulations by randomly shuffling trade results, you destroy any autocorrelation structure. If the original returns had significant autocorrelation, the Monte Carlo results will underestimate tail risks.
To fix this, use block bootstrapping — sampling contiguous blocks of trades rather than individual trades — to preserve the serial correlation structure.
A strategy with near-zero autocorrelation is more robust because its performance does not depend on regime persistence. High autocorrelation strategies are more fragile — they depend on market conditions staying favorable long enough to exploit streaks.
Lag-1 autocorrelation is the most common, but checking higher lags can reveal deeper patterns:
Plot the autocorrelation function (ACF) for lags 1 through 20. If all values are within the 95% confidence bounds (approximately ±2/√N), there is no significant serial correlation at any lag.
Often, autocorrelation in trade results is not a market phenomenon — it is a trader phenomenon. Confidence after wins leads to overtrading (extending winning streaks). Fear after losses leads to hesitation (extending losing streaks).
If you find significant autocorrelation, the first question should be: "Is this the market, or is this me?"
The Monte Carlo simulator below shuffles trade ordering randomly. If your actual returns show significant autocorrelation, the random shuffling will underestimate tail risk — some paths below may look safer than your real experience.
Autocorrelation is a diagnostic metric, not a performance metric. It tells you nothing about how much you made — only about the structure of your results. But that structure has profound implications for risk management, position sizing, and the validity of your backtesting methodology. Ignore it, and your risk models may be quietly lying to you.