HJM Forward-Rate Model Calculator
Model the forward interest-rate curve with the Heath-Jarrow-Morton (HJM) framework. See no-arbitrage drift, Gaussian fan bands, and discount-bond prices instantly.
Heath-Jarrow-Morton Interest Rate Model
A clear path from inputs to results.
Explore how an entire forward interest-rate curve evolves under the Heath-Jarrow-Morton (HJM) no-arbitrage framework, using the tractable one-factor model with exponentially decaying volatility. It shows the mean forward curve, the no-arbitrage drift, Gaussian uncertainty bands, and the implied discount-bond prices, so it suits fixed-income students and quants learning term-structure modeling.
How to use
- Shape the initial forward curve with three controls: the long-run level L, the slope S, and the decay beta, so f(0,tau) = L + S*e^{-beta*tau} runs from L+S at the short end down to L far out.
- Set the volatility amplitude sigma0 and the volatility decay lambda; the forward volatility is sigma(t,T) = sigma0*e^{-lambda*(T-t)}, which fixes the HJM no-arbitrage drift automatically.
- Pick a snapshot time t* and a selected tenor tau* to read the mean forward rate, drift, volatility, and bond price at that point on the surface.
- Set the horizon and the fan-chart quantile z to control how far forward the curve is projected and how wide the uncertainty bands are drawn.
- Switch between the 2D forward/drift/discount charts and the 3D surface, and toggle linear or log display scaling for the plots.
- Read the metric cards for the initial short rate f(0,0), the mean-path short rate at t*, the initial zero-coupon price, and the exact forward volatility.
The formula
Reference: Heath, D., Jarrow, R., & Morton, A. (1992), "Bond Pricing and the Term Structure of Interest Rates: A New Methodology for Contingent Claims Valuation," Econometrica 60(1), 77-105.
Worked example
Default curve: short rate, forward at 5-year tenor, and discount bond
- Curve level L = 0.032; slope S = 0.018; decay beta = 0.65; vol amplitude sigma0 = 0.012; vol decay lambda = 0.9; snapshot time t* = 3 years; selected tenor tau* = 5 years.
- 1
The initial forward curve is f(0,tau) = 0.032 + 0.018*e^{-0.65*tau}. At tau = 0 that is 0.032 + 0.018 = 0.05 (a 5.00% instantaneous short rate), decaying to 3.2698% at the 5-year tenor. The forward volatility at a 5-year tenor is sigma = 0.012*e^{-0.9*5} = 1.3331e-4, and the exact no-arbitrage drift there is alpha = (sigma0^2/lambda)*e^{-0.9*5}*(1 - e^{-0.9*5}) = 1.7577e-6. Rolling forward to t* = 3 years, the analytic mean forward rate for the 5-year tenor is f-bar(3,5) = 3.2101%, and the initial zero-coupon bond maturing in 5 years is P(0,5) = exp(-(L*5 + S*(1-e^{-beta*5})/beta)) = 0.829760.
Initial short rate 5.00%; mean forward rate at the 5-year tenor after 3 years 3.2101%; initial 5-year discount bond price 0.829760; 5-year forward volatility 1.333e-4.
Interpreting the result
The curve is downward-sloping in tenor because the slope S is positive and decays: short rates (5%) sit above the long-run level (3.2%). The no-arbitrage drift alpha is what makes the model consistent — it is not a free input but is pinned down by the volatility function, so the modeled bond prices admit no arbitrage. Because volatility decays with tenor, the uncertainty fan is widest for short tenors and tightens further out; the drift term is tiny at long tenors, which is why the long end barely moves between snapshots.
Assumptions & limitations
- A single Brownian factor drives the whole curve, so all forward rates move together; the tool cannot represent independent twists at different tenors.
- The volatility function is the specific exponential form sigma(t,T) = sigma0*e^{-lambda*(T-t)}, chosen for closed-form tractability rather than fitted to market option prices.
- The initial forward curve is the parametric family L + S*e^{-beta*tau}; it is not bootstrapped from live market instruments.
- Charts show the analytic conditional mean and Gaussian bands, not simulated sample paths, and forward rates can go negative because the model is Gaussian.
- Bond prices use the mean-path forward curve, so they are a representative central scenario rather than the full expectation of a nonlinear payoff.
Frequently asked questions
What makes HJM a "no-arbitrage" model?
HJM models the whole forward-rate curve directly and derives a drift condition, alpha(t,T) = sigma(t,T)*integral of sigma from t to T, that must hold for discounted bond prices to be martingales. Once you choose the volatility function, the drift is fixed — you cannot set it independently — and that constraint is exactly what rules out arbitrage across maturities.
How does this relate to short-rate models like CIR or Vasicek?
Short-rate models specify the dynamics of a single rate and derive the curve; HJM instead specifies the dynamics of every forward rate and derives the short rate as r(t) = f(t,t). The exponential-volatility one-factor HJM used here is, in fact, equivalent to the Gaussian Hull-White/extended-Vasicek short-rate model, which is why both are Gaussian and analytically tractable.
Why can the forward rates in the fan chart go negative?
HJM with a deterministic (Gaussian) volatility function keeps forward rates normally distributed, so there is always some probability mass below zero, especially in the wide short-tenor bands. That is a known limitation of Gaussian term-structure models; it also makes them analytically convenient. Models like CIR trade that convenience for guaranteed non-negativity.
Why does the forward volatility get so small at long tenors?
The volatility function sigma0*e^{-lambda*(T-t)} decays exponentially with the tenor T-t. With sigma0 = 0.012 and lambda = 0.9, the 1-year-tenor volatility is 4.879e-3 but the 5-year-tenor volatility falls to 1.333e-4. This captures the empirical pattern that distant forward rates are far more stable than near-term ones.
What is the LIBOR market model, and is that what this uses?
No. The LIBOR (BGM) market model evolves discrete forward LIBOR rates and is lognormal. This tool uses the continuous instantaneous-forward-rate HJM framework with Gaussian dynamics, which is the original 1992 formulation and gives the closed-form drift and bond-price formulas shown.
How is the discount bond price obtained from the forward curve?
By the identity P(t,T) = exp(-integral of f(t,u) over u from t to T). Integrating the parametric initial forward curve gives the closed form P(0,T) = exp(-(L*T + S*(1-e^{-beta*T})/beta)); with the defaults the 5-year price is 0.829760. The mean-path curve at later snapshots is integrated the same way.
Methodology last reviewed 2026-10-06. Results are informational and not financial or engineering advice — see our disclaimer.