Home / Strategies / Soybean Oil (ZL)
Commodity · strategy report

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.

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.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 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 · Trend · Daily

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.

+318.5%
Total return
0.45
Sharpe
-37.3%
Max DD
37.8%
Win rate
299
Trades
+0.1%
vs B&H

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.

#2 · Trend · Daily

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.

+597.4%
Total return
0.54
Sharpe
-44.4%
Max DD
36.4%
Win rate
151
Trades
+2.2%
vs B&H

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.

#3 · Momentum · Daily

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.

+173.2%
Total return
0.3
Sharpe
-61.9%
Max DD
38.6%
Win rate
249
Trades
-1.6%
vs B&H

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.

Forward test

Since publication — including if it loses

-12.83%
the published setup, since 2026-07-02 (80 market days)
-0.06%
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-26. Currently FLAT.

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

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.

Ranked table

Top 20 of 647 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
1Pascal's Weighted MADaily+318.5%0.45-37.3%37.8%299+0.1%0.96+4.0%98
2ZLEMA 200 TrendDaily+597.4%0.54-44.4%36.4%151+2.2%0.94+5.3%35
3Premier StochasticDaily+173.2%0.3-61.9%38.6%249-1.6%0.88+5.5%68
4Keltner 50 (x2.0)Daily+243.2%0.41-47.4%39.3%201-0.7%0.87+1.4%46
5Woodie PivotsDaily+82.7%0.22-69.8%44.1%1,400-3.2%0.86+4.6%415
6LSMA 100 TrendDaily+131.4%0.28-43.9%37.1%256-2.2%0.85+2.7%68
7Cascade Z-ScoreDaily+168.0%0.31-54.0%36.6%213-1.7%0.83+2.9%58
8Balance of PowerDaily+314.3%0.46-49.2%41.9%270+0.1%0.83+0.8%75
9VWMA vs PriceDaily+353.0%0.41-60.3%39.6%402+0.4%0.82+4.3%113
10T3 15/60 CrossDaily+598.5%0.51-47.6%42.2%45+2.2%0.82+4.0%15
11Hull MA 200 TrendDaily+551.0%0.53-44.6%44.7%123+1.9%0.82+2.2%29
12Disparity IndexDaily+316.4%0.39-52.7%36.5%457+0.1%0.81+3.8%132
13Pretty Good OscillatorDaily+321.3%0.39-52.7%36.6%456+0.2%0.81+3.8%132
14VWAP TrendDaily+343.3%0.4-58.0%39.6%389+0.4%0.8+3.5%112
15Inverse Fisher RSIDaily+209.1%0.33-66.4%37.8%230-1.1%0.8+3.5%62
16Rate of ChangeDaily+57.3%0.19-73.7%42.1%420-3.7%0.8+3.4%121
17Triangular MADaily+263.0%0.36-62.4%36.9%366-0.4%0.8+3.4%103
18Know Sure ThingDaily+217.3%0.34-70.2%42.4%177-1.0%0.8+2.5%52
19B-XtrenderWeekly+409.3%0.49-34.9%46.0%126+1.1%0.8+2.3%35
20FRAMA 200 TrendDaily+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.

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