← All projects

Equity Quant Research Pipeline

End-to-end research pipeline that tests hundreds of technical and published strategies with walk-forward selection and strict controls, then paper-trades the survivors.

Client
Personal R&D
Year
2026
Category
Quant & ML
Stack
  • Python
  • NumPy
  • pandas
  • TA-Lib
  • NautilusTrader
  • SQLite
  • Alpaca
  • Databento
  • Next.js
  • GitHub Actions

The problem

Most backtests that beat the market are the benchmark in disguise. They win because of a look-ahead, a survivorship gap, a friendlier universe or a fill nobody could have got. I wanted a pipeline where every mechanism exists to take one of those advantages away, and to see what is left.

What I built

  • Strategy library: 231 TA-Lib rules behind one dispatcher and 176 published strategies found by a registry. Signal overlays can be combined on top of any of them.
  • Matched benchmarks: the benchmark differs from the strategy only in the signal. Each result reports value added against a matched basket, against a buyable index ETF, and the share that comes from survivorship.
  • Walk-forward selection: rolling re-fits, pre-registration and a trial ledger. Statistics are deflated against the whole search, not just the winner.
  • Point-in-time data: index and top-100 membership rebuilt per bar, delisted names put back, and a data-check suite for wrong-instrument and wrong-clock errors a bar-level test can’t see.
  • Engine bake-off: NautilusTrader compared against a faster vectorized engine, both scored against a share-level reference simulation.
  • Paper desk: a NautilusTrader sandbox on live bars, mirrored to a broker paper account so sandbox fills can be compared with real ones.
  • Cloud fleet: shell tooling that rents machines per job, runs the walk-forward grid or a research queue, merges results back and destroys the machine, with a cost check.
  • Monitoring and CI: a Next.js dashboard for results, and CI running ruff, the unit suites and the dashboard build on every push.

Details

Fill timing is treated as a control. Rules are tested under both optimistic and pessimistic fill assumptions, and a result counts only if it survives the pessimistic one. Refactor gates check that a code change moved no position and no score. ML studies produce position panels that go through the same walk-forward judge as every other strategy.