CIR Model for Interest Rates

The Cox–Ingersoll–Ross (CIR) model is a one-factor short-rate model whose square-root diffusion keeps rates non-negative while allowing mean reversion and level-dependent volatility. It is analytically tractable, but its positivity and affine bond prices come with a restrictive one-factor view of curve and volatility dynamics.

Risk-neutral dynamics

Under the risk-neutral measure \(Q\), write

dr_t = kappa * (theta - r_t) dt + sigma * sqrt(r_t) dW_t

kappa is mean-reversion speed, theta is the long-run short rate, and sigma controls rate volatility. Unlike a Gaussian model, instantaneous variance is sigma^2 r_t: low rates imply low absolute volatility. This property was attractive when rates were persistently positive, but is a poor empirical description in negative-rate regimes.

The Feller condition,

2 * kappa * theta >= sigma^2

is sufficient for the process never to hit zero. It is not an arbitrary calibration constraint: violating it permits zero to be reached, though the standard CIR process remains non-negative and can reflect away from zero. Desk policy should state whether the condition is enforced, since it can materially worsen a volatility fit.

ParameterEconomic interpretationCalibration symptom
kappaspeed of pull to long-run levellow values overstate persistent shocks
thetalong-run short-rate levelanchors long-maturity yield level
sigmalevel-scaled diffusiondetermines curvature of rate-option vol
r0current short rateshifts the initial curve fit

Affine zero-coupon bond pricing

The model price of a zero-coupon bond is exponential-affine:

P(t, T) = A(t, T) * exp(-B(t, T) * r_t)
gamma = sqrt(kappa^2 + 2 * sigma^2)
B(t,T) = 2*(exp(gamma*tau)-1) /
         ((gamma+kappa)*(exp(gamma*tau)-1) + 2*gamma)

where tau = T - t. The A term is a known function of kappa, theta, sigma, and B. The affine form matters operationally: a full curve can be priced quickly, and rates derivatives can be valued by transforms or trees without simulating every cash-flow discount factor.

Plain CIR with one r0 generally cannot match today’s bootstrapped curve exactly. A common extension is CIR++:

r_t = x_t + phi(t)
P_market(0,T) = P_CIR(0,T) * exp(-integral_0^T phi(u) du)

The deterministic shift phi(t) forces an initial-curve match while retaining stochastic dynamics for x_t. It fixes day-zero fit, not the model’s low-dimensional future curve moves. Build the market curve first as in yield-curve construction; do not try to infer it from a short-rate model.

Exact simulation and implementation

Euler simulation can generate negative rates unless clipped, and clipping changes moments. CIR instead has an exact noncentral chi-square transition. For time step dt,

c = sigma^2 * (1 - exp(-kappa*dt)) / (4*kappa)
d = 4*kappa*theta / sigma^2
lambda = 4*kappa*exp(-kappa*dt)*r_t / (sigma^2*(1-exp(-kappa*dt)))
r_next = c * noncentral_chisquare(d, lambda)
import numpy as np

def cir_step(r, kappa, theta, sigma, dt, rng):
    e = np.exp(-kappa * dt)
    c = sigma**2 * (1 - e) / (4 * kappa)
    df = 4 * kappa * theta / sigma**2
    nc = 4 * kappa * e * r / (sigma**2 * (1 - e))
    return c * rng.noncentral_chisquare(df, nc)

def feller_margin(kappa, theta, sigma):
    return 2 * kappa * theta - sigma**2

For very small kappa, use numerically stable expm1 expressions. Monte Carlo estimators should discount along the simulated path, use antithetics or control variates, and be benchmarked against the closed-form bond price. A simulation that misses the bond price is not reliable for an exotic.

Calibration and risk

Estimate historical parameters from short-rate data only if the objective is forecasting under the physical measure. Derivative valuation requires risk-neutral parameters calibrated to prices. Mixing the two silently assumes a zero market price of rate risk. Calibrate curve instruments through the shift and options through caplet, swaption, or bond-option volatility; quote conventions must match the valuation model.

One factor makes all instantaneous forward-rate shocks perfectly correlated after loading. That is inadequate for many curve twists. Compare CIR's behavior to Vasicek and Hull–White models: Hull–White’s time-dependent drift fits the curve, but its Gaussian distribution admits negative rates. Neither model makes a smile surface consistent by itself; displaced diffusion, SABR, or stochastic-volatility overlays are commonly needed.

Risk should be measured by recalibrating after market-quote bumps. Bumping only r0 leaves curve-fit shifts and option parameters unchanged, which is not a tradable market shock. Report curve DV01, vega by expiry/tenor, and parameter risk separately. The hedging instruments are swaps, futures, and liquid options—not kappa or sigma.

Key takeaways

  • CIR combines mean reversion, non-negativity, and affine bond pricing.
  • The Feller condition governs boundary behavior and can constrain calibration.
  • CIR++ exactly fits today’s curve but remains a one-factor future-dynamics model.
  • Use exact noncentral-chi-square transitions rather than clipped Euler paths.
  • Separate physical estimation from risk-neutral calibration and calculate risk through market-consistent recalibration.
#CIR model #interest rates #short-rate models #zero coupon bonds #calibration