Skip to content

CFA Level II Exam · The Arbitrage-Free Valuation Framework

Binomial Interest Rate Tree Construction Step by Step

Updated 7 October 2026 · Fact-checked

A binomial interest rate tree shows the possible one-period forward rates over time. Each node branches to a higher and lower rate with equal probability. Rates at one date are spaced by e^(2σ). You find the first rate by forcing the tree to price the par bond at 100, then work backward through each date.

Understand Binomial Interest Rate Tree Construction

A binomial interest rate tree is a map of possible future one-period rates. From each node, the rate moves up or down over the next period. Each move has a risk-neutral probability of 50%. Because the tree uses one-period rates, you can value any bond by discounting its cash flows through it.

The tree has to be arbitrage-free. That means it must price the benchmark bonds at their market prices. For the exam, the benchmark bonds are par bonds, so a par bond with the market par rate as its coupon must come out at 100. The tree is built date by date until that holds at every maturity.

The tree is recombining. An up move followed by a down move gives the same rate as a down move followed by an up move. So at time n there are only n + 1 nodes, not 2^n. This keeps the tree small enough to solve by hand.

Rates follow a lognormal random walk. The rates at adjacent nodes on the same date differ by a fixed multiple, e^(2σ), where σ is the annualized interest rate volatility. Lognormal spacing keeps rates positive, and the spread between nodes gets wider as rates rise. So you only need to solve for one unknown per date, usually the lowest rate. Every other rate on that date follows from it.

You value a bond by backward induction. Start at maturity, where each node holds the final cash flow. Step back one date at a time. At each node, value = [0.5 × (V up + coupon) + 0.5 × (V down + coupon)] ÷ (1 + rate at that node). The value at the first node is the bond price.

Key formulas to remember

Lognormal spacing of adjacent nodes
r_H = r_L × e^(2σ)
Applies to two adjacent nodes on the same date over a one-year step. σ is annual volatility.
Any node on a date
r_i = r_L × e^(2σ × i)
i = 0 is the lowest node and 1 is the next one up. This lets you get all nodes on a date from the lowest one.
Number of nodes
Nodes at time n = n + 1
The tree recombines, so up-then-down equals down-then-up.
Backward induction at a node
V = [0.5 × (V_up + C) + 0.5 × (V_down + C)] ÷ (1 + r)
V_up and V_down are next-date values before that date's coupon. C is the coupon paid at the next date. r is the node's one-period rate.
Calibration condition
Tree value of the par bond = 100
Use the benchmark coupon equal to the par rate. Adjust the lowest rate on the date until this holds.
Branch probability
P(up) = P(down) = 0.5
These are risk-neutral probabilities. They are fixed, so only the rates change.

How to solve Binomial Interest Rate Tree Construction questions

Use this order for tree construction and valuation questions. Read the vignette first for the par or spot rates, volatility, coupon, maturity and any call or put terms.

  1. 1Write down the tree's time-0 rate. It is the one-year spot rate, and the first node needs no solving.
  2. 2Compute e^(2σ) once from the stated volatility. Keep four or more decimal places.
  3. 3Label the unknown lowest rate on the next date as r_L and write the others as r_L × e^(2σ × i).
  4. 4Take the par bond that matures on that date, with coupon equal to its par rate. Set up backward induction from its maturity cash flow of 100 + coupon.
  5. 5Solve for r_L so the bond values to 100 at time 0. Then compute the other nodes on that date from r_L.
  6. 6Repeat for the next date using the next par bond. Use the rates you have already found.
  7. 7For a bond valuation question, apply backward induction through the finished tree. At each node, check any call, put or other rule before stepping back again.
  8. 8Check that your answer is reasonable. A bond with a coupon equal to its par rate should come out at 100 in the tree.

Quickest way: Plug-and-check for calibration questions

When to use it: Use this when the exam gives you the finished tree and asks for a value, or gives you several candidate rates and asks which is consistent with the par curve.

  1. Do not solve for the rates. Take the rates given in the vignette or answer options.
  2. Run backward induction on the par bond. Start with the last date and move back one step.
  3. If the time-0 value is 100, the rates are consistent. If not, the rates are wrong.
  4. If a call or put exists, apply it at each node right after you discount to that node, before adding the next coupon.
  5. Keep two extra decimals through the steps and round only at the end.

Common mistakes in Binomial Interest Rate Tree Construction

  • Using e^σ instead of e^(2σ) for the spacing between adjacent nodes.

    Students remember σ as the volatility and forget that one step up and one step down differ by two moves.

    Fix: Write r_H = r_L × e^(2σ) at the top of your working. The exponent has the factor 2 for adjacent nodes.

  • Adding the coupon at the wrong place in backward induction.

    Students include the coupon of the current date in the node value, or leave out the coupon of the next date.

    Fix: Add the next date's coupon to each next-date value before averaging. Then discount by the current node's rate.

  • Taking the average of the two rates instead of the average of the two discounted values.

    It looks like a shortcut and gives a number that is close.

    Fix: Discount at each node's own rate, or average the future values and then discount by the current rate. Never average the rates first.

  • Creating 2^n nodes, or treating up-down and down-up as different nodes.

    Students forget the tree recombines.

    Fix: At time n, there are n + 1 nodes. The middle node is reached by more than one path.

  • Applying a call price after adding the coupon to the node value.

    The coupon and the exercise date coincide and students are unsure which comes first.

    Fix: Compare the call price with the node value that does not include the coupon due at that date. Add the coupon after capping the value.

  • Assuming probabilities change with volatility.

    Students link volatility to the chance of an up move.

    Fix: Probabilities stay at 0.5 each. Volatility only changes how far apart the up and down rates are.

Worked examples

Example 1

A two-year, 4% annual-coupon bond is valued on a binomial tree with a time-0 rate of 3.00%. The time-1 rates are 5.00% (up node) and 3.50% (down node). Each branch has probability 0.5. (1) What are the bond's values at the two time-1 nodes, before the time-1 coupon? (2) What is the bond price today? (3) The bond is callable at 100 at time 1. What is its callable value, and what is the call option's value?

Show the solution
  1. The time-2 cash flow is 104 (100 face plus 4 coupon).
  2. Up node: 104 ÷ 1.05 = 99.0476. Down node: 104 ÷ 1.035 = 100.4831.
  3. Add the 4 coupon paid at time 1 to each: 103.0476 and 104.4831.
  4. Average: (103.0476 + 104.4831) ÷ 2 = 103.7654. Discount at 3.00%: 103.7654 ÷ 1.03 = 100.7430. This is the straight bond price.
  5. For the call at 100: the up node is 99.0476, which is below 100, so it is not called. The down node is 100.4831, which is above 100, so it is called and the value is capped at 100.
  6. Add the coupon: up node 103.0476, down node 100 + 4 = 104. Average: (103.0476 + 104) ÷ 2 = 103.5238. Discount: 103.5238 ÷ 1.03 = 100.5086.
  7. Call option value = 100.7430 − 100.5086 = 0.2345, or about 0.23.

Answer: (1) 99.05 at the up node and 100.48 at the down node. (2) 100.74. (3) The callable bond is worth 100.51, so the embedded call is worth about 0.23.

Example 2

A lognormal tree uses annual volatility σ = 15%. The lowest time-2 rate is 2.00%. The lower time-1 rate is 2.50%. Use e^0.30 = 1.3499 and e^0.60 = 1.8221. (1) What is the upper time-1 rate? (2) What are the other two time-2 rates? (3) How many nodes are there at time 2, and why?

Show the solution
  1. Spacing between adjacent nodes = e^(2σ) = e^0.30 = 1.3499.
  2. Upper time-1 rate = 2.50% × 1.3499 = 3.3748%, or about 3.37%.
  3. Middle time-2 rate = 2.00% × 1.3499 = 2.6998%, or about 2.70%.
  4. Top time-2 rate = 2.00% × 1.8221 = 3.6442%, or about 3.64%. This is the same as 2.00% × 1.3499².
  5. At time 2 there are n + 1 = 3 nodes. The tree recombines, so up-then-down gives the same rate as down-then-up, and both paths land on the middle node.

Answer: (1) About 3.37%. (2) About 2.70% and 3.64%. (3) Three nodes, because the tree recombines.

Exam tips

  • Expect the vignette to give the finished tree and ask for a bond or option value. Practise backward induction until you can do a two- or three-period tree in a couple of minutes.
  • Read the vignette for whether the volatility given is annual and whether the step is one year. The spacing formula assumes both.
  • Look for the call or put date and the exercise price. Apply them at the node right after discounting and before adding the next coupon.
  • Use the par-bond check as a sanity test. If a given tree does not price the par bond at 100, you have a calculation error or a trick answer option.
  • Keep four decimals on discount factors. Answer options are often close together, and early rounding can push you to the wrong one.

Binomial Interest Rate Tree Construction in other exams

The same ground in other exams, if you are preparing for more than one or want another angle on it.

Binomial Interest Rate Tree Construction: frequently asked questions

What is a binomial interest rate tree?

It is a recombining tree of possible one-period interest rates. At each node, the rate moves up or down with probability 0.5. You use it to value bonds, including those with embedded options, by backward induction.

Why does the tree use lognormal rates?

Lognormal spacing keeps rates positive, and it makes the gap between nodes grow as rates rise. It also means that adjacent nodes on one date differ by the same multiple, e^(2σ). That lets you solve for one rate per date.

How is the tree calibrated to the par curve?

For each maturity, you value the par bond with the tree. You adjust the lowest rate on the date until the bond is worth 100. Then you compute the other nodes from that rate. This makes the tree arbitrage-free for the benchmark bonds.

How do I do backward induction for a bond?

Start at maturity with the final cash flow at each node. Step back one date at a time. At each node, average the next-date values plus coupon, then discount at that node's rate. Keep going to time 0.