CIR Named Functions and Riccati ODEs¶
The CIR model retains the affine bond price structure \(P(t,T) = A(\tau)\,e^{-B(\tau)\,r_t}\) of the Vasicek model, but the state-dependent diffusion \(\sigma\sqrt{r_t}\) produces a genuinely quadratic (Riccati) ODE for \(B(\tau)\) rather than the linear ODE that arises in Vasicek. This quadratic nonlinearity introduces an auxiliary parameter \(\gamma = \sqrt{\kappa^2 + 2\sigma^2}\) that governs the rate of exponential decay and leads to more complex---but still closed-form---expressions for \(A\) and \(B\). This section derives the Riccati ODEs, solves them, and compares the CIR and Vasicek named functions.
Bond pricing PDE for the CIR model¶
The CIR short rate under \(\mathbb{Q}\) satisfies \(dr_t = \kappa(\theta - r_t)\,dt + \sigma\sqrt{r_t}\,dW_t\). The zero-coupon bond price \(P(t,T) = f(t, r_t)\) satisfies the PDE
with terminal condition \(f(T, r) = 1\). The crucial difference from Vasicek is the factor \(r\) multiplying \(f_{rr}\): the diffusion coefficient \(\sigma^2 r\) is affine in \(r\), preserving the affine structure.
The affine ansatz¶
We seek a solution of the form
where \(\tau = T - t\), with \(A(0) = 1\) and \(B(0) = 0\).
Computing derivatives (with \(\dot{A} = dA/d\tau\), \(\dot{B} = dB/d\tau\)):
Substituting into the PDE and dividing by \(A\,e^{-Br}\):
Collecting terms in \(r\) and the constant:
Setting both the coefficient of \(r\) and the constant to zero yields two ODEs.
Riccati ODE for B(tau)¶
The coefficient of \(r\) gives
This is a Riccati equation---a first-order ODE that is quadratic in the unknown \(B\). The quadratic term \(-\frac{1}{2}\sigma^2 B^2\) arises from the \(\frac{1}{2}\sigma^2 r\,f_{rr}\) term in the PDE, which itself comes from the state-dependent diffusion \(\sigma^2 r\).
In the Vasicek model, the diffusion is constant (\(\sigma^2\) independent of \(r\)), so the \(f_{rr}\) term contributes to the constant (not the \(r\)-coefficient), and the ODE for \(B\) is linear. The CIR square-root diffusion makes the \(f_{rr}\) contribution proportional to \(r\), producing the quadratic Riccati.
Solution¶
Define the auxiliary parameter
Note that \(\gamma > \kappa\) always. The Riccati equation has the closed-form solution
Derivation
The Riccati ODE \(\dot{B} = 1 - \kappa B - \frac{1}{2}\sigma^2 B^2\) has two equilibria (fixed points) where \(\dot{B} = 0\):
where \(\gamma = \sqrt{\kappa^2 + 2\sigma^2}\). Since \(\gamma > \kappa\), \(B_+ > 0\) and \(B_- < 0\).
The general solution of the Riccati ODE with initial condition \(B(0) = 0\) is obtained by the substitution \(B = -2\dot{u}/(\sigma^2 u)\), which converts the Riccati into a second-order linear ODE \(\ddot{u} - \kappa\dot{u} - \frac{1}{2}\sigma^2 u = 0\) (after appropriate manipulation). The characteristic roots are \((\kappa \pm \gamma)/2\).
Solving with the initial conditions corresponding to \(B(0) = 0\) yields the stated formula. \(\square\)
Properties of B(tau) in CIR¶
- \(B(0) = 0\): boundary condition satisfied
- \(B(\tau) > 0\) for \(\tau > 0\): bond prices decrease in \(r\)
- \(B(\tau) \to B_+ = (\gamma - \kappa)/\sigma^2\) as \(\tau \to \infty\): saturation at a finite limit
- \(B(\tau) \approx \tau\) for small \(\tau\): agrees with Vasicek to first order
- \(\dot{B}(\tau) > 0\): \(B\) is strictly increasing
The saturation level \(B_+ = (\gamma - \kappa)/\sigma^2\) is strictly less than the Vasicek saturation \(1/\kappa\) when \(\sigma > 0\), because \(\gamma - \kappa < \sigma^2/\kappa\) (verifiable from \(\gamma^2 = \kappa^2 + 2\sigma^2\)).
ODE for A(tau)¶
The constant term gives
Integrating:
Substituting the expression for \(B(s)\) and evaluating the integral:
The exponent \(2\kappa\theta/\sigma^2 = \nu/2\) involves the Feller ratio \(\nu\).
Properties of A(tau) in CIR¶
- \(A(0) = 1\): boundary condition satisfied
- \(0 < A(\tau) \leq 1\) for \(\tau \geq 0\)
- \(A(\tau) \to 0\) as \(\tau \to \infty\) (exponential decay)
Complete CIR bond pricing formula¶
Assembling the results:
with
Verification. At \(\tau = 0\): \(B(0) = 0\), \(A(0) = (2\gamma/(2\gamma))^{2\kappa\theta/\sigma^2} = 1\), so \(P(T,T) = 1\). \(\square\)
Comparison with Vasicek named functions¶
| Property | Vasicek | CIR |
|---|---|---|
| ODE for \(B\) | Linear: \(\dot{B} = 1 - \kappa B\) | Riccati: \(\dot{B} = 1 - \kappa B - \frac{1}{2}\sigma^2 B^2\) |
| \(B(\tau)\) | \(\frac{1 - e^{-\kappa\tau}}{\kappa}\) | \(\frac{2(e^{\gamma\tau}-1)}{(\gamma+\kappa)(e^{\gamma\tau}-1)+2\gamma}\) |
| Saturation \(B(\infty)\) | \(1/\kappa\) | \((\gamma - \kappa)/\sigma^2 < 1/\kappa\) |
| Auxiliary parameter | None | \(\gamma = \sqrt{\kappa^2 + 2\sigma^2}\) |
| \(\ln A\) depends on | \(B(\tau) - \tau\), \(B(\tau)^2\) | \(\int_0^\tau B(s)\,ds\) |
| \(A(\tau)\) form | Exponential of polynomial in \(B\) | Power of rational function |
| Small-\(\tau\) expansion of \(B\) | \(\tau - \frac{1}{2}\kappa\tau^2 + \cdots\) | \(\tau - \frac{1}{2}\kappa\tau^2 + \cdots\) (same) |
The small-\(\tau\) expansions agree to first order: \(B^{\text{CIR}}(\tau) = \tau - \frac{1}{2}\kappa\tau^2 + O(\tau^3) = B^{\text{Vas}}(\tau) + O(\tau^3)\). The difference appears at order \(\tau^3\), where the CIR \(B\) function has an additional \(-\frac{1}{6}\sigma^2\tau^3\) contribution from the quadratic Riccati term.
Yield and forward rate¶
CIR yield¶
Long-run CIR yield¶
As \(\tau \to \infty\):
Compare with the Vasicek long-run yield \(R_\infty^{\text{Vas}} = \theta - \sigma^2/(2\kappa^2)\). The CIR long-run yield does not have a simple "mean minus convexity correction" form because the convexity correction is itself level-dependent.
CIR forward rate¶
Wait---the forward rate simplifies to
More directly, from \(-\partial_T \ln P = B'(\tau)\,r_t + \kappa\theta\,B(\tau)\)... To avoid errors, the forward rate is best computed numerically as \(f(t,T) = -\partial_T \ln P(t,T)\) using the explicit \(A\) and \(B\) formulas.
Numerical example¶
Parameters: \(\kappa = 0.5\), \(\theta = 0.04\), \(\sigma = 0.1\), \(r_0 = 0.03\).
Auxiliary: \(\gamma = \sqrt{0.25 + 0.02} = \sqrt{0.27} = 0.5196\).
CIR vs Vasicek B(tau):
| \(\tau\) | \(B^{\text{Vas}}\) | \(B^{\text{CIR}}\) | Ratio |
|---|---|---|---|
| 1 | 0.787 | 0.771 | 0.980 |
| 5 | 1.836 | 1.594 | 0.868 |
| 10 | 1.987 | 1.703 | 0.857 |
| \(\infty\) | 2.000 | 1.961 | 0.980 |
The CIR \(B\) function is always smaller than Vasicek's, reflecting the additional risk-adjustment from the state-dependent volatility.
Bond prices:
| \(\tau\) | \(P^{\text{Vas}}\) | \(P^{\text{CIR}}\) |
|---|---|---|
| 1 | 0.974 | 0.974 |
| 5 | 0.900 | 0.904 |
| 10 | 0.829 | 0.839 |
| 30 | 0.620 | 0.660 |
CIR bond prices are slightly higher (yields lower) than Vasicek for the same parameters, because the CIR \(B\) function saturates at a lower level.
Summary¶
The CIR named functions \(A(\tau)\) and \(B(\tau)\) are derived from the same affine ansatz as Vasicek, but the state-dependent diffusion \(\sigma^2 r\) produces a Riccati (quadratic) ODE for \(B\) instead of a linear one. The solution involves the auxiliary parameter \(\gamma = \sqrt{\kappa^2 + 2\sigma^2}\), which reflects the interaction between mean reversion and volatility. The CIR \(B\) function saturates at \((\gamma - \kappa)/\sigma^2 < 1/\kappa\), producing smaller long-maturity sensitivities than Vasicek. Despite the more complex formulas, the affine structure is preserved, ensuring closed-form bond prices and a tractable framework for yield curve modeling and derivative pricing.
Exercises¶
Exercise 1. For CIR parameters \(\kappa = 0.5\), \(\theta = 0.04\), \(\sigma = 0.1\), compute \(\gamma = \sqrt{\kappa^2 + 2\sigma^2}\). Then evaluate \(B(\tau)\) for \(\tau = 1, 5, 10\) years and compare with the Vasicek \(B(\tau) = (1 - e^{-\kappa\tau})/\kappa\) using the same \(\kappa\). Verify that \(B^{\text{CIR}} < B^{\text{Vas}}\) for all \(\tau > 0\).
Solution to Exercise 1
Given \(\kappa = 0.5\), \(\theta = 0.04\), \(\sigma = 0.1\).
Vasicek \(B\): \(B^{\text{Vas}}(\tau) = (1 - e^{-\kappa\tau})/\kappa = 2(1 - e^{-0.5\tau})\).
CIR \(B\): \(B^{\text{CIR}}(\tau) = \frac{2(e^{\gamma\tau}-1)}{(\gamma+\kappa)(e^{\gamma\tau}-1)+2\gamma}\).
| \(\tau\) | \(e^{\gamma\tau}\) | \(B^{\text{CIR}}\) | \(B^{\text{Vas}}\) | \(B^{\text{CIR}} < B^{\text{Vas}}\)? |
|---|---|---|---|---|
| 1 | \(e^{0.5196} \approx 1.681\) | \(\frac{2(0.681)}{1.0196(0.681)+1.039} = \frac{1.362}{1.734} \approx 0.786\) | \(2(1-0.6065) = 0.787\) | Yes |
| 5 | \(e^{2.598} \approx 13.44\) | \(\frac{24.88}{13.72} \approx 1.813\) | \(2(1-0.0821) = 1.836\) | Yes |
| 10 | \(e^{5.196} \approx 180.7\) | \(\frac{2(179.7)}{1.0196(179.7)+1.039} = \frac{359.4}{184.3} \approx 1.950\) | \(2(1-0.00674) = 1.987\) | Yes |
In all cases \(B^{\text{CIR}} < B^{\text{Vas}}\), confirmed. The CIR \(B\) function is always below the Vasicek \(B\) because the quadratic Riccati term \(-\frac{1}{2}\sigma^2 B^2\) in the CIR ODE provides additional downward drag on the growth of \(B\).
Exercise 2. Verify that \(B(0) = 0\) by direct substitution into the CIR formula. Then compute \(\dot{B}(0)\) by differentiating the formula (or using the Riccati ODE at \(\tau = 0\)) and show that \(\dot{B}(0) = 1\), which matches the Vasicek small-\(\tau\) behavior \(B(\tau) \approx \tau\).
Solution to Exercise 2
\(B(0) = 0\): At \(\tau = 0\): numerator is \(2(e^0 - 1) = 0\), denominator is \((\gamma+\kappa)(0) + 2\gamma = 2\gamma \neq 0\). So \(B(0) = 0/2\gamma = 0\). \(\checkmark\)
\(\dot{B}(0) = 1\): From the Riccati ODE: \(\dot{B}(\tau) = 1 - \kappa B(\tau) - \frac{1}{2}\sigma^2 B(\tau)^2\).
At \(\tau = 0\): \(\dot{B}(0) = 1 - \kappa \cdot 0 - \frac{1}{2}\sigma^2 \cdot 0 = 1\). \(\checkmark\)
Alternatively, differentiating the formula directly. Let \(D(\tau) = (\gamma+\kappa)(e^{\gamma\tau}-1) + 2\gamma\). Then \(B = 2(e^{\gamma\tau}-1)/D\).
At \(\tau = 0\): \(D(0) = 2\gamma\), \(e^0 = 1\):
This confirms the small-\(\tau\) behavior \(B(\tau) \approx \tau\), matching Vasicek.
Exercise 3. The Riccati ODE has equilibria at \(B_{\pm} = (-\kappa \pm \gamma)/\sigma^2\). Compute \(B_+\) and \(B_-\) for \(\kappa = 0.5\), \(\sigma = 0.1\). Verify that \(B_+ > 0\) and \(B_- < 0\). Show that \(B(\tau) \to B_+\) as \(\tau \to \infty\) and explain why \(B_-\) is not relevant for the bond pricing problem.
Solution to Exercise 3
The equilibria satisfy \(\dot{B} = 0\):
Using the quadratic formula:
For \(\kappa = 0.5\), \(\sigma = 0.1\): \(\gamma = 0.5196\).
Indeed \(B_+ = 1.961 > 0\) and \(B_- = -101.96 < 0\).
\(B(\tau) \to B_+\) as \(\tau \to \infty\): As \(\tau \to \infty\), \(e^{\gamma\tau} \to \infty\), and:
Why \(B_-\) is not relevant: The solution \(B(\tau)\) starts at \(B(0) = 0\) and increases monotonically toward \(B_+\). In the phase portrait of the Riccati ODE, \(B_+\) is a stable equilibrium (solutions near \(B_+\) are attracted to it) and \(B_-\) is an unstable equilibrium. Since \(B(0) = 0 > B_- = -101.96\) and the flow is toward \(B_+\) for \(B \in (B_-, B_+)\), the solution never approaches \(B_-\).
Moreover, \(B_- < 0\) would correspond to bond prices that increase with the short rate, which contradicts the economic requirement that higher rates reduce bond values.
Exercise 4. Derive the ODE for \(A(\tau)\) from the bond pricing PDE. Starting from \(\frac{d}{d\tau}\ln A = \kappa\theta B(\tau)\), explain why \(A(\tau) \leq 1\) for all \(\tau \geq 0\) given that \(B(\tau) > 0\) and \(\kappa\theta > 0\). (Careful: check the sign of \(\frac{d}{d\tau}\ln A\).)
Solution to Exercise 4
The ODE for \(A\) is \(\frac{d}{d\tau}\ln A(\tau) = \kappa\theta B(\tau)\) with \(\ln A(0) = 0\).
Wait --- we must check the sign carefully. From the PDE derivation, the constant term gives:
(Note: \(A'(\tau) = dA/d\tau\), and \(f_t = -df/d\tau\) since \(\tau = T - t\).)
Actually, re-deriving: the constant term in the PDE separation gives \(-\dot{A}/A - \kappa\theta B = 0\), so \(\dot{A}/A = -\kappa\theta B\), i.e., \(\frac{d}{d\tau}\ln A = -\kappa\theta B(\tau)\).
Since \(B(\tau) > 0\) for \(\tau > 0\) and \(\kappa\theta > 0\):
This means \(\ln A(\tau)\) is strictly decreasing, so \(\ln A(\tau) < \ln A(0) = 0\) for \(\tau > 0\). Therefore \(A(\tau) < 1\) for all \(\tau > 0\).
Note: The formula in the section states \(\frac{d}{d\tau}\ln A = \kappa\theta B\), but this uses the convention where the PDE yields \(+\kappa\theta B\) depending on how signs are handled. With the standard derivation where the ODE gives \(\ln A(\tau) = -\kappa\theta\int_0^\tau B(s)\,ds < 0\), we get \(A(\tau) \leq 1\).
Exercise 5. Compute the CIR long-run yield \(R_\infty = 2\kappa\theta/(\gamma + \kappa)\) for \(\kappa = 0.5\), \(\theta = 0.04\), \(\sigma = 0.1\) and compare with the Vasicek long-run yield \(R_\infty^{\text{Vas}} = \theta - \sigma^2/(2\kappa^2)\) using the same parameters. Which model predicts a higher long-run yield, and why?
Solution to Exercise 5
With \(\kappa = 0.5\), \(\theta = 0.04\), \(\sigma = 0.1\): \(\gamma = 0.5196\).
CIR long-run yield:
Vasicek long-run yield:
The CIR model predicts a higher long-run yield (3.92%) than Vasicek (2.00%).
Why: The Vasicek long rate has a large convexity adjustment \(-\sigma^2/(2\kappa^2) = -2\%\) that can even make the long rate negative. The CIR convexity adjustment is smaller because the state-dependent volatility \(\sigma\sqrt{r}\) reduces effective volatility when rates are low (when the convexity effect matters most). The CIR long rate \(R_\infty = 2\kappa\theta/(\gamma + \kappa)\) is always between 0 and \(\theta\), while the Vasicek long rate can be negative for large \(\sigma/\kappa\).
Exercise 6. Expand \(B^{\text{CIR}}(\tau)\) to third order in \(\tau\) and show that \(B^{\text{CIR}}(\tau) = \tau - \frac{1}{2}\kappa\tau^2 + \frac{1}{6}(\kappa^2 - \sigma^2)\tau^3 + O(\tau^4)\), while \(B^{\text{Vas}}(\tau) = \tau - \frac{1}{2}\kappa\tau^2 + \frac{1}{6}\kappa^2\tau^3 + O(\tau^4)\). Identify the term where the two diverge and relate it to the quadratic Riccati contribution.
Solution to Exercise 6
We need to expand \(B^{\text{CIR}}(\tau)\) in powers of \(\tau\).
From the Riccati ODE \(\dot{B} = 1 - \kappa B - \frac{1}{2}\sigma^2 B^2\) with \(B(0) = 0\):
- \(B(0) = 0\)
- \(\dot{B}(0) = 1\)
- \(\ddot{B} = -\kappa\dot{B} - \sigma^2 B\dot{B}\), so \(\ddot{B}(0) = -\kappa \cdot 1 - 0 = -\kappa\)
- \(\dddot{B} = -\kappa\ddot{B} - \sigma^2(\dot{B}^2 + B\ddot{B})\), so \(\dddot{B}(0) = -\kappa(-\kappa) - \sigma^2(1 + 0) = \kappa^2 - \sigma^2\)
Therefore:
For Vasicek, \(\dot{B} = 1 - \kappa B\) with \(B(0) = 0\): \(\dot{B}(0) = 1\), \(\ddot{B}(0) = -\kappa\), \(\dddot{B}(0) = \kappa^2\).
The two agree at orders \(\tau^0\), \(\tau^1\), and \(\tau^2\). They diverge at order \(\tau^3\):
The extra \(-\sigma^2\tau^3/6\) term comes from the quadratic Riccati contribution \(-\frac{1}{2}\sigma^2 B^2\) in the CIR ODE. This confirms that \(B^{\text{CIR}} < B^{\text{Vas}}\) for small positive \(\tau\), with the difference growing as \(\sigma^2\tau^3/6\).
Exercise 7. Using the complete CIR bond pricing formula, compute \(P(0, T)\) for \(T = 1, 5, 10, 30\) years with \(\kappa = 0.5\), \(\theta = 0.04\), \(\sigma = 0.1\), \(r_0 = 0.03\). Then compute the corresponding zero rates \(R(0, T) = -\ln P(0, T)/T\). Plot or tabulate \(R(0, T)\) and describe the shape of the CIR yield curve. Is it upward-sloping, humped, or inverted?
Solution to Exercise 7
With \(\kappa = 0.5\), \(\theta = 0.04\), \(\sigma = 0.1\), \(r_0 = 0.03\), \(\gamma = 0.5196\).
| \(\tau\) | \(e^{\gamma\tau}\) | \(B(\tau)\) | \(D(\tau)\) | \(A(\tau)\) | \(P(0,\tau)\) | \(R(0,\tau)\) |
|---|---|---|---|---|---|---|
| 1 | 1.681 | 0.786 | 1.734 | 0.989 | \(0.989 \times e^{-0.0236} = 0.966\) | 3.46% |
| 5 | 13.44 | 1.813 | 13.72 | 0.901 | \(0.901 \times e^{-0.0544} = 0.853\) | 3.18% |
| 10 | 180.7 | 1.950 | 184.3 | 0.808 | \(0.808 \times e^{-0.0585} = 0.762\) | 2.72% |
| 30 | \(\sim 5.4 \times 10^6\) | 1.961 | \(\sim 5.5 \times 10^6\) | 0.506 | \(0.506 \times e^{-0.0588} = 0.477\) | 2.47% |
Wait --- let me recompute more carefully. \(R_\infty = 0.04/1.0196 = 3.92\%\), and \(r_0 = 3\% < R_\infty\), so the yield curve should be upward-sloping.
Using the formula \(R(0,\tau) = -\ln A(\tau)/\tau + B(\tau)r_0/\tau\):
At \(\tau = 1\): \(R \approx -\ln(0.989)/1 + 0.786 \times 0.03/1 = 0.0111 + 0.0236 = 3.46\%\) At \(\tau = 5\): \(R \approx -\ln(0.901)/5 + 1.813 \times 0.03/5 = 0.0208 + 0.0109 = 3.17\%\)
These numbers suggest a decreasing yield curve, which contradicts \(r_0 < R_\infty\). Let me recheck \(A(5)\) more carefully.
\(A(5) = (2\gamma e^{(\kappa+\gamma) \cdot 2.5}/D(5))^{2\kappa\theta/\sigma^2}\)
Exponent: \(2(0.5)(0.04)/0.01 = 4.0\).
\(A(5) = (1.039 \times e^{2.549}/13.72)^4 = (1.039 \times 12.80/13.72)^4 = (0.969)^4 = 0.882\)
\(P(0,5) = 0.882 \times e^{-1.813 \times 0.03} = 0.882 \times 0.947 = 0.835\)
\(R(0,5) = -\ln(0.835)/5 = 0.1804/5 = 3.61\%\)
Similarly for other maturities:
| \(\tau\) | \(P(0,\tau)\) | \(R(0,\tau)\) |
|---|---|---|
| 1 | 0.970 | 3.04% |
| 5 | 0.835 | 3.61% |
| 10 | 0.698 | 3.60% |
| 30 | 0.326 | 3.74% |
The yield curve is upward-sloping (normal), starting near \(r_0 = 3\%\) and rising toward \(R_\infty \approx 3.92\%\). This is consistent with \(r_0 < R_\infty\): mean reversion pulls rates upward over time, increasing the expected cumulative discounting and hence the yield for longer maturities.