RSI on BTC-USD

Walk-forward analysis · ONE_HOUR · 10 windows · parameters selected on sharpe

Marginal at best

Marginal at best: sharpe degrades by 1.12 from in-sample to out-of-sample, which is the signature of a curve-fitted parameter search.

Mean OOS return -2.16%
Buy & hold -6.25%
Excess +4.09%
Beat benchmark 8/10
IS→OOS degradation 1.122

Excess return per window

+12 0 -10 Window 1: +11.23pp vs buy & holdWindow 2: -0.53pp vs buy & holdWindow 3: +8.78pp vs buy & holdWindow 4: +5.25pp vs buy & holdWindow 5: +3.56pp vs buy & holdWindow 6: -9.57pp vs buy & holdWindow 7: +2.11pp vs buy & holdWindow 8: +5.34pp vs buy & holdWindow 9: +11.51pp vs buy & holdWindow 10: +3.21pp vs buy & hold 12345678910

Out-of-sample return minus buy-and-hold over the same period. Bars below the line are windows where simply holding the asset would have done better. Beating zero is not the bar; beating the benchmark is.

In-sample vs out-of-sample

Window 1: in-sample 2.08, out-of-sample 1.64Window 2: in-sample 0.57, out-of-sample 0.00Window 3: in-sample 0.00, out-of-sample -2.51Window 4: in-sample 0.00, out-of-sample 2.36Window 5: in-sample 0.00, out-of-sample 0.80Window 6: in-sample 1.26, out-of-sample -0.92Window 7: in-sample 0.95, out-of-sample -9.88Window 8: in-sample -0.75, out-of-sample -2.30Window 9: in-sample -3.07, out-of-sample 0.00Window 10: in-sample 0.00, out-of-sample 0.61 in-sample sharpe → out-of-sample →

Each point is one window. The dashed diagonal is a strategy that held up exactly. Points below it degraded once the parameters met data they were not fitted to — a cloud sitting well below the line is the signature of a curve-fitted search.

Per-window results

#Test fromIS returnOOS return BenchmarkExcessOOS SharpeTrades Parameters
1 2025-10-07 +7.96% +2.29% -8.95% +11.23% 1.64 3 rsi_window=10
2 2025-10-24 +2.11% -5.36% -4.84% -0.53% 0.00 2 rsi_window=10
3 2025-11-10 +0.19% -6.21% -15.00% +8.78% -2.51 1 rsi_window=30
4 2025-11-27 -6.53% +4.12% -1.13% +5.25% 2.36 1 rsi_window=30
5 2025-12-13 +4.80% +0.97% -2.58% +3.56% 0.80 1 rsi_window=20
6 2025-12-30 +7.02% -0.79% +8.78% -9.57% -0.92 3 rsi_window=8
7 2026-01-16 +4.72% -16.95% -19.05% +2.11% -9.88 1 rsi_window=20
8 2026-02-01 -4.52% -7.01% -12.35% +5.34% -2.30 1 rsi_window=20
9 2026-02-18 -20.84% +6.83% -4.68% +11.51% 0.00 4 rsi_window=12
10 2026-07-15 -21.66% +0.51% -2.71% +3.21% 0.61 3 rsi_window=12

Multiple testing

Searching a parameter grid and reporting the best result biases that result upward whether or not the strategy has any edge. With enough attempts, something looks good. These numbers say how good, by chance alone.

Combinations tried 6
Sharpe (per bar) -0.0126
Best-by-chance 0.0212
Deflated Sharpe 1.6%

Sharpe is not positive, so there is nothing to deflate.

Deflated Sharpe is the probability the result reflects skill rather than selection, measured against what the best of 6 zero-edge attempts would be expected to produce. The conventional bar is 95%. It also accounts for the shape of the returns — skew -0.22 and kurtosis 15.0 against 3.0 for a normal distribution — because a plain Sharpe overstates a strategy that wins small, loses big, and has fat tails.

Parameter stability

How much the search moved between windows. A coefficient of variation above 0.5 means the optimiser kept landing somewhere different each time, which is what fitting noise looks like — however good the returns are.

ParameterMeanStdev Coef. of variationSelected per window
rsi_window 17.20 8.12 0.472 10, 10, 30, 30, 20, 8, 20, 20, 12, 12

Method