00 — trading
Signals that survive the next regime. Execution that respects the tape.
For prop desks, market-making teams, and systematic equity shops measuring the work in basis points.
alpha measured in
bps
never narratives
live in
4–12 wks
research to ticket
engagement shape
advisory + build
fixed fee, fixed scope
01 — what we do
Concrete deliverables. Named tools. Honest constraints.
01
Signal pipelines that ship.
Feature stores, point-in-time joins, and a daily job that lands before the open. No look-ahead, no notebook drift.
02
Regime detection.
Change-point models and labelled regimes that downstream sizing and routing can actually consume.
03
Slippage and TCA models.
Pre-trade cost curves and post-trade attribution by venue, time-of-day, and child-order shape. Numbers your execution PM trusts.
04
Venue routing logic.
Smart-order-router rules built from your fills, not a vendor benchmark. Tested on out-of-sample weeks before it touches a live ticket.
05
Walk-forward eval.
Sharpe, hit-rate, and turnover broken out by regime, so a backtest survives the meeting after the meeting.
06
Live monitoring and alerts.
Dashboards for fill quality, signal decay, and PnL attribution. Alerts when the model drifts off its training distribution.
02 — how we engage
We will not build a black-box signal you cannot maintain after we leave.
Typical scope is 4 to 12 weeks. We start with a read of the existing stack — notebooks, jobs, fills — before we propose anything.
The deliverable is code your quants own. We do not take a cut of PnL. Fixed fee, fixed scope, in writing.
03 — example shape
an engagement shape
Anonymised. Plausible. The shape of a real engagement.
A London prop desk had a 14-month-old research notebook nobody dared touch.
It had drifted since the original quant left, but two of the alphas inside were still earning.
We rewrote the notebook as a daily job in 3 weeks: point-in-time features, a clean eval harness, and a kill-switch on regime drift.
The execution layer was next — a routing rule that cut average slippage by 1.4 bps on the names with the worst impact profile.
It runs at 06:00 every weekday. The desk reads the eval report over coffee.
We were on the work for nine weeks total.
# walk-forward eval, daily 06:00 UTC
# fails the build if any regime drops below floor
for regime in regimes(window="60d"):
sharpe = backtest(signal, regime).sharpe()
turnover = backtest(signal, regime).turnover()
assert sharpe >= floors[regime.name], (
f"{regime.name}: sharpe {sharpe:.2f} < floor"
)
log.metric("sharpe", sharpe, regime=regime.name)
log.metric("turnover", turnover, regime=regime.name)
# kill-switch flips if today's features land outside the
# training distribution by more than 3 sigma on any axis.
guard.check(features_today, train_dist, sigma=3)04 — contact
Tell us where the work is.
One sentence is enough. We reply within two business days. If we are a bad fit we will say so.