Does anything beat buy & hold on Cotton (CT)?
Every setup we tested on Cotton (CT) — ranked out-of-sample, corrected for multiple testing, and forward-tracked in public from the day this page published. The honest answer is the headline.
Beat buy-and-hold in both windows — but can't be told apart from selection luck.
Beat buy-and-hold in both the full window and out-of-sample but its OOS Sharpe 0.72 did not clear the 1.29 selection hurdle (best-of-N luck cannot be ruled out). Buy-and-hold benchmark: +1.4% CAGR over 26.5 years (-1.4% CAGR in the out-of-sample window).
Educational research from historical backtests — not investment advice. Past performance does not predict future results.
Cotton: the winner beat buy-and-hold in both windows — and still can't shake the luck problem
In Cotton, buy-and-hold is a harder benchmark than it looks: roll costs drag on returns, macro regimes flip the rules mid-game, and prices can go nowhere for years. Against that backdrop, we ran 760 indicator configurations on CT. The best, Range Filter on the weekly timeframe, beat buy-and-hold in both windows — +1.1% annualized edge over the full period, +7.5% out of sample against a buy-and-hold CAGR of +1.4%. Over 8.0 out-of-sample years it took 94 trades, won 47.9% of them, and drew down -36.3% at worst.
Here is the honest read. When you test 760 setups and keep the best one, the winner looks good by construction — even on pure noise. Our correction for that selection effect sets a Sharpe hurdle of 1.29, and this setup's out-of-sample Sharpe of 0.72 falls short. Statistically, we cannot distinguish it from the luckiest of hundreds of tries. It also has company: 61.3% of setups edged buy-and-hold, which tends to happen when one regime dominated the sample. Of everything tested, 652 produced enough trades to grade at all. Macro regimes rotate, and a rule tuned to one rarely survives the next. Past performance does not predict future results.
Every figure above is computed from our own backtests — nothing is estimated or invented. Hypothetical results; not investment advice.
Top setups as mechanical rules
Exactly as the backtest defined them — no discretionary steps, no hidden filters.
Range Filter
Mechanical rule (exactly as backtested): Smoothed range-based trend filter — long while the range filter is rising. Signals are evaluated at weekly-bar close, the position changes on the NEXT bar, 0.08% cost per side, long/flat only — no leverage, no shorting.
Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.72 · alpha +7.5% · 19 trades over 8.0 yrs.
FRAMA 100 Trend
Mechanical rule (exactly as backtested): VARIANT — price above a rising FRAMA(100). Signals are evaluated at weekly-bar close, the position changes on the NEXT bar, 0.08% cost per side, long/flat only — no leverage, no shorting.
Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.54 · alpha +8.7% · 37 trades over 8.0 yrs.
On-Balance Volume
Mechanical rule (exactly as backtested): Long while OBV is above its 21-EMA — volume confirming the trend. Signals are evaluated at weekly-bar close, the position changes on the NEXT bar, 0.08% cost per side, long/flat only — no leverage, no shorting.
Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.53 · alpha +7.9% · 17 trades over 8.0 yrs.
Since publication — including if it loses
The forward record is just getting started — the gap between the two is the honest score. Marked to market nightly from real prices, rules frozen at publication, as of 2026-06-29. Currently FLAT.
We tested 760 setups (indicator × parameters × timeframe) on Cotton (CT). Only setups with ≥30 trades qualify (652 did). Setups are ranked by out-of-sample Sharpe — the last ~30% of history, which standard-parameter rules never saw during selection. Because picking the best of 760 tries mines even the holdout, the VALIDATED verdict additionally requires the top setup’s OOS Sharpe to clear a selection hurdle of 1.29 (√(2 ln N)/√T) AND positive alpha in both windows. Of the eligible setups, 61.3% had positive out-of-sample alpha (median OOS Sharpe 0.02) — the table below is truncated, but this summary covers all of them. Full recipe: methodology · the engine’s contract lives in the repo as STRATEGY_METHODOLOGY.md.
Top 20 of 652 eligible setups
Ranked by out-of-sample Sharpe. Full + out-of-sample columns, costs included. Hypothetical.
| # | Setup | TF | Total ret | Sharpe | Max DD | Win | Trades | α vs B&H | OOS Sharpe | OOS α | OOS trades |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Range Filter | Weekly | +92.9% | 0.27 | -36.3% | 47.9% | 94 | +1.1% | 0.72 | +7.5% | 19 |
| 2 | FRAMA 100 Trend | Weekly | +205.4% | 0.32 | -55.9% | 44.4% | 117 | +2.9% | 0.54 | +8.7% | 37 |
| 3 | On-Balance Volume | Weekly | +155.3% | 0.28 | -72.3% | 44.4% | 81 | +2.2% | 0.53 | +7.9% | 17 |
| 4 | Detrended Price Osc. | Weekly | +166.7% | 0.28 | -68.5% | 53.9% | 167 | +2.4% | 0.52 | +9.6% | 55 |
| 5 | UT Bot (ATR Trailing) | Weekly | +139.4% | 0.27 | -66.2% | 42.9% | 91 | +2.0% | 0.49 | +8.6% | 22 |
| 6 | Premier Stochastic | Weekly | +100.4% | 0.23 | -53.6% | 37.3% | 51 | +1.3% | 0.47 | +7.9% | 16 |
| 7 | Relative Volatility Index | Weekly | +146.9% | 0.28 | -47.8% | 37.2% | 94 | +2.1% | 0.46 | +7.2% | 27 |
| 8 | Chandelier Exit | Weekly | +354.2% | 0.37 | -61.8% | 43.9% | 57 | +4.5% | 0.45 | +8.7% | 11 |
| 9 | Trade Volume Index | Daily | +84.6% | 0.22 | -77.1% | 35.2% | 261 | +1.0% | 0.43 | +8.4% | 72 |
| 10 | Zero-Lag LSMA | Weekly | -24.4% | 0.05 | -70.3% | 46.9% | 96 | -2.4% | 0.41 | +7.6% | 25 |
| 11 | FRAMA 10/30 Cross | Weekly | +205.5% | 0.3 | -66.8% | 58.8% | 102 | +2.9% | 0.41 | +6.7% | 30 |
| 12 | Acceleration Bands | Weekly | +59.7% | 0.2 | -32.5% | 39.3% | 61 | +0.4% | 0.41 | +5.2% | 11 |
| 13 | Keltner 20 Break | Weekly | +14.5% | 0.1 | -41.3% | 48.7% | 39 | -0.9% | 0.41 | +4.2% | 11 |
| 14 | Donchian 55/20 | Daily | -19.1% | 0.03 | -51.0% | 34.0% | 53 | -2.2% | 0.4 | +7.1% | 12 |
| 15 | Hull MA 15/60 Cross | Weekly | +106.7% | 0.24 | -59.5% | 40.5% | 42 | +1.4% | 0.38 | +6.6% | 12 |
| 16 | Morning Star | Daily | -0.5% | 0.06 | -49.0% | 44.5% | 236 | -1.4% | 0.38 | +6.0% | 66 |
| 17 | Chaikin Oscillator | Weekly | -41.1% | -0.03 | -77.5% | 40.6% | 64 | -3.3% | 0.37 | +5.6% | 17 |
| 18 | A/D Oscillator | Weekly | -41.1% | -0.03 | -77.5% | 40.6% | 64 | -3.3% | 0.37 | +5.6% | 17 |
| 19 | Relative Volume Spike | Weekly | -7.9% | 0.03 | -49.0% | 38.5% | 52 | -1.7% | 0.37 | +4.3% | 14 |
| 20 | TRIMA 100 Trend | Daily | +82.8% | 0.22 | -49.2% | 34.0% | 94 | +0.9% | 0.36 | +6.8% | 24 |
Hypothetical backtests with 0.08%/side costs. Not investment advice — see the full disclaimer.
These are historical backtests of mechanical rules. They are educational research, not investment advice, not a recommendation, and not tailored to you. Educational information only — not investment advice. Hypothetical backtested results; past performance does not guarantee future results. Trading involves risk of loss.