Home / Strategies / Soybeans (ZS)
Commodity · strategy report

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.

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.81 did not clear the 1.29 selection hurdle (best-of-N luck cannot be ruled out). Buy-and-hold benchmark: +3.7% CAGR over 26.2 years (+4.5% 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 748 indicator configurations on ZS. The best, Volume Oscillator on the weekly timeframe, beat buy-and-hold in both windows — +5.2% annualized edge over the full period, +3.2% out of sample against a buy-and-hold CAGR of +3.7%. Over 7.9 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 748 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.81 falls short. Statistically, we cannot distinguish it from the luckiest of hundreds of tries. It also has company: 13.4% of setups edged buy-and-hold, which tends to happen when one regime dominated the sample. Of everything tested, 659 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

The setups that ranked, and what they are

Fully mechanical — no discretionary steps, no hidden filters. We name the indicator and publish its record; we keep the settings.

#1 · Volume · Weekly

Volume Oscillator

What it is: A momentum rule: it holds while rate-of-change stays positive and steps aside when it rolls over. Long/flat only — no leverage, no shorting. The parameters we tested are not published.

How it was tested: signals evaluated at weekly-bar close, the position changes on the NEXT bar, 0.08% cost per side. Same engine, same cost model, same out-of-sample split as every other number on this site.

+842.3%
Total return
0.77
Sharpe
-23.4%
Max DD
59.0%
Win rate
83
Trades
+5.2%
vs B&H

Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.81 · alpha +3.2% · 28 trades over 7.9 yrs.

#2 · Trend · Daily

Vertical Horizontal Filter

What it is: A trend-following rule: it holds while a smoothed trend reference is pointing up and goes flat when it turns. Long/flat only — no leverage, no shorting. The parameters we tested are not published.

How it was tested: signals evaluated at daily-bar close, the position changes on the NEXT bar, 0.08% cost per side. Same engine, same cost model, same out-of-sample split as every other number on this site.

+123.2%
Total return
0.32
Sharpe
-30.1%
Max DD
44.8%
Win rate
203
Trades
-0.6%
vs B&H

Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.8 · alpha +3.1% · 59 trades over 7.8 yrs.

#3 · Pattern · Weekly

Tweezer Bottom

What it is: A market-structure rule: it reacts to swing structure and prior levels rather than to a smoothed average. Long/flat only — no leverage, no shorting. The parameters we tested are not published.

How it was tested: signals evaluated at weekly-bar close, the position changes on the NEXT bar, 0.08% cost per side. Same engine, same cost model, same out-of-sample split as every other number on this site.

+32.5%
Total return
0.18
Sharpe
-42.7%
Max DD
38.6%
Win rate
44
Trades
-2.7%
vs B&H

Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.75 · alpha +3.5% · 22 trades over 7.9 yrs.

Forward test

Since publication — including if it loses

-0.76%
the published setup, since 2026-07-02 (16 market days)
+12.17%
buy & hold, same window

Buy-and-hold is ahead so far — we publish that too. That is the point. Marked to market nightly from real prices, rules frozen at publication, as of 2026-10-19. Currently LONG.

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

We tested 748 setups (indicator × parameters × timeframe) on Soybeans (ZS). Only setups with ≥30 trades qualify (659 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 748 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, 13.4% had positive out-of-sample alpha (median OOS Sharpe 0.21) — the table below is truncated, but this summary covers all of them. How we test: methodology. The scoring contract is published in full; the parameters of each individual setup are not.

Ranked table

Top 20 of 659 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
1Volume OscillatorWeekly+842.3%0.77-23.4%59.0%83+5.2%0.81+3.2%28
2Vertical Horizontal FilterDaily+123.2%0.32-30.1%44.8%203-0.6%0.8+3.1%59
3Tweezer BottomWeekly+32.5%0.18-42.7%38.6%44-2.7%0.75+3.5%22
4Williams FractalsDaily+75.8%0.21-53.5%38.7%163-1.6%0.64+3.9%40
5T3 10/40 CrossDaily+261.3%0.38-47.8%43.4%76+1.3%0.63+3.2%21
6Stochastic (10,3)Weekly+349.0%0.41-37.5%51.9%160+2.2%0.62+3.2%47
7ADX Strong TrendDaily-24.7%-0.02-60.8%41.8%110-4.9%0.62+1.0%26
8Bollinger BreakoutDaily+164.1%0.35-41.0%42.6%1080.0%0.61+1.4%32
9Markov Regime (Confirmed)Weekly+203.5%0.31-40.6%45.0%111+0.6%0.6+4.7%28
10Donchian 10 BreakDaily-3.0%0.08-68.1%36.1%155-3.9%0.59+2.9%38
11RSI Mean-ReversionDaily+106.0%0.31-28.8%74.3%35-1.0%0.59+0.1%15
12Chaikin Money FlowWeekly+480.6%0.45-51.3%46.7%60+3.2%0.58+3.3%18
13Advance Trend PressureDaily-28.9%-0.0-76.4%40.3%345-5.1%0.58+1.5%102
14STARC BandsDaily+0.2%0.07-53.4%46.1%141-3.8%0.58+1.0%28
15Linear Regression SlopeDaily+138.1%0.28-55.7%42.5%167-0.4%0.57+2.6%50
16Correlation TrendDaily+138.1%0.28-55.7%42.5%167-0.4%0.57+2.6%50
17Ichimoku TK CrossDaily+204.0%0.34-46.6%41.6%149+0.6%0.56+2.5%41
18Ehlers ReflexWeekly+352.0%0.43-39.9%51.2%43+2.2%0.55+2.1%14
19SMA 10/30 CrossDaily+169.9%0.31-55.6%48.5%130+0.1%0.54+2.2%34
20Accelerator OscillatorWeekly+293.6%0.4-38.8%49.3%71+1.6%0.54+1.8%21

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