Arte SheetsLearn. Try. Understand.

Commercial Mortgage & Fixed-Income Analytics

CMBS Yield Maintenance Prepayment Penalty Formula

Calculate commercial mortgage Yield Maintenance prepayment penalties MAX(Floor * Balance, Balance * (r_note - y_T) * ((1 - (1 + y_T)^(-T)) / y_T)) as Treasury yields move.

Why refinancing a fixed-rate commercial mortgage when rates drop triggers a huge Yield Maintenance fee!

Unlike residential mortgages that allow penalty-free refinancing, agency and CMBS commercial loans protect bondholders with Yield Maintenance: if a borrower prepays Balance B with T years remaining on an interest-only note rate r_note when matched-maturity Treasury yield is y_T > 0, the borrower must pay the Present Value (discounted at y_T) of the lost annual interest spread B * (r_note - y_T) over T years, floored at a contractual minimum penalty f_min * B (typically 1.0% of par): Penalty_YM = MAX(f_min * B, B * (r_note - y_T) * ((1 - (1 + y_T)^(-T)) / y_T))!

Verify on Loan_Balance_B = 5,000,000 (B2), Note_Rate_rn = 0.065 (B3 = 6.50%), Matched_Treasury_Yield_yT = 0.040 (B4 = 4.00%), Remaining_Term_T = 5 years (B5), and Par_Floor_fmin = 0.01 (B6 = 1.00% -> 50,000 floor): annual lost spread is 5,000,000 * 0.025 = 125,000/yr; discounted at 4.00% over 5 years (annuity factor 4.451822), Yield Maintenance equals 556,477.79 (11.13% of loan balance!)! Conversely, if Treasury rates rise above the note rate to y_T = 0.070 (7.00%), the spread strip is negative and the 1.00% floor binds at 50,000.00!

Treasury Environment (5M Loan @ 6.50%, 5 Yr Left)Present Value of Spread StripBinding Yield Maintenance Penalty
Rate-Cut Rally (y_T = 4.00%)556,477.79 (11.13% of Par)556,477.79
Matched Rate (y_T = 6.50%)0.0050,000.00 (1.00% Minimum Floor)
Higher-Rate Selloff (y_T = 7.00%)-102,504.94 (Floored)50,000.00 (1.00% Minimum Floor)

Floored CMBS Yield Maintenance Prepayment Penalty Formula

Validate B > 0, r_note > 0, y_T > 0, T > 0, and f_min >= 0.

=LET(b_ln, B2, r_nt, B3, y_tr, B4, t_rm, B5, f_mn, B6, IF(OR(b_ln <= 0, r_nt <= 0, y_tr <= 0, t_rm <= 0, f_mn < 0), "Invalid Prepayment Input", LET(pv_sp, b_ln * (r_nt - y_tr) * ((1 - ((1 + y_tr)^(-t_rm))) / y_tr), ROUND(MAX(f_mn * b_ln, pv_sp), 2))))

Effective Prepayment Penalty as % of Loan Balance Formula

Express Total Prepayment Cost / B so asset-sale disposition models compare net proceeds cleanly.

=IF(ISTEXT(E3), E3, ROUND(E3 / B2, 4))

Try the example

Use the original values or change them to test your understanding.

Further reading