FRM Part II · FRM Exam Part II
Arbitrage Pricing with Term Structure Models: formula sheet
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.