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 1.04 did not clear the 1.30 selection hurdle (best-of-N luck cannot be ruled out). Buy-and-hold benchmark: +5.9% CAGR over 25.9 years (+13.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 755 indicator configurations on ZL. The best, Pascal's Weighted MA on the daily timeframe, beat buy-and-hold in both windows — +0.3% annualized edge over the full period, +4.6% out of sample against a buy-and-hold CAGR of +5.9%. Over 7.8 out-of-sample years it took 295 trades, won 38.0% of them, and drew down -37.3% at worst.

Here is the honest read. When you test 755 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 1.04 falls short. Statistically, we cannot distinguish it from the luckiest of hundreds of tries. It also has company: 17.0% of setups edged buy-and-hold, which tends to happen when one regime dominated the sample. Of everything tested, 653 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 · Daily

Pascal's Weighted MA

Mechanical rule (exactly as backtested): MA variant — binomial (Pascal's-triangle) weighted MA; long above a rising line. 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.

+374.5%
Total return
0.48
Sharpe
-37.3%
Max DD
38.0%
Win rate
295
Trades
+0.3%
vs B&H

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

#2 · Momentum · Daily

Cascade Z-Score

Mechanical rule (exactly as backtested): Momentum continuation — buys a price z-score breakout above +1σ and rides while price stays above its mean (buys strength, not weakness). 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.

+210.1%
Total return
0.35
Sharpe
-54.0%
Max DD
36.8%
Win rate
209
Trades
-1.4%
vs B&H

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

#3 · Momentum · Daily

Premier Stochastic

Mechanical rule (exactly as backtested): Lee's double-smoothed, normalized stochastic — long while positive. 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.

+193.3%
Total return
0.32
Sharpe
-61.9%
Max DD
39.0%
Win rate
246
Trades
-1.6%
vs B&H

Out-of-sample (last ~30% of the window, never used to pick this setup): Sharpe 0.94 · alpha +5.9% · 66 trades over 7.8 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-07-02. Currently FLAT.

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

We tested 755 setups (indicator × parameters × timeframe) on Soybean Oil (ZL). Only setups with ≥30 trades qualify (653 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 755 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.0% had positive out-of-sample alpha (median OOS Sharpe 0.53) — 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 653 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+374.5%0.48-37.3%38.0%295+0.3%1.04+4.6%97
2Cascade Z-ScoreDaily+210.1%0.35-54.0%36.8%209-1.4%0.95+4.4%55
3Premier StochasticDaily+193.3%0.32-61.9%39.0%246-1.6%0.94+5.9%66
4Woodie PivotsDaily+92.6%0.23-69.8%44.2%1,381-3.3%0.94+5.4%405
5VWMA vs PriceDaily+413.4%0.44-60.3%40.2%396+0.6%0.92+5.5%110
6ZLEMA 200 TrendDaily+596.5%0.54-44.4%36.4%151+1.9%0.91+3.8%38
7VWAP TrendDaily+409.6%0.44-58.0%40.2%383+0.6%0.9+4.9%109
8Know Sure ThingDaily+259.1%0.37-70.2%42.9%175-0.8%0.9+3.6%52
9Rate of ChangeDaily+75.4%0.21-73.7%42.5%414-3.7%0.89+4.4%118
10Triangular MADaily+310.5%0.39-62.4%37.1%361-0.3%0.88+4.5%102
11Sine-Weighted MADaily+269.7%0.37-64.7%36.5%367-0.7%0.88+4.4%103
12Coppock (fast)Daily+189.0%0.32-70.2%40.0%225-1.7%0.88+4.4%63
13Sine-Weighted MADaily+269.7%0.37-64.7%36.5%367-0.7%0.88+4.4%103
14Disparity IndexDaily+350.3%0.41-52.7%36.7%452+0.1%0.87+4.2%131
15Pretty Good OscillatorDaily+355.6%0.41-52.7%36.8%451+0.1%0.87+4.2%131
16DPO (10)Daily+216.9%0.34-62.1%38.2%335-1.3%0.87+4.1%93
17Andean OscillatorDaily+198.6%0.35-57.4%45.9%135-1.6%0.86+1.8%35
18Inverse Fisher RSIDaily+236.3%0.35-66.4%38.3%227-1.1%0.85+3.8%62
19Std Error ChannelDaily+214.7%0.35-55.6%39.5%266-1.4%0.85+2.0%69
20LSMA 100 TrendDaily+131.4%0.29-43.9%37.1%256-2.6%0.85+1.7%69

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