Does anything beat buy & hold on Soybeans (ZS)?
Every setup we tested on Soybeans (ZS) — 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.86 did not clear the 1.30 selection hurdle (best-of-N luck cannot be ruled out). Buy-and-hold benchmark: +3.2% CAGR over 25.8 years (+3.7% CAGR in the out-of-sample window).
Educational research from historical backtests — not investment advice. Past performance does not predict future results.
Soybeans: the winner beat buy-and-hold in both windows — and still can't shake the luck problem
In Soybeans, 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 753 indicator configurations on ZS. The best, Volume Oscillator on the weekly timeframe, beat buy-and-hold in both windows — +5.8% annualized edge over the full period, +4.7% out of sample against a buy-and-hold CAGR of +3.2%. Over 7.8 out-of-sample years it took 83 trades, won 59.0% of them, and drew down -23.4% at worst.
Here is the honest read. When you test 753 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.3, and this setup's out-of-sample Sharpe of 0.86 falls short. Statistically, we cannot distinguish it from the luckiest of hundreds of tries. It also has company: 17.3% of setups edged buy-and-hold, which tends to happen when one regime dominated the sample. Of everything tested, 663 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.
Volume Oscillator
Mechanical rule (exactly as backtested): Long when volume momentum is positive and price is above its EMA. 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.86 · alpha +4.7% · 29 trades over 7.8 yrs.
T3 10/40 Cross
Mechanical rule (exactly as backtested): VARIANT — T3 10/40 cross; long while fast leads slow. Signals are evaluated at daily-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.68 · alpha +4.3% · 19 trades over 7.7 yrs.
Vertical Horizontal Filter
Mechanical rule (exactly as backtested): Trade trend only when the VHF says the market is trending (and price is up). Signals are evaluated at daily-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.68 · alpha +2.0% · 55 trades over 7.7 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 753 setups (indicator × parameters × timeframe) on Soybeans (ZS). Only setups with ≥30 trades qualify (663 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 753 tries mines even the holdout, the VALIDATED verdict additionally requires the top setup’s OOS Sharpe to clear a selection hurdle of 1.3 (√(2 ln N)/√T) AND positive alpha in both windows. Of the eligible setups, 17.3% had positive out-of-sample alpha (median OOS Sharpe 0.18) — 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 663 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 | Volume Oscillator | Weekly | +842.3% | 0.77 | -23.4% | 59.0% | 83 | +5.8% | 0.86 | +4.7% | 29 |
| 2 | T3 10/40 Cross | Daily | +250.8% | 0.38 | -47.8% | 43.2% | 74 | +1.8% | 0.68 | +4.3% | 19 |
| 3 | Vertical Horizontal Filter | Daily | +104.8% | 0.3 | -30.1% | 44.4% | 198 | -0.4% | 0.68 | +2.0% | 55 |
| 4 | Markov Regime (Confirmed) | Weekly | +207.6% | 0.32 | -40.6% | 43.9% | 107 | +1.2% | 0.66 | +6.6% | 25 |
| 5 | Tweezer Bottom | Weekly | +20.5% | 0.13 | -42.7% | 37.2% | 43 | -2.5% | 0.65 | +3.0% | 22 |
| 6 | ADX Strong Trend | Daily | -24.5% | -0.02 | -60.8% | 41.7% | 108 | -4.3% | 0.65 | +1.6% | 24 |
| 7 | Chaikin Money Flow | Weekly | +481.1% | 0.45 | -51.3% | 46.7% | 60 | +3.8% | 0.62 | +4.8% | 18 |
| 8 | Ehlers Reflex | Weekly | +347.2% | 0.43 | -39.9% | 52.4% | 42 | +2.7% | 0.62 | +3.9% | 13 |
| 9 | Stochastic (10,3) | Weekly | +314.3% | 0.4 | -37.5% | 51.9% | 158 | +2.4% | 0.61 | +3.6% | 46 |
| 10 | Bollinger Breakout | Daily | +158.9% | 0.35 | -41.0% | 42.5% | 106 | +0.5% | 0.61 | +1.9% | 31 |
| 11 | Ichimoku TK Cross | Daily | +208.8% | 0.34 | -46.6% | 41.5% | 147 | +1.2% | 0.6 | +3.6% | 40 |
| 12 | Accelerator Oscillator | Weekly | +288.7% | 0.4 | -38.8% | 47.8% | 69 | +2.2% | 0.6 | +3.2% | 19 |
| 13 | SMA 10/30 Cross | Daily | +163.1% | 0.3 | -55.6% | 48.4% | 128 | +0.6% | 0.54 | +2.8% | 33 |
| 14 | Williams Fractals | Daily | +58.3% | 0.19 | -53.5% | 38.1% | 160 | -1.4% | 0.54 | +2.8% | 39 |
| 15 | Triangular Hull MA | Weekly | +308.5% | 0.45 | -31.8% | 43.2% | 88 | +2.4% | 0.54 | +2.0% | 26 |
| 16 | Linear Regression Slope | Daily | +119.1% | 0.26 | -55.7% | 42.4% | 165 | -0.1% | 0.53 | +2.6% | 49 |
| 17 | Correlation Trend | Daily | +119.1% | 0.26 | -55.7% | 42.4% | 165 | -0.1% | 0.53 | +2.6% | 49 |
| 18 | TRIX (9) | Daily | +39.1% | 0.16 | -59.8% | 35.5% | 138 | -2.0% | 0.53 | +2.6% | 37 |
| 19 | Coppock Curve | Daily | +69.5% | 0.21 | -58.8% | 39.6% | 159 | -1.2% | 0.53 | +2.5% | 44 |
| 20 | Hull MA 20/80 Cross | Daily | +41.2% | 0.17 | -50.6% | 43.9% | 148 | -1.9% | 0.53 | +2.5% | 42 |
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.