Home / Strategies / Cotton (CT)
Commodity · strategy report

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.

MIXED

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.

The rules

Top setups as mechanical rules

Exactly as the backtest defined them — no discretionary steps, no hidden filters.

#1 · Trend · Weekly

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.

+92.9%
Total return
0.27
Sharpe
-36.3%
Max DD
47.9%
Win rate
94
Trades
+1.1%
vs B&H

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.

#2 · Trend · Weekly

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.

+205.4%
Total return
0.32
Sharpe
-55.9%
Max DD
44.4%
Win rate
117
Trades
+2.9%
vs B&H

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.

#3 · Volume · Weekly

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.

+155.3%
Total return
0.28
Sharpe
-72.3%
Max DD
44.4%
Win rate
81
Trades
+2.2%
vs B&H

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.

Forward test

Since publication — including if it loses

0.0%
the published setup, since 2026-07-02 (0 market days)
0.0%
buy & hold, same window

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.

How this verdict was computed (mode: out-of-sample)

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.

Ranked table

Top 20 of 652 eligible setups

Ranked by out-of-sample Sharpe. Full + out-of-sample columns, costs included. Hypothetical.

#SetupTFTotal retSharpeMax DDWinTradesα vs B&HOOS SharpeOOS αOOS trades
1Range FilterWeekly+92.9%0.27-36.3%47.9%94+1.1%0.72+7.5%19
2FRAMA 100 TrendWeekly+205.4%0.32-55.9%44.4%117+2.9%0.54+8.7%37
3On-Balance VolumeWeekly+155.3%0.28-72.3%44.4%81+2.2%0.53+7.9%17
4Detrended Price Osc.Weekly+166.7%0.28-68.5%53.9%167+2.4%0.52+9.6%55
5UT Bot (ATR Trailing)Weekly+139.4%0.27-66.2%42.9%91+2.0%0.49+8.6%22
6Premier StochasticWeekly+100.4%0.23-53.6%37.3%51+1.3%0.47+7.9%16
7Relative Volatility IndexWeekly+146.9%0.28-47.8%37.2%94+2.1%0.46+7.2%27
8Chandelier ExitWeekly+354.2%0.37-61.8%43.9%57+4.5%0.45+8.7%11
9Trade Volume IndexDaily+84.6%0.22-77.1%35.2%261+1.0%0.43+8.4%72
10Zero-Lag LSMAWeekly-24.4%0.05-70.3%46.9%96-2.4%0.41+7.6%25
11FRAMA 10/30 CrossWeekly+205.5%0.3-66.8%58.8%102+2.9%0.41+6.7%30
12Acceleration BandsWeekly+59.7%0.2-32.5%39.3%61+0.4%0.41+5.2%11
13Keltner 20 BreakWeekly+14.5%0.1-41.3%48.7%39-0.9%0.41+4.2%11
14Donchian 55/20Daily-19.1%0.03-51.0%34.0%53-2.2%0.4+7.1%12
15Hull MA 15/60 CrossWeekly+106.7%0.24-59.5%40.5%42+1.4%0.38+6.6%12
16Morning StarDaily-0.5%0.06-49.0%44.5%236-1.4%0.38+6.0%66
17Chaikin OscillatorWeekly-41.1%-0.03-77.5%40.6%64-3.3%0.37+5.6%17
18A/D OscillatorWeekly-41.1%-0.03-77.5%40.6%64-3.3%0.37+5.6%17
19Relative Volume SpikeWeekly-7.9%0.03-49.0%38.5%52-1.7%0.37+4.3%14
20TRIMA 100 TrendDaily+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.

Read this before acting on anything

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.

Keep digging