Step-by-step workflow for diagnosing why the market maker is losing money
Structured diagnostic for market maker PnL issues. Follow these steps in order.
Check PnL attribution to find which component is causing losses. Read the relevant analytics:
src/market_maker/analytics/attribution.rs — PnL decomposition
src/market_maker/analytics/edge_metrics.rs — Edge tracking
src/market_maker/analytics/sharpe.rs — Sharpe ratio
PnL decomposes into:
The largest negative component is your priority target.
| Dominant Drag | Check These | Read Skill |
|---|---|---|
| Adverse selection | adverse_selection/, calibration/ | adverse-selection-classifier |
| Spread too tight | strategy/signal_integration.rs | quote-engine |
| Inventory cost | strategy/position_manager.rs, control/ | stochastic-controller |
| Fill rate collapsed | estimator/kappa.rs, simulation/fill_sim.rs | fill-intensity-hawkes |
| Regime misclassification | estimator/regime_hmm.rs | regime-detection-hmm |
| Cascade losses | risk/circuit_breaker.rs, risk/monitors/cascade.rs | risk-management |
For the identified component, check its calibration metrics:
src/market_maker/calibration/brier_score.rs — Brier Score
src/market_maker/calibration/information_ratio.rs — Information Ratio
src/market_maker/calibration/conditional_metrics.rs — Conditional calibration
src/market_maker/calibration/model_gating.rs — Model weight/gating
Key thresholds:
Check if the issue is regime-specific:
conditional_metrics.rs by volatility buckettime_to_funding_settlement_sRegime-specific failures suggest the model needs regime-dependent parameters.
After identifying and fixing the issue:
fill_rate_model.rs for stale estimatespre_fill_classifier.rs z-score computation