Multi-curve valuation and basis
Separating collateral discounting from index-specific forward projection
01Explain why discount and projection curves have different roles.
02Price floating coupons with an index curve and collateral discount curve.
03Derive a basis-spread par condition.
04Identify cross-curve sensitivities and bootstrap dependency order.
Identify the state variables and the behavior they add.
Post-crisis rates valuation separates the curve that discounts collateralised cash flows from curves that project index-specific fixings. Basis quotes reconcile cash-flow streams carrying different tenor, liquidity and credit characteristics.
One cash flow can depend on one curve for projection and another for discounting.
Each index tenor needs its own forward representation when basis is material.
A multi-curve build is a dependency graph; rebuilding order and joint sensitivities matter.
Ask which instruments can identify the dynamics.
Multi-curve valuation is required for swaps, basis swaps, caps/floors and swaptions whose index projection differs from collateral discounting.
OIS
term-index swaps
tenor basis swaps
cross-currency basis swaps
State discount collateral, projected index and tenor, basis-leg sign, spread placement, reset frequency and all schedules.
Write the dynamics before interpreting parameters.
Projected floating leg
Projection supplies expected coupon rates; collateral discounting supplies present-value weights.
Open in AnalyticsBasis par condition
The quoted spread equalises two index-specific floating legs after common collateral discounting.
Open in AnalyticsBasis spread
Spread is the residual value difference divided by the discounted accrual annuity of the spread-paying leg.
Open in AnalyticsShort derivation
Solving a tenor-basis spread
Price each projected floating stream separately, then solve for the spread that restores zero PV.
- 01
Build collateral discounting
Construct P_d from collateral-consistent OIS instruments.
- 02
Project each index
Use the A- and B-tenor forwarding curves to produce period-specific forwards on their exact schedules.
- 03
Discount both streams
Apply the same collateral discount curve to every payment while retaining distinct projections.
- 04
Solve for the basis
Add s to the designated leg and set net PV to zero.
- 05
Differentiate jointly
Bump discount, A-projection and B-projection quotes independently and together to identify cross-curve dependencies.
Multi-curve valuation makes curve role explicit: discounting prices collateralised cash flows; index curves project contractual fixings.
Inputs
P_d(0,T): discount-curve factorF_p(0;T_{i-1},T_i): projection-curve forwards: quoted basis spreadA_d: discounted spread annuity
Assumptions and limits
- The framework does not eliminate bank credit, funding or CSA optionality.
- Legacy index fallback and cessation require contract-specific treatment.
- Joint curve calibration can be ill-conditioned in illiquid tenors.
Calibrate, compute, and challenge the dynamics.
Construct the OIS discount curve first, then projection curves in a documented dependency order using swaps and basis instruments; price with separate typed handles.
Reprice OIS, outright swaps and basis swaps after every dependent curve build. Report residuals and cross-curve Jacobians.
Implementation with current QuantLib
Use separate RelinkableHandle<YieldTermStructure> objects for discounting and each index. Bootstrap dependencies deterministically and avoid accidental handle aliasing between OvernightIndex and IborIndex projections.
API authority: upstream QuantLib reference pinned in the source registry.06PYTHON IMPLEMENTATIONOpen the implementation and checks.
- Keep market conventions and quote lineage at the boundary.
- Solve curves and dynamics in framework-free deterministic kernels.
- Return residuals, state and sensitivities with every value.
- Test analytical limits, reconstruction identities and failure domains.
Two-curve floating-leg valuation
Show how a projection spread changes PV under fixed OIS discounting.
from __future__ import annotations import math times = [1., 2., 3., 4., 5.]discounts = [math.exp(-0.032*t) for t in times]ois_forwards = [0.033, 0.034, 0.035, 0.036, 0.037]term_forwards = [f + 0.004 for f in ois_forwards]accruals = [1.0] * len(times) def leg(forwards: list[float]) -> float: return sum(a*p*f for a, p, f in zip(accruals, discounts, forwards)) annuity = sum(a*p for a, p in zip(accruals, discounts))basis = (leg(term_forwards) - leg(ois_forwards)) / annuityassert abs(basis - 0.004) < 1e-12print(f"par basis={basis:.2%}")Shock one parameter and trace the full response.
Multi-curve basis laboratory
Move OIS, term projection and basis independently; inspect swap PV and risk by curve role.
Normal basis: Term projection above OIS.
- OIS
- term projection
- basis
Use Left/Right or Up/Down arrows to inspect values; Home and End jump to the bounds.
Where the model meets the book.
“‘The curve moved’ is incomplete until you say discount curve, projection curve and tenor basis.”
OIS curve
index-specific swaps
basis quotes
CSA currency
curve dependency graph
Build discounting before projection, then solve basis-linked curves and reprice the full dependency set after each update.
RISKdiscount DV01
projection DV01
tenor basis
cross-curve Jacobian
- freeze all quote sets
- build OIS
- build projection curves
- reprice basis
- aggregate risk by role
Production failure modes
- curve-handle aliasing
- circular dependency
- wrong basis sign
- staggered quote timestamps
09MACRO CONNECTIONOpen the transmission channel.
Liquidity and credit transmission through basis
Funding stress, index credit sensitivity and liquidity demand can widen the spread between overnight discounting and term-index projection.
transmitschanges term-index premium
transmitsseparate projection curves
transmitsrevalues floating streams
outputallocates OIS and basis risk
10COMMON PITFALLSOpen the failure checklist.
Projecting term coupons from the OIS curve.
Discounting collateralised cash flows on an index curve.
Reporting one net DV01 for dependent curves.
Building projection curves before their discount dependency is frozen.
11SOURCES / FURTHER READINGOpen sources and continue the track.
Curve construction, multi-curve, short-rate and HJM lectures
Research map for term-structure theory and numerical experiments; all platform explanations and code are original.
- Source
- Financial Engineering: Interest Rates & xVA
- Author
- L. A. Grzelak
- Ref
- main
Monte Carlo, stochastic calculus and calibration lectures
Mathematical and numerical cross-reference for model dynamics and diagnostics.
- Source
- Computational Finance Course
- Author
- L. A. Grzelak
- Ref
- main
Current bootstrapping, interpolation, curve, model, cap/floor and swaption tests
Implementation authority for production object boundaries and regression-test patterns.
- Source
- QuantLib upstream
- Author
- QuantLib contributors
- Ref
- v1.42.1