The Analyst's Path

Vasicek model

The Vasicek model (1977) is the simplest widely cited short-rate model. It says the instantaneous short rate drifts back toward a long-run level at a set speed, while random shocks push it around. Because the model is tractable, it gives a closed-form price for a zero-coupon bond and so a model-implied spot rate at any maturity. It is useful for simulating rate paths, but it cannot match a whole curve exactly, which is why the bootstrap still supplies today's prices.

6 min readPart of Term Structure: Spot, Forward, Bootstrapping & Swap CurvesOpen in course mode

Advertisement

The rest of the module builds a static snapshot: today's curve, exactly, at one point in time. That snapshot cannot answer a different but essential question, how might the curve move? Pricing a bond option, running a Monte Carlo scenario, or building the binomial interest-rate tree FI1.04 uses for callable bonds and OAS all require a model of the short rate's dynamics, not just today's photograph of it. This section is deliberately a sketch, enough to see what a short-rate model is and does, not a derivatives-pricing course.

The Vasicek model (1977) is the simplest, most-cited starting point. It says the instantaneous short rate follows a mean-reverting stochastic process:

dr = a(b − r) dt + σ dW

Read it in plain language: the rate drifts back toward a long-run level b at speed a (the further r sits from b, the harder it gets pulled back), while σ scales random shocks (dW) around that pull. Because this SDE is tractable, it has a closed-form price for a zero-coupon bond, and hence a closed-form model-implied spot rate at any maturity T, a known result (see Hull, or Vasicek's original paper, in Reading & resources; this module states it and uses it, it does not re-derive the underlying partial differential equation).

Advertisement

How do you calibrate the Vasicek model to a curve?

A rough calibration illustrates the idea without pretending to be a research-grade fit: anchor r0 to the curve's shortest observed spot rate, hold illustrative values for the mean-reversion speed a = 0.35 and volatility σ = 1.00%, and solve the one remaining free parameter (the long-run mean b) so the model's 10-year rate matches the bootstrapped 10-year spot rate exactly. Do this for both sovereign curves and compare the model's rate at every other benchmark maturity to the true bootstrapped rate:

India (a = 0.35, b = 7.5296%, σ = 1.00%, r0 = 6.40%):

MaturityBootstrapped spotVasicek-model spotDifference
0.5y6.4000%6.5995%+19.95 bp
1y6.5016%6.6845%+18.29 bp
2y6.6566%6.8271%+17.05 bp
3y6.8156%6.9406%+12.51 bp
5y7.0345%7.1060%+7.16 bp
7y7.2072%7.2168%+0.96 bp
10y7.3235%7.3235%0.00 bp (anchored)

RMSE across the seven benchmark tenors: 13.27 bp.

How well does the Vasicek model fit, and why does it miss?

US (a = 0.35, b = 4.5703%, σ = 1.00%, r0 = 4.20%): RMSE across the same seven tenors is 19.97 bp, with the largest single miss at the 3-year point (model 4.3810% vs bootstrapped 4.0457%, a 33.53 bp gap), because the US curve dips at 2–3 years before rising again (a shape Vasicek's single, smooth, monotone-toward-b mean-reversion cannot replicate), while the India curve is simply and monotonically upward-sloping, which a single-factor mean-reverting model tracks much more comfortably (hence its noticeably smaller RMSE there). This gap is the entire point of a "sketch," stated honestly rather than glossed over: the bootstrap fits every single benchmark point exactly, by construction, because it has as many free parameters (one discount factor per maturity) as it has data points to match. Vasicek has only three free parameters (a, σ, and whichever one you solve for) trying to explain an entire curve's worth of shape, it is deliberately parsimonious, which is exactly what makes it useful for simulating a rate path or valuing something path-dependent, and exactly why it will never replace the bootstrap as the source of today's exact prices. A genuinely research-grade use extends Vasicek with a CIR model (which guarantees non-negative rates the plain Vasicek does not) or a Hull-White model (which adds a time-dependent drift specifically so the model can match every observed point exactly, trading the pure three-parameter parsimony for an exact fit), both named here as the standard next step and left for the Reading & resources list, not derived.

What long-run rate does the Vasicek model imply?

One more genuine, computed insight worth holding: Vasicek's mean-reversion implies an asymptotic long-run rate as maturity goes to infinity, b − σ²/(2a²) (continuously compounded), which converts to 7.6308% semi-annual-compounded for the India calibration above, noticeably above the bootstrapped 10-year spot of 7.3235%. That is not an error; it is the model saying that, given how slowly it has been told the rate mean-reverts (a = 0.35), the curve implied by these dynamics is still climbing toward its long-run level beyond the 10-year point, and would keep rising (7.53% by year 30, 7.60% by year 100, asymptoting to 7.6308%) if you extended the model further than the market actually gives you quotes for. That is a legitimate, calculable statement a short-rate model can make that a bootstrap, which simply has no opinion about maturities past its longest quoted input: cannot.

{
  "skill": "Interpreting an AI-explained swap-spread move or short-rate calibration without over-trusting a plausible-sounding narrative",
  "use": "Ask an AI assistant to explain why a swap spread moved, or to sanity-check a short-rate model calibration — then verify the explanation against an actual number you compute, not against how confident or detailed the explanation sounds.",
  "tools": ["Chat assistants — Claude, ChatGPT, Gemini", "A notebook environment to re-run the calibration and reprice checks independently"],
  "prompt": "Explain why the 10-year USD swap spread might be negative, and list the two or three most commonly cited drivers. Then, separately, sanity-check this Vasicek calibration for me: a=0.35, b=7.5296%, sigma=0.01, r0=6.40%. Show me the model's implied rate at 1, 5, and 10 years and flag if any of your numbers disagree with a plain application of the closed-form formula.",
  "verify": "A fluent, multi-driver explanation of a swap spread's sign is not the same as a verified number, and an AI's restated version of a calibration is not the same as an independently recomputed one. Recompute the Vasicek zero rate at each maturity yourself from the closed-form formula (or rerun the actual script) and compare to what the assistant reports; treat any narrative about WHY a spread moved as a hypothesis to weigh against the swap-spread term structure you have actually bootstrapped, never as a substitute for it (Guardrail #1 Trace, #3 Recompute).",
  "diy": "You must already be able to state the Vasicek formula and compute at least one zero rate from it by hand, and already know the swap-spread definition and its non-credit drivers from this Core section — otherwise you cannot tell a correct AI explanation from a fluent wrong one.",
  "market": "US"
}

Advertisement

Part of the course

This page is part of Term Structure: Spot, Forward, Bootstrapping & Swap Curves (FI1.03), in Phase 12: Finance Plus, AI and the quant-code track. The module's flashcards and its quiz are in the app.