Learn how to price coupon bonds using a binomial interest rate tree, apply backward induction, and understand embedded option valuation in a practical item set format.
Enhance Your Learning:
Sometimes, reading about theoretical models can feel a bit abstract, right? You learn about binomial trees, risk-neutral probabilities, up-factors, down-factors, and then… what do you actually do with them? In this section, we focus on how the CFA® Level II exam might present a mini scenario (often called a vignette) on pricing coupon bonds with a binomial interest rate tree. You’ll see how the exam could give you partial data—like a partially constructed interest rate tree—and then ask you to find the bond’s price today, the price at each node, and maybe even the option value if it’s a callable or putable bond. We’ll untangle the process in plain language, so you can confidently maneuver through the item set under time pressure.
We’ve all had that moment when you’re halfway through a big binomial problem, glance at your watch, and realize how quickly time is ticking. So let’s unpack the steps carefully. You’ll see we’ll circle back to these same steps at the end with a simpler example and a short quiz so you can test your readiness.
A binomial interest rate tree helps you analyze potential shifts in interest rates over discrete time steps—like one-year intervals. At each node, the short-term (or spot) interest rate can “move up” or “move down” over the next period. The bond’s cash flows are then valued under each possible interest rate path, and you apply risk-neutral probabilities to derive the expected present value (PV). Because we’re dealing with coupon bonds, we’ll have periodic coupon payments plus principal redemption at maturity.
A quick personal note: the first time I tried building a binomial model during a practice exam, I forgot to incorporate the coupon at each node. I was just swinging for the final payoff and ended up with an incorrect answer. So, yeah, don’t forget to add your coupon flows at every step—those can be easy to miss under exam pressure.
Exam vignettes on this topic typically include several data points:
Often, you’ll see something like:
• Time horizon: 2 or 3 years.
• Coupon: a fixed percentage of par, paid annually (or semiannually, if so stated).
• Stated maturity date.
• Possibly a call or put price on a certain date.
And then the question might read: “Compute the fair price of the bond today. Compute the value of the embedded call option. Show how an increase in volatility (changing u and d) would alter the bond’s fair value.”
While we’re not numbering headings, we can certainly number process steps in the body. Here’s how you might approach the item set:
This approach is sometimes called backward induction. You sweep from the final nodes (where you know precisely how much the bond will pay) backward to the present, removing any guesswork since you incorporate the possible up or down rates and their respective probabilities.
In the risk-neutral world used for pricing, probabilities are not necessarily the “real” probabilities that reflect actual market-likelihood events. Instead, they’re adjusted so that all assets grow at the risk-free rate in expectation. The formula for the one-period framework often goes like this:
where:
The expected value of the bond’s payoff is then multiplied by \( p \) for the up-state and \( (1 - p) \) for the down-state. Each node’s value is discounted at the local interest rate for that node.
Let’s picture a small 2-step binomial interest rate tree:
• Current short rate = 5%
• Up-factor, \(u\) = 1.10
• Down-factor, \(d\) = 0.90
• Risk-neutral probability, \(p = \frac{(1+0.05) - 0.90}{1.10 - 0.90} = \frac{1.05-0.90}{0.20} = \frac{0.15}{0.20} = 0.75.\)
• Bond: 2-year maturity, pays a 5% annual coupon and then returns par value (assume $100) at the end of Year 2.
We can depict the rates with a simple Mermaid diagram:
graph LR A["Node(0) <br/> r=5%"] --> B["Node(1,u) <br/> r=5%×1.10=5.50%"] A["Node(0) <br/> r=5%"] --> C["Node(1,d) <br/> r=5%×0.90=4.50%"] B --> D["Node(2,uu) <br/> r=5.50%×1.10=6.05%"] B --> E["Node(2,ud) <br/> r=5.50%×0.90=4.95%"] C --> E["Node(2,du) <br/> r=4.50%×1.10=4.95%"] C --> F["Node(2,dd) <br/> r=4.50%×0.90=4.05%"]
Note that Node(2,ud) and Node(2,du) recombine, resulting in a single rate of 4.95%. That’s why binomial trees in this setup are often called “recombining trees.”
We’ll do this for each Node(1). The discount factor for a node is \( \frac{1}{1 + \text{(rate at that node)}} \).
Let’s compute the expected value at Node(1,u):
The possible Year 2 values that Node(1,u) leads to are Node(2,uu) and Node(2,ud).
The bond’s payoff in either scenario is $105.
Risk-neutral probability from Node(1,u) to Node(2,uu) or Node(2,ud) is still \(p=0.75\) for the up move (relative to that node) and \(1-p=0.25\) for down.
So expected payoff from Node(1,u) =
We discount this at 5.50% (the rate at Node(1,u)).
Present Value at Node(1,u) =
Next, do the same for Node(1,d). The final payoffs are still $105 in each case:
Probability of going up (du) from Node(1,d) is 0.75.
Probability of going down (dd) from Node(1,d) is 0.25.
Expected final payoff = 0.75 × 105 + 0.25 × 105 = 105.
Discount at 4.50%:
Present Value at Node(1,d) =
We must not forget that the bond pays a 5% coupon at the end of Year 1. That means at Node(1,u), the bondholder effectively has:
Even though you’re conceptually discounting the final payoff of $105 back to Node(1,u), at the end of Year 1, you physically receive a $5 coupon. Then you keep holding the bond for its final payoff at Year 2. So the total “bond value” at Node(1,u) the moment after collecting the coupon is coupon + discounted future payoff.
But in many item sets, we effectively incorporate that coupon automatically if we are discounting from the final maturity all the way back to the present, step by step. Let’s show the explicit approach:
In practice, you might see it either included in the step’s discounting or as an add-on. Some exam solutions just incorporate the coupon as a cash flow. Let’s keep it simple and put the coupon in at the final step from Node(0) to Node(1):
Now, we know the bond’s value at Node(1,u) = $99.53 (before the Year 1 coupon is recognized as a separate infusion) and Node(1,d) = $100.48. Let’s call these V(u) and V(d) for short. The bond also pays a coupon of $5 at the end of the first year in all scenarios. So from today’s perspective, the expected value of the bond’s end-of-Year 1 scenario is:
Since p = 0.75:
Calculate:
So:
Finally, discount that back at the current short rate of 5%:
Hence, the fair price today of this 2-year coupon bond is around $99.78. You might see small differences in rounding depending on how many decimal places you keep along the way.
If this bond had an embedded call, say the issuer can call the bond at $102 at the end of Year 1, the procedure changes at Node(1,u) or Node(1,d). The issuer might redeem the bond if it’s optimal (i.e., if the market price is above $102). So the bond’s value at that node would be the minimum of “continuation value” or “call price”—since the issuer can choose to call and repay you $102 in total. On a putable bond, you do the opposite: at each node, the bondholder can force redemption at the put price if that’s better than continuing. The tree approach still works; you just incorporate the optional redemption logic at each node in your backward induction.
One potential question is: “What if interest rate volatility increases, leading to a bigger ‘u’ and a smaller ‘d’?” Typically, more volatility increases the value of embedded put options (since the possibility of very high or very low rates can make the put more valuable) and decreases the value of embedded call options (since the issuer is more likely to call when rates drop). For a plain-vanilla coupon bond with no embedded options, changing volatility doesn’t affect the final payoff directly, but it changes the shape of the tree and thus the discount rates. If rates become more volatile and your risk-neutral p changes, the bond’s present value can shift accordingly.
Outside the exam, binomial models are often used for simpler option-embedded bond valuations, especially if you don’t want the complexity of a big Monte Carlo approach (or a full-blown PDE approach). Chapter 9 will dig deeper into how Monte Carlo can address path-dependent features, but the binomial model approach is like the fundamental building block. If you can handle a binomial tree, you’re in good shape to extend that knowledge.
• Keep your calculations neat and well-labeled.
• Watch out for question intricacies: does the problem mention interim coupons and how they’re treated?
• Expect a question on how volatility changes the bond value and the embedded option.
• Don’t let the time pressure rush you into forgetting fundamental steps—like discounting from the correct node’s rate or forgetting that coupon at Year 1.
• Practice a few times with “dummy trees” to nail down the mechanics, so you don’t freeze on exam day.
And that’s it. You have all the building blocks to handle a binomial tree item set for coupon bonds in the CFA Level II exam. Practice is key. Let’s move on to a set of sample questions so you can test your mastery and get a bit more exam-like experience.
Important Notice: FinancialAnalystGuide.com provides supplemental CFA study materials, including mock exams, sample exam questions, and other practice resources to aid your exam preparation. These resources are not affiliated with or endorsed by the CFA Institute. CFA® and Chartered Financial Analyst® are registered trademarks owned exclusively by CFA Institute. Our content is independent, and we do not guarantee exam success. CFA Institute does not endorse, promote, or warrant the accuracy or quality of our products.