Does anything beat buy & hold on Soybean Oil (ZL)?
Every setup we tested on Soybean Oil (ZL) — 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.96 did not clear the 1.29 selection hurdle (best-of-N luck cannot be ruled out). Buy-and-hold benchmark: +5.5% CAGR over 26.2 years (+12.3% CAGR in the out-of-sample window).
Educational research from historical backtests — not investment advice. Past performance does not predict future results.
Soybean Oil: the winner beat buy-and-hold in both windows — and still can't shake the luck problem
In Soybean Oil, 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 749 indicator configurations on ZL. The best, Pascal's Weighted MA on the daily timeframe, beat buy-and-hold in both windows — +0.1% annualized edge over the full period, +4.0% out of sample against a buy-and-hold CAGR of +5.5%. Over 7.9 out-of-sample years it took 299 trades, won 37.8% of them, and drew down -37.3% at worst.
Here is the honest read. When you test 749 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.96 falls short. Statistically, we cannot distinguish it from the luckiest of hundreds of tries. It also has company: 14.2% of setups edged buy-and-hold, which tends to happen when one regime dominated the sample. Of everything tested, 647 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 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.
Pascal's Weighted MA
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.
Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.96 · alpha +4.0% · 98 trades over 7.9 yrs.
ZLEMA 200 Trend
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.
Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.94 · alpha +5.3% · 35 trades over 7.9 yrs.
Premier Stochastic
What it is: An oscillator rule: it reads a bounded momentum gauge and takes exposure when it turns from an extreme. 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.
Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.88 · alpha +5.5% · 68 trades over 7.9 yrs.
Since publication — including if it loses
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-26. Currently FLAT.
We tested 749 setups (indicator × parameters × timeframe) on Soybean Oil (ZL). Only setups with ≥30 trades qualify (647 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 749 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, 14.2% had positive out-of-sample alpha (median OOS Sharpe 0.47) — 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.
Top 20 of 647 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 | Pascal's Weighted MA | Daily | +318.5% | 0.45 | -37.3% | 37.8% | 299 | +0.1% | 0.96 | +4.0% | 98 |
| 2 | ZLEMA 200 Trend | Daily | +597.4% | 0.54 | -44.4% | 36.4% | 151 | +2.2% | 0.94 | +5.3% | 35 |
| 3 | Premier Stochastic | Daily | +173.2% | 0.3 | -61.9% | 38.6% | 249 | -1.6% | 0.88 | +5.5% | 68 |
| 4 | Keltner 50 (x2.0) | Daily | +243.2% | 0.41 | -47.4% | 39.3% | 201 | -0.7% | 0.87 | +1.4% | 46 |
| 5 | Woodie Pivots | Daily | +82.7% | 0.22 | -69.8% | 44.1% | 1,400 | -3.2% | 0.86 | +4.6% | 415 |
| 6 | LSMA 100 Trend | Daily | +131.4% | 0.28 | -43.9% | 37.1% | 256 | -2.2% | 0.85 | +2.7% | 68 |
| 7 | Cascade Z-Score | Daily | +168.0% | 0.31 | -54.0% | 36.6% | 213 | -1.7% | 0.83 | +2.9% | 58 |
| 8 | Balance of Power | Daily | +314.3% | 0.46 | -49.2% | 41.9% | 270 | +0.1% | 0.83 | +0.8% | 75 |
| 9 | VWMA vs Price | Daily | +353.0% | 0.41 | -60.3% | 39.6% | 402 | +0.4% | 0.82 | +4.3% | 113 |
| 10 | T3 15/60 Cross | Daily | +598.5% | 0.51 | -47.6% | 42.2% | 45 | +2.2% | 0.82 | +4.0% | 15 |
| 11 | Hull MA 200 Trend | Daily | +551.0% | 0.53 | -44.6% | 44.7% | 123 | +1.9% | 0.82 | +2.2% | 29 |
| 12 | Disparity Index | Daily | +316.4% | 0.39 | -52.7% | 36.5% | 457 | +0.1% | 0.81 | +3.8% | 132 |
| 13 | Pretty Good Oscillator | Daily | +321.3% | 0.39 | -52.7% | 36.6% | 456 | +0.2% | 0.81 | +3.8% | 132 |
| 14 | VWAP Trend | Daily | +343.3% | 0.4 | -58.0% | 39.6% | 389 | +0.4% | 0.8 | +3.5% | 112 |
| 15 | Inverse Fisher RSI | Daily | +209.1% | 0.33 | -66.4% | 37.8% | 230 | -1.1% | 0.8 | +3.5% | 62 |
| 16 | Rate of Change | Daily | +57.3% | 0.19 | -73.7% | 42.1% | 420 | -3.7% | 0.8 | +3.4% | 121 |
| 17 | Triangular MA | Daily | +263.0% | 0.36 | -62.4% | 36.9% | 366 | -0.4% | 0.8 | +3.4% | 103 |
| 18 | Know Sure Thing | Daily | +217.3% | 0.34 | -70.2% | 42.4% | 177 | -1.0% | 0.8 | +2.5% | 52 |
| 19 | B-Xtrender | Weekly | +409.3% | 0.49 | -34.9% | 46.0% | 126 | +1.1% | 0.8 | +2.3% | 35 |
| 20 | FRAMA 200 Trend | Daily | +406.4% | 0.44 | -54.8% | 40.0% | 515 | +0.9% | 0.79 | +3.8% | 150 |
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.