Skip to content
    Finance / Heath-Jarrow-Morton Interest Rate Framework

    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.

    ToolCalculatorExecutionIn browserCategoryFinancial
    ZorvLabs · Interest rate term structure

    Heath-Jarrow-Morton Interest Rate Model

    Exact HJM no-arbitrage forward-rate dynamics with exponential volatility, closed-form drift, analytic Gaussian fan bands, bond-price surfaces, and 2D and 3D views.
    Model property
    no-arbitrage
    Drift obeys α(t,T)=σ(t,T)∫ₜᵀσ(t,u)du.
    Forward @ tenor
    0.032101
    Mean forward f̄(t,t+τ)
    HJM drift
    1.758e-6
    α(t,t+τ)
    Forward vol
    0.000133
    σ(t,t+τ)
    Bond price
    0.848810
    Mean-path P̄(t,t+τ)
    View mode
    3D surface
    Display scale
    Curve level L
    Curve slope S
    Curve decay β
    Vol amplitude σ0
    Vol decay λ
    Horizon years
    Snapshot time t*
    Selected tenor τ*
    Surface max tenor
    Surface T resolution
    Surface τ resolution
    Fan quantile z
    r(0)
    0.050000
    Short rate f(0,0)
    r(t*)
    0.034638
    Mean-path short rate
    P(0,τ*)
    0.829760
    Initial zero-coupon price
    σ(t*,τ*)
    0.000133
    Exact forward volatility
    HJM core: df(t,T)=α(t,T)dt+σ(t,T)dW_t.
    No-arbitrage drift: α(t,T)=σ(t,T)∫_t^Tσ(t,u)du.
    Bond price identity: P(t,T)=exp(-∫_t^T f(t,u)du).
    2D forward curve evolution
    Initial curve, midpoint snapshot, and current snapshot
    Forward curve f(t,t+τ)Tenor τ (years)f0.053.046.039.0212.0115.000.030.040.040.040.050.05Initial f(0,τ)Mid snapshot t=1.50Snapshot t=3.00
    2D HJM drift and volatility
    Exact exponential-volatility no-arbitrage drift and volatility
    Drift α(t,t+τ) and volatility σ(t,t+τ)Tenor τ (years)value0.053.046.039.0212.0115.002.194e-100.000.000.010.010.01Drift αVol σ
    2D discount curve
    Mean-path zero-coupon discount factor versus tenor
    Discount factor P̄(t,t+τ)Tenor τ (years)P0.053.046.039.0212.0115.000.600.680.760.840.921.00Initial P(0,τ)Snapshot P̄(t*,τ)
    2D Gaussian fan
    Exact mean and ± quantile bands for forward rate at selected tenor
    f(t, t + τ*) for τ* = 5.00yTime t (years)forward rate0.002.004.006.008.0010.000.030.030.030.030.030.03Mean path± quantile band
    2D density slice
    Gaussian density of the selected forward rate at t*
    f(t*, t*+τ*) density at t* = 3.00y0.03160.03180.03200.03220.03240.03260.0000804.82831609.65652414.48483219.31314024.1413lowhigh
    3D HJM surface
    Mean forward rate surface
    3D exact mean forward surface f̄(t,t+τ)Tenor τTime tf̄surface grid60 × 72 cells · max f̄ = 0.049424
    Key formulas
    Heath, Jarrow & Morton (Econometrica 1992) and MIT OCW HJM notes
    Forward-rate dynamics: df(t,T)=α(t,T)dt+σ(t,T)dW_t.
    No-arbitrage drift condition: α(t,T)=σ(t,T)∫_t^Tσ(t,u)du.
    Bond price identity: P(t,T)=exp(-∫_t^T f(t,u)du), with r(t)=f(t,t).
    Visualization special case: exponential one-factor volatility σ(t,T)=σ0 e^{-λ(T−t)} and exact Gaussian fan bands.
    finance methodology

    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.

    Step-by-step methodWorked exampleAssumptions explained

    How to use

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. Switch between the 2D forward/drift/discount charts and the 3D surface, and toggle linear or log display scaling for the plots.
    6. 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

    df(t,T)=α(t,T) dt+σ(t,T) dWt,α(t,T)=σ(t,T)∫tTσ(t,u) du,P(t,T)=exp⁡ ⁣(−∫tTf(t,u) du)df(t,T) = \alpha(t,T)\,dt + \sigma(t,T)\,dW_t, \quad \alpha(t,T) = \sigma(t,T)\int_t^T \sigma(t,u)\,du, \quad P(t,T) = \exp\!\left(-\int_t^T f(t,u)\,du\right)

    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

    Inputs
    • 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.
    Calculation path
    1. 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.

    Result

    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.