Diagnostic Index: Symptom → Cause → Fix
This is the global troubleshooting index for the whole Atlas - the aggregated “clinic” that collects the failure modes spread across every topic’s §5 Failure Modes & Practice page, the pillar hubs’ §4, and the home-page matrix, deduplicated and organised by symptom.
How to use it. Find your observed symptom in the left column (scan the area heading that matches where the problem bites: backtest, execution, risk, portfolio, derivatives, ML, or systems). The root cause names the first-principles violation underneath, the remedy says what to change, and the canonical page takes you to the full treatment - math, code, and the complete failure-mode catalogue.
What this supplements. This index is a pointer, not a replacement. Each canonical page’s §5 Failure Modes & Practice remains the authoritative, full-depth treatment of every failure mode here - with the derivations, runnable code, and numbered checklist. Use this page to route yourself fast; use the §5 to actually fix it.
Research & Backtesting
| Observed symptom | First-principles root cause | Remedy | Canonical page |
|---|---|---|---|
| Backtest shows 3.5 Sharpe, instantly loses money live | Backtest overfitting & selection bias: the reported Sharpe is a maximum over trials, not a sample statistic | Report , , ; gate on DSR ≥ 0.95, PBO ≤ 0.5 | Backtesting Hygiene |
| High-turnover strategy’s Sharpe collapses to ~0 live | Transaction-cost amnesia: drag ignored; quadratic impact omitted | Model proportional spread + size-dependent (Almgren) impact in the backtest | Backtesting Hygiene |
| Repeatedly “touching” the holdout keeps improving results | Repeated holdout: the OOS set spent as a selection device converts ~5% false positives into expected ones | One vaulted use of the OOS; any post-hoc change resets it | Backtesting Hygiene |
| Strategy overweights today’s winners/constituents | Survivorship bias: universe filtered to names that survived, dropping the losers | Point-in-time universe, include delisted names and terminal returns | Backtesting Hygiene |
| Equity curve unnaturally smooth; alpha too stable | Look-ahead via vintages: fundamentals/index membership/vendor prices known only later fed in early | Strict point-in-time, as-of-known-at-timestamp joins | Backtesting Hygiene |
| Treated 1,000 correlated variants as 1,000 independent bets | Effective- blindness: effective trials far below raw | Report , , ; correct the selection threshold | Backtesting Hygiene |
| Sharpe quoted for a negatively-skewed, fat-tailed stream (carry, short vol) | Non-normality ignored: true standard error of a non-normal Sharpe far larger | Use DSR’s denominator (skew/kurtosis correction); quote ES not VaR | Backtesting Hygiene |
| Alpha is statistically real but too small to matter, or decayed by deployment | Capacity & alpha-decay blindness: net alpha concave in AUM, premium erodes post-publication | Build impact into the backtest, cap participation, haircut published alphas | Factor Investing & Timing |
| Sharpe computed on illiquid mark-to-model or smoothed returns | Metric gaming: understated variance inflates the ratio | Use audited, mark-to-market returns; reject smoothed series | Backtesting Hygiene |
| Pairs spread widens and stops reverting (divergence trap) | Cointegration structural break: linear relation broke via merger/index/dividend shift | Rolling/recursive cointegration + CUSUM on residual; hard statistical stop | Statistical Arbitrage & Pairs |
| Pairs pair chosen after the fact; great backtest, dead live | Data snooping: pair selected ex-post is an extreme order statistic | OOS formation/trading split, deflated Sharpe, purged CV | Statistical Arbitrage & Pairs |
| Spread-trading costs eat two legs every rebalance | Transaction costs & turnover: turnover scales with spread re-entry; gross ≠ net | Cost-aware thresholds, longer half-life screen, portfolio netting | Statistical Arbitrage & Pairs |
| Short leg unborrowable exactly when divergence largest | Short borrow & asymmetric costs: one-sided, hidden risk | Screen borrow availability; budget short-side cost | Statistical Arbitrage & Pairs |
| Correlated unwinds across same-side books (Aug 2007 quant quake) | Crowding: many funds run the same residual-reversion book | Monitor crowding/capacity; de-size correlated sleeves | Statistical Arbitrage & Pairs |
| Stale closes / non-synchronous legs fabricate convergence on paper | Non-synchronous pricing: bid-ask bounce invents mean-reversion that cannot be captured live | Use midpoint quotes, synchronous timestamps, lag-adjusted estimates | Statistical Arbitrage & Pairs |
| Event study attributes a same-window shock wholly to the event | Event-window contamination: overlapping announcements confound attribution | Short event window + screen out firms with other news; no statistical fix | Event Studies |
| Small, thin-stock event t-stats overstated | Non-synchronous trading biases OLS beta | Scholes–Williams/Dimson lag-lead corrections, or restrict to liquid firms | Event Studies |
| Event t-stat inflated ~1.7× from correlated firms | Cross-sectional dependence/clustering ignored | Portfolio-time-series SE (short), calendar-time portfolio alpha (long) | Event Studies |
| Event significance overstated when event-period vol rises | Event-period variance increase not in estimation-window SE | Event/non-event variance ratio; nonparametric rank tests | Event Studies |
| Long-horizon abnormal returns unreliable | Long-horizon joint-test problem & low power: risk-adjustment error compounds | Short horizons; report expected-return-model sensitivity | Event Studies |
| Momentum portfolio crashes in bear-market rebounds | Momentum crashes (negative skew): option-like short-loser leg; clustered, partly forecastable | Size/hedge; do not trust variance-swap hedging (Daniel–Moskowitz) | Momentum |
| Momentum bleeds slowly over 12–18 months (whipsaw) | Whipsaw in a mean-reverting regime: buys tops, shorts bottoms | Regime filter; cost-aware entry; accept lower frequency | Momentum |
| ”Hedged momentum” looks great in backtest only | Hedged-momentum illusion: hedge used ex-post/forward-looking betas | Use implementable ex-ante hedge; verify no look-ahead in hedge | Momentum |
| Momentum short leg expensive/illiquid in a squeeze | Transaction costs & short-leg capacity | Cost-aware shorting, monitor squeeze risk | Momentum |
| Factor’s modeled beta-risk “low” but realized tail huge | Crowding & liquidity black holes: everyone holds the same long-short | Treat crowding as a risk input; de-size before the unwind | Factor Investing & Timing |
| Published factor premium already shrunk by the time you deploy | Post-publication decay: ~35% haircut, larger for easy-to-arbitrage | Haircut backtested alphas; re-estimate on post-publication data | Factor Investing & Timing |
| In-sample-optimal timing weights collapse out-of-sample | Factor timing high-variance, low-IC bet: timing breadth ≈12 | Treat timing as a small ±0.25–0.5× tilt; purged CV | Factor Investing & Timing |
| Overlapping style factors make regression slopes uninterpretable | Multicollinearity in style factors: nearly singular design | Orthogonalize/standardize exposures; ridge/lasso; drop redundant factors | Fundamental Multi-Factor Models |
| ”Diversification” across sleeves is illusory | The diversification illusion: residual correlation bounded by factor structure; few effective eigenvalues | Orthogonalize (Gram–Schmidt/PCA), count eigenvalues not sleeves | Fundamental Multi-Factor Models |
| Vol model’s persistence too high; forecasts unresponsive | GARCH persistence overstated by breaks: structural break masquerading as memory | Test for breaks (CUSUM), model the break not the memory | GARCH & Volatility Modeling |
| Symmetric GARCH wrong on downside moves | Missing asymmetry: leverage effect in equity returns | Engle–Ng sign-bias test; add asymmetry/GJR term | GARCH & Volatility Modeling |
| Vol forecast “accurate” but VaR systematically breached | Backtest the quantile, not the variance: wrong tail model | Kupiec/Christoffersen tests on the VaR itself | GARCH & Volatility Modeling |
| Gaussian-shock GARCH understates tails | Fat tails in shock distribution | Use standardized Student-/GED shocks | GARCH & Volatility Modeling |
| Kalman-filtered beta drifts quietly wrong | Divergence = over-confidence, not instability: process noise collapsed to zero | Floor on ; monitor standardized innovation variance ratio | Signal Processing & Kalman |
| Rolling-OLS beta lags the true beta by half a window | Fixed windows leak, recursive filters lag by construction | Choose and justify the filter’s lag via ; prefer Kalman with explicit lag | Signal Processing & Kalman |
| Kalman filter numerically blows up / PSD drifts negative | Numerical fragility: ill-conditioned covariance, symmetricity drift | Joseph form / square-root filter; solve not invert; keep standardized | Signal Processing & Kalman |
| Beta jumps at index reconstitution, filter reacts too slowly | Regime breaks are not random walks: jump ≠ continuous drift | Model the jump (Markov-switching/jump-diffusion state) | Signal Processing & Kalman |
| Dynamic-beta strategy’s edge eaten by induced turnover | Filter-induced turnover consumes alpha | Pass filtered-alpha strategy through DSR/purged-CV battery | Signal Processing & Kalman |
Machine Learning & AltData
| Observed symptom | First-principles root cause | Remedy | Canonical page |
|---|---|---|---|
| ML model 95% in-sample accuracy, ~0% live | Leaky cross-validation: features scaled/screened on full data before splitting | Preprocessing and feature selection inside each training fold only | Financial ML Pitfalls |
| Today’s index constituents backtested to 2005 | Point-in-time (look-ahead) bias: data used before it was available | Strict PIT datasets; knowable-at timestamps | Alt-Data Pipelines |
| Universe filtered to today’s S&P 500 drops the names that prove the model wrong | Survivorship bias | Backtest on point-in-time constituent lists | Financial ML Pitfalls |
| Best config’s in-sample Sharpe inflated by tuning | Selection/multiple-testing bias: winner chosen on noise | Deflated Sharpe over the number of trials | Financial ML Pitfalls |
| Purged-CV accuracy rises as fold count grows | Look-ahead leakage survives in the split (the leak diagnostic) | Find and close the leak; rerun the fold-count diagnostic | Purged CV & Backtest Hygiene |
| Single backtest Sharpe quoted as the verdict | Path overfitting: a lone Sharpe is the most volatile estimate | Report a CPCV Sharpe distribution (mean ± sd), never one number | Purged CV & Backtest Hygiene |
| Honest split starves the model of training data | Sample loss from purging at long horizons | Confirm per-fold training count ≫ parameter budget; gather more data | Purged CV & Backtest Hygiene |
| Deep net overfits; train error 0, test error high | Data hunger / overfitting: effective samples finance rarely supplies | Weight decay, dropout, early stopping, smaller models first | Deep Learning for Sequences |
| LSTM forecast degrades silently over months | Non-stationarity: model is a snapshot of a moving process | Walk-forward/purged validation, rolling refits | Deep Learning for Sequences |
| Sequence model “peeks” at the future | Look-ahead via missing causal mask / overlapping labels | Causal masking; purge + embargo; audit recurrence/attention | Deep Learning for Sequences |
| Sequential inference too slow for microsecond decisions | Latency/cost: RNN slow per step, full attention | TCN or small model; compute enters alpha | Deep Learning for Sequences |
| Tree model with unbounded depth overfits low-SNR data | Too many boosting rounds: test error has a shallow minimum in low SNR | Early stopping; depth 2–4, few hundred trees, chosen OOS | Tree & Boosting Methods |
| MDI-based feature selection picks high-cardinality noise | MDI is in-sample and biased | Use MDA/permutation with clustered/orthogonalised features | Tree & Boosting Methods |
| Correlated factors cancel in permutation importance | Substitution effects in MDA | Permute correlated groups together; orthogonalize first | Tree & Boosting Methods |
| Features screened on all data then CV’d | Feature selection before fold split = leakage | Screen inside each fold on training data only | Tree & Boosting Methods |
| Standard K-fold hyperparameter search double-overfits overlapping labels | Unpurged hyperparameter search | Purged/embargoed CV; proper loss (log-loss) not accuracy | Tree & Boosting Methods |
| HMM/GMM regime labels swap between runs | Label switching: likelihood invariant to state permutation | Order-constrain states at fit; never hard-code semantics onto unconstrained indices | GMM) |
| Likelihood keeps climbing as regimes are added; states clone | Overfitting the number of regimes | Choose by BIC / out-of-sample likelihood, never max-likelihood | GMM) |
| Regime labels smooth away the future | Look-ahead from smoothed/Viterbi-decoded labels | Label online with the filtered posterior; purge/embargo backtests | GMM) |
| Hard regime switch flips a coefficient on one wrong label | Hard switching vs label error | Use the soft posterior (mixture-of-experts weighting) | GMM) |
| Gaussian-emission HMM manufactures a phantom “spike” regime | Gaussian-emission misfit on fat tails/jumps | -distributed/heavier emissions; stress-check vs no-regime baseline | GMM) |
| RL agent over-trades / exploits gross-P&L or Sharpe reward | Reward hacking: gross reward or Sharpe-only reward is gameable | Reward net-of-cost P&L with explicit risk/turnover penalty | Reinforcement Learning for Trading |
| RL policy exploits instant fills at mid / benign impact | Sim-to-real gap: agent exploits simulator artifacts | Conservative impact; validate simulator P&L vs real fills | Reinforcement Learning for Trading |
| RL policy’s guarantees expire as regimes shift | Non-stationarity: learned policy claims a fixed DGP | Regime-conditional policies, short replay windows, constant monitoring | Reinforcement Learning for Trading |
| RL result flips with the random seed | Reproducibility/evaluation noise: seed-sensitive deep RL | Report distributions over seeds; never one run vs baseline | Reinforcement Learning for Trading |
| NLP sentiment feature counts “liability/tax/gross” as negative | Dictionary misfit: generic lexicons are finance-blind | Use Loughran–McDonald / finance-native lists | Financial NLP & Transcripts |
| Many-n-gram NLP model collapses out-of-sample | Overfitting with many n-grams on sparse features | Screen inside folds, regularize, cap n-gram order | Financial NLP & Transcripts |
| Sentiment feature built from restated/leaked text | Look-ahead via restated/leaked text | Timestamp by public release; features only from text knowable at as-of | Financial NLP & Transcripts |
| Alt-data vendor rewrites history on re-run | Backfill/reinstatement time-travel: storing only latest value | Keep multiple knowledge-dated versions; forbid backwards edits | Alt-Data Pipelines |
| Vendor attrition looks like a demand collapse overnight | Panel/coverage drift read as demand | Model share or normalize by panel size | Alt-Data Pipelines |
| Best dataset’s t-stat inflated by the search | Overfitting the evaluation: winner selected on noise | Deflate for number of datasets tried (deflated Sharpe/PBO) | Alt-Data Pipelines |
| Web-scraped/leaked data exposes fund to MNPI liability | Compliance/MNPI: non-public information embedded in feed | Use public or properly-licensed primary sources only | Alt-Data Pipelines |
Execution & Microstructure
| Observed symptom | First-principles root cause | Remedy | Canonical page |
|---|---|---|---|
| Execution backtest books “trade printed” as “I filled” | Optimistic fill accounting: ignores queue position & cumulative outflow | Model cumulative outflow (trades + cancels) against queue position; record quantity | Execution Backtesting & Simulation |
| Fill-model loss grows with assumed latency | Latency omission / stale-quote pick-off | Model latency explicitly; cancel-ahead logic | Execution Backtesting & Simulation |
| Whole-day flow used for a short-lived quote inflates fill rate | Look-ahead in replay: non-causal ordering | Strict causal ordering; events affect decisions at/after timestamp | Execution Backtesting & Simulation |
| Size-blind backtest omits self-impact | Ignored self-impact: large order moves its own price | Calibrate Almgren impact; charge per leg | Execution Backtesting & Simulation |
| Correct fill model still overstates edge | Ignored adverse selection on fills | Price the conditional drift into fill P&L | Execution Backtesting & Simulation |
| Queue ahead vanishes simultaneously when a sweep arrives | Phantom-liquidity cascades: correlated cancellations | State/event-dependent cancel intensity | Execution Backtesting & Simulation |
| Impact/fill params calibrated and evaluated on same data | Calibration/benchmark drift: in-sample optimism | Out-of-sample calibration; fixed pre-declared benchmark | Execution Backtesting & Simulation |
| Almgren–Chriss schedule overpays and mis-times the trade | Linear-impact delusion: impact is concave (square-root law) | Power-law impact; size-dependent | Optimal Execution & Almgren–Chriss |
| Execution trajectory wrong because risk aversion guessed | Risk-aversion mis-estimation: is a mandate, not a data parameter | Set by mandate; oversizing over-trades | Optimal Execution & Almgren–Chriss |
| Trajectory wrong in the same direction the market is stressed | Non-stationarity of impact & vol: both shift on stress days | Re-solve intraday; treat parameters as state variables | Optimal Execution & Almgren–Chriss |
| Deterministic execution schedule front-run / predatory | Adversarial/predictable execution: open book | Randomize timing, vary venue and participation, hide the shape | Optimal Execution & Almgren–Chriss |
| Order left unfinished because liquidity under-resourced | Ignored opportunity cost of the unfilled tail (Perold) | Price the trades the market will not let you make | Optimal Execution & Almgren–Chriss |
| Static execution schedule suboptimal in trending names | Serial correlation/drift break time-homogeneity | Use the genuinely dynamic optimum; occasionally optimal to not sell | Optimal Execution & Almgren–Chriss |
| VWAP report looks great but is pure selection | VWAP is gameable: low measured cost can be a zero-sum transfer | Randomize schedules; use real-time volume/POV; adaptive IS | POV) |
| Large orders auto-flatter VWAP regardless of handling | VWAP order-size dependence: you become the benchmark | Rank on ungameable benchmarks (arrival) for large orders | POV) |
| Passive participants get picked off by informed flow | Fast laggard = adverse selection (Glosten–Milgrom) | Let algorithm react to price/variance; cut adverse selection | POV) |
| Router trades through the protected quote | Acting on a snapshot: NBBO is a past observation | Atomic re-check; sweep best protected prices in strict order | Smart Order Routing & Fragmentation |
| Venue cheap on screen, expensive in reality | Underpricing latency: pick-off loss an explicit term | Put latency in the effective price | Smart Order Routing & Fragmentation |
| Fee-blind SOR silently misroutes at scale | Optimizing the displayed price: fee misroute is silent and uniform | Rank on cum-fee price | Smart Order Routing & Fragmentation |
| Resting order rarely filled, or filled only when wrong | Queue-position risk: expected fill set by size ahead, not price | Model cumulative outflow; account for position resets on reprice | Queue Position & Fill Probability |
| Stale passive quotes filled by faster takers at wrong moment | Latency pick-off | Cancel-ahead / quote-fade logic; genuine latency reduction | Queue Position & Fill Probability |
| Frequent reprice destroys fill quality | Refresh cost: cancel-and-reinsert resets queue position | Account for expected position resets in reprice decision | Queue Position & Fill Probability |
| FOK order can’t fill; market order too large for level | Order-type mismatch is structural, not operational | Size child to visible level; choose type from partial-fill tolerance | Market Microstructure & Order Types |
| Clock skew ≥ margin ⇒ random order timing | Clock skew beyond the edge: violates simultaneous clocks | PTP grandmaster + GPS discipline <100 ns; holdover audit | Colocation & Clock Sync |
| Latency budget sized on mean, fails ~10× too often | Mean-vs-tail budget: p99.9 ≫ mean | Size tick-to-trade budgets to p99/p99.9 tail | Colocation & Clock Sync |
| One-way latency estimated from RTT/2 badly biased | Asymmetric route bias | Measure one-way with synchronized clocks, never RTT/2 | Colocation & Clock Sync |
| FPGA runaway sprays orders at clock rate | Catastrophic malfunction: no hot-fix in hardware | Out-of-band kill switches; order-rate interlocks in fabric; heartbeats off-path | Hardware Acceleration & FPGA |
Market Making & Liquidity
| Observed symptom | First-principles root cause | Remedy | Canonical page |
|---|---|---|---|
| Maker fills 100 consecutive buys right before price crashes | Toxic/adverse-selection flow: fills are informative, quote is an unpriced option | Detect toxicity (VPIN/PIN), widen/pull quotes; price conditional drift | Adverse Selection (Glosten–Milgrom) |
| Spread too thin; one-sided loss from informed fraction | Underestimated informed fraction: spread below toxicity ceiling | Re-estimate (toxicity); widen spread | Adverse Selection (Glosten–Milgrom) |
| Flat quotes through announcements/reopens | Spread not widened for rising uncertainty | Widen/thin in step with belief uncertainty | Adverse Selection (Glosten–Milgrom) |
| Volatile-but-uninformed stock quoted like informed one | Equating volatility with information | Measure permanent impact, not bounce | Adverse Selection (Glosten–Milgrom) |
| Maker quotes stale spreads into a changed market | Belief lag: parameters never updated | Update toxicity/beliefs with experience | Adverse Selection (Glosten–Milgrom) |
| Avellaneda–Stoikov quotes get picked off by informed flow | Adverse selection invisible to AS: spread covers inventory only | Layer VPIN/Lee–Ready toxicity detection; widen/pull | Avellaneda–Stoikov |
| Hard-coded quoting params misquote when regime changes | Parameter fragility: non-stationary | Refit intraday; shrink toward a prior | Avellaneda–Stoikov |
| Dealer lets inventory grow unbounded in a trend | No inventory cap: skew only discourages, not limits | Add hard inventory limit/penalty | Avellaneda–Stoikov |
| Skewed quotes cross the mid for large size | Quote crossing / marketable quotes | Clamp and cap before publishing | Avellaneda–Stoikov |
| Random-walk inventory breaches in a trend with near-certainty | Uncontrolled inventory = guaranteed breach | Skew strong enough the cap is rarely binding | Inventory Management & Quote Skewing |
| Forced liquidation realizes paper losses at worst moment | Breach under a trend converts MTM into realized loss | Pre-empt: flatten/hedge before breach | Inventory Management & Quote Skewing |
| Overnight gap bypasses intraday quote skewing | Overnight/gap risk: market closed, no quoting protection | Flatten/hedge before the close | Inventory Management & Quote Skewing |
| Rebate-masked maker desk was losing all along | Rebate masks, does not cure: subsidy moves break-even toxicity | Re-measure P&L net of rebate tier; monitor edge erosion | Market Maker Economics & Rebates |
| Risk system monitors vol but not order-flow imbalance | Inventory blowups are flow-composition, not price, events | Monitor order-flow imbalance (OFI) | Market Maker Economics & Rebates |
| Reserve sized against average adverse selection | Adverse selection clusters: informed flow autocorrelated | Size capital against the burst, not the mean | Market Maker Economics & Rebates |
| LOB reconstruction state silently wrong | Feed desynchronization: dropped/duplicated/out-of-sequence messages | Sequence-number gap detection; periodic snapshot resync | Limit Order Book Mechanics |
| Depth metrics fooled by spoofing/fleeting liquidity | Manipulative/fleeting liquidity: depth is not belief | Use intent-inference (cancellation patterns), size-weighted signals | Limit Order Book Mechanics |
| Roll model returns NaN spread | Positive autocovariance: Roll’s sign assumption fails | Check autocovariance sign; use quote-based estimators | Spread Decomposition & Roll Model |
| Roll underestimates the spread | Serial-correlated order flow: institutional splitting clusters flow | Treat plain Roll as a lower bound; use decomposition with direction data | Spread Decomposition & Roll Model |
| Impact regression inflates persistent impact | Bid-ask bounce contaminates impact estimate | Use midpoints or generalized-Roll separation | Market Impact & Depth |
| OLS impact coefficient not causal | Endogeneity: prices cause flow as well as flow causes prices | IV or event-based designs | Market Impact & Depth |
| Linear impact fit to square-root data misprices large orders | Functional-form misspecification | Power-law/square-root impact; avoid arbitrary kernels | Market Impact & Depth |
| Amihud, OFI, metaorder impact conflated | Category errors across impact families (units mismatch) | Carry units; never equate per-dollar with per-share | Market Impact & Depth |
| Full-day average misprices trades at open/close | Ignoring intraday seasonality (U-shape depth/spread) | Schedule-aware impact/participation | Market Impact & Depth |
| Calm-regime impact estimate under-charges in stress | Non-stationarity of impact with regime | Re-estimate in/for stressed regimes | Market Impact & Depth |
| Illiquidity treated as diversifiable | Liquidity covaries across assets and is a priced factor | Model liquidity as a priced factor, not diversifiable | Liquidity Risk & Asset Pricing |
| OTC desk quotes constant liquidity into a fair-weather model | Liquidity is state-dependent, collapses in stress | Stress the intensities, not just prices | Dealer Banks & OTC |
| Fire-sale spiral worsens every dealer’s loss | Fire sales feed back: same thin buyers, prices fall | Clearing/capital buffers; recognize the super-additive spiral | Dealer Banks & OTC |
| CCP failure becomes systemic | Clearing moves risk, does not delete it | Diversify CCP exposure; monitor concentrated residual risk | Dealer Banks & OTC |
| All makers pull quotes on the same VPIN signal | Self-fulfilling kill-switch: shared alarm evaporates liquidity | Decouple thresholds; distributional position not fixed cutoff | Toxic Order Flow & VPIN |
| VPIN reads volatility, not information | Conflating toxicity with volatility | Read VPIN as a flow-imbalance gauge, not an oracle | Toxic Order Flow & VPIN |
Derivatives & Pricing
| Observed symptom | First-principles root cause | Remedy | Canonical page |
|---|---|---|---|
| Delta-hedged book bleeds cash in fast volatile markets | Discrete hedging error & jump risk: continuous rebalancing ; unhedged gamma | Hedge trade-off: control gamma vs costs; accept jump risk is unhedgeable | Black–Scholes–Merton |
| Black–Scholes misprices by strike/maturity | Constant-vol delusion: one can’t fit a smile | Move to stochastic/local vol (Heston, SABR, Dupire) | Black–Scholes–Merton |
| Hedge cannot protect a discontinuous gap | Jumps & fat tails: market incomplete, price not unique | Price under a jump/regime model; size jump limits | Black–Scholes–Merton |
| American option priced with European closed form | European formula on American put understates early-exercise premium | Use binomial/tree or finite-difference American engine | No-Arbitrage & Binomial |
| Tree gives meaningless prices (bracket violated) | Unguarded bracket in low-vol/long-maturity | Assert the bracket; raise on violation | No-Arbitrage & Binomial |
| Real-measure discounting used in a risk-neutral tree | Wrong discounting measure: | Discount with (risk-neutral) for pricing | No-Arbitrage & Binomial |
| Single favorite tree price hides oscillation error | Single- reporting: error oscillation | Report an -study or averaged value | No-Arbitrage & Binomial |
| Long-dated option priced with BAW approximation | BAW error grows with maturity | Use BS-2002/tree for long maturities; benchmark | American Options & Optimal Stopping |
| Bermudan priced as American overstates value | Continuous value overstates by discretization gap | Use the discrete exercise schedule for structured notes | American Options & Optimal Stopping |
| ”Exercise when deep ITM” heuristic low-biases price | Fixed exercise rule is suboptimal | Use LSM/tree; exercise decision is a solved optimum | American Options & Optimal Stopping |
| Delta-hedging an American short near the boundary blows up | Gamma discontinuity at the early-exercise boundary | Finer rebalancing near boundary; proper American delta | American Options & Optimal Stopping |
| Finite-difference prices oscillate at payoff kinks | Ringing without instability: CN symbol negative at high frequency | Rannacher start-up, Richardson-extrapolated implicit Euler, smooth payoff | Numerical Methods (Pricing) |
| Explicit scheme values meaningless above CFL bound | CFL violation: stability is a hard constraint | Implicit/CN, or exponential fitting | Numerical Methods (Pricing) |
| MC error stubbornly present at any path count | Discretization bias masquerading as noise (Euler weak order 1) | Log transform / weak-order-2 / Richardson; Brownian interpolation for extrema | Numerical Methods (Pricing) |
| Truncation bound too small biases the answer invisibly | Truncation error is a bias, not mesh error | Set bound from payoff support; verify by widening | Numerical Methods (Pricing) |
| Importance-sampled MC variance worse than plain | Badly tilted IS: likelihood-ratio variance inflates | Monitor weight second moment; stratify instead of bigger tilt | Numerical Methods (Pricing) |
| “The model says 10.42” hides all other errors | Reporting one number with no error budget | Report price + MC SE + mesh/boundary/scheme terms | Numerical Methods (Pricing) |
| Barrier priced with continuous monitoring closed form | Continuous-form assumption: misses discrete-monitoring hits | BGK/adjust for discrete monitoring | Exotic & Path-Dependent Options |
| Binary/barrier deltas via pathwise differentiation = 0 | Pathwise Greeks on step payoffs are invalid | Likelihood-ratio or finite differences with CRN | Exotic & Path-Dependent Options |
| Quanto/spread price unstable to correlation | Correlation instability: drifts, less observable than vol | Re-run price across a -band; sensitivity not point estimate | Exotic & Path-Dependent Options |
| Converged-looking MC on a coarse grid is confidently wrong | MC dimension confusion: path error vs step (monitoring) bias | Push grid; confirm answer changes | Exotic & Path-Dependent Options |
| LV forward skew flat ⇒ barrier/cliquet/digital mispriced | LV’s flat forward skew dynamics | Use SV/SVJ for forward-skew exposure | Volatility Surfaces & Smiles |
| Interpolated smile violates no-arbitrage | Interpolation arbitrage in statics | Parametrize with arbitrage-aware objects (SVI + calendar constraints) | Volatility Surfaces & Smiles |
| Wrong wing extrapolation reprices the whole book | Extrapolation & wing risk | Enforce consistency with liquid VS quotes | Volatility Surfaces & Smiles |
| Hedging with model delta when implied vol moves with spot | Delta convention risk: BS delta ≠ minimum-variance delta | Use min-variance delta; state the sticky rule | Volatility Surfaces & Smiles |
| Recalibrating LV surface is itself unpriced P&L | Recalibration risk: LV forward skews/vol-of-vol not lockable | Price the cost of holding model dynamics | Calibration & Market Practice |
| Local-vol map explodes from raw-quote noise | Ill-posed inversion: differentiation amplifies noise | Smooth/parameterize smile first; regularize; clip local variance | Calibration & Market Practice |
| Identical fits, different hedges (SABR vs Heston) | Non-identifiability: smile fixes combinations, not parameters | Fix a convention; use term structure; ridge toward a prior | Calibration & Market Practice |
| Rich model drives today’s residuals to zero, future to nonsense | Overfitting: rich model, sparse data | Cross-validate, penalize, check no-arbitrage | Calibration & Market Practice |
| Same data/model, different desks, different params | Convention drift: silent reconciliation risk | Lock conventions; report residuals | Calibration & Market Practice |
| Heston rejected on Feller alone / Euler assumed fine | Confusing Feller condition with scheme positivity | Use Milstein/QE/exact transition; check Feller correctly | SABR) |
| Full-truncation Euler biases variance down | Truncating instead of fixing | Use Milstein, QE, or exact transition | SABR) |
| Calibration weights put all error on the wings | Calibrating without vega/bid-ask weights | Weight so a vol-point error costs the same everywhere | SABR) |
| Two parameter sets, identical RMS, different prices | Trusting the residual: RMS hides parameter stability | Report and monitor parameters and their stability | SABR) |
| Vol-of-vol carry mis-attributed in P&L | Vol risk premium priced separately, not a forecast | Attribute vol-of-vol carry explicitly | SABR) |
| One-factor model misprices steepeners/butterflies | Perfect-correlation trap: one Brownian ⇒ all forwards move together | Two-factor or market models with correlation matrix | Interest Rate & Term Structure |
| Lognormal Black-76 undefined near zero/negative rates | Negative rates break lognormal Black | Bachelier (normal), shifted lognormal, displaced diffusion | Interest Rate & Term Structure |
| Swaps misvalued post-2008 using one curve | Multi-curve/basis risk: OIS discounting vs LIBOR forwards diverged | Build LFM off curves consistent with the discount curve | Interest Rate & Term Structure |
| Cross-hedge leaves large residual basis | Basis risk irreducible with cross-hedge | Match contract to horizon; minimize but accept residual | Options Fundamentals & Markets |
| Hedge illiquid or margin-unfunded | Liquidity & margin constraints ignored | Check executable capacity; fund margin; respect constraints | Options Fundamentals & Markets |
| Contract-spec errors silently change cash flows | Contract-specification traps: multiplier, delivery options, day-count | Account for wild-card/CTD options; verify multiplier & basis | Options Fundamentals & Markets |
| Naked short call blows up | Leverage & short-option asymmetry: unbounded loss, margin scaling | Under-margining + leverage is the blow-up mechanism; cap and margin | Options Fundamentals & Markets |
| Unadjusted splits/dividends wrong by a factor | Dividend/split adjustment: pure specification error | Adjust payoff and hedge ratio for splits/dividends | Options Fundamentals & Markets |
Risk Management
| Observed symptom | First-principles root cause | Remedy | Canonical page |
|---|---|---|---|
| VaR breaches cluster and exceed promised rate | Fat tails underpriced by normality: delta-normal breaches ~1.56% vs promised 1% | EVT tails, Cornish–Fisher, or move to ES | MC VaR |
| Historical VaR pinned by a few worst days; jumps when old crash scrolls off | Ghost/window artifact | Filtered historical simulation, volatility weighting | MC VaR |
| Summed desk VaRs understate firm risk | VaR not subadditive | Move to coherent ES aggregation | MC VaR |
| VaR never validated against realized breaches | No backtest, no model | Kupiec + Christoffersen backtesting battery | MC VaR |
| Portfolio optimized on VaR loads hidden catastrophic tails | Tail blindness: VaR misses what sits past the quantile | Constrain ES, not VaR | VaR & Expected Shortfall |
| Calm window assigns zero probability beyond sample max | Window truncation: calm window is a blindfold | FHS + EVT tail extrapolation | VaR & Expected Shortfall |
| VaR/ES fall in calm markets, allowing more leverage, spiking after losses | Procyclicality feedback | Stressed VaR/ES (Basel II.5); FRTB liquidity-horizon scaling | VaR & Expected Shortfall |
| Two desks with identical risk report VaRs a quarter apart | Estimation error: VaR carries sampling noise | Confidence bands; average longer/filtered samples | VaR & Expected Shortfall |
| Extreme quantile (0.9999) estimated from few thousand losses | Small-sample distant-quantile estimation: extrapolation | Report EVT outputs as a range, not a point | Extreme Value Theory & Fat Tails |
| EVT on i.i.d. assumption fails in volatility clusters | Dependence/clustering: i.i.d. excesses fail under clustering | GARCH/EWMA filter before EVT; extremal index / point-process | Extreme Value Theory & Fat Tails |
| Tail index fitted once to 20 years mixes regimes | Regime dependence of tail index | Conditional/rolling EVT; GARCH filtering | Extreme Value Theory & Fat Tails |
| Threshold choice drives the EVT answer | Threshold no-free-lunch: optimum depends on unobservable second-order term | Pick inside the stability plateau; report sensitivity | Extreme Value Theory & Fat Tails |
| Margin haircuts spike, forced sales depress prices | Margin/funding spiral (Brunnermeier–Pedersen) | Make haircut a function of volatility & MPOR; stress both | Liquidity Risk & Funding |
| Catastrophic liquidation during stress | Funding-market coupling ignored: constant haircut deletes the spiral | Stress haircut × MPOR jointly | Liquidity Risk & Funding |
| On-the-run Treasuries liquid individually, illiquid all together | Liquidity illusion: aggregate market liquidity is a public good | Model aggregate capacity, not sum of individual estimates | Liquidity Risk & Funding |
| Impact cost from calm sample understates stress cost ~10× | Calm-period calibration: procyclical | Use stressed parameters; re-estimate MPOR | Liquidity Risk & Funding |
| Options book loses on a term never on the risk page | Cross-greek interaction: vanna/volga invisible to delta-gamma-vega report | Report/hedge vanna & volga; stress spot-down-vol-up jointly | Risk Factor Sensitivities |
| Gamma blows up at expiry; delta flips | Pin risk: gamma → ∞, digital-like at expiry | Close/roll before expiry (operational, not mathematical) | Risk Factor Sensitivities |
| Netting gammas across strikes loses real scenario info | Aggregation destroys curvature information | Never net a book’s gamma at your peril; keep strike detail | Risk Factor Sensitivities |
| Stress scenarios chosen to look mild | Scenario selection bias: severe scenarios hardest to sell internally | Build scenario set before seeing results; include reverse-stress | Stress Testing & Scenario Analysis |
| Stress outputs blended into a “total risk” number | Scenarios have no probability, not aggregable | Keep stress results conditional, separate from VaR/ES | Stress Testing & Scenario Analysis |
| Diversification vanishes exactly when needed | Correlation breakdown: the tail killer is correlations, not levels | Shock the correlation matrix itself, not just factor levels | Stress Testing & Scenario Analysis |
| Delta-only stress misses convex losses | Convexity neglect | Full revaluation on option-heavy books | Stress Testing & Scenario Analysis |
| Merton spread far below market at short maturity | Credit-spread puzzle: default forced at maturity only | Black–Cox first-passage barriers; jump-diffusion | Credit Risk & Merton Model |
| Merton PD misses sudden default | No jump-to-default: diffusion cannot collapse | Add jump channel; markets price with intensities | Credit Risk & Merton Model |
| Recovery/LGD treated as constant | Recovery is random, correlated with default | Model stochastic recovery by seniority | Credit Risk & Merton Model |
| CVA underpriced under correlated default | Independence delusion (WWR): exposure, PD, LGD treated independent | Conditional exposure (Gregory §17.6) | Counterparty Risk & XVA |
| CDS hedge pays when exposure jumps above hedged level | Wrong-way risk unhedgeable in the tail | Avoid WWR structurally: exclude linked trades from netting; EAD/LGD = 100% | Counterparty Risk & XVA |
| Zero WWR parameter reported as “no WWR” | Correlation is not independence: zero correlation ≠ independence | Report dependence honestly; it’s a category error | Counterparty Risk & XVA |
| Delta/CS01 hedge fails to protect the default event | Jump-to-default defeats the Greeks | Explicit JTD limits, not delta | Counterparty Risk & XVA |
| Collateral assumed to eliminate WWR | Collateral is a timing hedge, not a default hedge | Collateral protects gradual exposure only; size accordingly | Counterparty Risk & XVA |
| DVA double-counted with FBA | Double-counting DVA | Use one consistent package (DVA or FBA), never a mix | Counterparty Risk & XVA |
| Gaussian copula underprices the joint tail | Static copula vs dynamic dependence | Regime-condition the copula; mixture/Markov-switching | Copulas & Dependence |
| Joint tail error compounds beyond marginal errors | Both layers estimated: margins + copula, errors compound | Fit & validate both; prefer semi-parametric margins | Copulas & Dependence |
| Copula family choice swings the tail answer | Family uncertainty dominates | Report a set of copulas (dependence uncertainty band) | Copulas & Dependence |
| Tail parameters quoted without an interval | Small-sample tail estimates: bootstrap SE ≈ the estimate | Never quote a tail estimate without an interval | Copulas & Dependence |
| ”Estimated default copula” from discrete data | Discrete credit data under-identifies the copula | Over-claim; CDO correlation is implied, not observed | Copulas & Dependence |
| Every peek at the validation set improves the number | Validation-set reuse → biased low | Nested/purged CV, true holdout, multiple-testing correction | Model Risk & Validation |
| Benchmark shares structure/data with the model | Benchmark error: cannot challenge | Benchmark on different data/model class; measure error correlation | Model Risk & Validation |
| Model silently degrades when regime changes | Drift & non-stationarity: coverage decays silently | Ongoing monitoring, rolling recalibration, stress backtests | Model Risk & Validation |
| Optimizing “for the backtest” passes tests without improving model | Gaming the validator (Goodhart) | Effective challenge: independent party asks “why did this change?” | Model Risk & Validation |
| LDA capital dominated by its least-estimable parameter | Data scarcity / tail misestimation (OpRisk) | External databases, scenario analysis, Bayesian pooling, buffers | Operational Risk |
| Poisson independence wrong in stress | Tail dependence of rare events: clustered arrivals | Negative-binomial/contagion frequency; stress overlay | Operational Risk |
| Lognormal-vs-Pareto choice swings 99.9% capital ~5.8× | Severity-family selection risk | Report capital range over defensible families, never one number | Operational Risk |
| Capital falls when losses under-reported | Incentive-corrupted data | Independent, audited loss capture; de-minimis thresholds | Operational Risk |
| Compliance sells in the worst state | Procyclicality: binding constraint driven by lagging vol | Countercyclical buffers; through-the-cycle calibration | Systemic Risk & Aggregation |
| ”Sum the ES” overstates / “treat as independent” understates | Aggregation fallacy: dependence is unobservable | Disclose the dependence assumption; capitalise the worst copula | Systemic Risk & Aggregation |
| Capital ratio looks fine but the run kills the bank | Liquidity not in the capital ratio | LCR/NSFR as separate hard constraints | Basel & Regulation |
| RWA highest exactly when capital can’t be raised | Procyclicality: PDs/vols cycle-dependent | Countercyclical buffer; through-the-cycle calibration | Basel & Regulation |
Portfolio Construction
| Observed symptom | First-principles root cause | Remedy | Canonical page |
|---|---|---|---|
| Weights swing violently ( to ) on small updates | Inverted covariance noise maximization: , sample amplifies noise eigenvalues | Ledoit–Wolf shrinkage / RMT denoising | Covariance Shrinkage & RMT |
| Sample covariance singular; pinv papers over it | The cliff: sample covariance not invertible | Shrinkage/factor estimator to regularize the estimate, not the arithmetic | Covariance Shrinkage & RMT |
| Small-eigenvalue noise dominates weights | Amplification dominates small-sample inference | Accurate small eigenvalues matter most; shrink the low end | Covariance Shrinkage & RMT |
| Reported risk beats the true optimum in-sample | In-sample evaluation is not a test | Walk-forward/OOS evaluation with trailing-window covariance | Covariance Shrinkage & RMT |
| MVO bets hardest where evidence is thinnest | Mean-error amplification: mean is least reliable input | Shrink/regularize; Black–Litterman prior | MPT & Mean–Variance |
| Near-duplicate assets produce garbage weights | Small-eigenvalue explosion from collinearity | Drop/merge near-duplicates; shrink covariance | MPT & Mean–Variance |
| Frontier curve stable but the point on it is a knife-edge | Portrait-of-frontier-stable illusion: curve stable, weights not | Michaud resampling | MPT & Mean–Variance |
| Return estimates dominate the answer no matter the covariance | Means > covariances, always (Chopra–Ziemba ~10×) | Fix means (BL/shrinkage) before polishing covariance | MPT & Mean–Variance |
| Overbetting a strategy ruins growth | Overbetting is asymmetric in danger: past the Kelly optimum flips growth sign | Half-Kelly operating default | Kelly Criterion & Bet Sizing |
| Kelly computed on Gaussian variance under jumps | Gaussian variance ≠ SD of log growth under fat tails | Estimate exact growth over empirical/heavy-tailed distribution | Kelly Criterion & Bet Sizing |
| Overbet near triggers margin calls at the trough | Leverage × drawdown × margin: forced de-lever locks in ruin | De-risk pre-drawdown via fractional Kelly | Kelly Criterion & Bet Sizing |
| Black–Litterman weights near extremes | Confidence mistaken for conviction: near-zero drives naive-MVO extremes | Confidence = reciprocal of estimate variance, not a fervor dial | Black–Litterman |
| BL still blows up on near-collinear assets | BL never fixes covariance; hides under it | De-risked covariances belong in the BL stack | Black–Litterman |
| BL confidently wrong in the market’s direction during bubbles/crashes | Equilibrium bias: stability bet that market is mostly right | Overlay factor/tail views; question the prior | Black–Litterman |
| Backtest trades continuously, alpha only exists without a market | Backtesting at zero cost: removes the no-trade region | Assume cost inside optimizer; apply true cost to realized returns | Constraints & Transaction Costs |
| Strategy breaks when AUM grows | Underestimating impact for large notional: impact scales with size | Re-estimate impact as a function of your own AUM | Constraints & Transaction Costs |
| Every fresh alpha estimate looks like a trade | Treating noise in alphas as signal | Shrink alphas AND price the trades | Constraints & Transaction Costs |
| Multiple constraints interact; binding one invisible | Ignoring constraint prices when combining constraints | Report active set and multipliers, not just weights | Constraints & Transaction Costs |
| HRP tree flips and large weight blocks move | Clustering instability: tree is estimated | Co-membership/cophenetic diagnostics; average linkage, longer window | Hierarchical Risk Parity |
| HRP weights noisy from single window | Weight volatility ≫ clustering volatility | Smooth weights across windows | Hierarchical Risk Parity |
| HRP tree rebuild churns turnover | Turnover from tree churn | Constrain turnover; smooth weights | Hierarchical Risk Parity |
| HRP underperforms when the premium sits elsewhere | No expected returns ⟹ structurally incomplete | Layer a return view (BL); HRP is a pure risk allocator | Hierarchical Risk Parity |
| Calm-data covariances understate joint losses in crisis | Correlation crisis (diversification illusion) | Stress covariance; regime conditioning; tail-aware allocation | Multi-Asset & Factor Allocation |
| Carry’s steady gains hide a heavy left tail | Carry crash: negative skew, mean-variance ignores it | Tail hedge, leverage caps, defensive overlay | Multi-Asset & Factor Allocation |
| Repeated tactical re-optimisation rewrites strategy with noise | Strategic/tactical confusion | Tracking-error budget keeps the two separate | Multi-Asset & Factor Allocation |
| Robust optimizer guarantees underperformance | Over-conservatism: oversize uncertainty → shrink to zero | Calibrate uncertainty to a confidence quantile | Robust Optimization |
| Robust box protects against the wrong adversary | Uncertainty-set misspecification: wrong shape/width | Build from the estimator’s confidence region; test sensitivity to shape | Robust Optimization |
| Optimizer judged by in-sample Sharpe, ranking reverses OOS | Optimism gap (overfitting) | Report OOS; penalize in-sample-optimal solutions | Robust Optimization |
| Resampling an overfit center reproduces the overfit | Resampling false comfort | Constrain/shrink before resampling; use to build a distribution | Robust Optimization |
| Shrinking toward the grand mean erases genuine alpha spread | Shrinkage-target risk | Shrink toward an economically motivated prior (CAPM/BL implied) | Robust Optimization |
Dev / Systems
| Observed symptom | First-principles root cause | Remedy | Canonical page |
|---|---|---|---|
| Trading engine latency spikes from 1 s to 2 ms intermittently | OS syscall / dynamic memory heap lock on hot path | Pre-allocated arenas; no exceptions/allocations/logging in the loop | High-Performance C++ |
| p99.9 destroyed while median unchanged | Hidden allocation → tail explosion (amortised but unbounded) | reserve, pools, value types | High-Performance C++ |
| Latency-bound loop from cache misses | Cache misses from locality-blind layout | SoA/flat containers, sequential access | High-Performance C++ |
| Benchmark lies; optimizer deleted/reordered code | Undefined behavior in C++ (signed overflow, strict aliasing, races) | Sanitizers, std::atomic, strict-aliasing-safe access | High-Performance C++ |
| Branch misprediction flushes the pipeline | Unpredictable control flow | Branchless/cmov; sort/bucket inputs | High-Performance C++ |
| Independent counters slow down ~18× across cores | False sharing: cache coherence line-granular | alignas(64) padding of per-thread state | Concurrency & Lockless |
| Data race silently corrupts shared state | Lost update: no happens-before edge | ThreadSanitizer; treat the GIL as an accident | Concurrency & Lockless |
| Correct on x86, corrupt on ARM/PowerPC | Memory-ordering bug: missing/relaxed handshake | Review store/load ordering; explicit synchronizes-with chain | Concurrency & Lockless |
| Kill switch stalls behind an unrelated task | Priority inversion: low-priority holder starves high-priority | Priority inheritance | Concurrency & Lockless |
| CAS succeeds against reused memory | ABA problem: CAS detects same address, not same object | Tagged/DCAS pointers or generation counters | Concurrency & Lockless |
| Order transmission delayed by tens–hundreds of ms | TCP Nagle buffering: TCP_NODELAY unset | Set TCP_NODELAY; tuned low-latency socket stack | FIX Protocol & Connectivity |
Venue rejects with SequenceNumberTooLow; trading freezes | Sequence-number desynchronization across crash | Journal every message to durable storage before acting | FIX Protocol & Connectivity |
| Phantom position / double-counted quantity on replay | Duplicate execution on replay: resent ExecutionReport processed as new | Dedup on ExecID(17); treat PossDupFlag as a warning to check | FIX Protocol & Connectivity |
LeavesQty diverges from venue; hedge against ghost position | Order-state desync from a dropped report | Assert 151 == 38 − 14; reconcile on mismatch | FIX Protocol & Connectivity |
| Quoting into a dead link while OS buffers | Silent session death: no heartbeat enforcement | Enforce HeartBtInt, TestRequest, auto-disconnect | FIX Protocol & Connectivity |
| Backtest fills on the generating event | Event-driven look-ahead: fill on the generating event | Assert causal ordering at runtime | Event-Driven Backtesting Engines |
| Centred rolling window leaks the future | Centred rolling windows: sees both sides of | Audit every data derivation; forbid centred stats | Event-Driven Backtesting Engines |
| Backtest fills at mid as “conservative” | Mid-price fills: assumes a free option | Fill against the side you would actually cross | Event-Driven Backtesting Engines |
| Engine fills unlimited size | Infinite capacity: no volume cap | Cap fills by bar volume; state the cap | Event-Driven Backtesting Engines |
| Backtest can’t be re-run bit-for-bit | Non-reproducible runs: seed/tie-break/data not frozen | Fix seed, tie-break rule, data snapshot | Event-Driven Backtesting Engines |
| Single flipped bit rides into the model | Silent byte corruption: checksum fails but means/sds intact | Hash at ingest; reject on mismatch | Data Infrastructure & Reproducibility |
A 999.99 row survives because the mean looks fine | Mean-mask trap: aggregates average away outliers | Distributional stats (z-scores) and per-cell integrity | Data Infrastructure & Reproducibility |
| Rerun silently diverges after a dependency/seed change | Config drift / irreproducible reruns | Lockfile; pin deps and seed | Data Infrastructure & Reproducibility |
| Restated data served to a backtest looks “valid” | Point-in-time leakage: semantic corruption checksums can’t see | Enforce PIT at the store/query layer | Data Infrastructure & Reproducibility |
| Store can’t represent what was knowable at | Look-ahead in storage: no vintages | Append-only, bitemporal rows | Tick-Level Databases & kdb+ |
| As-of join takes seconds to hours | Unsorted index in the store | Sort by time on ingest | Tick-Level Databases & kdb+ |
| Vendor renames a field and history is reinterpreted | Schema drift: feed spec is a contract that changes | Self-describing formats; schema registry; decode-time validation | Tick-Level Databases & kdb+ |
| Store built from today’s symbols drops the delisted losers | Survivorship in the symbol universe | Point-in-time universe membership | Tick-Level Databases & kdb+ |
| Kernel tuning reverts after a reboot/package update | Silent config drift: tuning not versioned | Lock tuning into boot-time config; diff every deploy; alarm on tail | Low-Latency Linux & Networking |
| Interrupt storm re-injects variance | Jitter re-injection | Monitor p99/p99.9 continuously; EWMA drift alert | Low-Latency Linux & Networking |
| Reconciliation “stopped” but nobody alerts | Silent failure: alert on the absence of a clean run | Alert on age-since-last-clean-reconciliation | Production Risk Guards & Kill Switches |
| Per-name tolerance hides aggregate breakout | Offsetting breaks inside tolerance | Add aggregate exposure check and break-count limit | Production Risk Guards & Kill Switches |
| Guard enforces a limit against a wrong internal book | Guards vs reconciliation disagreement | Reconcile guards to the external record, not trust internal | Production Risk Guards & Kill Switches |
| Runbook unreachable in a live incident | No written runbook | Runbook reachable from alert; name first action + authorizer | Production Risk Guards & Kill Switches |
| Pandas write “didn’t stick” | Hidden copies: fancy/boolean indexing returns a copy | Check np.shares_memory; never chain indexing + assignment | Python Quant Stack |
int32 overflow silently; money inexact | dtype traps | Assert dtypes at pipeline entry; upcast accumulators; integer cents | Python Quant Stack |
| Python threads give ~1× speedup on CPU-bound work | The GIL | Processes for interpreted CPU work; @njit(nogil=True) | Python Quant Stack |
apply/loops reintroduce per-element dispatch overhead | Interpreted dispatch per element | Native reducers, NumPy/numba | Python Quant Stack |
| Vectorization exhausts RAM on big grids | Production limits: full-array materialization | Stream/polars/Arrow bridges; chunk | Python Quant Stack |
Accounting & Finance
| Observed symptom | First-principles root cause | Remedy | Canonical page |
|---|---|---|---|
| High earnings, low cash: value screen says cheap but it isn’t | Accrual-gamed earnings: ROE/margins/P/E inflate with accruals | Sloan accrual ratio; Beneish M-score | Accounting Quality & Red Flags |
| Single-year accrual ratio flags a firm as manipulator | Timing luck mistaken for quality: accruals reverse | Use trend and cumulative measures, not one year | Accounting Quality & Red Flags |
| Cash-side fabrication invisible to accrual ratios | Structural blindness: fabricated cash revenue leaves accruals untouched | External evidence: channel checks, customer filings, receivables aging | Accounting Quality & Red Flags |
| Quality screen ranks firms opposite ways across proxies | The proxy determines the answer: “quality” is not one construct | Name the construct before screening; never mix proxies blindly | Accounting Quality & Red Flags |
| Discretionary-accrual model over-rejects poor performers | Extreme-performance contamination | Add a performance control or restrict the sample | Accounting Quality & Red Flags |
| Time-series ratios break across an acquisition/standard change | Comparability breaks: ratios assume a stable entity | Mark the break year; rebuild on constant-perimeter basis | Accounting Quality & Red Flags |
| ”Improving” from a catastrophic base scores as excellent | Directional composites reward non-death | Pair every binary signal with a level condition | Accounting Quality & Red Flags |
| Negative P/E quoted as “cheap” | Negative/tiny denominators: ratio singular point | Skip the broken ratio; switch to EV/Sales, book anchors, Altman Z | Core Financial Ratios |
| P/E inflates exactly when a cyclical is cheapest | Financials/cyclicals distort the standard set | Mid-cycle normalized earnings; regulatory ratios for banks | Core Financial Ratios |
| ”Current ratio > 2” applied universally | Absolute-threshold reading: ratios are comparative | Compare to sector medians and firm’s own history | Core Financial Ratios |
| Ratios not comparable across firms | Convention mismatch: averages vs ending, pre/post-tax | Fix one convention and keep it constant | Core Financial Ratios |
| Leverage death spiral: distress → fire-sale → capital destroyed | Leverage magnifies (MM + distress externality) | Covenant headroom, longer maturities, conservative leverage | Capital Structure & Corporate Finance |
| Overlevered firm takes excessive risk | Asset substitution: equity captures upside, creditors bear downside | Debt covenants, collateral, short maturities | Capital Structure & Corporate Finance |
| Deeply levered firm refuses positive-NPV projects | Debt-overhang underinvestment: gains accrue to creditors | Restructure/de-lever before good projects arrive | Capital Structure & Corporate Finance |
| Distressed equity issuance wipes out existing common | Forced dilution: issue below intrinsic transfers wealth | Raise equity before distress (pecking order) | Capital Structure & Corporate Finance |
| DCF value dominated by the terminal value | Terminal-value dominance: 70–90% of value is the perpetuity | Test/specific; cap growth; never let perpetuity run away | Equity Valuation |
| WACC used for equity flows (or mismatched beta/ERP) | Wrong cost of capital: discount rate not matched to cash flow | Match cash flow to discount rate mechanically | Equity Valuation |
| DCF reverse-engineered to “confirm” the market price | Anchoring to price: psychological confirmation | Estimate intrinsic value independently of price | Equity Valuation |
| Single-point DCF reported to the cent | Precision illusion: implies accuracy inputs don’t support | Report a range; margin of safety | Equity Valuation |
| Value trap: cheap because deteriorating | Price reflects expected fundamentals | Require fundamental momentum (F-score, ΔROA, CFO/NI) with cheapness | Fundamental Analysis & Screening |
| Genuine bargain halves again | Falling knife: prices overshoot | Momentum veto, position sizing, staged entry | Fundamental Analysis & Screening |
| Screen on a single multiple misses debt/quality/cash | Any one ratio is gameable and incomplete | Pair value with quality and solvency metrics | Fundamental Analysis & Screening |
| Screen thresholds tuned until the backtest looks beautiful | Overfitting the screen | Keep screens simple, test across decades/regimes, prefer economic signals | Fundamental Analysis & Screening |
| Averaging down into a trap destroys capital | Concentration and behavioral failure | Written thesis, pre-committed sell rules, diversification | Fundamental Analysis & Screening |
| Restated fundamentals leak the future into a factor backtest | Look-ahead bias at the sort date | Point-in-time, as-reported data only | Quantitative Fundamental Investing |
| Value screen’s losers vanish from today’s universe | Survivorship bias: the losers delist | Include delisted firms and terminal returns | Quantitative Fundamental Investing |
| Many “distinct” factors are the same risk in different clothes | Redundancy across factors | Check correlation; prefer the parsimonious set | Quantitative Fundamental Investing |
| Value screen looks extraordinary but holds no firm that ever failed | Survivorship bias in screens | Historical universe construction incl. delistings and terminal returns | Data Sources & Corporate Data |
| Line-item history silently changes when vendor refreshes | Restatement gaps: revisions downside-clustered | Version rows by filing date; flag moved periods | Data Sources & Corporate Data |
| 13-F ownership treated as known today | Look-ahead via 13-F/ownership: legal lag bounds knowledge | Lag by filing date | Data Sources & Corporate Data |
| Free tier silently samples the universe | API/coverage limits | Bulk endpoints, caching, exponential backoff, identifying UA | Data Sources & Corporate Data |
| June-FYE firm’s “Q4” read as December | Time-zone and fiscal-calendar ambiguity | Store fiscal period explicitly; stamp next-tradable knowable-at time | Data Sources & Corporate Data |
| Earnings boosted by accruals without cash | The accruals trap (Sloan): high-accrual firms underperform | Never accept earnings without its cash counterpart | Financial Statements & Accounting |
| Revenue recognized before the customer can pay | Recognition timing games: channel stuffing, bill-and-hold | Read receivables vs revenue growth; expect later write-offs | Financial Statements & Accounting |
| Earnings shifted between periods with zero cash effect | Estimate games: bad-debt/depreciation/pension assumptions | Watch for accounting-policy changes | Financial Statements & Accounting |
| Economic claims never appear as liabilities | Off-balance-sheet operations: leases, guarantees, commitments | Read footnotes and capitalize | Financial Statements & Accounting |
| Same facts produce different reported earnings across borders | GAAP vs IFRS as a quality variable | Compare on a common basis only | Financial Statements & Accounting |
Last note: this index is generated from, and points back to, the canonical §5 Failure Modes & Practice page of each folder - go there for the derivation, the code, and the complete numbered checklist.