The Cox–Ingersoll–Ross Model

The Vasicek model gave interest rates something stock prices don't have — a pull back toward a normal level — but it kept the diffusion term flat, a constant \sigma, exactly like Brownian motion. That single choice is what lets the short rate wander below zero: no matter how close r gets to zero, the random shocks stay exactly as large as ever, and eventually one pushes it through. In 1985, John Cox, Jonathan Ingersoll and Stephen Ross proposed a small, surgical fix — change the size of the noise itself as r approaches zero — and the result, the CIR model, is still one of the most widely used short-rate models today.

One square root, one big consequence

The CIR model keeps Vasicek's drift exactly as it was, and changes only the diffusion:

dr = a(b - r)\,dt + \sigma\sqrt{r}\,dW.

Mean reversion is untouched — a and b mean exactly what they meant before. What's new is the factor \sqrt{r} multiplying the noise: as r \to 0, the random shock's size shrinks to zero right along with it. A rate that is already very close to zero experiences almost no randomness at all — only the drift a(b-r) is left acting on it, and (for b > 0) that drift is strictly positive near zero, pushing the rate back up. The random shock that could, in Vasicek, shove the rate through zero simply isn't strong enough to do it near the boundary.

The chart plots the size of the random shock itself, as a function of the rate level: a flat line for Vasicek's constant \sigma, and a curve bending down to zero exactly at r = 0 for CIR's \sigma\sqrt{r}. That's the entire mechanism, in one picture.

CIR's short rate stays strictly positive for all time — never even touching zero — exactly when

2ab \geq \sigma^2.

If this fails, the drift isn't strong enough relative to the noise near the origin, and the rate can touch zero (though it's instantly reflected back up — it never goes negative either way).

Side by side with Vasicek

Vasicek CIR
SDE dr = a(b-r)dt + \sigma\,dW dr = a(b-r)dt + \sigma\sqrt{r}\,dW
Distribution of r(T) normal (Gaussian) (scaled) noncentral chi-squared
Can r go negative? yes, with positive probability never
Volatility of rate changes constant, \sigma shrinks near zero, \sigma\sqrt{r}
Closed-form bond price? yes — affine, A(t,T)e^{-B(t,T)r} yes — also affine, same shape, different A,B

That last row is worth pausing on: CIR is also an affine model, in the same family as Vasicek, so it inherits the same enormous practical convenience — a closed-form bond price for every maturity from a handful of parameters — even though its underlying distribution looks completely different. The exact CIR formula involves \gamma = \sqrt{a^2 + 2\sigma^2} in place of Vasicek's plain a; the shape is the same idea, just with more moving parts, and in practice it's implemented rather than hand-derived.

Worked example: does the Feller condition hold?

Take a = 0.3, b = 0.05, \sigma = 0.10.

2ab = 2\times 0.3\times 0.05 = 0.03, \qquad \sigma^2 = 0.10^2 = 0.01.

Since 0.03 \geq 0.01, the Feller condition holds: this parameterization keeps the rate strictly positive at all times. Now compare with a = 0.1, b = 0.02, \sigma = 0.15:

2ab = 2\times 0.1\times 0.02 = 0.004, \qquad \sigma^2 = 0.15^2 = 0.0225.

Here 0.004 < 0.0225 — the condition fails. This second parameterization is exactly the sort of case that shows up when the long-run mean b is low and the volatility \sigma is high (a plausible combination in a very-low-rate environment): the rate can now graze zero from time to time before being reflected back up.

It's tempting to "fix" Vasicek with a blunt patch — simulate the Gaussian process, and any time it dips below zero, set it to zero. This is sometimes done in practice (it's cheap), but it isn't the same model: clipping introduces a probability mass stuck exactly at zero and breaks the clean analytic machinery that made Vasicek useful in the first place — the bond price formula assumed a genuinely Gaussian r, and a clipped process isn't Gaussian anymore, so the formula silently stops being exactly correct. CIR's \sqrt{r} term is a more principled fix precisely because it keeps the model in the affine family and preserves a closed-form bond price — the non-negativity is a genuine consequence of the dynamics, not a patch bolted onto a simulation.

Positive rates in CIR is a probabilistic guarantee about the true dynamics, not something every numerical implementation preserves automatically. A naive Euler discretization of dr = a(b-r)\Delta t + \sigma\sqrt{r}\,\Delta W can still produce a negative r in simulation, because a Gaussian increment \Delta W can be arbitrarily large relative to a small time step — the continuous-time argument for non-negativity doesn't survive a coarse discrete approximation intact. Production Monte Carlo implementations use schemes designed specifically to respect the boundary (e.g. full truncation or reflection schemes) rather than the textbook Euler method.