From Vasicek Rates to Bond-Option Prices
A European option on a zero-coupon bond pays at a fixed expiry \(S\), while the underlying bond pays one unit at a later maturity \(T\), where \(t\le S<T\). Under the Vasicek model, the short rate at expiry is conditionally Gaussian. Since a zero-coupon bond price is exponential-affine in the short rate, its value at expiry is lognormal. Discounting the option payoff to time \(t\) then gives a closed-form price.
Work on a filtered probability space \((\Omega,\mathcal{F},(\mathcal{F}_t)_{t\ge0},\mathbb{Q})\) carrying a Brownian motion \(B_t\) under the risk-neutral measure \(\mathbb{Q}\). The short rate follows the Vasicek SDE \(dr_t=\kappa(\theta-r_t)\,dt+\sigma\,dB_t\), with \(\kappa>0\), \(\sigma\ge0\), and constant \(\theta\). The stochastic integral is an Itô integral: its integrand is progressively measurable and belongs to \(\mathcal{L}^2\) on every finite horizon, meaning \(\mathbb{E}^{\mathbb{Q}}\int_0^T H_s^2\,ds<\infty\). The drift coefficient is \(\kappa(\theta-r_t)\), and the diffusion coefficient is \(\sigma\). Option prices below are expectations under \(\mathbb{Q}\), not under the physical measure \(\mathbb{P}\).
For \(u>0\), define \(B(u)=(1-e^{-\kappa u})/\kappa\). The Vasicek zero-coupon bond price, obtained from the affine bond-pricing equation, is \(P(t,U)=A(t,U)e^{-B(U-t)r_t}\), where
Here \(P(t,U)\) is the time-\(t\) price of one unit paid at \(U\). A call with strike \(K>0\) pays \((P(S,T)-K)^+\) at \(S\); the corresponding put pays \((K-P(S,T))^+\). The risk-neutral pricing rule discounts these payoffs by the money-market account, giving the conditional discount factor \(\exp(-\int_t^S r_s\,ds)\).
The Conditional Distribution at Option Expiry
Solving the linear short-rate equation from \(t\) to \(S\) gives, with \(\tau=S-t\),
The integrand is deterministic and square-integrable, so the Itô integral is Gaussian with mean zero and variance given by the Itô isometry. Consequently, conditional on \(\mathcal{F}_t\), \(r_S\) is normal with variance \(\sigma^2(1-e^{-2\kappa\tau})/(2\kappa)\). Because \(\log P(S,T)=\log A(S,T)-B(T-S)r_S\), the log bond price is normal as well.
Proof. The solution above writes \(r_S\) as an \(\mathcal{F}_t\)-measurable quantity plus an Itô integral with deterministic integrand. Its conditional variance is \(\sigma^2\int_t^S e^{-2\kappa(S-s)}\,ds =\sigma^2(1-e^{-2\kappa(S-t)})/(2\kappa)\). The bond formula at time \(S\) gives \(\log P(S,T)=\log A(S,T)-B(T-S)r_S\), so multiplying the variance of \(r_S\) by \(B(T-S)^2\) gives the stated variance. The variance vanishes in each listed degenerate case. \(\square\)
For option pricing, the relevant distribution is not the ordinary \(\mathbb{Q}\)-distribution of \(P(S,T)\) alone. The payoff is discounted to \(t\), so the discount factor and the bond price must be treated together. The next result makes that adjustment precise without requiring an explicit formula for the tilted mean.
Proof. Set \(D=\exp(-\int_t^S r_s\,ds)\). The Vasicek solution expresses both \(r_S\) and \(\int_t^S r_s\,ds\) as affine functions of Gaussian variables, so they are jointly Gaussian conditional on \(\mathcal{F}_t\). Weighting a joint Gaussian distribution by the exponential of a linear function leaves its covariance unchanged and shifts its mean. This follows directly from the Gaussian moment-generating function: for a conditionally Gaussian vector \(X\) with mean \(m\) and covariance matrix \(\Sigma\), weighting by \(\exp(a^\mathsf{T}X)\) changes its normalized moment-generating function to \(\exp(z^\mathsf{T}(m+\Sigma a)+\tfrac12 z^\mathsf{T}\Sigma z)\). Thus under the stated discount-factor weighting, \(\log P(S,T)\) remains normal with the same variance \(\nu^2\). Its mean is determined by its expected bond price. The bond-pricing identity gives \(\mathbb{E}^{\mathbb{Q}}[D P(S,T)\mid\mathcal{F}_t]=P(t,T)\), while \(\mathbb{E}^{\mathbb{Q}}[D\mid\mathcal{F}_t]=P(t,S)\). Hence its mean under the weighted measure is \(P(t,T)/P(t,S)\).
To compute the call, write \(Y=P(S,T)\). Under this measure, \(\log Y\) is normal with variance \(\nu^2\) and mean \(\log(P(t,T)/P(t,S))-\tfrac12\nu^2\), since a lognormal variable with log-variance \(\nu^2\) has mean equal to the exponential of its log-mean plus \(\nu^2/2\). Integrating \((Y-K)^+\) over \(Y>K\) gives \(\mathbb{E}[(Y-K)^+\mid\mathcal{F}_t]= (P(t,T)/P(t,S))\Phi(h)-K\Phi(h-\nu)\). Multiplication by \(P(t,S)\) gives the call formula. Integrating \((K-Y)^+\) over \(Y<K\) gives the put formula. These integrations follow by completing the square in the normal density; the terms are respectively the truncated first moment of \(Y\) and the probability of the truncation event. The pricing expectations are finite because the discounted first moment of \(Y\) is \(P(t,T)\), and the put payoff is bounded above by \(K\). \(\square\)
Worked Prices and Checks
Worked Example: A Forward-At-The-Money Bond Option
Take \(\kappa=1\), \(\theta=0.04\), \(\sigma=0.2\), \(r_0=0.03\), \(t=0\), \(S=1\), and \(T=2\). Choose \(K=P(0,2)/P(0,1)\), so the strike equals the forward bond price.
First, \(B(1)=1-e^{-1}=0.6321206\) and \(B(2)=1-e^{-2}=0.8646647\). Since \(\theta-\sigma^2/(2\kappa^2)=0.04-0.04/2=0.02\), the affine formula gives \(\log P(0,1)=0.02(0.6321206-1)-0.01(0.6321206)^2-0.03(0.6321206)=-0.0303170\), hence \(P(0,1)\approx0.9701380\). Likewise, \(\log P(0,2)=0.02(0.8646647-2)-0.01(0.8646647)^2-0.03(0.8646647)=-0.0561231\), hence \(P(0,2)\approx0.9454228\). Thus \(K=P(0,2)/P(0,1)\approx0.974525\).
Here \(B(T-S)=B(1)=0.6321206\), and \(\sqrt{(1-e^{-2})/2}=\sqrt{(1-0.1353353)/2}\approx0.657519\). Therefore \(\nu=0.2(0.6321206)(0.657519)\approx0.0831263\). The forward-at-the-money choice makes the logarithm in \(h\) zero, so \(h=\nu/2\approx0.0415632\). Substitution in the standard normal CDF gives \(\Phi(h)\approx0.5165766\) and \(\Phi(h-\nu)=\Phi(-h)\approx0.4834234\). The call price is \(P(0,2)\Phi(h)-K P(0,1)\Phi(-h) =P(0,2)(2\Phi(h)-1)\approx0.9454228(0.0331532)\approx0.0313440\). The put price is the same because this strike makes the forward call and put values equal.
Check: put-call parity gives \(C-\operatorname{Put}=P(0,2)-K P(0,1)=0\) by the definition of \(K\), agreeing with the equal computed prices.
Worked Example: Zero Volatility
Set \(\sigma=0\), \(\theta=r_0=0.03\), and keep \(\kappa=1\). Then the rate is constant: \(r_s=0.03\), and \(P(0,U)=e^{-0.03U}\). For \(S=1\), \(T=2\), and \(K=0.95\), the bond price at expiry is \(P(1,2)=e^{-0.03}\approx0.9704455\). The call payoff is \(0.9704455-0.95=0.0204455\), and the put payoff is zero. Discounting the call payoff by \(P(0,1)=e^{-0.03}\) gives \(C(0)=e^{-0.03}(e^{-0.03}-0.95)=e^{-0.06}-0.95e^{-0.03}\approx0.0198413\).
Check: \(P(0,2)-K P(0,1)=e^{-0.06}-0.95e^{-0.03}\approx0.0198413=C(0)-\operatorname{Put}(0)\). The general formula using \(h\) is not evaluated by dividing by \(\nu\) here, because \(\nu=0\); the deterministic payoff is the appropriate limiting case.
Worked Example: Bond Maturity Equals Option Expiry
Suppose \(T=S\), so the underlying bond pays one unit exactly when the option expires. At expiry its value is \(P(S,S)=1\), with no uncertainty. For \(K=1.05\), \(S=1\), and the constant rate \(r=0.03\), the call payoff is \((1-1.05)^+=0\) and the put payoff is \((1.05-1)^+=0.05\). Since \(P(0,1)=e^{-0.03}\approx0.9704455\), the put price is \(0.05e^{-0.03}\approx0.0485223\).
Check: parity gives \(C-\operatorname{Put}=0-0.0485223\). Its right side is \(P(0,S)-K P(0,S)=(1-1.05)e^{-0.03}=-0.05(0.9704455)\approx-0.0485223\), as required.
Put-Call Parity and Common Pitfalls
Subtracting the put formula from the call formula cancels the normal-CDF terms using \(\Phi(x)+\Phi(-x)=1\). This gives the bond-option parity relation \(C(t)-\operatorname{Put}(t)=P(t,T)-K P(t,S)\). It is also obtained directly from the payoff identity \((x-K)^+-(K-x)^+=x-K\), followed by risk-neutral discounting. The parity relation is therefore a useful independent check on calculations.
A common error is to discount the option payoff by \(e^{-r_t(S-t)}\), treating the current short rate as constant. Under Vasicek, the discount factor is instead \(\exp(-\int_t^S r_s\,ds)\); its conditional expectation is \(P(t,S)\). A second error is to use the variance of \(r_S\) without multiplying by \(B(T-S)^2\). The option is written on the bond price, whose logarithm scales rate uncertainty by that bond’s maturity loading.
The formula assumes \(t<S<T\) and \(\nu>0\). At \(S=t\), the payoff is already known and is valued directly. At \(T=S\), the underlying bond pays one at expiry and its value there is deterministic. At \(\sigma=0\), the entire rate path is deterministic conditional on the current rate, so direct payoff evaluation replaces the division by \(\nu\). These cases preserve put-call parity.
Check Your Understanding
Use the stated maturity ordering and distinguish the bond’s maturity from the option’s expiry in each answer.
- For \(t<S<T\), derive the conditional variance of \(r_S\) from the explicit Vasicek solution.
- Explain why the log bond price at \(S\) has variance \(\sigma^2B(T-S)^2(1-e^{-2\kappa(S-t)})/(2\kappa)\).
- Show directly from the payoff identity that \(C(t)-\operatorname{Put}(t)=P(t,T)-KP(t,S)\).
- What should replace the formula involving \(h\) when \(\sigma=0\), and why?
- If \(T=S\), what is the bond’s value at option expiry, and what does that imply for the option payoff?