# FTDT Quant Lab Production multi-strategy quant trading system running on Hyperliquid. Live testnet node, paper trading simulator, historical backtesting, and real-time dashboard. **Live:** https://ftdt.io/cv --- ## Stack | Layer | Technology | |-------|-----------| | **Runtime** | Python 3.13 (async trading) | | **API Client** | nautilus_trader (Hyperliquid SDK, Rust bindings) | | **Dashboard** | Next.js 16 (static export) + shadcn/ui + Framer Motion | | **Design System** | Hallmark Cobalt — Ubuntu font, hairline borders, cool paper palette | | **Reverse Proxy** | Caddy → auto HTTPS | | **WebSocket** | FastAPI (live/paper streaming) | | **Data** | PostgreSQL 17 (`ftdt_quant`), JSON metrics files | | **Backtesting** | Custom dollar-bar engine + numpy | | **Infra** | OVH VPS (4 vCPU, 8GB RAM, Debian 13), 2GB swap | ~5,300 lines of Python + TypeScript. 67 commits since July 2026. --- ## Repository Structure ``` ftdt-quant-lab/ ├── live/ │ ├── node.py # Live trading node — testnet, 9 strategies │ └── paper_trader.py # Paper trading — mainnet data, 10 strategies ├── strategies/ │ ├── orderbook_imbalance.py # L2 bid/ask volume skew (OBI) │ ├── iceberg_detection.py # Whale TWAP accumulation detection │ ├── funding_arb.py # Delta-neutral carry — spot/perp funding │ ├── pairs_trading.py # BTC/ETH ratio Z-score (1.5σ) │ ├── avellaneda_stoikov.py # Dual-sided stochastic control MM │ ├── kalman_pairs/ # Kalman-filter adaptive hedge ratio │ ├── hawkes_ofi.py # Hawkes process order flow │ ├── deep_lob.py # Deep LOB CNN feature extraction │ ├── queue_imbalance.py # Weighted queue dynamics │ ├── hurst_vpin.py # Hurst exponent + VPIN directional │ ├── hurst_vpin_live.py # Lightweight Hurst/VPIN for live tick stream │ └── quant_report.py # QF-Lib style quant analytics ├── dashboard/ │ ├── server.py # FastAPI backend — WS, REST, static files │ └── next/ │ └── src/ │ ├── app/ # Main page + layout │ ├── components/ # QuantReport, StrategyCard, L2Terminal │ └── lib/ # Types, API client ├── backtests/ │ ├── run.py # Backtest runner │ └── results/ │ └── historical/ # JSON backtest snapshots (32 entries) ├── common/ # Shared utilities │ ├── risk.py, risk_manager.py │ ├── hyperliquid_api.py │ └── portfolio.py, metrics.py ├── config/ │ └── fee_tiers.py # Perp/spot fee schedules └── infrastructure/ ├── Caddyfile # Reverse proxy config └── systemd/ # Service units (pending) ``` --- ## Strategies — Current State ### Live Node (Hyperliquid Testnet — 9 strategies, $100 each) | # | Strategy | Type | Asset | Size | PnL | Trades | Win | |---|----------|------|-------|------|-----|--------|-----| | 1 | Order Book Imbalance | reversal | BTC | 0.000200 | $0.00 | 0 | — | | 2 | Iceberg Detection | momentum | BTC | 0.000210 | $0.00 | 2 | 0% | | 3 | Funding Rate Arb | carry | BTC | 0.000220 | $0.00 | 0 | — | | 4 | Pairs Trading | stat_arb | ETH | 0.006000 | **+$0.74** | 9 | 67% | | 5 | Avellaneda-Stoikov | market_making | BTC | 0.000230 | -$1.35 | 32 | 0% | | 6 | Momentum Breakout | momentum | ETH | 0.000500 | $0.00 | 0 | — | | 7 | Mean Reversion | reversal | ETH | 0.000500 | $0.00 | 0 | — | | 8 | Kalman Pairs | stat_arb | ETH | 0.005000 | $0.00 | 0 | — | | 9 | Hurst VPIN | momentum | BTC | 0.000240 | $0.00 | 0 | — | **Execution:** GTC POST-ONLY limit orders. Signals every 5 ticks (5s), dual-sided for A-S. **Fee model:** Maker 0.02% (testnet). ### Paper Trader (Hyperliquid Mainnet data — 10 strategies, $100 each) Same set + Queue Imbalance. Real mainnet orderbook + funding data. Fee model: taker 0.05% / maker 0.02%. Trades simulated with 1bps slippage. --- ## Historical Backtests 32 backtest snapshots across 8 strategies × 4 coins (BTC, ETH, HYPE, VVV). Hurst/VPIN BTC: **46 trades, 96% win rate, +1.10%** on synthetic trending data. --- ## Priority Analysis ### Strategies showing real signal | Strategy | Signal | Status | |----------|--------|--------| | **Pairs Trading** | ✅ | +$0.74, 67% win rate — only profitable live strategy | | **Avellaneda-Stoikov** | ⚠️ | 32 trades but losing — spread capture not covering fees | | **Iceberg Detection** | ⚠️ | 2 trades — rare signals, needs threshold tuning | | **Hurst VPIN** | 🔬 | 96% win in backtest, 0 live trades — very selective | | **Mean Reversion** | ⏳ | 0 trades — VWAP deviation not crossing 1.0σ | | **Momentum** | ⏳ | 0 trades — Bollinger 1.2σ too tight for ETH | ### Recommendation: focus investment here 1. **Pairs Trading** — `#1 priority`. Only live winner. Extend to more pairs (SOL, ARB, OP). Add Kalman dynamic hedge ratio. This is the clearest path to sustained PnL. 2. **Hurst/VPIN** — `#2 priority`. Backtest shows strong edge (96% win). Needs real market data (not synthetic) and 3-day candle feed to trigger more signals. The selectivity IS the edge — don't dilute it. 3. **Avellaneda-Stoikov** — Needs inventory control. 32 trades losing because adverse selection. Add skew-aware quoting (update reserve price based on queue imbalance). 4. **Iceberg Detection** — Lower detection threshold. Currently requires 7/10 consecutive ticks same direction — too strict. 5. **Funding Rate Arb** — Real Hyperliquid funding data already plumbed. Test threshold from 3% → 1% APR. Prefunding detection (predict next rate before announcement). 6. **Backtest engine** — Replace synthetic data with real Hyperliquid candles. Add walk-forward optimization. The `hurst_vpin.py` infrastructure is ready. ### Skip for now - OBI / Mean Reversion / Momentum — 0 trades. Signal thresholds need fundamental redesign, not just tuning. - Cartea-Jaimungal / Gueant MM — academic models, not adapted to crypto microstructure. - DeepLOB / Hawkes OFI — dependency-heavy, no live integration. --- ## Next Steps ```bash # Clone and deploy git clone https://git.ftdt.io/rams/ftdt-quant-lab.git cd ftdt-quant-lab python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt # (pending — currently manual) # Start services python live/node.py & # Trading node python live/paper_trader.py & # Paper simulator python dashboard/server.py --port 9175 # Dashboard backend ``` --- ## Roadmap - [ ] Docker Compose for reproducible deployment - [ ] Walk-forward backtest on real Hyperliquid candle data - [ ] Extend Pairs Trading to BTC/SOL, BTC/ARB - [ ] Hurst/VPIN 3-day candle feed → real live signals - [ ] Memory leak proofing — current guard at 512MB RSS - [ ] systemd service unit files for auto-restart - [ ] Grafana + Prometheus monitoring dashboard --- *Built with Hermes Agent · Hallmark Cobalt · Ubuntu fonts*