Tutorials › Exam FM - Financial Mathematics › Newton Iteration For Bond Yield

Exam FM · Bond Yield Measures · Tutorial 424 of 998

Newton Iteration For Bond Yield

Use the slope of a bond’s price equation to refine a yield estimate, while tracking units, iteration accuracy, and the price residual.

Intermediate 10 min read

What You'll Learn

  • Define a bond price function in terms of yield per coupon period
  • Derive the price derivative from the bond’s fixed cash flows
  • Apply the Newton update with the correct sign and yield units
  • Reprice a bond after each update to assess convergence
  • Recognize when a Newton step is unreliable or outside the model’s domain

Why Use Newton Iteration?

A bond’s yield to maturity is the rate that makes the present value of its specified future cash flows equal its observed price. In general, the resulting equation does not rearrange into a convenient closed-form expression. Newton’s method provides a numerical way to refine a trial yield by using both the price error and the slope of the price equation.

The method is useful when a calculator or spreadsheet is unavailable, when an exam asks for an iteration, or when you need to understand why an estimate moves in a particular direction. Its output is an approximation, not a substitute for checking the original cash-flow equation. This numerical technique is aligned with the SOA Exam FM (Financial Mathematics) syllabus.

Model and notation: Consider a bond with known, fixed cash flows \(C_k\) at the ends of periods \(k=1,\ldots,n\), measured from the valuation date. Let \(P_{\text{mkt}}\) be the bond price on a basis consistent with those cash-flow dates. Let \(y\) be the effective yield per cash-flow period. The model assumes the stated cash flows and their timing are fixed; it does not account for a change in redemption scenario, default, or cash flows that depend on the yield. For annual cash-flow periods, \(y\) is an annual effective yield. For semiannual periods, \(y\) is a six-month effective yield.

Under this model, the price generated by a trial yield \(y\) is

$$ B(y)=\sum_{k=1}^{n}\frac{C_k}{(1+y)^k}. $$

The yield equation is \(B(y)=P_{\text{mkt}}\). If the yield is quoted as a nominal annual rate convertible \(m\)-thly, first use the corresponding periodic rate \(y=i^{(m)}/m\) in this equation. The exponents count coupon periods, not years, when the cash flows are more frequent than annual.

The Derivative and Newton Update

Newton’s method uses the tangent line to the price function at a current estimate \(y_j\). The derivative tells us how quickly the model price changes as the yield changes. Differentiating each present value term gives

$$ B'(y)=-\sum_{k=1}^{n}\frac{kC_k}{(1+y)^{k+1}}. $$

This derivative is expressed in dollars per one-unit change in the decimal yield. For example, a change from \(0.06\) to \(0.07\) is a change of \(0.01\), not a change of one unit. If the cash flows are positive and occur at positive times, the derivative is negative: increasing the trial yield decreases the model price.

Newton update: Define the price residual at iteration \(j\) as \(f(y_j)=B(y_j)-P_{\text{mkt}}\). Provided \(B'(y_j)\ne 0\), the next estimate is
$$ y_{j+1}=y_j-\frac{B(y_j)-P_{\text{mkt}}}{B'(y_j)}. $$

The update follows by approximating the price residual near \(y_j\) with its tangent line. At the next estimate, set that linear approximation equal to zero:

$$ 0\approx f(y_j)+f'(y_j)(y_{j+1}-y_j). $$

Solving this equation for \(y_{j+1}\), and using \(f'(y_j)=B'(y_j)\), gives the Newton update. The tangent line is only a local approximation, so the new yield need not solve the original equation exactly. Repricing at the new yield is essential.

1
Write the cash-flow equation.
Use the actual payment periods and the yield per period. Keep the price basis and cash-flow timing consistent.
2
Choose a trial yield.
Use a plausible starting estimate, such as one informed by a previous bracket or interpolation.
3
Evaluate price and slope.
Calculate \(B(y_j)\), subtract the market price, and calculate \(B'(y_j)\) from the same cash flows.
4
Update and check.
Apply the Newton formula, then substitute the new yield into the original price equation. Continue if the residual is not sufficiently small.

Worked Examples

Worked Example: One Newton Step for an Annual Coupon Bond

A hypothetical bond pays $80 at the end of year 1 and $1,080 at the end of year 2. Its price is $1,000 at the valuation date. Starting with an annual effective yield estimate \(y_0=0.06\), calculate one Newton update and check the resulting price. Use unrounded values in the iteration, then report the yield to six decimal places and the checked price to the nearest cent.

Method. Treat the two annual payments as cash flows at periods 1 and 2. The price function and derivative are

$$ B(y)=\frac{80}{1+y}+\frac{1{,}080}{(1+y)^2}, \qquad B'(y)=-\frac{80}{(1+y)^2}-\frac{2{,}160}{(1+y)^3}. $$

At \(y_0=0.06\), the two present values are

$$ \frac{80}{1.06}=75.471698, \qquad \frac{1{,}080}{1.06^2} =\frac{1{,}080}{1.1236} \approx 961.196150. $$

Therefore \(B(y_0)\approx \$1{,}036.667848\), and the residual is \(B(y_0)-P_{\text{mkt}}\approx \$36.667848\). The derivative is

$$ B'(y_0) =-\frac{80}{1.1236}-\frac{2{,}160}{1.191016} \approx -1{,}884.77807. $$

Apply the update:

$$ y_1 =0.06-\frac{1{,}036.667848-1{,}000}{-1{,}884.77807} \approx 0.0794547. $$

Thus the first updated yield is \(y_1\approx 0.079455\), or \(7.9455\%\). To check it, substitute the unrounded estimate into the original equation:

$$ B(0.0794547) =\frac{80}{1.0794547}+\frac{1{,}080}{(1.0794547)^2} \approx \$1{,}000.97. $$

The updated estimate is close to the yield, but one step has not removed the price residual: the model price remains about 97 cents above the market price. The method avoids the mistake of treating a single Newton update as an exact solution.

Worked Example: Iterating a Two-Year Zero-Coupon Bond

A hypothetical two-year zero-coupon bond pays $1,210 at maturity and has a price of $1,000. Starting at an annual effective yield \(y_0=0.05\), perform two Newton updates. Report each yield to six decimal places and check the final price to the nearest cent.

Method. The only payment is at the end of period 2, so the equation and its derivative are

$$ B(y)=\frac{1{,}210}{(1+y)^2}, \qquad B'(y)=-\frac{2{,}420}{(1+y)^3}. $$

At \(y_0=0.05\), \(1.05^2=1.1025\) and \(1.05^3=1.157625\). Hence

$$ B(y_0)=\frac{1{,}210}{1.1025}\approx \$1{,}097.505669, \qquad B'(y_0)=-\frac{2{,}420}{1.157625}\approx -\$2{,}090.4869. $$

The first update is

$$ y_1 =0.05-\frac{1{,}097.505669-1{,}000}{-2{,}090.4869} \approx 0.0966426. $$

Using the unrounded estimate, \(y_1\approx 0.09664256\). Substitution into the original equation gives \(B(y_1)\approx \$1{,}006.1325\), so the residual is about \(+\$6.1325\). The derivative at that estimate is

$$ B'(y_1)=-\frac{2{,}420}{(1+y_1)^3}\approx -\$1{,}834.93. $$

The second update is therefore

$$ y_2 =y_1-\frac{B(y_1)-1{,}000}{B'(y_1)} \approx 0.0999846. $$

Checking the original equation rather than relying only on the size of the rate update,

$$ B(y_2)=\frac{1{,}210}{(1+0.0999846)^2} \approx \$1{,}000.03. $$

The second update has reduced the price residual to about three cents. This example avoids rounding an intermediate yield too early: carrying the unrounded iterates gives \(y_2\approx 0.099985\) and the checked price of approximately $1,000.03.

Worked Example: A Coupon Bond That Needs a Second Check

A hypothetical bond pays $40 at the end of year 1 and $1,040 at the end of year 2. Its price is $1,000. Starting from \(y_0=0.05\), calculate one Newton update, reprice at that estimate, and use the price check to assess whether another update is warranted. Report yields to six decimal places and prices to the nearest cent.

Method. With annual effective yield \(y\), the price function and derivative are

$$ B(y)=\frac{40}{1+y}+\frac{1{,}040}{(1+y)^2}, \qquad B'(y)=-\frac{40}{(1+y)^2}-\frac{2{,}080}{(1+y)^3}. $$

At \(y_0=0.05\), the price is

$$ B(y_0)=\frac{40}{1.05}+\frac{1{,}040}{1.1025} \approx 38.095238+943.310658 =\$981.405896. $$

The residual is \(-\$18.594104\). The derivative is

$$ B'(y_0)=-\frac{40}{1.1025}-\frac{2{,}080}{1.157625} \approx -36.281179-1{,}796.782204 =-1{,}833.063383. $$

Thus

$$ y_1=0.05-\frac{981.405896-1{,}000}{-1{,}833.063383} \approx 0.0398563. $$

Repricing at this estimate gives

$$ B(0.0398563) =\frac{40}{1.0398563}+\frac{1{,}040}{(1.0398563)^2} \approx \$1{,}000.27. $$

The first update has moved the model price from about $981.41 to about $1,000.27. The residual has changed sign, so another update is useful rather than declaring the first estimate exact. Applying Newton’s formula again gives approximately \(y_2=0.040000\); substitution in the original equation gives a price of approximately $1,000.00 to the nearest cent. The check confirms convergence for this starting estimate and these cash flows.

Interpreting the Update and Avoiding Traps

For positive cash flows, the derivative is negative. If the model price is above the market price, the residual is positive and the Newton formula raises the yield. If the model price is below the market price, the residual is negative and the update lowers the yield. This direction check is a quick way to detect a sign error.

For example, in the first worked example, the residual at \(y_0=0.06\) is positive and the derivative is negative. The correct update is

$$ 0.06-\frac{36.667848}{-1{,}884.77807} \approx 0.0794547. $$

A common wrong calculation is to add the residual divided by the derivative:

$$ 0.06+\frac{36.667848}{-1{,}884.77807} \approx 0.0405453. $$

That incorrectly moves the yield downward even though the trial price is too high. The correction is to use \(y_{j+1}=y_j-f(y_j)/f'(y_j)\), including the minus sign.

  • Mixing annual and periodic rates: if there are two coupon periods per year, use the yield per half-year with period counts in the exponents. Do not use a nominal annual rate directly as though it were the periodic rate.
  • Dropping the time factor in the derivative: differentiating \((1+y)^{-k}\) contributes the factor \(k\). The derivative term is \(-kC_k/(1+y)^{k+1}\).
  • Rounding too soon: retain extra digits in each yield and derivative calculation. Round the final reported rate and money amount only at the end.
  • Checking only the yield change: a small change between two estimates does not by itself establish that the original price equation is satisfied. Calculate \(B(y)-P_{\text{mkt}}\).
  • Assuming every starting value works: Newton’s method is local. A poor starting value can produce a large step or a yield outside the domain \(y>-1\), where the present-value expression is defined. If a step is implausible, return to a better starting estimate rather than accepting it automatically.

Newton iteration is most informative when each step is recorded with its yield, model price, residual, and derivative. In practice, a reasonable stopping rule is to require the repriced bond to be within a specified dollar tolerance of the observed price, and to ensure the yield estimate has sufficient precision for the problem. The tolerance should be chosen for the task; a displayed rate rounded to six decimals can still leave a small nonzero price residual.

Key takeaway: Newton’s method updates a trial yield using the ratio of price residual to price derivative. Use the yield per cash-flow period, preserve the negative sign in the derivative and update, carry sufficient precision, and verify convergence by substituting the estimate into the original bond cash-flow equation.

Check Your Understanding

For each question, use the specified yield per cash-flow period and check the direction and units of your result.

  1. A one-year zero-coupon bond pays $1,060 and is priced at $1,000. Starting from an annual effective yield of 4%, calculate one Newton update. (Answer: \(y_1\approx 0.059623\), or 5.9623%.)
  2. A two-year zero-coupon bond pays $1,102.50 and is priced at $1,000. Starting from an annual effective yield of 4%, calculate one Newton update. (Answer: \(y_1\approx 0.049858\), or 4.9858%.)
  3. A bond pays $100 at the end of year 1 and $1,100 at the end of year 2. Its price is $1,000. Starting from \(y_0=0.09\), calculate one update using annual effective yield. (Answer: \(y_1\approx 0.099866\), or 9.9866%.)
  4. A bond has six semiannual periods remaining, pays $25 at the end of each period, and repays $1,000 with its final coupon. Write the price equation using the nominal annual yield \(i^{(2)}\), and state the periodic rate to use in its Newton derivative. (Answer: \(B(i^{(2)})=\sum_{k=1}^{6}25/(1+i^{(2)}/2)^k+1{,}000/(1+i^{(2)}/2)^6\); use \(y=i^{(2)}/2\) in the derivative.)
Clinical Biostats