- live/paper_trader.py: replaced random 5% fill probability in simulate_avellaneda()
with QueueAwareFillModel — fills only when aggressor volume exceeds depth ahead,
regime-adaptive quote placement (tight in LOW_VOL, wide in HIGH_VOL). Integrated
WQI Predictor and Funding Rate Arb as new strategies with signal generation.
Dashboard metrics now include WQI summaries, funding arb status, and fill model
throughput stats (fill rate, fills vs skips). 14 strategies total.
- scripts/kill_switch.py: emergency kill switch — flattens all positions, cancels
all open orders, verifies account is flat. Supports --dry-run, --mainnet, retry
logic, L1 action signing. Reads private key from HL_PRIVATE_KEY env or ~/.hl/key.
- infrastructure/systemd/: three service unit files for production deployment:
ftdt-collector (data collection), ftdt-paper (trading node v2), ftdt-dashboard
(FastAPI backend). Includes memory/cpu limits, auto-restart, log rotation.
321 tests passing.