Vasicek Process
Table of Contents
Summary
The Vasicek (1977) model was the first mean-reverting short-rate model
in the finance literature — applying the
Ornstein-Uhlenbeck process
to a short rate \(r\) with a constant long-run level \(\theta\).
ores::analytics::quant::service::vasicek_process implements it, not by
reimplementing the OU mathematics again, but by composing
hull_white_process with a constant \(\theta(t)\): Vasicek is the special
case of Hull-White where the
mean-reversion target does not vary over time.
Layperson's mental model
Vasicek is the elastic-band mental model applied to an interest rate specifically: the rate is pulled back toward a single, fixed long-run level whenever it wanders away, with random jitter layered on top. Nothing about the mental model changes from the general OU picture — only the label on the quantity being modelled changes, from "some quantity \(X\)" to "the short rate \(r\)".
vasicek_process::vasicek_process( double kappa, double theta, double sigma, double initial_rate, std::uint32_t seed) // Hull-White takes a *path* of targets, one per tick; wrapping a single // theta in a length-1 vector is what turns "the general, time-varying // model" into "the constant-target special case" -- Vasicek. : inner_(kappa, std::vector<double>{theta}, sigma, initial_rate, seed) {} double vasicek_process::next() { return inner_.next(); // delegates straight to hull_white_process }
The constructor is where the actual point lives, not next(): Vasicek's
single theta is wrapped as a one-element theta_path, so every tick
Hull-White looks up "the target for this tick" and always finds the same
value. Vasicek isn't a distinct simulation at all — it's Hull-White,
configured with a target schedule that never changes.
Detail
The SDE
identical in shape to
OU's SDE, with \(r\) (the
short rate) in place of the general state variable \(X\). The exact
per-tick discretisation is therefore the same closed-form OU update —
vasicek_process gets it for free from hull_white_process rather than
re-deriving it.
The closed-form bond price
Vasicek's defining contribution beyond the SDE itself is a closed-form zero-coupon bond price, derived by applying Ito's lemma to the short-rate SDE above to obtain the bond price's own dynamics, then solving the resulting PDE:
\begin{equation} P(t,T) = A(t,T)\, e^{-B(t,T)\, r_t} \end{equation}This closed form is what made Vasicek practical to use for pricing before Monte Carlo simulation was cheap: the whole term structure implied by a given \((\kappa, \theta, \sigma, r_0)\) can be computed analytically, with no simulation at all.
dt is an explicit, separate parameter from kappa
\(\kappa\), \(\theta\), \(\sigma\), \(r_0\) are always expressed in the SDE's
own time unit (conventionally years) — advancing the state or pricing
a bond over a step of length \(dt\) (one tick) requires \(dt\) itself as a
genuinely separate input, appearing as \(\kappa\,dt\) in the decay
(\(e^{-\kappa\,dt}\)) and as \(dt\) itself in the bond-time accumulated per
tick — never folded into \(\kappa\) or \(\sigma\) ahead of time by a
caller. QuantLib's
Engine.remote/QuantLib/ql/processes/ornsteinuhlenbeckprocess.cpp
follows exactly this shape (speed, dt always separate arguments,
never a pre-scaled composite); hull_white_process (which this class
composes) follows the same convention. See
Hull-White's own doc for
the derivation, since vasicek_process inherits it unchanged rather
than re-deriving it.
The trade-off: rates can go negative
Because Vasicek's volatility term \(\sigma\) (constant, not state-dependent) is inherited unchanged from OU, the short rate it generates is Gaussian and can go negative with positive probability, no matter how the parameters are chosen — a property long treated as an unrealistic modelling defect (nominal rates were assumed non-negative for decades) but one the negative-rate era across several major currencies since the 2010s has made considerably less objectionable in practice. This is precisely the property CIR was designed to rule out, at the cost of losing Vasicek's simple Gaussian transition.
See also
- Stochastic Processes — the hub, including the comparison table across all four mean-reverting processes.
- Ornstein-Uhlenbeck Process — the general process Vasicek specialises.
- Hull-White Process — the time-varying generalisation Vasicek is the constant-\(\theta\) special case of, and which
vasicek_processis implemented in terms of. - Cox-Ingersoll-Ross (CIR) Process — the non-negative alternative addressing Vasicek's main criticised weakness.
Further reading
- Vasicek, O. (1977). "An Equilibrium Characterization of the Term Structure." Journal of Financial Economics, 5(2), 177-188. The original paper: the SDE, the closed-form bond price, and the first systematic equilibrium argument for a mean-reverting short-rate model.
- Brigo, D., & Mercurio, F. (2006). Interest Rate Models — Theory and Practice (2nd ed.). Springer. Chapter 3 gives the standard modern derivation of the closed-form bond price and discusses the negative-rate property in the context of later model choices, including CIR and Hull-White.
- Wikipedia: Vasicek model.