CFA Level II Exam · Valuation and Analysis of Bonds with Embedded Options
How to Build a Binomial Interest Rate Tree
Updated 7 October 2026 · Fact-checked
A binomial interest rate tree maps possible one-period forward rates over time, with each rate moving to a higher or lower node. You build it so it reprices benchmark bonds at market values, using a volatility assumption. You then value a bond by backward induction: discount the average of the next two values plus coupon at each node.
Understand Interest Rate Tree and Binomial Model
A single yield curve gives you one path of future rates. Real rates are uncertain, and bonds with embedded options depend on that uncertainty. The binomial interest rate tree models it. At each date, the one-period rate can move to one of two values: a higher rate or a lower rate. Each move is assumed equally likely (50% each) under the risk-neutral set-up used for valuation.
The tree is built from one-period forward rates, not from spot rates or YTMs. Each node holds the rate for the next period only. Adjacent rates at the same date are linked by volatility. Under the lognormal random walk assumption, the higher rate equals the lower rate times e^(2σ), where σ is the annualised volatility of the one-period rate. A lognormal model keeps rates positive and makes rate changes proportional to the level of rates.
The tree must be arbitrage-free, meaning it is calibrated to the benchmark curve. Using the tree to value the benchmark par bonds must return their market prices (par for a par bond). You find the lower rate at each date by trial and error or solver until this holds. The volatility input does not change the value of option-free bonds once the tree is recalibrated; it matters later for options.
To value a bond, you use backward induction. Start at maturity, where each node's value is the final cash flow (principal plus last coupon). Step back one date at a time. At each node, take the average of the two possible next-date values, add the coupon paid at that next date, and discount at that node's one-period rate. At time 0 the result is the bond's value. For an option-free bond it should match the price from discounting at spot rates, which is a good check.
Key formulas to remember
- Lognormal relationship between adjacent rates
- r_H = r_L × e^(2σ)
- Applies to two neighbouring nodes at the same date. σ is the annualised volatility of the one-period rate.
- Rates across a date with n+1 nodes
- r(j) = r_lowest × e^(2jσ), for j = 0, 1, ..., n
- For example at t = 2 with three nodes: r_LL, r_LH = r_LL × e^(2σ), r_HH = r_LL × e^(4σ).
- Backward induction at a node
- V_node = 0.5 × [(V_H + C) ÷ (1 + r_node) + (V_L + C) ÷ (1 + r_node)]
- V_H and V_L are next-date values excluding that date's coupon C. At maturity, V is the principal and C is the final coupon, so the final cash flow is principal plus coupon.
- Calibration condition
- Tree value of benchmark bond = market price of benchmark bond
- Par bonds on the par curve must be worth par in the tree. This is what makes the tree arbitrage-free.
- Probabilities
- P(up) = P(down) = 0.5
- Assumed at every node in the standard CFA tree.
How to solve Interest Rate Tree and Binomial Model questions
Use this order for any tree question. First decide whether the tree is given or has to be built.
- 1Read the vignette and list what you have: the tree (or the par/spot curve), the volatility, the coupon, the maturity and the coupon timing.
- 2If the tree is not given, find the lower rate at each date so the benchmark bond reprices at market. Get the higher rate from r_H = r_L × e^(2σ).
- 3Draw the tree on the answer sheet. Label each node with its one-period forward rate. Check that the rates at each date rise in steps of e^(2σ).
- 4Write the bond's cash flows at each date. At maturity, put principal plus final coupon at every final node.
- 5Work backward. At each node, average the two next-date values (each with that date's coupon added) and divide by 1 plus that node's rate.
- 6Continue until you reach time 0. That value is the bond price.
- 7Sanity check: the value should be close to the spot-rate price of the same option-free bond. A par benchmark bond should come back to par.
- 8Answer the actual question asked. It may be a node value, a rate at a node, or the effect of a volatility change.
Quickest way: Shortcut for exam time pressure
When to use it: Use when the tree is given and you only need a price or a node value. Avoid it when you must calibrate the tree.
- Do not rebuild anything. Copy the rates onto a small sketch of the tree.
- Add the coupon to the next-date values first, so you only discount once per node.
- Average the two sums, then divide by (1 + node rate).
- Keep four decimals until the end, then round once.
- If a question asks about an option-free bond, cross-check with spot rates. If the two values differ by more than rounding, recheck the arithmetic.
- If a question asks how volatility changes an option-free bond's value, remember the calibrated tree gives the same value.
Common mistakes in Interest Rate Tree and Binomial Model
Using spot rates or YTMs as the node rates
Candidates see a yield curve in the vignette and plug its rates straight into the tree.
Fix: Nodes hold one-period forward rates. Spot rates only serve as calibration targets or as a check on the final value.
Forgetting to add the coupon at each step
Candidates discount only the next node value and leave out the coupon paid at that date.
Fix: At every node use (next value + coupon) before discounting. At maturity the final node cash flow is principal plus coupon.
Applying e^σ instead of e^(2σ) between adjacent nodes
Candidates remember the exponential but not the factor of 2.
Fix: Adjacent nodes at the same date differ by a factor of e^(2σ). Nodes two steps apart differ by e^(4σ).
Discounting by the rate of the next date's node
Candidates confuse which rate applies to a given period.
Fix: The rate at a node is the rate for the period that starts at that node. Discount the next-date values with the rate sitting at the node you are solving.
Thinking higher volatility raises the value of an option-free bond
Volatility is linked in memory to option value.
Fix: After recalibration to the same benchmark curve, an option-free bond is worth the same. Volatility only affects bonds with embedded options.
Rounding rates too early
Rates are small, and candidates round to two decimals in percent.
Fix: Keep at least four significant digits in rates and prices until the final answer. Rounded rates cause small mismatches against par.
Worked examples
Example 1
A vignette gives a one-year rate of 2.00% today. The one-year rate one year from now is 3.25% in the lower state. Assumed annual rate volatility is 20%, with a lognormal random walk. A 2-year, 3% annual-coupon benchmark bond trades at par. Questions: (1) What is the higher-state rate at t = 1? (2) What is the tree value of the 2-year 3% bond? (3) If volatility is raised to 25% and the tree is recalibrated to the same curve, what happens to the value of this option-free bond?
Show the solution
- Q1: r_H = r_L × e^(2σ) = 3.25% × e^0.40. e^0.40 = 1.4918, so r_H = 3.25% × 1.4918 = 4.85% (rounded).
- Q2: At t = 2 the bond pays 103 in both states. Value at the higher node at t = 1: 103 ÷ 1.0485 = 98.2356. Value at the lower node: 103 ÷ 1.0325 = 99.7579.
- Add the t = 1 coupon of 3 to each value and average: (98.2356 + 3 + 99.7579 + 3) ÷ 2 = 203.9935 ÷ 2 = 101.9968.
- Discount at the time-0 rate: 101.9968 ÷ 1.02 = 99.9969, about 100.00. This matches par, so the tree is consistent with the benchmark.
- Q3: The recalibrated tree must still price the benchmark bond at par. An option-free bond has no option to exploit volatility, so its value does not change.
Answer: (1) About 4.85%. (2) About 100.00 (par). (3) The value stays the same at about 100.00.
Example 2
Use the same tree: one-year rate 2.00% at t = 0, and 3.25% (lower) and 4.85% (higher) at t = 1. An analyst values a different 2-year option-free bond with a 5% annual coupon and par value 100. Questions: (1) What is the bond's value at the higher node at t = 1, including the coupon paid at t = 1? (2) What is the bond's value at time 0? (3) Is the answer consistent with the bond being priced above par?
Show the solution
- Q1: At t = 2 the cash flow is 105 in each state. Value at the higher node, before the t = 1 coupon: 105 ÷ 1.0485 = 100.1431. Including the coupon of 5 paid at t = 1 gives 105.1431.
- Q2: Value at the lower node before coupon: 105 ÷ 1.0325 = 101.6949.
- Average the two values, each plus the coupon: (100.1431 + 5 + 101.6949 + 5) ÷ 2 = 211.8380 ÷ 2 = 105.9190.
- Discount at 2.00%: 105.9190 ÷ 1.02 = 103.8422, about 103.84.
- Q3: The coupon of 5% is above the 3% par-bond coupon on this curve. A bond with a higher coupon than the par rate should be worth more than par. 103.84 is above 100, so the result is consistent.
Answer: (1) About 105.14. (2) About 103.84. (3) Yes. A coupon above the par rate on the curve gives a price above par.
Exam tips
- Expect the tree to be given in the vignette. Most questions ask for a node value or the time-0 value, so practise fast backward induction.
- Learn the e^(2σ) link between adjacent nodes. A common question asks for a missing rate at a node.
- Always add the coupon before discounting. Check this first if your price is off by a small amount.
- Know that a calibrated tree prices benchmark par bonds at par, and that option-free bond value does not depend on the volatility assumption.
- Use the spot-rate price of an option-free bond as a quick check against the tree answer.
Interest Rate Tree and Binomial Model in other exams
The same ground in other exams, if you are preparing for more than one or want another angle on it.
Interest Rate Tree and Binomial Model: frequently asked questions
What is a binomial interest rate tree?
It is a lattice of possible one-period forward rates. At each date, the rate can move to a higher or lower value. You use it to value bonds, especially those with embedded options.
How do I find the rates in the tree?
Pick the lower rate at each date so that the tree prices the benchmark bond at its market price. Then get the higher rate with r_H = r_L × e^(2σ). On the exam the tree is usually supplied.
How does backward induction work for bonds?
Begin at maturity with principal plus coupon. At each earlier node, average the two next-date values after adding that date's coupon, then discount at the node's one-period rate. Repeat until time 0.
Does volatility change the value of an option-free bond in the tree?
No, as long as the tree is recalibrated to the same benchmark curve. Volatility changes the spacing of the rates, but the option-free value stays tied to the curve. It matters for callable and putable bonds.