Skip to content

FRM Part II · FRM Exam Part II

Arbitrage Pricing with Term Structure Models: formula sheet

Full chapter guide

Key formulas

Law of one price
If payoff(A) = payoff(B) in every state, then Price(A) = Price(B)
Applies to portfolios of traded securities with no frictions. Violation creates an arbitrage.
Replication equations (two states)
n1 × V1(up) + n2 × V2(up) = X(up); n1 × V1(down) + n2 × V2(down) = X(down)
V1 and V2 are the payoffs of the two instruments next period. X is the target payoff. Solve for n1 and n2.
Price of the target
Price(X) = n1 × P1 + n2 × P2
P1 and P2 are today's prices of the two instruments. Include cash at the amount borrowed or lent.
Risk-neutral probability
p × P(up) + (1 − p) × P(down) = Price × (1 + r), so Price = [p × X(up) + (1 − p) × X(down)] ÷ (1 + r)
p is chosen so a traded instrument is priced correctly. Here r is the one-period rate for the step. The same p then prices every other security on the tree.
Discount factor from a zero price
Z(T) = Price of ₹1 (or $1) paid at T, and Price = Σ CF(t) × Z(t)
A coupon bond is a portfolio of zero-coupon bonds, so no-arbitrage requires this sum.
Backward induction at a node
V(node) = [0.5 × V(up) + 0.5 × V(down)] ÷ (1 + r(node) × Δt)
Use Δt = 1 for annual steps. For semiannual steps with an annualised rate, Δt = 0.5, so you divide by (1 + r/2). Probabilities are risk-neutral.
Terminal condition for a zero-coupon bond
V(maturity) = Face value at every node
The bond pays the face value regardless of the rate path.
Recombining property
Nodes at step n = n + 1; paths to step n = 2^n
An up-then-down move equals a down-then-up move, so the tree has fewer nodes than paths.
Spot rate from a bond price (annual compounding)
z(T) = (Face ÷ P)^(1 ÷ T) − 1
Use this to turn the tree price into a yield. For semiannual compounding, the annualised yield is 2 × [(Face ÷ P)^(1 ÷ 2T) − 1].
Risk-neutral pricing, one step
V₀ = [p × V_up + (1 − p) × V_down] ÷ (1 + r × Δt)
Discount at the risk-free (tree) rate for that node and period, using simple compounding. With continuous compounding use e^(−r × Δt) instead.
Risk-neutral probability for a security with a known price
P₀ = [p × P_up + (1 − p) × P_down] ÷ (1 + r × Δt), solved for p
Use a traded security, such as a zero-coupon bond or a stock, to find p. Then reuse p for the derivative.
Risk-neutral probability for a stock (simple compounding)
p = ((1 + r × Δt) − d) ÷ (u − d)
Applies when the stock pays no dividends. u and d are the up and down gross return factors. This matches the (1 + r × Δt) convention used in the other formulas and in the worked examples. The exponential form p = (e^(rΔt) − d) ÷ (u − d) applies only under continuous compounding, and it gives a slightly different p.
Rates tree with equal 50% probabilities
Price at node = 0.5 × (V_up + V_down) ÷ (1 + r × Δt)
Many FRM tree questions state p = 0.5. Then the tree values already are risk-neutral.
Risk premium link
Real-world expected return − risk-free rate = risk premium
Under risk-neutral probabilities the expected return on every traded asset equals the risk-free rate.
Backward induction (no cash flow)
V(node) = [0.5 × V(up) + 0.5 × V(down)] ÷ (1 + r(node))
Assumes risk-neutral probability of 0.5 and one-period compounding at the node's rate. Use the period length if not annual.
Backward induction with coupon or payment
V(node) = [0.5 × (V(up) + C) + 0.5 × (V(down) + C)] ÷ (1 + r(node))
C is the cash flow paid at the end of the period. Add it to both successor values before discounting.
Zero-coupon bond at maturity
P = face value at maturity
Start every bond tree from the face value at the final date.
European call on a bond at expiry
max(Bond price − K, 0)
K is the strike. Use the bond price at the expiry nodes, with the right price convention (clean or dirty).
Caplet payoff
Notional × max(r − K, 0) × accrual period
Rate r is set at the start of the period. The payment is made at the end, so discount it once more.
Floorlet payoff
Notional × max(K − r, 0) × accrual period
Same timing as a caplet. A floor is the sum of floorlets.
Swap payment to the fixed-rate payer
Notional × (r − fixed rate) × accrual period
Positive when the floating rate is above the fixed rate. Can be negative, so there is no max.
Cap–floor–swap parity
Cap − Floor = Swap value to the fixed payer
Holds when cap, floor and swap share the same strike, fixed rate, dates and notional.
American option rule
V(node) = max(exercise value, continuation value)
Check this at every node before expiry.
OAS definition
Model price (tree rates + OAS) = Market price
OAS is the single constant spread, added at every node, that makes this hold.
Node value with spread
V(node) = [0.5 × V(up) + 0.5 × V(down) + coupon] ÷ (1 + r(node) + OAS)
Use the probabilities the tree was built with (0.5 each in the usual exam tree). Work backward from maturity.
Callable bond node rule
V(node) = min[ value from discounting, call price ]
Apply it at each node where the bond is callable, before adding the coupon paid at that date. Follow the question's convention for the coupon.
Putable bond node rule
V(node) = max[ value from discounting, put price ]
The holder exercises when the bond is worth less than the put price.
Option cost
Option cost = Z-spread − OAS
Positive for callable bonds, negative for putable bonds.
Price effect of the option
Callable price = Straight bond price − Call option value
Putable price = Straight bond price + Put option value.
Ho-Lee dynamics
dr = λ(t) dt + σ dw
λ(t) is chosen to match the market term structure. σ is constant. Rates are normal.
Vasicek dynamics
dr = k(θ − r) dt + σ dw
k = speed of mean reversion, θ = long-run mean rate, σ = constant volatility of the rate.
Ho-Lee distribution of r(t)
Mean = r0 + ∫λ(s) ds from 0 to t; Variance = σ² t; Std dev = σ√t
Variance grows without bound as t increases.
Vasicek expected rate
E[r(t)] = θ + (r0 − θ) e^(−kt)
The gap to θ shrinks by the factor e^(−kt).
Vasicek variance of r(t)
Var[r(t)] = σ² (1 − e^(−2kt)) ÷ (2k)
As t → ∞, the variance tends to σ² ÷ (2k), so the long-run std dev is σ ÷ √(2k).
Half-life of a shock
Half-life = ln(2) ÷ k
Time for the expected gap between r and θ to halve.
Forward rate and convexity (Ho-Lee: constant σ, no mean reversion)
f(t) = E[r(t)] − σ² t² ÷ 2, so λ(t) = f′(t) + σ² t
Applies to Ho-Lee only. Use the second form to back out the Ho-Lee drift from the slope of the forward curve. f′(t) is the slope of the instantaneous forward curve. In Vasicek the convexity term is smaller and depends on k.
Model with time-dependent volatility
dr = λ(t) dt + σ(t) dw
λ(t) is a time-dependent drift fitted to the yield curve. σ(t) is chosen to fit the volatility term structure. Normal distribution, so negative rates are possible.
Hull-White (extended Vasicek)
dr = (θ(t) − a·r) dt + σ(t) dw
Mean reversion at speed a, with θ(t) fitting today's curve and σ(t) fitting volatilities. Rates are normal, so negative rates remain possible.
CIR model
dr = k(θ − r) dt + σ√r dw
k is the speed of mean reversion, θ is the long-run level. Basis-point volatility = σ√r. Rate cannot go negative.
Feller condition (CIR)
2kθ ≥ σ²
If true, the rate stays strictly above zero. If false, it can touch zero but still cannot go negative.
Lognormal model (no mean reversion)
dr = a·r dt + σ·r dw
Basis-point volatility = σ × r. σ is a percentage volatility, for example 20%.
Black-Karasinski
d(ln r) = k(t)(ln θ(t) − ln r) dt + σ(t) dw
Mean-reverting lognormal model with time-dependent parameters. Rates always positive. Usually needs a numerical method.
Basis-point volatility by model
Normal: σ | CIR: σ√r | Lognormal: σ·r
Convert to the same unit (decimal or bps) before comparing.

Quick revision

  • No arbitrage: portfolios with identical payoffs in every state must have identical prices.
  • Risk-neutral pricing: discount expected payoffs at the risk-free rate using risk-neutral probabilities, not real-world ones.
  • Tree pricing works backward from maturity, one node at a time.
  • At each node, discount using the rate at that node, not the spot rate from time zero.
  • A callable bond's value equals the straight bond value minus the call option value.
  • A putable bond's value equals the straight bond value plus the put option value.
  • OAS is the constant spread added to tree rates that makes the model price equal the market price.
  • OAS removes the effect of the embedded option, so compare it across bonds with different options.
  • Ho-Lee: rates move with a time-dependent drift and constant volatility; no mean reversion.
  • Vasicek: mean-reverting rates with constant volatility; normally distributed rates, so negatives are possible.
  • CIR: mean reversion with volatility that rises with the level of the rate; keeps rates non-negative under its usual parameter condition.
  • Higher volatility raises option values, so callable bond prices fall as volatility rises.

Common mistakes

  • Using real-world probabilities to price the security. Fix: Replication needs no probabilities. If you use an expectation, use risk-neutral probabilities only.
  • Forgetting the coupon in next-period payoffs. Fix: Payoff at a date = ex-coupon price + coupon paid at that date. Write it out each time.
  • Discounting at the successor node's rate instead of the current node's rate. Fix: Average the values first, then divide by 1 plus the rate at the node you are standing on.
  • Forgetting to halve the rate for semiannual steps. Fix: Check Δt before calculating. For half-year steps divide by (1 + r ÷ 2) at every node.
  • Using real-world probabilities to price a derivative. Fix: Check the wording. Price with risk-neutral p solved from a traded security. Use real-world probabilities only for expected return or risk measurement.
  • Discounting at the expected return or a risky rate. Fix: Under risk-neutral probabilities, the risk is already in p. Discount at the risk-free rate for that node.
  • Discounting the final payoff at today's rate in one go. Fix: Discount back one step at a time using the rate at each node. Rates differ across nodes.
  • Forgetting that a caplet is paid one period after the rate is set. Fix: Divide the payoff by (1 + r) at that node. Then continue backward from there.
  • Adding the OAS only to the first rate or to the spot curve instead of every tree node. Fix: Add the same spread to every node rate, then discount. The spread goes inside each (1 + r + OAS) factor.
  • Forgetting to apply the call rule at each node and pricing the callable bond as a straight bond. Fix: At every call date, replace the node value with the call price if the value is higher. Do this before moving to the earlier node.

Exam tips

  • Expect a small tree with two states. Set up two equations and solve quickly; keep the algebra neat to avoid sign errors.
  • Read the question for the word 'arbitrage'. If a market price is given, compare it with the replication cost and state the direction of the trade.
  • Remember that the replicated price does not depend on the real-world probability. If a question offers it as a distractor, ignore it.
  • Check whether the payoff includes a coupon, and whether rates are quoted with annual or semiannual compounding.
  • If time is short, use the risk-neutral shortcut with the p given, then confirm that the answer lies between the discounted down and up values.
  • Check the step size first. A semiannual tree with annual quoted rates is a common trap.
  • Questions often give risk-neutral probabilities other than 0.5. Read them before averaging.
  • Answer options are often close, so keep four decimals until the last step.