BTC paper-trading system
An automated signal-to-execution pipeline that models the boring parts
An end-to-end paper-trading engine: Binance data ingestion, market-structure features, a LightGBM signal model with rolling retraining, and a backtester that models exchange fees, position sizing and risk — running across a Mac and a Windows box over Tailscale.
- 0.567 rolling AUC
- 90 days of OHLCV
- 3 backtest bugs fixed
01
Problem
A model with a good backtest is easy. A system that ingests live data, retrains as the market drifts, sizes positions, pays realistic fees and logs every decision — across two machines — is the actual engineering problem.
02
What I built
- Market data ingestion, feature engineering, ML signal generation and simulated order execution with full trade logging, as one pipeline.
- Market-structure features — order blocks, EMA pullback breakouts, liquidity sweeps — feeding a LightGBM classifier trained on 90 days of Binance OHLCV data.
- An adaptive engine with rolling retraining to counter model drift.
- A backtester that models exchange fees, position sizing and risk/reward geometry.
03
Technical decisions
- Fee modelling and position sizing live inside the backtester, not as an afterthought, so simulated returns are comparable to what execution would produce.
- Compute (macOS host) and execution (Windows gateway) are separate processes on a private Tailscale mesh, which keeps the execution side simple and isolated.
- Traced and fixed stale-data, duplicate-process and fee-drag defects that had been inflating simulated returns — the fixes lowered the numbers and raised the trust.
04
Results
- A LightGBM signal with 0.567 AUC on the held-out window, retrained on a rolling basis.
- A fully logged paper-trading loop running unattended across two machines.
- Three classes of silent return-inflation bugs found and closed.
05
What I'd do next
- Promote the strategy evaluation into the pre-registered crypto-ml-study workflow.
- Add regime detection to gate signals during low-liquidity periods.
- Replace ad-hoc alerts with a small dashboard of live positions and drift metrics.
Built with
- Python
- Node.js
- LightGBM
- pandas
- Tailscale