Inspiration
The idea came out of noticing a gap between what a screen shows and what a trade actually costs. The price you see isn't the price you pay; slippage, spread, and depth-driven impact quietly eat into every execution, and most retail or lightweight internal tools don't surface that cost clearly. Rather than build from a hunch, the team ran four structured conversations with practicing and aspiring quant traders, each of whom flagged a distinct, lived pain point from the cost of retraining models on a fixed clock, to the difficulty of estimating liquidity without full order book data, to the demands of tracking aggregate risk as a market maker who can't just step back when things get uncomfortable. Strategy Autopsy is the product of grounding those conversations in established market microstructure and risk literature (Roll, Kyle, Perold, Hull, Jorion, Gama et al.).
What it does
Strategy Autopsy is a risk management dashboard that quantifies the true cost of trade execution and surfaces it alongside position-level risk. Concretely:
Live tab: pulls the live BTC order book from Binance and simulates order sizes (1, 5, 10, 20 BTC) walking the book level-by-level to compute real average execution price and slippage in basis points, handling partial fills when an order exceeds available liquidity. Historical tab: reads a daily market summary combining realized volatility with a Roll-model estimate of bid-ask spread (inferred from price bounce patterns, no live quote needed) and a sweep detector that reconstructs depth at each price level consumed by an aggressive order; reported explicitly as a lower bound, not a full reconstruction. Risk engine: calculates portfolio Greeks (delta, gamma, vega, theta) and checks them against configurable limits, built to aggregate across the entire position book rather than instrument-by-instrument.
How we built it
The build followed a features → predicted signal → decision pipeline rather than trying to "translate" trade data into something it isn't. A matching engine walks the live order book level by level for realistic fills. The historical pipeline computes realized volatility and Roll's serial-covariance spread estimate directly from trade data, and a sweep detector scans for sequences of fills from one aggressive order crossing multiple levels to infer depth. The risk engine implements standard Greek and VaR-style limit-aggregation logic. Visualization work leaned on Plotly, deliberately scoped per Parham's guidance to avoid overloading any single chart.
Challenges we ran into
The biggest one was an assumption that broke under scrutiny: the initial plan was to derive a full order book; even a price "tunnel" from trade data alone, since trade data is far cheaper to get than full book history. Callum's correction, backed by Kyle's (1985) microstructure model, was that order book state is a queue snapshot at a point in time, and trade data structurally can't reconstruct it in general, it can only establish a lower bound on volume at a price where a match actually occurred. That forced a narrower, more defensible redesign: the sweep detector, which treats large orders crossing multiple levels as real (if partial) evidence rather than pretending to fully rebuild the book. A second challenge was scope, Parham's feedback surfaced data cleaning and risk aggregation as distinct, non-trivial problems in their own right, not side effects of "just tracking Greeks," which pushed some of that work into documented future scope rather than the current build.
Accomplishments that we're proud of
Grounding every dashboard component in peer-reviewed methodology rather than intuition; Roll's spread estimator, Kyle's depth/impact model, Perold's implementation shortfall, Hull's Greeks, Jorion's VaR aggregation, and Gama et al.'s concept drift all map directly onto a specific built feature. Catching and correcting our own flawed assumption (full book reconstruction from trades) before it shipped, and finding the valid, narrower version of the idea instead. Building a live matching engine that handles partial fills gracefully rather than failing when an order exceeds available liquidity. Full traceability between every research conversation and the feature it produced; nothing in the build is unexplained.
What we learned
Real-world constraints (a market maker's obligation to keep quoting) change what "risk management" has to mean; it's not per-position tracking, it's continuous aggregate exposure across the whole book. Trade data is a useful but bounded proxy for order book depth; good for lower-bound, event-triggered inference (a sweep), not for continuous reconstruction. Threshold/alarm-based monitoring (drift detection, limit breaches) is a more defensible design pattern than fixed schedules, and it shows up independently in both the concept-drift literature and a real trading desk's retraining costs. Good visualization is a first-class design constraint, not an afterthought, a chart that's too dense to read fails the same way a missing chart does.
What's next for Strategy Autopsy (Quants Plan)
Wire the completed risk engine (Greeks, limits, aggregate book view) into the dashboard UI; currently the largest gap between what's built and what's shown. Replace the Volatility Meter's placeholder score with the real volatility/spread feed already computed in the Historical pipeline. Build out the data-cleaning step upstream of the risk and execution pipelines. Add the concise, filtered market-news layer Parham asked for, surfacing only what's relevant to a trader's current positions instead of a raw noisy feed. Preserve the raw interview transcripts, not just paraphrased notes, as part of the research trail.
Built With
- next.js
- react
- recharts
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.