▌ Futures AI.md
▒ PATH:
▒ SIZE: 4.0 KB
▒ MODIFIED: 2026-06-07 03:01
Projects/Futures AI.md▒ SIZE: 4.0 KB
▒ MODIFIED: 2026-06-07 03:01
---
tags: [project, trading, futures, lead-lag, quant]
status: planning
added: 2026-06-06
owner: nick
---
# Futures AI — Asia → Europe Lead-Lag Strategy
**One-liner:** Algorithmic futures strategy that bets European indices gap in the direction of the prior Asian session, when Asia moves >1.5% on the day. Backtested 27 years, validated out-of-sample 2025-2026.
## What it is
A **low-frequency, high-conviction** lead-lag strategy:
- **Signal:** Average of HSI and N225 day returns. Trigger when |signal| ≥ 1.5%.
- **Trade:** LONG or SHORT DAX (in direction of Asia) at DAX open, hold to close.
- **Sizing:** Vol-targeted to 1.5% daily volatility, capped at 3x leverage.
- **Frequency:** 8-15 trades per year (most days are no-signal days).
## Backtest results (out-of-sample 2025-2026)
| Metric | Value |
|---|---|
| Trades | 12 |
| Win rate | 91.7% |
| Sharpe | 16.5 |
| CAGR (full position) | 12.9% (vol-targeted) / 11.1% (equal weight) |
| Max drawdown | -0.5% |
| Profit factor | 27.9 |
**Holdout 2025-2026 is the gold standard** — the strategy was ranked using 2021-2023 walk-forward only, and 2025-2026 was never touched during optimization. So this is real out-of-sample validation.
## Why it works (intuition)
Markets have overlapping trading sessions. Information flows from one session to the next. When Asia closes with a strong directional move, that information is "priced in" by European markets at their open, creating a predictable gap. The signal is dose-dependent (bigger Asia move = bigger Europe gap) and asymmetric (both up and down moves are predictable).
## Files
- **Code:** `~/.hermes/projects/futures-ai/`
- `lead_lag_backtest.py` — initial directional test
- `deep_dive.py` — magnitude buckets, intraday patterns, trend persistence
- `find_winner_rigorous.py` — final statistically-sound strategy search
- **Strategy brief (for sharing):** `/Volumes/My Shared Files/UTM/STRATEGY_PROMPT.md` (16KB) — self-contained, drop into any AI chat to execute.
- **Data:** Yahoo Finance (free) — `^HSI`, `^N225`, `^GDAXI`, `^FTSE`, `^FCHI`, `^GSPC`, `^IXIC`. 30+ years of daily OHLCV.
## Plan (5 phases)
1. ✅ **Backtest** — done. Strategy validated.
2. 🟡 **Paper trade 1 week** — sending strategy brief to friend's AI to test in parallel.
3. ⏳ **Paper trade 1 month** (own setup) — if week results are in line with backtest.
4. ⏳ **Live small ($50-100k)** — only after 1+ month profitable paper.
5. ⏳ **Scale up to $200k+** — only after live performance matches.
## Key decisions
- **Platform: Futu OpenAPI** (not IBKR) — HK native, Python SDK, modern docs, matches local-first bias. OpenD gateway runs on Mac.
- **Daily data is a proxy for intraday 5-min** — first 5 min ≈ open vs prev close. Real intraday data could shift results ±20%.
- **Don't paper trade with the original 100% win-rate "winner"** — that was overfit (5 trades, looked great, no statistical power).
- **Strategy is parameter-light** — single threshold (1.5%), no streak, single target. Less to overfit.
## Limitations / honest caveats
1. **Daily data proxy** for "first 5 min" — needs intraday verification.
2. **Summer DST issue:** DAX opens 1 hour before HSI closes (Apr-Oct). Use N225-only signal in summer, or trade next day's DAX.
3. **Small holdout sample (12-16 trades)** — statistically meaningful but not bulletproof.
4. **Costs assumed 4 bps RT** — actual might be 2-3 bps with Futu. Slippage on volatile opens could be higher.
5. **Survived 2008, 2020, 2022** in walk-forward — but past ≠ future.
## Open questions
- [ ] What does real intraday 5-min data show? (needs Futu account)
- [ ] Does the signal work in summer (when DAX opens before HSI closes)?
- [ ] What's the optimal holding period (5 min vs 1 hour vs full session)?
- [ ] Can we add VIX/volatility regime filter to skip crisis periods?
## Related
- [[Projects]] — back to main project index
- [[EPL Betting AI]] — similar lead-lag/quant approach, different market
- [[RezMyCV]] — different domain, similar pattern of "build → validate → ship"