Does anything beat buy & hold on Orange Juice (OJ)?
Every setup we tested on Orange Juice (OJ) — 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.33 selection hurdle (best-of-N luck cannot be ruled out). Buy-and-hold benchmark: +2.6% CAGR over 24.9 years (+3.5% CAGR in the out-of-sample window).
Educational research from historical backtests — not investment advice. Past performance does not predict future results.
Orange Juice: the winner beat buy-and-hold in both windows — and still can't shake the luck problem
In Orange Juice, 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 744 indicator configurations on OJ. The best, Fisher Center-of-Gravity on the daily timeframe, beat buy-and-hold in both windows — +0.2% annualized edge over the full period, +21.5% out of sample against a buy-and-hold CAGR of +2.6%. Over 7.5 out-of-sample years it took 631 trades, won 46.0% of them, and drew down -71.2% at worst.
Here is the honest read. When you test 744 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.33, 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: 19.9% of setups edged buy-and-hold, which tends to happen when one regime dominated the sample. Of everything tested, 638 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.
Fisher Center-of-Gravity
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.96 · alpha +21.5% · 176 trades over 7.5 yrs.
CCI
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.87 · alpha +20.3% · 43 trades over 7.5 yrs.
Chande Forecast Osc.
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.76 · alpha +19.1% · 211 trades over 7.5 yrs.
Since publication — including if it loses
The setup is ahead so far — over a window this short that is mostly noise. Marked to market nightly from real prices, rules frozen at publication, as of 2026-10-26. Currently LONG.
We tested 744 setups (indicator × parameters × timeframe) on Orange Juice (OJ). Only setups with ≥30 trades qualify (638 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 744 tries mines even the holdout, the VALIDATED verdict additionally requires the top setup’s OOS Sharpe to clear a selection hurdle of 1.33 (√(2 ln N)/√T) AND positive alpha in both windows. Of the eligible setups, 19.9% had positive out-of-sample alpha (median OOS Sharpe -0.08) — 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 638 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 | Fisher Center-of-Gravity | Daily | +101.2% | 0.24 | -71.2% | 46.0% | 631 | +0.2% | 0.96 | +21.5% | 176 |
| 2 | CCI | Daily | >+999% | 0.68 | -57.3% | 70.8% | 130 | +11.4% | 0.87 | +20.3% | 43 |
| 3 | Chande Forecast Osc. | Daily | >+999% | 0.52 | -62.3% | 45.2% | 693 | +8.6% | 0.76 | +19.1% | 211 |
| 4 | Accumulation Swing Index | Daily | >+999% | 0.69 | -50.9% | 43.4% | 1,344 | +13.5% | 0.74 | +17.8% | 416 |
| 5 | Swing Index | Daily | >+999% | 0.69 | -50.9% | 43.4% | 1,344 | +13.5% | 0.74 | +17.8% | 416 |
| 6 | FRAMA 10/30 Cross | Weekly | +270.4% | 0.32 | -76.4% | 51.5% | 101 | +2.9% | 0.74 | +17.6% | 30 |
| 7 | Fibonacci Pivots | Weekly | +625.2% | 0.43 | -55.2% | 61.4% | 220 | +5.7% | 0.73 | +17.8% | 70 |
| 8 | Stochastic | Daily | >+999% | 0.6 | -62.9% | 73.9% | 134 | +10.5% | 0.73 | +17.0% | 45 |
| 9 | Bollinger 10 (x1.5) Break | Daily | +210.3% | 0.4 | -46.8% | 45.2% | 405 | +2.0% | 0.73 | +8.3% | 117 |
| 10 | Stoch RSI (fast) | Daily | >+999% | 0.55 | -59.8% | 41.5% | 653 | +9.3% | 0.72 | +17.1% | 202 |
| 11 | Stochastic RSI | Daily | +469.7% | 0.43 | -46.3% | 65.3% | 196 | +4.6% | 0.72 | +14.0% | 61 |
| 12 | Woodie Pivots | Daily | >+999% | 0.63 | -51.5% | 43.1% | 1,324 | +11.7% | 0.71 | +16.8% | 407 |
| 13 | Stochastic Fast (5,3) | Daily | +440.2% | 0.38 | -70.3% | 43.0% | 821 | +4.4% | 0.69 | +15.9% | 251 |
| 14 | Ehlers SuperSmoother | Daily | >+999% | 0.56 | -55.0% | 39.7% | 827 | +9.5% | 0.68 | +15.5% | 262 |
| 15 | WaveTrend (8/6/4) | Daily | >+999% | 0.67 | -57.9% | 75.5% | 106 | +12.7% | 0.68 | +15.4% | 32 |
| 16 | Stochastic (10,3) | Daily | >+999% | 0.53 | -54.9% | 41.8% | 749 | +8.7% | 0.68 | +15.1% | 224 |
| 17 | Center of Gravity | Daily | +365.3% | 0.36 | -65.2% | 44.7% | 743 | +3.7% | 0.67 | +14.9% | 224 |
| 18 | Markov Regime (Confirmed) | Daily | +64.9% | 0.2 | -60.2% | 54.5% | 312 | -0.6% | 0.67 | +10.5% | 75 |
| 19 | Williams %R | Daily | >+999% | 0.56 | -59.7% | 71.8% | 174 | +8.5% | 0.65 | +13.2% | 53 |
| 20 | Markov Regime | Daily | +310.8% | 0.34 | -65.6% | 63.4% | 262 | +3.2% | 0.64 | +15.5% | 103 |
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.