Example run · Rendered Markdown
ETF Liquidity
Can stressed underlying liquidity and AP capacity absorb an ETF redemption, and what NAV discount could the gap imply?
Exact commandRepository root
PYTHONPATH=labs/etf-liquidity/src python3 -m etf_liquidity_stress_lab stress labs/etf-liquidity/examples/sample_holdings.csv --aum 2500000000 --redemption-pct 0.12 --ap-capacity 160000000 --market-depth 0.70
Real outputExit code 0
ETF Liquidity Stress Report
Risk level: SEVERE
| Metric | Value |
|---|---|
| Redemption shock | $300.0M |
| Stressed underlying liquidity | $856.9M |
| AP daily capacity | $160.0M |
| Liquidity gap | $140.0M |
| Estimated discount | 369.8 bps |
| Liquidation days | 1.88 |
| Weighted spread | 31.9 bps |
| Thin-basket weight | 44.0% |
Key warnings
- AP capacity overwhelmed
- Large weight in thinly traded constituents
Methodology
- ADV is haircut by liquidity tier (liquid 35%, moderate 20%, thin 6%) and scaled by market-depth stress.
- Daily stress capacity is the lesser of authorized-participant capacity and stressed underlying basket liquidity.
- Estimated discount combines weighted spread, tracking buffer, liquidity gap ratio, thin-basket penalty, and liquidation-days penalty.