Quantitative Finance 13 min read Updated August 2026

Fixed Income VaR: How to Calculate Value at Risk for Bond Portfolios

Parametric (duration-based), historical simulation, and Monte Carlo VaR for bond portfolios. Multi-factor VaR decomposing rate, credit, and idiosyncratic components. Stressed VaR for Basel III. Backtesting VaR exceptions. With real portfolio examples ($100M bond portfolio at 99% confidence) and Claude AI prompts for risk managers.

Educational content, not professional advice — AI output and figures here can be wrong. Verify before you rely on it. Full disclaimer →

Why Bond VaR Is Different from Equity VaR

Equity VaR is driven by returns — price changes as a percentage of value — which are approximately log-normally distributed. Bond VaR is driven by yield changes, which feed into price changes through duration. This distinction matters because the mapping from yield volatility to price volatility changes across time (as the bond's remaining maturity changes) and across portfolio structure (a portfolio of 2Y and 30Y bonds has very different level and curve exposures than a portfolio of 10Y bonds, even if their average durations match).

The duration-based price approximation underpins all bond VaR methods:

  • First-order (duration): ΔP ≈ −ModD × P × Δy
  • Second-order (duration + convexity): ΔP ≈ −ModD × P × Δy + ½ × Convexity × P × (Δy)²

For VaR horizons of 1-10 days and modest yield moves, the first-order approximation is adequate. For stress scenarios (+200bps or more), convexity becomes material — especially for callable bonds, MBS, and long-duration portfolios.

Fixed income risk managers at compliance and risk desks must also separate rate VaR from credit spread VaR — these are distinct risk factors with different volatilities and imperfect correlation, and they aggregate under different model frameworks.

Parametric (Duration-Based) VaR

The parametric approach assumes yield changes are normally distributed: Δy ~ N(μ, σ²). For a single-factor model (parallel shift only):

  • Portfolio VaR = ModD × P × σ_y × Z_α
  • Where σ_y is daily yield volatility, Z_α is the one-tailed z-score (1.645 for 95%, 2.326 for 99%)
  • Equivalently: VaR = DV01 × σ_y (in bps) × Z_α

The DV01 formulation is more operationally useful because it aggregates cleanly across position types (bonds, swaps, futures) with a shared yield risk factor.

  • "Parametric fixed income VaR: $100M government bond portfolio. Modified duration 5.2, so DV01 = 5.2 × $100M × 0.0001 = $52,000 per bp. Annualized yield volatility on the 5Y point of the Treasury curve: 85bps (based on 252 daily observations over the past year). Daily yield vol = 85 / √252 = 5.35bps. Calculate: (1) 1-day 99% VaR using parametric method: VaR = DV01 × σ_daily × Z_99 = $52,000 × 5.35 × 2.326, (2) 10-day VaR (Basel holding period): scale by √10, (3) annualized VaR (252 trading days), (4) VaR as percentage of portfolio value. Also compute the 95% VaR for comparison (Z = 1.645)."
  • "Convexity adjustment to parametric VaR: Same $100M portfolio, ModD 5.2, convexity 32.5 (measured in years²). Standard parametric VaR at 99% 1-day is approximately $647,000 (yield move 12.45bps at 99%). Now compute the convexity correction: ΔP_convexity = ½ × 32.5 × $100M × (0.001245)² = ½ × 32.5 × $100M × 0.00000155 = $2,519. As a percentage of the first-order VaR: $2,519 / $647,000 = 0.39%. At what scenario yield move (Δy) does convexity contribute more than 5% of the duration term? Show the formula and solve. For 30-year zero coupon bonds with convexity ~600, recompute the same analysis — convexity becomes first order."

Historical Simulation VaR for Bond Portfolios

Historical simulation replays actual historical yield curve moves against the current portfolio without assuming a return distribution. For a 1Y lookback with 252 trading days, you have 252 daily P&L scenarios. Sort them from worst to best; the 99th percentile loss (2.5th worst day) is the 1-day 99% historical VaR. This method captures non-normality, fat tails, and historical stress events directly — but it is backward-looking and weights all historical periods equally.

  • "Historical simulation VaR — 5Y lookback: I have a fixed income portfolio with the following key rate durations (KRD): 2Y KRD = $18,500/bp, 5Y KRD = $31,200/bp, 10Y KRD = $22,800/bp, 30Y KRD = $9,400/bp. I have 5 years (1,260 observations) of daily changes in the 2Y, 5Y, 10Y, and 30Y Treasury par yields. For each historical date t, compute: daily P&L = Σ(KRD_i × Δy_i(t)) for i = {2Y, 5Y, 10Y, 30Y}. Then: (1) sort the 1,260 P&L scenarios from worst to best, (2) identify the 1-day 99% historical VaR (12.6th worst scenario), (3) identify the 1-day 95% VaR (63rd worst scenario), (4) identify the worst 5 days and the dates they occurred, (5) compare historical VaR to parametric VaR — what explains the difference?"
  • "Full revaluation vs. duration approximation in historical simulation: I want to compare two approaches. Portfolio: $50M in a 10-year Treasury bond, coupon 4.25%, yield 4.75%, modified duration 7.8 years, convexity 74.2. Historical yield change on 15 March 2020 (COVID sell-off): 10Y yield rose 23bps intraday. (1) Duration approximation: ΔP = −7.8 × $50M × 0.0023 = −$897,000. (2) Full revaluation: reprice the bond at 4.75% + 0.23% = 4.98%. Compute the new bond price using the standard bond pricing formula: P = Σ[C/(1+y/2)^t] + [Par/(1+y/2)^20], where C = $1,062,500 semi-annual coupon, Par = $50M, y = 0.0498. (3) Add convexity correction: ΔP ≈ −7.8 × $50M × 0.0023 + ½ × 74.2 × $50M × 0.0023² = −$897,000 + $196. Compare all three results. What does this say about the duration approximation for moves of this size?"

Monte Carlo VaR Using Term Structure Models

Monte Carlo VaR simulates thousands of yield curve paths using a stochastic interest rate model and revalues the portfolio on each path. The advantage over historical simulation is that it is not constrained to realized historical moves — it can generate scenarios the market has not yet experienced. The choice of interest rate model matters: the Vasicek model produces normally distributed rates and allows negative rates; the CIR model ensures rates stay non-negative; HJM and LIBOR Market Model frameworks allow arbitrary initial curve shapes and are preferred for derivatives-heavy portfolios.

  • "Monte Carlo VaR using Vasicek model: Parameters calibrated to current market: mean reversion speed κ = 0.12, long-run mean θ = 0.045, volatility σ = 0.010, current short rate r₀ = 0.043. Generate 10,000 1-day short rate scenarios using the Vasicek discretization: r(t+1) = r(t) + κ(θ − r(t))Δt + σ√Δt × ε, where ε ~ N(0,1) and Δt = 1/252. For each simulated short rate r(1): use the Vasicek bond pricing formula P(r, T) = A(T)exp(−B(T)r) to reprice a $100M portfolio of government bonds with maturities: $30M in 2Y, $40M in 7Y, $30M in 20Y. Compute the P&L for each of the 10,000 scenarios. Report: (1) 1-day 99% VaR, (2) 1-day 95% VaR, (3) Expected Shortfall (CVaR) at 99%, (4) worst 5 scenarios and corresponding short rate moves, (5) compare to parametric VaR using portfolio duration."
  • "Multi-factor Monte Carlo: 2-factor Vasicek model (level and slope): Level factor L(t) governs parallel shifts: dL = κ_L(θ_L − L)dt + σ_L dW_L. Slope factor S(t) governs 2s10s: dS = κ_S(θ_S − S)dt + σ_S dW_S. Correlation ρ(W_L, W_S) = −0.25. Parameters: κ_L = 0.10, θ_L = 0.040, σ_L = 0.0090; κ_S = 0.30, θ_S = 0.010, σ_S = 0.0120; current L₀ = 0.043, S₀ = 0.012. For each of 10,000 simulations: simulate (ΔL, ΔS) using Cholesky decomposition of the correlation matrix, then map to yield changes at 2Y, 5Y, 10Y, 30Y using factor loadings (approximate: 2Y is 70% L + 80% S, 10Y is 100% L + 10% S, 30Y is 95% L − 20% S). Apply KRD sensitivities to compute portfolio P&L. Compare single-factor vs. two-factor VaR — what is the diversification benefit from modeling slope risk separately?"

Multi-Factor Yield Curve VaR

A parallel-shift DV01 assumes all yields move the same amount — a strong assumption. In reality, yield curves twist and butterfly. Multi-factor VaR decomposes rate risk into orthogonal components (typically three principal components: level, slope, curvature) and models each factor separately.

  • "Key rate duration (KRD) multi-factor VaR: Portfolio KRDs: 1Y KRD = $8,200/bp, 2Y KRD = $22,500/bp, 5Y KRD = $38,100/bp, 7Y KRD = $14,800/bp, 10Y KRD = $29,600/bp, 20Y KRD = $11,200/bp, 30Y KRD = $7,400/bp. Yield volatility by tenor (annualized): 1Y σ = 105bps, 2Y σ = 92bps, 5Y σ = 88bps, 7Y σ = 85bps, 10Y σ = 82bps, 20Y σ = 78bps, 30Y σ = 75bps. Yield correlation matrix (use simplified values): adjacent tenors ρ = 0.95, skip-one tenors ρ = 0.88, skip-two ρ = 0.80, non-adjacent ρ = 0.72. Using the formula VaR_portfolio = √(w^T Σ w) where w is the vector of KRD × daily_vol values and Σ is the correlation matrix: (1) compute daily vol of each KRD bucket (σ_daily = σ_annual/√252), (2) construct the 7×7 covariance matrix, (3) compute 1-day 99% portfolio VaR, (4) compute the standalone VaR of each bucket, (5) compute diversification benefit (sum of standalone VaRs minus portfolio VaR)."

Credit Spread VaR

For corporate bond portfolios, total VaR combines rate VaR (from Treasury yield moves) and credit spread VaR (from OAS moves). These are correlated — in flight-to-safety events, rates fall while spreads widen, partially offsetting; in risk-on environments, rates rise and spreads tighten. The correlation between 5Y Treasury yield changes and IG OAS changes has historically been around −0.30 to −0.45, providing meaningful diversification benefit.

  • "Credit spread VaR for an IG corporate bond portfolio: $200M IG bond portfolio. Spread duration (spread DV01) = $85,000/bp (average OAS duration 4.25 years). OAS daily volatility: 4.2bps (annualized 67bps based on Bloomberg IG OAS index). Treasury rate VaR component: DV01 $95,000/bp (modified duration 4.75), Treasury daily vol 5.5bps/day. Correlation between daily Treasury yield change and daily OAS change: ρ = −0.38. Calculate: (1) spread VaR (1-day 99%): $85,000 × 4.2 × 2.326, (2) rate VaR (1-day 99%): $95,000 × 5.5 × 2.326, (3) total VaR using correlation: √(rateVaR² + spreadVaR² + 2 × ρ × rateVaR × spreadVaR), (4) what is the diversification benefit from the negative correlation?, (5) how does this change if the portfolio becomes HY (OAS duration 3.8Y, OAS vol 18bps/day, correlation with rates −0.55)?"

Stressed VaR (SVaR) Under Basel III/IV

Basel III (CRR2/CRR3 in Europe) requires banks to compute SVaR using a 12-month historical window from a period of significant market stress. The capital charge uses the maximum of the current-period VaR and the stressed-period VaR, each multiplied by a multiplier k (3.0 at minimum, higher after VaR exceptions). For fixed income books, the most commonly used stress periods are 2008 (credit/rate shock), 2013 Taper Tantrum, and 2022 rate shock (10Y Treasury yield rose from 1.5% to 4.25% in 12 months).

  • "Stressed VaR using the 2022 rate shock period (Jan–Dec 2022): During 2022, the 2Y Treasury yield rose from 0.73% to 4.42% (+369bps) and the 10Y rose from 1.51% to 3.88% (+237bps) — 2s steepened severely as the Fed hiked 425bps. Take the actual daily yield changes from this period (all 252 trading days) and apply them to the current portfolio KRDs: 2Y KRD = $22,500/bp, 5Y KRD = $38,100/bp, 10Y KRD = $29,600/bp, 30Y KRD = $7,400/bp. (1) Compute the historical P&L series for the portfolio over the 2022 stress window using the same KRD-based revaluation approach, (2) identify 1-day 99% SVaR from the 2022 distribution, (3) compare to current-period VaR (computed from the most recent 252 days when daily yield moves averaged 4.5bps at 10Y), (4) compute the Basel III capital multiplier: Total VaR Capital = max(VaRt-1, 3 × VaR_60day_avg) + max(SVaRt-1, 3 × SVaR_60day_avg)."
  • "VaR backtesting — exceptions analysis: Our $100M government bond portfolio has a 1-day 99% VaR of $647,000 (from the parametric model). Over the past 250 trading days, the actual daily P&L was: losses exceeding $647,000 on 5 days (Oct 2, Feb 14, Aug 3, Nov 29, Mar 15). Under Basel III: (1) how many exceptions is the model allowed before the multiplier k increases? (Basel: 0-4 exceptions = Green zone, k=3.0; 5 = Yellow zone, k=3.4; 6-9 = Yellow zone, k=3.5-3.8; 10+ = Red zone, k=4.0), (2) with 5 exceptions, what is the new capital multiplier and how does it change the capital charge?, (3) compute the 'p-value' for observing 5+ exceptions if the true VaR model is correctly calibrated: use the binomial distribution B(250, 0.01) and compute P(X ≥ 5), (4) what are the 3 explanations you would put in a backtesting exception report to regulators — was it model error, bad luck, or fat-tail realization?"

VaR Aggregation Across a Mixed Fixed Income Book

A typical fixed income portfolio contains government bonds, investment-grade corporates, high-yield bonds, and interest rate derivatives (swaps, futures). Aggregating VaR across these positions requires a correlation structure between rate risk and credit risk — not just summing standalone VaRs.

  • "Full VaR aggregation for a mixed fixed income book: Government bond sub-portfolio: $300M AUM, duration 5.5, rate VaR (1-day 99%) = $972,000. IG corporate sub-portfolio: $150M AUM, spread duration 4.2, rate VaR $412,000, spread VaR $621,000. HY sub-portfolio: $50M AUM, spread duration 3.8, rate VaR $103,000, spread VaR $485,000. Interest rate swap overlay: pay-fixed 10Y $100M notional, DV01 +$9,200/bp, rate VaR (1-day 99%) = +$236,000 (positive VaR on rate rise — pay-fixed benefits from rising rates, so it hedges). Correlation assumptions: Govts vs. IG rate: 0.92. Govts vs. HY rate: 0.80. IG spread vs. HY spread: 0.65. Rate vs. credit spread: −0.38 for IG, −0.52 for HY. Aggregate: (1) net rate VaR (netting the swap hedge), (2) net credit spread VaR, (3) total portfolio VaR using a 4×4 block correlation matrix, (4) marginal VaR contribution from each sub-portfolio, (5) which sub-portfolio contributes most to total VaR on a per-dollar basis?"

Where to Start

For fixed income risk managers, the Compliance & Risk templates include dedicated VaR engines for bond portfolios — covering DV01 extraction, KRD attribution, parametric VaR, and historical simulation using real yield data. The Portfolio VaR framework describes the general methodology. For related fixed income risk analysis, see Duration and Convexity Analysis and Yield Curve Analysis with AI. For complete fixed income portfolio management workflows, see the Quant Finance category. The methodology described here aligns with Basel III market risk capital (CRR2 Article 365, IMA approach) and FRTB sensitivities-based method (SBM) for bond books.

Frequently Asked Questions

What is the difference between VaR and Expected Shortfall for bond portfolios?

VaR answers the question: "What is the maximum loss at a given confidence level?" — it tells you there is a 1% probability of losing more than the VaR amount but says nothing about the severity of those tail losses. Expected Shortfall (ES, also called CVaR or Conditional VaR) is the average loss given that the loss exceeds the VaR threshold: ES = E[Loss | Loss > VaR]. For a normal distribution, ES_99% ≈ 2.665 × σ (vs. VaR_99% = 2.326 × σ), so ES is roughly 15% larger than VaR at the 99% level. Under Basel FRTB (Fundamental Review of the Trading Book, implemented in the EU under CRR3), banks are required to use Expected Shortfall at 97.5% (which is approximately equivalent to VaR at 99%) rather than VaR for internal model capital calculations. ES is a coherent risk measure — it is subadditive, meaning the portfolio ES is always ≤ the sum of component ESs — while VaR is not subadditive and can violate the principle that diversification reduces risk.

How does the choice of lookback period affect bond portfolio VaR?

The lookback period determines which market environment's volatility is captured in the VaR model. A 1-year (252-day) lookback is standard for current-period VaR — it is responsive to changing market conditions but can give misleadingly low VaR after a prolonged quiet period. A 5-year lookback is more stable but slow to capture regime changes. EWMA (Exponentially Weighted Moving Average) models with decay factor λ = 0.94 (RiskMetrics) give more weight to recent observations, so they respond quickly to volatility spikes. For fixed income, this matters significantly: in 2021, when 10Y Treasury daily vol was under 3bps, a 1-year EWMA-based VaR on a $100M bond portfolio was less than $400,000 — by Q4 2022, with daily vol exceeding 9bps, the same portfolio had VaR exceeding $1.2M. Risk managers should monitor VaR alongside realized volatility to detect model staleness, and stressed VaR (using a fixed stressed period) provides a floor that does not depend on the current market regime.

Can Claude AI directly calculate fixed income VaR from portfolio data?

Yes — with the ClaudeFinanceLab MCP tools (see the Quant Finance category), you can paste portfolio data including bond positions with CUSIP, notional, coupon, maturity, and current yield, and Claude will compute DV01s, KRDs, and parametric VaR. For historical simulation, Claude can process a CSV of historical yield changes and perform the full KRD-based P&L replication. The key constraint is data: you must supply the yield time series (Bloomberg, Fed H.15 data, or your own data warehouse). Without historical yield data, Claude can still compute parametric VaR using a user-supplied yield volatility assumption. Monte Carlo VaR using Vasicek or CIR models can be computed entirely within Claude given model parameters, as the simulations are mathematical rather than data-dependent.

What is the Basel FRTB sensitivities-based method for bonds?

The FRTB Sensitivities-Based Method (SBM) is the standardized approach for market risk capital under Basel IV / CRR3 (effective for EU banks from January 2025). For interest rate risk, SBM requires computing risk sensitivities (delta, vega, curvature) for each tenor bucket (0.25Y, 0.5Y, 1Y, 2Y, 3Y, 5Y, 10Y, 15Y, 20Y, 30Y) in each currency, then aggregating using prescribed risk weights and correlation matrices. The prescribed risk weights for general interest rate risk are highest at short tenors (RW of 1.7% at 0.25Y, declining to 1.0% at 5Y, then rising to 1.4% at 30Y for EUR). Delta capital is computed as: K_delta = √(Σ_b Σ_{s,r} ρ_{sr} × WS_s × WS_r), where WS = risk weight × net sensitivity in each bucket. This is distinct from internal model VaR and is used by banks that do not qualify for or elect not to use the IMA (Internal Models Approach).

Using Claude at your firm?

Connect Claude to live financial data via MCP — EDGAR, FDIC, BIS, CME and 18 more.

New guides & tools — free

Get notified when we add new MCP servers, finance AI guides, and eval results.

Try These Skills

Browse all Quant Finance tools →
FEEDBACK