Skip to content

CFA Level II · CFA Level II Exam

The Term Structure and Interest Rate Dynamics: formula sheet

Full chapter guide

Key formulas

Forward rate from spot rates
(1 + z_B)^B = (1 + z_A)^A × (1 + f(A,B−A))^(B−A)
z_A and z_B are annual spot rates. Solve for f by dividing and taking the (B−A) root.
Spot rate from one-year forwards
(1 + z_N)^N = (1 + z_1)(1 + f(1,1))(1 + f(2,1))…(1 + f(N−1,1))
The spot rate is the geometric mean of the one-year forward rates. Subtract 1 after taking the Nth root.
Forward price of a zero-coupon bond
F(A,B−A) = P(B) ÷ P(A)
P(T) is the price of a $1 face zero maturing at T. This is the price today, for delivery at time A, of a zero that matures at time B. Use it when prices are given instead of rates.
Forward rate model (value of a bond)
If future spot rate = forward rate, return over the period = current spot rate for that period
If the future spot rate is lower than the forward rate, the bond's return beats the implied return. If higher, it falls short.
Bond value from spot rates
PV = CF_1 ÷ (1+z_1) + CF_2 ÷ (1+z_2)² + … + CF_N ÷ (1+z_N)^N
Use the spot rate matching each cash flow's date.
Bond value from forward rates
PV = CF_1 ÷ (1+f(0,1)) + CF_2 ÷ [(1+f(0,1))(1+f(1,1))] + CF_3 ÷ [(1+f(0,1))(1+f(1,1))(1+f(2,1))] + …
f(0,1) is the 1-year spot rate and f(1,1) is the one-year rate one year ahead. Discount each cash flow through successive one-year forward rates. It gives the same value as spot discounting.
Discount factor from spot rate
DF(n) = 1 ÷ (1 + z(n))^n
z(n) is the n-year spot rate, annual compounding. Work in discount factors; they make every other step linear.
Bond price using spot rates
P = Σ [CF(t) ÷ (1 + z(t))^t]
Each cash flow is discounted at the spot rate for its own maturity.
Bootstrapping a spot rate from par rates
DF(n) = [1 − c(n) × Σ DF(t) for t = 1 to n−1] ÷ [1 + c(n)]; then z(n) = DF(n)^(−1/n) − 1
c(n) is the n-year par rate (annual coupons, price 100). Needs all earlier discount factors first.
Par rate from spot rates
c(n) = [1 − DF(n)] ÷ Σ DF(t) for t = 1 to n
The reverse conversion. The sum runs through year n, including the final year.
Forward rate from spot rates
(1 + z(A+B))^(A+B) = (1 + z(A))^A × (1 + f(A, B))^B
Rearrange for f(A, B). For one-period forwards: 1 + f = DF(A) ÷ DF(A+1).
Spot rate from forward rates
(1 + z(n))^n = (1 + z(1)) × (1 + f(1,1)) × (1 + f(2,1)) × ... × (1 + f(n−1,1))
The spot rate is a geometric average of the one-year forward rates.
Forward pricing model
(1 + z_(A+B))^(A+B) = (1 + z_A)^A × (1 + f(A,B))^B
f(A,B) is the B-year rate starting A years from now. Solve for f by dividing, then take the B-th root and subtract 1.
Forward rate from spot rates
f(A,B) = [(1 + z_(A+B))^(A+B) ÷ (1 + z_A)^A]^(1/B) − 1
Use annual compounding unless the vignette states otherwise.
Forward price of a zero-coupon bond
F(A,B) = P(A+B) ÷ P(A) = 100 ÷ (1 + f(A,B))^B per 100 face
P is today's zero-coupon price (discount factor). A is the time to delivery and B is the bond's life at delivery.
Value of a forward contract at time t
V_t = [F_t − F_0] ÷ (1 + z_(A−t))^(A−t)
F_0 is the contract price. F_t is the current forward price for the same delivery. The long gains if F_t > F_0. Discount at the spot rate for the time left to delivery.
Rolldown (horizon) total return
Return = (Price at horizon + coupons received − Price now) ÷ Price now
For rolldown, price the bond at the horizon using the unchanged spot curve for its remaining maturity.
Forward-realized return rule
If the future spot curve = today's forward curve, return over the period = current spot rate for that period
Holds for any bond, whatever its maturity or coupon. It is the break-even test for the view that rates will beat or miss the forwards.
Swap spread
Swap spread = Swap fixed rate − Government bond yield (same maturity)
Reflects bank credit risk and liquidity. Can be quoted in basis points.
I-spread
I-spread = Bond yield − Interpolated swap rate at the bond's maturity
Uses one point on the curve. Interpolate linearly if the maturity falls between swap tenors.
Z-spread
Price = Σ CFt ÷ (1 + St + Z)^t
S = benchmark spot rates, Z = constant spread. Solve Z by trial and error; the exam usually gives it or asks you to compare.
TED spread
TED = 3-month Libor − 3-month T-bill rate
Wider means more perceived credit risk in the banking system.
Libor-OIS spread
Libor-OIS = Libor − Overnight indexed swap rate
Cleaner gauge of bank credit and liquidity risk. Widens in stress.
Pure expectations
Forward rate = expected future spot rate
Two-year yield: (1 + S2)² = (1 + S1)(1 + E[S1 one year ahead]). No risk premium.
Liquidity preference
Forward rate = E[future spot rate] + liquidity premium
Premium is positive and generally increases with maturity. Forward rates overstate expected spot rates.
Preferred habitat
Forward rate = E[future spot rate] + term premium
Premium reflects supply and demand by maturity. It can be positive or negative.
Local expectations
Expected one-period return = risk-free rate for all maturities
Applies over short holding periods only.
Vasicek model
dr = a(b − r)dt + σ dZ
Equilibrium. Mean reversion to b at speed a. Constant volatility σ, so negative rates are possible.
Cox-Ingersoll-Ross (CIR) model
dr = a(b − r)dt + σ√r dZ
Equilibrium. Mean reversion like Vasicek, but volatility scales with √r, so volatility rises with the rate and rates stay non-negative under the right parameters.
Ho-Lee model
dr = θt dt + σ dZ
Arbitrage-free. Time-dependent drift θt fits the market curve. Constant volatility. No mean reversion.
Drift direction in mean-reverting models
Drift = a(b − r): positive if r < b, negative if r > b
Use this to say which way the expected short-rate change points. The random shock can still move the rate either way.
Classification
Equilibrium: Vasicek, CIR. Arbitrage-free: Ho-Lee
Vasicek and CIR are single-factor models. Ho-Lee is also a one-factor, short-rate model.
Effective duration
EffDur = (PV₋ − PV₊) ÷ (2 × PV₀ × Δcurve)
PV₋ and PV₊ are prices after the curve shifts down and up in parallel. Δcurve is in decimal form, e.g. 0.01.
Key rate duration
KRD(k) = (PV₋ₖ − PV₊ₖ) ÷ (2 × PV₀ × Δy)
Only the rate at maturity point k is shifted. All other points stay fixed. Δy is in decimal form, e.g. 0.01.
Sum of key rate durations
Σ KRD(k) ≈ EffDur
The sum approximates effective duration because a parallel shift of the curve equals shifting every key rate by the same amount.
Approximate price change from curve change
%ΔPV ≈ −Σ [KRD(k) × Δy(k)]
Use the actual change at each key rate. Add convexity only if the question gives it.
Three-factor description
Δ yield curve ≈ level + steepness + curvature
Level = parallel shift. Steepness = twist. Curvature = butterfly.
Node value (backward induction)
V₀ = 0.5 × [(V_H + C) + (V_L + C)] ÷ (1 + r)
V_H and V_L are the next-period values at the upper and lower nodes. C is the coupon paid at that next date. r is the one-period rate at the node you are valuing.
Adjacent-node rate relationship
r_H = r_L × e^(2σ)
Applies to two adjacent nodes in the same period. Across n steps, the node k steps above the lowest is r_L × e^(2kσ).
Calibration to a zero-coupon bond
Price of n-year zero = value of 1 at maturity discounted back through the tree = 1 ÷ (1 + z_n)^n
The tree rates must be chosen so the tree price matches the price implied by the spot rate z_n.
Callable bond value at a node
V_node (ex-coupon) = min(V_continuation, call price) if exercisable
The issuer calls when the continuation value is above the call price. Coupon is added after this adjustment when moving back.
Putable bond value at a node
V_node (ex-coupon) = max(V_continuation, put price) if exercisable
The holder puts when the continuation value is below the put price.
Value of embedded option
Call value = V_straight − V_callable; Put value = V_putable − V_straight
Both bonds must be valued on the same calibrated tree.

Quick revision

  • A spot rate is the yield on a zero-coupon bond for a given maturity; a forward rate is a rate for a loan starting at a future date.
  • Forward rate link: (1 + z_B)^B = (1 + z_A)^A × (1 + IFR_A,B−A)^(B−A).
  • Par rates come from a curve where each bond is priced at par; bootstrap spot rates from them one maturity at a time.
  • When the forward rate covering the period from A to B exceeds the A-period spot rate, the B-period spot rate is higher than the A-period spot rate, so the spot curve is upward-sloping between A and B.
  • Riding the yield curve earns extra return if the curve is upward-sloping and stays unchanged, as the bond rolls down to a lower yield.
  • Swap spread = swap fixed rate minus the government bond yield of the same maturity. I-spread = the bond's yield minus the interpolated swap rate for the bond's maturity.
  • Pure expectations: forward rates are unbiased predictors of future spot rates. Liquidity preference adds a premium for longer maturities.
  • Segmented markets and preferred habitat explain curve shape through supply and demand across maturities.
  • Vasicek and CIR are equilibrium models with mean reversion; Ho-Lee and similar models are arbitrage-free and fit the observed curve.
  • Level, steepness and curvature are the main curve factors; level explains most of the movement in yields.
  • Key rate duration shows sensitivity to a shift at one maturity, with the rest of the curve unchanged.
  • In a binomial tree, value backwards from maturity: V = [0.5 × (V_up + C) + 0.5 × (V_down + C)] ÷ (1 + f), where V_up and V_down are the next-date values (ex-coupon), C is the coupon paid at that date and f is the node's forward rate. At maturity the ex-coupon value is par, so the cash flow is par plus the final coupon.

Common mistakes

  • Dividing spot rates directly instead of the compounded growth factors Fix: Always raise 1+z to the power of its maturity first, then divide, then take the root.
  • Using the wrong forward period when taking the root Fix: Take the root equal to B−A. For the 2y3y rate, the end is year 5 and the root is 3.
  • Treating YTM as the spot rate for that maturity Fix: Only a zero-coupon bond has YTM equal to its spot rate. A coupon bond's YTM is a blend of several spot rates.
  • Leaving out the final coupon when bootstrapping Fix: Use the formula with (1 + c(n)) in the denominator. The last cash flow is 1 + c(n) per 1 of par.
  • Averaging spot rates instead of using the growth-factor ratio to get a forward rate. Fix: Always divide compounded growth factors. Raise each spot to its own maturity before dividing.
  • Using the wrong exponents, such as taking the B-th root of a ratio built with the wrong periods. Fix: Label A as the start and B as the length. The two spot maturities must be A and A+B.
  • Calling the I-spread a spread over the full curve. Fix: I-spread uses one maturity. Z-spread uses every spot rate along the curve.
  • Using the government yield in the I-spread instead of the swap rate. Fix: The I-spread subtracts the swap rate from the bond yield. The swap spread subtracts the government yield from the swap rate.
  • Saying pure expectations and local expectations are the same. Fix: Local expectations only gives equal expected returns over a short period. Pure expectations gives equal returns over any horizon.
  • Treating an upward-sloping curve as proof the market expects higher short rates. Fix: Under liquidity preference or preferred habitat, part of the slope is premium. Check which theory applies.

Exam tips

  • Identify rate types first. Many wrong answers come from using a par yield where a spot rate is needed.
  • Set up the timeline before computing. Marking A, B and B−A prevents root errors.
  • Compare the future spot rate with the forward rate, not with today's spot rate, for forward rate model questions.
  • Sanity check direction: an upward sloping spot curve means forwards sit above spot rates.
  • Keep intermediate values to five or six decimals because powers amplify rounding differences.
  • Expect a vignette that gives a par curve and asks for a spot rate or a bond price. Do the bootstrap in a clean column of discount factors and reuse it for every question in the item set.
  • Check whether the vignette gives par rates, spot rates or YTMs. The data label decides which formula you use.
  • Use the curve-shape rule to remove one or two options quickly: in an upward-sloping curve, forward > spot > par at similar maturities.