Skip to main content

Current state — Phase 15

DimensionValue
Signal model56 features · RF+XGB+LGB · 3-class · M15 · Optuna-tuned
OOS (37d)WR 78.5% · PF 2.43 · MaxDD 1.8% · Score 21.34
OOS (224d)WR 57.4% · PF 2.21 · MaxDD 50.2% (long-range reference)
Position model60 features · ATR-aware labels · exit_threshold=0.80
Training cutoff2026-03-05 16:00 UTC · R2 tag v20260415
InfrastructureONNX inference · Cloudflare R2 · Supabase sync
MQL5 EAPhase 0–1 in progress (model size optimization)

Q2 2026 (Apr – Jun)

PriorityPhaseItem
Done15Broker-agnostic refactor — config/brokers.json, backtest_config.py presets, sweep.py
Critical15Auto-retrain cron on VM
Critical15Telegram bot commands operational
Critical15Broker safety audit — python scripts/check_broker_limits.py
Critical15Performance monitor + Telegram alerts every 4h
CriticalMQL5-0Model size test; shrink position_rf.onnx if EX5 > 20 MB
High16Walk-forward backtest (12 folds); gate retrain on median PF > 2.0
High16Kelly lot sizing backtest (via backtest_config.py lot-cap sweep)
High16max_daily_loss guard (3% equity hard stop)
High16Equity curve filter (10-trade rolling drawdown pause)
High16Multi-account MVP--account flag, PM2 multi-instance config
Medium16Confidence-based position sizing (60/70/80% tiers)
Medium17Funding rate + OI change features from Binance API
MediumMQL5-1Python tooling: scaler constants + ONNX ZIP packing

Q3 2026 (Jul – Sep)

PriorityPhaseItem
CriticalMQL5-2Core EA framework + ONNX loading
CriticalMQL5-3Feature computation in MQL5 (56 features, parity test)
High17Fear & Greed Index + liquidation levels features
High17Volatility regime + W1 trend features
High17Multi-datasource OHLCV — TradingView + yfinance pipeline
High18Stacked meta-learner (replace majority-vote)
High18Calibrated probability outputs (isotonic regression)
High19Live trade dashboard (Streamlit + Supabase)
Medium18Regime-switching model (trending vs ranging via ADX)
Medium19API failover + graceful shutdown
Medium19Config hot-reload (no restart for conf/risk changes)

Q4 2026 (Oct – Dec)

PriorityPhaseItem
CriticalMQL5-4Signal generation + execution in MQL5
CriticalMQL5-5Position management in MQL5 (60-feature inference)
HighMQL5-6MQL5 Market submission (Free + Premium tiers)
High18XAUUSD model — separate model stack, gold-specific ATR scaling
High18Online/incremental weekly model updates
High19Multi-broker abstraction fully wired (--account flag live on all brokers)
Medium17Options skew (Deribit 25D risk reversal)
Medium17Correlation to SPY/DXY features
Medium17OKX/Binance REST as OHLCV data source (4th source consensus)
Medium19Grafana + InfluxDB metrics pipeline

Q1 2027 (Jan – Mar)

PriorityPhaseItem
High18EURUSD model — forex-specific feature set, pip P&L, tighter spread
High18Multi-instrument live trading (BTCUSD + XAUUSD simultaneously)
Medium17Cross-asset features: BTC–Gold correlation, BTC–ETH spread
Medium19Per-instrument dashboards and alerts

Milestones

M1 — Full production hardening (target: May 2026)

Goal: zero-touch live operation with monitoring, alerts, and auto-maintenance.
  • Score >= 15.0 (achieved: 21.34)
  • Position model live with conservative thresholds
  • Weekly auto-retrain cron running on trading VM
  • PM2 performance monitor running every 4h
  • Telegram bot commands operational
  • Broker safety audit completed
  • Weekly Score review cadence: Score < 10 → retrain, Score < 6 → pause
Pass criteria: Bot runs 7d without manual intervention; Telegram alert fires on simulated degradation.

M2 — MQL5 EA alpha (target: Jun 2026)

Goal: all 6 ONNX models running inside MetaTrader 5 natively.
  • All 6 ONNX models fit within 20 MB EX5 file
  • ScalerConstants.mqh auto-generated
  • Core EA compiles in MetaEditor
  • ONNX models load via OnnxCreate() in OnInit()
  • Feature parity test passes: MAE < 0.001 vs Python on 100 bars
Pass criteria: EA runs in MT5 Strategy Tester with no ONNX errors.

M3 — Signal intelligence upgrade (target: Aug 2026)

Goal: measurably better OOS accuracy and risk-adjusted returns.
  • Funding rate + OI change features, model retrained
  • Stacked meta-learner: OOS accuracy >= current + 2pp
  • Walk-forward: 12+ folds, all WR > 55%, PF > 2.0
  • Confidence-based position sizing live
  • Live Streamlit dashboard operational
Pass criteria: OOS Score >= 17.0 after meta-learner + new features.

M4 — MQL5 EA beta (target: Sep 2026)

Goal: fully functional standalone EA with signal + position management.
  • All 56 features in native MQL5
  • Signal inference: majority vote → BUY/SELL/HOLD
  • ATR-based SL/TP with trade_stops_level enforcement
  • Position inference: 59-feature → EXIT/HOLD/ADD
  • 2-week paper trade on demo: WR > 60%, no ONNX crashes
Pass criteria: EA runs 2 weeks on demo matching backtest behavior.

M5 — Multi-asset & market (target: Q4 2026 – Q1 2027)

Goal: commercial-grade EA on MQL5 Market + second trading instrument.
  • XAUUSD model validated (OOS PF > 2.0) and live — separate model stack
  • EURUSD model in development (Q1 2027 target)
  • Regime-switching model deployed
  • MQL5 Market submission accepted (Free + Premium tiers)
  • Multi-account trading operational (at least 2 broker accounts)
  • Multi-datasource OHLCV pipeline live (MT5 + yfinance minimum)
Pass criteria: MQL5 Market submission accepted; XAUUSD running live alongside BTCUSD.

Score formula

All retrains and config sweeps are ranked by:
Score = WR x PF / sqrt(MaxDD)
ScoreInterpretation
< 6.0Pause live trading — manual review required
6.0–10.0Operational but below target — trigger retrain
10.0–15.0Production-grade
> 15.0Excellent — current: 21.34 (37d OOS)

Version history

PhaseDateKey changeOOS Score
1–42025Initial ML model, SHAP, ATR labeling
5–82025Phase 8 position model, Kelly sizing
9–112026-04-11M15 timeframe, 53 features, MTF ladder~4.5
122026-04-11ADX filter, spread fix, OOS contamination fix~5.1
132026-04-1255 features, news_surprise/bars_since_news, Optuna retune~3.5
142026-04-13Config sweep, TP=0.8xATR, risk=2%, conf=0.6015.49
152026-04-15Position model ATR-aware retrain, threshold sweep15.49

Active task list with checkboxes → TODO. Archived phases 1–12 → ARCHIVE.md in the repository root.