Money Markets, Securities Financing & Tri-Party / Bilateral Repo
Repo Collateral Haircut, ACT/360 Interest & Leverage Formula
Calculate Securities Repurchase Agreement (Repo) Purchase Cash Lent After Haircut on Dirty Collateral Value, ACT/360 Repo Interest ($M), Term Repurchase Price ($M), and Implied Collateral Leverage Multiple (1 / Haircut).
Apply repo haircuts to DIRTY market value and accrue repo interest on ACT/360!
In a bilateral or tri-party Repurchase Agreement (Repo), a dealer sells bonds of Dirty Market Value (Clean Price + Accrued Coupon!) to a cash lender for Initial Purchase Price = Dirty_MV * (1 - Haircut), agreeing to buy them back T actual calendar days later on an ACT/360 money-market day-count basis at Repurchase_Price = Purchase_Cash * (1 + Repo_Rate * (Actual_Days / 360))! Two mistakes frequently corrupt repo funding desks: applying the haircut to CLEAN price (short-changing cash proceeds) or using 365 days instead of ACT/360! Moreover, because the borrower funds Haircut * Dirty_MV out of equity, Implied Repo Leverage = 1 / Haircut—explaining why doubling a 4% haircut to 10% slashes permissible leverage from 25x to 10x!
Verify on a 30-Day Corporate Bond Term Repo—Dirty_Collateral_MV = $50.00M (B2), Repo_Haircut = 0.04 (4.0%, B3 -> Initial Cash Lent = 50 * 0.96 = $48.00M in E2), Repo_Rate_ACT360 = 0.0525 (5.25%, B4), and Actual_Term_Days = 30 days (B5 -> ACT/360 Repo Interest = 48.00 * 0.0525 * (30 / 360) = $0.2100M in E3): Term Repurchase Price is $48.2100M (E4), and Maximum Haircut Leverage Multiple is 1 / 0.04 = 25.00x (E5)!
| Term Repo Metric ($50M Dirty MV, 4% Haircut, 5.25% Rate, 30 Days ACT/360) | Formula | Verified Output |
|---|---|---|
| Initial Purchase Cash ($M) | Dirty_Collateral_MV * (1 - Haircut) | $48.00M ($45.00M @ 10% Haircut) |
| ACT/360 Repo Interest ($M) | Purchase_Cash * Repo_Rate * (Days / 360) | $0.2100M ($210,000) |
| Term Repurchase Price ($M) | Purchase_Cash + Repo_Interest | $48.2100M |
| Max Haircut Leverage (x) | 1 / Repo_Haircut | 25.00x (10.00x @ 10% Haircut) |
ACT/360 Term Repo Repurchase Price Formula
Validate Dirty_MV > 0, Haircut in (0, 0.50], Repo_Rate > -0.05, and Actual_Days >= 1!
=LET(mv_d, B2, hc_r, B3, rp_r, B4, dy_a, B5, IF(OR(mv_d <= 0, hc_r <= 0, hc_r > 0.5, rp_r <= -0.05, dy_a < 1), "Invalid Repo Financing Input", LET(cs_0, mv_d * (1 - hc_r), in_t, cs_0 * rp_r * (dy_a / 360), ROUND(cs_0 + in_t, 4))))Volatility Haircut-Widening Margin Call Check (Set Haircut = 10.0%)
Widen Repo_Haircut B3 from 4.0% to 10.0% during a credit selloff: Purchase Cash Lent E2 drops by $3.00M to $45.00M (triggering an immediate $3.00M cash margin call!) while Max Leverage E5 contracts from 25.00x down to 10.00x!
=IF(ISTEXT(E4), E4, ROUND(1 / B3, 2))Try the example
Use the original values or change them to test your understanding.