Documentation Index
Fetch the complete documentation index at: https://docs.novosky.app/llms.txt
Use this file to discover all available pages before exploring further.
Current state β Phase 17.3
| Dimension | Value |
|---|
| Signal model | 62 features Β· RF+XGB+LGB Β· 3-class Β· M15 Β· Optuna-tuned Β· recency-weighted |
| OOS (37d) | WR 71.7% Β· PF 5.46 Β· MaxDD 4.5% Β· Sharpe 59.54 Β· Return +195.7% Β· Score 54.47 |
| OOS (224d) | WR 57.4% Β· PF 2.21 Β· MaxDD 50.2% (long-range reference) |
| Position model | 71 features Β· ATR-aware labels Β· exit_threshold=0.80 |
| Training cutoff | 2026-05-06 Β· Hugging Face Hub tag v20260506 |
| Infrastructure | ONNX inference Β· Hugging Face Hub Β· Supabase sync |
| Incremental training | Warmstart enabled by default (LGB+XGB continuation, RF tree-append) |
Q2 2026 (Apr β Jun) β Production hardening + quick wins
Items ordered by implementation impact and dependency.
| Priority | Phase | Item |
|---|
| Done | 15 | Broker-agnostic refactor β dynamic MT5 API, backtest.py, sweep.py |
| Critical | 15 | VM cron β weekly_optimize.py (Sunday 02:00 UTC) |
| Critical | 15 | Broker safety audit β python scripts/check_broker_limits.py |
| Done | 16 | RF double-weighting fix β removed class_weight='balanced' from constructors |
| Done | 16 | TP corrected 0.8β1.2ΓATR β R:R now 1.2, breakeven WR=45.5% |
| Done | 16 | Label/live alignment β labels now use atr_tp_mult=1.2, atr_sl_mult=1.0 |
| Done | 16 | Risk model β Kelly log-utility label function + sequence augmentation (~5,000 samples) |
| High | 16 | Enable max_daily_loss guard β already built, set to 15 USD in config |
| Done | 16 | Equity curve filter β 10-trade rolling drawdown pause |
| Done | 16 | Walk-forward OOS gate β 3 OOS folds, WR/PF gate in weekly_optimize.py |
| Done | 16 | Enable Kelly lot sizing β half-Kelly (0.5 fraction) enabled; MaxDD 16.1%β7.5% |
| Done | 21 | ml_sltp β validated OOS; disabled (degraded Score); re-evaluate with more live data |
| Done | 21 | Trailing stop + min_bars_held sweep β both tested; trailing disabled, bars4 optimal |
| Done | 18 | Calibrated probability outputs β isotonic calibration live for all 3 signal models |
| Medium | 16 | Multi-account MVP β --account flag, per-account state_{account}.json |
Q3 2026 (Jul β Sep) β Feature expansion + model architecture
| Priority | Phase | Item |
|---|
| High | 17 | funding_rate + oi_change features (Binance REST) β retrain + OOS gate |
| High | 17 | volatility_regime + w1_ema_bias / w1_rsi_norm β OHLCV-derived, no external API |
| High | 17 | OHLCV data redundancy β yfinance + OKX REST as gap-fill sources |
| High | 18 | Stacked meta-learner β replace majority-vote; strict OOS gate: Score β₯ current + 1.0 |
| High | 21 | M1 intra-candle features for position model β 5 features, requires retrain |
| High | 21 | Catastrophic SL / position-as-primary-exit β gated on 21.1/21.2 + EXIT precision β₯ 87% |
| Medium | 18 | Regime-switching model β trending vs ranging via ADX; gated on β₯ 20k samples per segment |
| Done | 19 | API failover β SAFE_PAUSE after 3 consecutive failures |
| Done | 19 | Graceful shutdown β finish-cycle exit instead of hard sys.exit(0) |
| Medium | 19 | Config hot-reload β poll config.json mtime per cycle |
Q4 2026 (Oct β Dec) β Multi-asset expansion
| Priority | Phase | Item |
|---|
| High | 19 | Live Streamlit dashboard β equity curve + open positions from Supabase |
| High | 18 | XAUUSD model β separate model stack, gold-specific ATR scaling, OOS PF > 2.0 gate |
| Medium | 16 | Multi-account fully wired β at least 2 brokers running simultaneously |
Q1 2027 (Jan β Mar) β Multi-asset live + revenue
| Priority | Phase | Item |
|---|
| High | 18 | EURUSD model β pip-based P&L, tighter spreads, forex news calendar |
| High | 18 | Multi-instrument live trading (BTCUSD + XAUUSD simultaneously) |
| Medium | 17 | fear_greed_index β daily sentiment (96 identical M15 values; monitor SHAP weight) |
| Medium | 19 | Per-instrument dashboards and Telegram alerts |
Milestones
M1 β Full production hardening (target: May 2026)
Goal: zero-touch live operation with monitoring, alerts, and auto-maintenance.
Pass criteria: Bot runs 7d without manual intervention; Telegram alert fires on simulated degradation.
M2 β Dynamic SL/TP + position model upgrades (target: Jun 2026)
Goal: confidence-aware exits that outperform the current static 1:0.8 RR.
Pass criteria: OOS Score β₯ 22.0 β not yet met (ml_sltp and trailing stop degraded OOS; re-evaluate after M3 feature upgrade).
M3 β Signal intelligence upgrade (target: Aug 2026)
Goal: measurably better OOS accuracy through new features and a better combiner.
Pass criteria: OOS Score β₯ 22.0 on 37d window; position model EXIT precision β₯ 86%.
M4 β Multi-asset live (target: Q4 2026 β Q1 2027)
Goal: second live trading instrument + multi-account operation.
Pass criteria: XAUUSD running live alongside BTCUSD; multi-account stable for 30d.
What was removed and why
The following items were in earlier roadmap drafts and have been removed.
| Item | Reason |
|---|
| Optuna 150 trials + MedianPruner | MedianPruner already active in both tune files. Trials are a --trials flag β use --trials 100 for architecture changes. Not a phase item. |
| Online/incremental weekly updates | Already built. Warmstart mode enabled by default in ml/train.py and ml/ensemble_trainer.py. |
| Confidence-based lot tiers (60/70/80%) | Kelly already does this continuously and mathematically. Discrete tiers are a cruder approximation. |
| Ensemble weighting by recency | Walk-forward already handles recency more robustly. Recency weighting adds a tuneable parameter with overfit risk. |
corr_spy_20 / corr_dxy_20 | BTCβSPY/DXY correlation at M15 changes regimes frequently. Would overfit to the 2020β2026 macro correlation period. |
liq_distance_buy/sell (Coinglass) | Historical liquidation data is non-standardized, exchange-dependent, and not reliably reproducible for backtesting. High lookahead risk. |
dom_sin / dom_cos | No statistically meaningful monthly seasonality in BTC M15 data. Weak signal, overfit risk. |
| Synthetic OFI | Without level-2 order book data, any OFI proxy is a linear combination of OHLCV features the model already has. Redundant. |
h4_macd_hist / d1_macd_hist | h4_macd_dir already in feature set. Histogram adds a fine-grained continuous variable over a direction signal β marginal gain, overfit surface. |
| Options skew (Deribit 25D RR) | Sparse historical data, evolving market structure, unclear relationship to M15 BTCUSD direction. Very high overfit risk. |
| Grafana + InfluxDB | Supabase already handles storage and sync. Adding a second metrics pipeline is premature complexity for the current scale. |
| TradingView as OHLCV source | ToS violation risk; scrapers break silently. Use official REST APIs only (yfinance, OKX, Binance). |
All retrains and config sweeps are ranked by:
Score = WR x PF / sqrt(MaxDD)
| Score | Interpretation |
|---|
| < 6.0 | Pause live trading β manual review required |
| 6.0β10.0 | Operational but below target β trigger retrain |
| 10.0β15.0 | Production-grade |
| > 15.0 | Excellent β Phase 15: 21.34 (37d OOS); Phase 16w: 46.80 (WR=62.8%); Phase 17.2w: 35.13 (WR=67.6%, PF=2.83); Phase 17.3w: 54.47 (WR=71.7%, PF=5.46) |
Version history
| Phase | Date | Key change | OOS Score |
|---|
| 1β4 | 2025 | Initial ML model, SHAP, ATR labeling | β |
| 5β8 | 2025 | Phase 8 position model, Kelly sizing | β |
| 9β11 | 2026-04-11 | M15 timeframe, 53 features, MTF ladder | ~4.5 |
| 12 | 2026-04-11 | ADX filter, spread fix, OOS contamination fix | ~5.1 |
| 13 | 2026-04-12 | 55 features, news_surprise/bars_since_news, Optuna retune | ~3.5 |
| 14 | 2026-04-13 | Config sweep, TP=0.8xATR, risk=2%, conf=0.60 | 15.49 |
| 15 | 2026-04-15 | Position model ATR-aware retrain, threshold sweep | 21.34 |
| 16 | 2026-04-24 | RF double-weighting fix, TP 0.8β1.2ΓATR, label/live alignment, Kelly risk model | WR=65.8% PF=3.03 |
| 16w | 2026-04-24 | Weekly optimize: Profile 4 Growth, risk=3.0%, cb=7 | Score=46.80 WR=62.8% Return=+1154.6% |
| 17.2 | 2026-04-29 | Phase 17 features (volatility_regime, w1_ema_bias, w1_rsi_norm), weekly optimize, conf=0.65 | Score=35.13 WR=67.6% PF=2.83 |
| 17.3 | 2026-05-08 | Single-source training (revert multi-source), 365d recency decay weights, fresh retrain | Score=54.47 WR=71.7% PF=5.46 |
| 21 | planned | ml_sltp, trailing stop, M1 features, primary-exit mode | TBD |
| 17 | planned | funding_rate, OI (remaining Phase 17 items) | TBD |
| 18 | planned | Meta-learner, calibration, regime model, XAUUSD | TBD |
Active task list with checkboxes β TODO. Archived phases 1β12 β ARCHIVE.md in the repository root.