Financial Modeling
Vasicek Short-Rate Term Structure: Zero-Coupon Bond Price P(0,T) & Spot Yield
Price default-free zero-coupon bonds and derive continuously compounded spot yields under Oldrich Vasicek’s (1977) Ornstein-Uhlenbeck mean-reverting interest-rate model.
Affine A(tau) and B(tau) closed-form structure of the Vasicek short-rate model
Under risk-neutral Ornstein-Uhlenbeck dynamics dr_t = kappa * (theta - r_t) dt + sigma dW_t, short rates pull toward long-run equilibrium theta at speed kappa with Gaussian volatility sigma. Unlike flat-yield discounting EXP(-r_0 * tau), Vasicek produces realistic upward-sloping yield curves when r_0 < theta, inverted curves when r_0 > theta, and a convexity pull-down -sigma^2 / (2 * kappa^2) at long maturities.
For maturity tau, duration sensitivity is B(tau) = (1 - EXP(-kappa * tau)) / kappa, log-intercept is ln_A(tau) = (theta - sigma^2 / (2 * kappa^2)) * (B(tau) - tau) - (sigma^2 / (4 * kappa)) * B(tau)^2, zero-coupon bond price is P(0, tau) = EXP(ln_A(tau) - B(tau) * r_0), and continuously compounded spot yield is y(0, tau) = -LN(P(0, tau)) / tau.
| Vasicek Quantity (tau = 4 yr) | Formula | Example (kappa=0.5, theta=5%, sigma=2%, r0=3%) |
|---|---|---|
| Rate Sensitivity B(tau) | (1 - EXP(-kappa * tau)) / kappa | 1.7293 years |
| Affine Log-Term ln A(tau) | (theta - sig^2/(2k^2))*(B - tau) - sig^2*B^2/(4k) | -0.1123 |
| Zero-Coupon Price P(0, 4) | EXP(ln_A - B * r_0) | 0.8486 (84.86% of par) |
| Continuous Spot Yield y(4) | -LN(P(0, 4)) / tau | 0.0410 (4.10% > 3.00% r_0) |
Vasicek B(tau) & Zero-Coupon Bond Price P(0, tau) Formula
Bind kappa, theta, sigma, r_0, and tau inside LET to evaluate B(tau), ln_A(tau), and P(0, tau) without intermediate rounding error.
=LET(kap, B2, th, B3, sig, B4, r_now, B5, mat, B6, b_fac, (1 - EXP(-kap * mat)) / kap, ln_a, (th - (sig ^ 2) / (2 * (kap ^ 2))) * (b_fac - mat) - ((sig ^ 2) / (4 * kap)) * (b_fac ^ 2), ROUND(EXP(ln_a - b_fac * r_now), 4))Continuously Compounded Spot Yield Formula
Recover the annualized continuous spot rate from exact bond price via -LN(P) / tau.
=ROUND(-LN(E3) / B6, 4)Try the example
Use the original values or change them to test your understanding.