Technical

CIR Interest Rate Model Explained (2026)

Learn the CIR interest rate model through its square-root SDE, Feller boundary, exact transition law, bond-price formula and risk-neutral calibration.

12 min read·

The square-root idea

In March 1985, John Cox, Jonathan Ingersoll and Stephen Ross published A Theory of the Term Structure of Interest Rates in Econometrica. Its short rate could revert towards a long-run level without wandering below zero. The mechanism was one square root.

Under a stated measure, the Cox-Ingersoll-Ross process is

drt=κ(θ−rt) dt+σrt dWt,r0≥0.dr_t = \kappa(\theta-r_t)\,dt+\sigma\sqrt{r_t}\,dW_t, \qquad r_0\geq 0.

Here κ>0\kappa>0 is measured in inverse time, θ>0\theta>0 has the same units as the rate and σ\sigma has units of square-root rate per square-root time. We use years and decimal rates throughout. The local variance is σ2rt\sigma^2r_t, so volatility falls as the rate approaches zero.

That last sentence is the model's attraction and its constraint. CIR is useful when the state genuinely ought to be non-negative, such as an intensity or variance. It is a poor unshifted model for a curve that can trade through zero. Our stochastic calculus guide supplies the background for the SDE, while Ito's lemma explains the affine bond calculation.

One convention matters before any algebra. Historical estimation normally gives parameters under the physical measure P\mathbb P. Bond pricing uses an equivalent martingale measure Q\mathbb Q. The formulas below use κQ\kappa^{\mathbb Q} and θQ\theta^{\mathbb Q}, with the superscripts suppressed. They are not automatically the parameters estimated from yesterday's rate changes.


The boundary and exact law

CIR never becomes negative, but the Feller condition decides whether a positive process can reach zero:

2κθ≥σ2.2\kappa\theta \geq \sigma^2.

For r0>0r_0>0, zero is unattainable when the inequality holds. If 0<2κθ<σ20<2\kappa\theta<\sigma^2, zero is attainable and instantaneously reflecting. The edge case θ=0\theta=0 is different: zero is absorbing. Saying that positivity is merely "subject to Feller" is therefore wrong. Non-negativity holds without Feller; strict positivity does not.

For a step Δ>0\Delta>0, the exact transition is

rt+Δ=c X,c=σ2(1−e−κΔ)4κ,r_{t+\Delta} = c\,X,\qquad c=\frac{\sigma^2(1-e^{-\kappa\Delta})}{4\kappa},

where

X∼χν′2(λ),ν=4κθσ2,λ=4κe−κΔrtσ2(1−e−κΔ).X\sim\chi'^2_{\nu}(\lambda),\qquad \nu=\frac{4\kappa\theta}{\sigma^2},\qquad \lambda=\frac{4\kappa e^{-\kappa\Delta}r_t} {\sigma^2(1-e^{-\kappa\Delta})}.

The same expression applies under P\mathbb P or Q\mathbb Q, provided its parameters and Brownian motion belong to that measure. It gives an exact likelihood for time-series work and exact simulation at observation dates. Euler simulation is not harmless here: a naive step can produce a negative rate, while full truncation changes the transition law and introduces time-step bias.

The stationary distribution, when κ,θ,σ>0\kappa,\theta,\sigma>0, is Gamma with mean θ\theta and variance θσ2/(2κ)\theta\sigma^2/(2\kappa). That is a useful calibration check. A fitted sample mean nowhere near θ\theta may simply reflect a short or non-stationary sample.


Bond prices and the pricing PDE

Under the money-market risk-neutral measure, a claim V(t,r)V(t,r) with no intermediate cash flows solves

Vt+κ(θ−r)Vr+12σ2rVrr−rV=0.V_t+\kappa(\theta-r)V_r +\frac12\sigma^2rV_{rr}-rV=0.

For a zero-coupon bond, V(T,r)=1V(T,r)=1. The affine guess P(t,T)=A(t,T)e−B(t,T)rtP(t,T)=A(t,T)e^{-B(t,T)r_t} reduces the PDE to Riccati equations. Set τ=T−t\tau=T-t and

γ=κ2+2σ2.\gamma=\sqrt{\kappa^2+2\sigma^2}.

Then

B(t,T)=2(eγτ−1)(γ+κ)(eγτ−1)+2γ,B(t,T)= \frac{2(e^{\gamma\tau}-1)} {(\gamma+\kappa)(e^{\gamma\tau}-1)+2\gamma}, A(t,T)=[2γe(κ+γ)τ/2(γ+κ)(eγτ−1)+2γ]2κθ/σ2.A(t,T)= \left[ \frac{2\gamma e^{(\kappa+\gamma)\tau/2}} {(\gamma+\kappa)(e^{\gamma\tau}-1)+2\gamma} \right]^{2\kappa\theta/\sigma^2}.

These are risk-neutral parameters. If a market price of short-rate risk is introduced, it must be absorbed consistently into the Q\mathbb Q drift before using this formula.

The continuously compounded yield is

y(t,T)=−log⁡A(t,T)+B(t,T)rtτ.y(t,T)=\frac{-\log A(t,T)+B(t,T)r_t}{\tau}.

As τ↓0\tau\downarrow0, the yield tends to rtr_t. At the other end,

y∞=2κθγ+κ<θy_\infty=\frac{2\kappa\theta}{\gamma+\kappa}<\theta

when σ>0\sigma>0. The gap is a convexity effect under Q\mathbb Q, not evidence that the physical long-run mean was estimated incorrectly.

Take r0=3%r_0=3\%, κ=0.5\kappa=0.5, θ=4%\theta=4\%, σ=10%\sigma=10\% and T=5T=5. The formulas give A=0.881920A=0.881920, B=1.812959B=1.812959, P(0,5)=0.835234P(0,5)=0.835234 and a five-year yield of 3.6009%3.6009\%. The Feller test is 0.04≥0.010.04\geq0.01, so a path starting above zero cannot hit it.


Exact Python and calibration

The shortest reliable CIR simulation uses the transition law rather than repairing negative Euler steps.

import numpy as np def cir_step(r, kappa, theta, sigma, dt, rng): decay = np.exp(-kappa * dt) scale = sigma**2 * (1.0 - decay) / (4.0 * kappa) dof = 4.0 * kappa * theta / sigma**2 nc = 4.0 * kappa * decay * r / (sigma**2 * (1.0 - decay)) return scale * rng.noncentral_chisquare(dof, nc, size=np.shape(r)) def cir_bond(r, kappa, theta, sigma, maturity): gamma = np.sqrt(kappa**2 + 2.0 * sigma**2) eg = np.exp(gamma * maturity) denom = (gamma + kappa) * (eg - 1.0) + 2.0 * gamma B = 2.0 * (eg - 1.0) / denom A = (2.0 * gamma * np.exp((kappa + gamma) * maturity / 2.0) / denom) ** (2.0 * kappa * theta / sigma**2) return A * np.exp(-B * r)

For physical-measure estimation, maximise the exact non-central chi-squared likelihood over observed short rates. Sampling frequency, measurement error and regime changes matter more than another decimal place in the optimiser. The near-unit-root case also makes κ\kappa and θ\theta hard to identify separately.

Pricing calibration is a different job. Fit Q\mathbb Q parameters to discount instruments and option prices using price or vega-weighted errors. Plain CIR has only three parameters and does not reproduce an arbitrary initial discount curve. CIR++ adds a deterministic shift ϕ(t)\phi(t) so that rt=xt+ϕ(t)r_t=x_t+\phi(t) fits the curve exactly, but the shifted rate can be negative even though xtx_t cannot.

A calibration workflow that can be audited

Begin by deciding what the state variable means. An overnight fixing, a latent instantaneous short rate, a default intensity and a variance process are not interchangeable observations. If the input is a yield curve, each quoted yield depends on the latent rate through A(t,T)A(t,T) and B(t,T)B(t,T). Treating a three-month yield as if it were rtr_t generally biases all three parameters. The likelihood approach of Chen and Scott is a canonical example of estimating term-structure models with latent factors and measurement error rather than pretending every curve point is observed without noise.

For a physical calibration, transform unconstrained optimiser variables so that κ\kappa, θ\theta and σ\sigma remain positive. Impose the Feller inequality only if strict positivity is a business requirement, not because the SDE otherwise stops existing. Report both constrained and unconstrained fits when that restriction materially worsens likelihood. A confidence region or profile likelihood is more informative than optimiser tolerances: over a short sample, the data may identify the product κθ\kappa\theta and the local variance more clearly than κ\kappa and θ\theta separately.

For pricing, first lock the curve construction, day counts, compounding conventions and instrument cash flows. Then calibrate the risk-neutral dynamics to liquid options, preferably in currency price or with vega-normalised residuals. Raw implied-volatility errors can silently combine Black, normal and shifted-Black conventions. A good objective therefore converts each market quote to a price using its quoted convention, compares that price with the model price and records bid-offer widths. Parameters should not move merely because the reporting convention changed.

Multiple starting points are necessary. CIR objectives can have shallow valleys, especially when the calibration instruments cover a narrow maturity range. Parameter bounds should express economic or numerical limits and be disclosed. They should not be tuned until the answer looks plausible. If a CIR++ shift is used, bootstrap ϕ(t)\phi(t) from the same discount curve used by the pricer and rebuild it whenever the base curve changes.

Implementation and validation checks

Stable evaluation matters at short maturities. Directly subtracting 1−e−κΔ1-e^{-\kappa\Delta} loses precision when κΔ\kappa\Delta is small; in code, use −expm1⁡(−κΔ)-\operatorname{expm1}(-\kappa\Delta). The bond formula has a similar cancellation in eγτ−1e^{\gamma\tau}-1, for which expm1⁡(γτ)\operatorname{expm1}(\gamma\tau) is preferable. Evaluate log⁡A\log A before exponentiating when maturities are long or parameters are extreme.

Validation should be independent of calibration:

  1. Reprice every calibration instrument from stored cash flows and confirm that residuals match the objective.
  2. Check P(t,t)=1P(t,t)=1, positive bond prices and the short-maturity limit −∂Tlog⁡P(t,T)∣T=t=rt-\partial_T\log P(t,T)|_{T=t}=r_t.
  3. Compare sample conditional means and variances from exact simulation with

\mathbb E[r_{t+\Delta}\mid r_t] =\theta+(r_t-\theta)e^{-\kappa\Delta}

and and

\operatorname{Var}(r_{t+\Delta}\mid r_t) =\frac{\sigma^2r_t e^{-\kappa\Delta}(1-e^{-\kappa\Delta})}{\kappa} +\frac{\theta\sigma^2(1-e^{-\kappa\Delta})^2}{2\kappa}.

4. Verify the analytic bond price by Monte Carlo discounting on increasingly fine payment grids. Exact state transitions remove state discretisation error, but numerically integrating $\int r_s\,ds$ still creates quadrature error. 5. Shock each parameter and inspect prices, not only implied volatilities. A supposedly stable fit that changes sharply under a small data or initialisation perturbation is not well identified. Out-of-sample checks should use later dates or excluded maturities and strikes. In-sample fit alone rewards excess flexibility. For risk work, also compare simulated rate quantiles, curve principal-component exposures and hedge performance with the intended use. A model can price a small option set acceptably yet generate implausible scenarios. The model earns its keep in intensity modelling, affine building blocks and problems where positivity matters more than a perfect volatility cube. For callable rates books or a full swaption surface, a curve-fitting Gaussian model or a multi-factor forward-rate model is usually easier to calibrate. ---

Where CIR is useful

CIR is a clean choice for teaching affine term-structure mathematics because the SDE, transition density and bond price are all explicit. It is also useful as a positive factor in stochastic-volatility and reduced-form credit models.

It is not a good default for every rates problem. One factor forces every bond price to move from the same shock, the unshifted model misses a general initial curve and the square-root diffusion has no natural room for materially negative rates. Historical and pricing parameters also answer different questions. Mixing them is a more serious error than violating Feller.

Choose plain CIR when positivity is structural, a parsimonious affine factor is valuable and the restricted initial-curve family is acceptable. Choose CIR++ when exact curve fit is required but square-root factor dynamics remain desirable. The shift solves today's curve mismatch, not the one-factor correlation limit or option-smile problem. Choose Hull-White or another Gaussian model when negative rates and efficient lattice valuation are more important than positivity. Choose a two-factor or market model when several yield-curve movements or a broad swaption surface drive the decision.

The payoff should determine the model comparison. For a credit intensity, negative values are inadmissible and CIR's boundary behaviour may dominate small pricing improvements elsewhere. For a callable bond, stable exercise-boundary valuation and exact initial-curve fit may dominate positivity. For long-dated risk projections, physical-measure dynamics, structural breaks and parameter uncertainty matter at least as much as the risk-neutral fit. There is no single winning model independent of measure, instrument and use.

For a Gaussian alternative, read the Ornstein-Uhlenbeck process. For the measure change behind pricing, see risk-neutral pricing.


References


Frequently Asked Questions

Can a CIR rate go negative?

No. With non-negative initial value and positive parameters, the CIR solution remains non-negative. Feller determines whether a path starting above zero can touch zero, not whether it can cross below it.

What does the Feller condition guarantee?

For r0>0r_0>0, 2κθ≥σ22\kappa\theta\geq\sigma^2 makes zero unattainable. If the inequality fails but θ>0\theta>0, zero can be hit and is instantaneously reflecting.

Are CIR parameters physical or risk-neutral?

They can be either, but the label must be explicit. Time-series estimation usually targets P\mathbb P; the bond formula uses Q\mathbb Q. A market price of risk links the two.

Why use the exact transition instead of Euler?

The non-central chi-squared transition preserves the correct boundary and has no time-discretisation error at the chosen dates. Euler can step below zero and truncation adds bias.

Does CIR fit today's yield curve exactly?

Not in general. Its three constant parameters generate a restricted family of curves. CIR++ adds a deterministic shift for an exact initial fit.

When should I avoid CIR?

Avoid unshifted CIR when negative rates are plausible, when several curve factors matter or when a full swaption surface must be fitted closely. Its tractability does not cure those structural limits.

Skip the £25k programme - try the alternative

Master's programmes are slow and expensive. Quantt is a self-paced alternative. Start free with a real lesson and interview practice, then unlock 50+ courses and your personalised plan.

Free to start · No credit card required