module_liq_ladder.py.| Number | What it is | How it behaves in a crash |
|---|---|---|
| Max Loss | Worst case if held to LEAPS expiry. Fixed by your strikes: net debit + (short put − hedge put) gap. | Never moves. The broker never looks at it. |
| Margin requirement | What IBKR sets aside today: worst loss in a ±15% scan from the current price. | Shrinks as the market falls (deep-ITM options lose gamma; the scan band narrows in dollars). |
| NLV (your equity) | Live mark-to-market account value. | Falls hard. This is the only number that actually collapses. |
The best single predictor is the Max-Loss-to-Cash ratio. For this structure family (deep-ITM LEAPS call + OTM LEAPS short put + far-OTM held hedge):
Check: 1.5x max-loss book → −90 + 30 = −60%, matching the simulated −61%. Below 1.0x the answer is NEVER. Verify the exact level in IBKR Risk Navigator (what-if: drag price down, vol up, watch Excess Liquidity) before executing: that is the broker's own model and the final word.
| Dial | Measures | Drives |
|---|---|---|
| Delta leverage | Live market exposure per account dollar. Sum each leg's share-equivalence (deep LEAPS call ~0.9, short put adds +0.2-0.3, hedge ~0), × spot × 100 × contracts, ÷ NLV. | Day-to-day P&L per 1% move; your upside. |
| Max Loss ÷ cash | Worst-case loss vs what you hold. | Liquidation risk. The ladder keys off this one. |
They rise together as you add contracts but are not the same thing. A fortress contract carries MORE than 1.0 delta at entry (the short put adds bullish exposure), and the delta breathes: toward 1.0 per contract in a rally, above it in a selloff while dollar leverage self-de-levers toward 1x.
Income = fully covered at the run's SC delta.
| Book | Max Loss | ML ÷ Cash | Delta Leverage | Margin (t0) | Cushion | Net Inc/mo | E[Inc]/mo | Liquidates At |
|---|---|---|---|---|---|---|---|---|
| 3 SPY / 4 QQQ | $459,465 | 0.66x | 0.82x | $89,293 | $610,707 | $7,807 | $3,221 | NEVER |
| 4 SPY / 5 QQQ | $593,370 | 0.85x | 1.05x | $114,967 | $585,033 | $9,962 | $4,113 | NEVER |
| 5 SPY / 6 QQQ | $727,275 | 1.04x | 1.28x | $140,642 | $559,358 | $12,117 | $5,005 | NEVER |
| 6 SPY / 7 QQQ | $861,180 | 1.23x | 1.52x | $166,316 | $533,684 | $14,271 | $5,897 | -82% |
| 7 SPY / 9 QQQ | $1,052,835 | 1.50x | 1.86x | $204,260 | $495,740 | $17,769 | $7,334 | -61% |
| 8 SPY / 10 QQQ | $1,186,740 | 1.70x | 2.10x | $229,935 | $470,065 | $19,924 | $8,226 | -49% |
| 9 SPY / 11 QQQ | $1,320,645 | 1.89x | 2.33x | $255,609 | $444,391 | $22,079 | $9,118 | -40% |
Income zeroed for: IBIT
| Book | Max Loss | ML ÷ Cash | Delta Leverage | Margin (t0) | Cushion | Net Inc/mo | E[Inc]/mo | Liquidates At |
|---|---|---|---|---|---|---|---|---|
| 90 IBIT | $265,950 | 0.38x | 0.50x | $52,235 | $647,765 | $0 | $0 | NEVER |
| 120 IBIT | $354,600 | 0.51x | 0.66x | $69,647 | $630,353 | $0 | $0 | NEVER |
| 150 IBIT | $443,250 | 0.63x | 0.83x | $87,058 | $612,942 | $0 | $0 | NEVER |
| 180 IBIT | $531,900 | 0.76x | 0.99x | $104,470 | $595,530 | $0 | $0 | NEVER |
| 230 IBIT | $679,650 | 0.97x | 1.27x | $133,490 | $566,510 | $0 | $0 | NEVER |
| 250 IBIT | $738,750 | 1.06x | 1.38x | $145,097 | $554,903 | $0 | $0 | NEVER |
| 300 IBIT | $886,500 | 1.27x | 1.66x | $174,117 | $525,883 | $0 | $0 | -85% |
| 350 IBIT | $1,034,250 | 1.48x | 1.93x | $203,136 | $496,864 | $0 | $0 | -72% |
Engine: Black-Scholes leg marks vs entry mids; TIMS-style ±15%
scan margin (validated within ~4% of the fortress_v28 margin_proxy at t0);
crash vol multiplier 1 + 3.3×|drawdown| with sqrt(30/DTE) tenor damping on the
margin surface; crossover = first 1% step where NLV − margin ≤ 0, searched
to −95%. Income columns are the dashboard's net (headline) and calibrated
E[net] rates and are NOT credited inside the crossover (conservative). Levels carry
±3-4 pts of model tolerance. Regenerate:
cd ~/fortress/scripts && python3 module_liq_ladder.py <dashboard.html>
--nlv 700000 --ladder "SPY,QQQ:3/4,...,9/11" --ladder "IBIT:90,...,350" --no-income IBIT
--html <out.html>