The tranche system wasn't redistributing collateral appreciation back to
tranche buffers. Added apply_collateral_change() which routes gains through
_rebalance_collateral (rebuilds junior buffer first) and losses through
the existing waterfall.
Parameter sweep results (param_sweep_v2.csv) show:
- Low vol (30%): 96% of configs keep senior safe, optimal SR=1.2 MZ=1.35
- Med vol (60%): 89% safe, optimal SR=1.5 MZ=1.20
- High vol (90%): 19% safe, requires SR=1.8 minimum
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>