CFA Level II · CFA Level II Exam
The Term Structure and Interest Rate Dynamics: formula sheet
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.