swingHigh Rmean-reversionmediumBest TF: 1mWalk-forward untestedTV: Not yet ported to Pine

FCPO Calendar Spread (FCPO1 − FCPO2)

Z-score mean reversion on the front-month vs back-month FCPO spread. Trade the term-structure: long the spread when it falls 2σ below its rolling mean, short when it rises 2σ above.

Profitability metrics

This strategy has not been validated against TradingView multi-year history yet — RM/day, trades/day, and monthly projection are only computed from authoritative TV stats. The 1-month sweep below is in-sample only and should not be used as a profit forecast.

Philosophy

NOTE: using SYNTHETIC leg2 data — results not reflective of real spread. Update when CL/ZL/FCPO2 data extracted. Thesis: the front/back-month spread is pinned by cost-of-carry, so 2σ excursions are usually noise that reverts by expiry.

Walk-forward status: Walk-forward untested

The featured config below was not directly covered by the walk-forward grids (different dataset or timeframe, or the in-sample SQN was too low to promote to OOS evaluation). Treat the in-sample numbers with appropriate caution — no unseen-window validation yet.

This strategy: Spread strategy uses synthetic leg-2 data and is not in the walk-forward grid. Badge will be re-evaluated once real FCPO2 series is wired in.

Best backtest config (1-month sweep)

SQN
-2.41
Profit Factor
0.49
Win rate
34.6%
Trades
101
Net profit
MYR -5,330
Max drawdown
MYR +5,615
Dataset
legacy_1m (FCPO1) + STUB FCPO2
Timeframe
1m

Strategy properties

Style
swing
Profile
High R
Trades / day
4.59
Avg bars held
TV compile status
Not yet ported to Pine
Walk-forward
Walk-forward untested
Low WR but big winners. Long losing streaks are normal — the rare runaway pays for them.

Parameters

lookback
100
entryZ
2.5
exitZ
0
stopZ
3
allowLong
true
allowShort
true

Applies to

  • Market: FCPO (Crude Palm Oil Futures, Bursa Malaysia)
  • Timeframe: 1m
  • Style: Swing (hours to days)
  • Complexity: 2-3 rules, some discretion

When it works

Did not show a stable edge in the sample — treat with caution.

Pine Script coming soon

Related strategies (mean-reversion)

Full raw backtest result
{
  "dataset": "legacy_1m (FCPO1) + STUB FCPO2",
  "tf": "1m",
  "params": {
    "lookback": 100,
    "entryZ": 2.5,
    "exitZ": 0,
    "stopZ": 3,
    "allowLong": true,
    "allowShort": true
  },
  "trades": 101,
  "winRate": 34.65,
  "netProfitMYR": -5330,
  "profitFactor": 0.49,
  "sqn": -2.41,
  "maxDrawdownMYR": 5615
}