Indexes were calm, then spreads gapped and liquidity vanished
Question
All quarter we saw low volatility and tight spreads. Then, in one session, spreads blew out, top-of-book depth disappeared, and execution slippage spiked. Our hedges were on, but fills got expensive and rebalancing ran long. If the market was “calm,” why did it break so suddenly?
Answer ✅
Price calm can hide microstructure instability. When depth thins, spreads wobble, and impact per dollar climbs, a small shock can trigger a big liquidity air pocket. SSM-Audit adds a stability band beside the execution and market-microstructure KPIs you already track, so you see whether conditions are truly liquid or just quiet—before a crunch.
What the bands would have shown 📊
• Bid-ask spread stability slipping from A+ to A0 / A- ahead of the event
• Top-of-book depth degrading to A- / A– (shallower ladders across venues)
• Slippage per 1M notional weakening (A0 -> A-), especially in the last hour
• NAV premium/discount stability for relevant ETFs tilting to A- (arb getting noisy)
• Cancel/replace churn rising (market-maker mood shifting) while headline vol stayed low
What to do now 🛠️
- Band the microstructure set: spread, depth (L1–L5), slippage per notional, ETF premium/discount, last-hour impact.
- Pre-commit execution rules: when any band drops to A-, throttle participation, lengthen schedule, or switch venue/algos.
- Avoid last-hour dependency: move rebalance windows earlier when bands weaken; split days if needed.
- Hedge earlier, trim faster: pre-hedge partials when bands slide, don’t wait for the headline vol to move.
- Run post-mortems by band: store bands with each order to learn which playbooks work under A- / A–.
How SSM-Audit helps (practicalities) 🌟
- No additional infrastructure: sits beside your EMS/TCA feeds and dashboards.
- Numbers unchanged: you keep reporting the same metrics; stability is a read-only overlay.
- Easy to use: spreadsheet/BI friendly; add a small “conditions panel” to pre-trade checks.
- Universal language: A++ / A+ / A0 / A- / A– aligns PMs, traders, and risk quickly.
CLI 💻 — try our mini Calculator to identify the drift
(Mini CLI Download Page)
Feed your execution CSV and see bands and drift at a glance (numbers unchanged).
# Spread stability (e.g., median spread over rolling window)
ssm_audit_mini_calc markets.csv --kpi "Bid-Ask Spread" \
--out bands_spread.csv --plot_kpi "Bid-Ask Spread" --build_id mkt
# Top-of-book depth (aggregated across venues)
ssm_audit_mini_calc markets.csv --kpi "Top-of-Book Depth" \
--out bands_depth.csv --plot_kpi "Top-of-Book Depth" --build_id mkt
# Slippage per 1M notional (exec vs arrival)
ssm_audit_mini_calc markets.csv --kpi "Slippage per 1M" \
--out bands_slippage.csv --plot_kpi "Slippage per 1M" --build_id mkt
# ETF NAV premium/discount stability (if relevant)
ssm_audit_mini_calc markets.csv --kpi "ETF Premium/Discount" \
--out bands_premdisc.csv --plot_kpi "ETF Premium/Discount" --build_id mkt
Outputs you will get:
- CSVs with stability bands for each timestamp (e.g.,
bands_spread.csv). - Drift charts per KPI (
--plot_kpi) showing weakening conditions before the air pocket. - Optional alerts if you enable thresholds in your setup.
Technical notes
Representation: x = (m, a) with a in (-1, +1)
Collapse parity: phi((m,a)) = m
Order-invariant pooling:
U = sum(w_i * atanh(a_i))
W = sum(w_i)
a_out = tanh( U / max(W, eps_w) )
Typical bands (example):
A++: a >= 0.75
A+: 0.50 - 0.75
A0: 0.25 - 0.50
A-: 0.10 - 0.25
A--: a < 0.10
Navigation
Back: SSM-Audit Q&A Series – Banking (Question 6)
Next: SSM-Audit Q&A Series – Currency (Question 8)
Page disclaimer
Illustrative scenario for research and education. Observation-only; do not use for critical decisions without independent validation.