Why Precision Matters in a Sequential Bootstrap
A bootstrap solves for discount factors in maturity order. Each later factor is calculated using earlier factors, so rounding an intermediate result can carry into subsequent solves. The effect may be small in a displayed bond price and still be noticeable in a derived spot rate, particularly when the maturity is long or the final cash flow coefficient is relatively small.
The practical rule is to retain unrounded factors throughout the calculation and round only values intended for reporting. This tutorial quantifies why that rule works, shows how to diagnose rounding effects, and distinguishes a displayed approximation from the value used in the next equation.
In the examples, prices and cash flows are in dollars, payments are annual, and the discount factors apply to the stated annual dates. The bonds are hypothetical. Where a spot rate is requested, it is an annual effective spot rate: \(D_n=(1+i_n)^{-n}\), so \(i_n=D_n^{-1/n}-1\). A factor solved from a bond price is not itself a rate, and rounding it before converting it can change the reported rate.
How Errors Carry into the Next Solve
The bootstrap equation makes the propagation mechanism explicit. If the earlier factors used in the calculation differ from their correct values by \(\Delta D_t\), while the price and cash flows are held fixed, then the resulting error in the solved final factor is exactly
This is an exact relation, not just a first-order approximation: subtract the equation using correct earlier factors from the equation using perturbed earlier factors. The errors are weighted by the earlier cash flows. Errors with opposite signs can partly cancel; errors with the same sign reinforce each other. A larger final cash flow coefficient reduces the absolute error in \(D_n\), all else equal.
The spot-rate conversion adds another sensitivity. Differentiating \(i_n=D_n^{-1/n}-1\) gives
This differential is useful for estimating the effect of a small factor error. It is an approximation; for a final reported rate, calculate from the actual factor rather than relying on the differential. The negative sign means that a factor rounded upward produces a lower implied spot rate.
Worked Example: Solving a Three-Maturity Bootstrap
A hypothetical set of annual cash flows has these market prices: a one-year zero-coupon bond pays $1,000 and costs $960; a two-year bond pays $5 at year 1 and $105 at year 2 and costs $96; a three-year bond pays $8 at years 1 and 2 and $108 at year 3 and costs $92. Solve the discount factors in order, retain full precision in later steps, and check the prices.
Method. Solve each equation for the factor at its last payment date, using factors already found. The common mistake to avoid is rounding a factor for display and then substituting that rounded value into the next solve.
At year 1: the only payment is $1,000, so
At year 2: the year-1 payment is discounted using \(D_1\), and the year-2 payment using \(D_2\):
At year 3: use the unrounded year-2 factor in the year-3 bond equation:
Price check. Substituting the solved factors reproduces the input prices: \(1000(0.960000)=960\); \(5(0.960000)+105(0.8685714286\ldots)=96\); and \(8(0.960000)+8(0.8685714286\ldots)+108(0.7164021164\ldots)=92\), up to the shown digits. The sequential solves are consistent. Factors are shown to six or more decimals here for readability, but the unrounded values should be carried in subsequent calculations.
Measuring the Effect of Early Rounding
A small factor error need not have the same effect in every bootstrap. Its impact depends on the earlier cash flows and the final cash flow coefficient. The following example compares a full-precision solve with a deliberately rounded calculation.
Worked Example: Rounding Earlier Factors to Three Decimals
A hypothetical one-year zero-coupon bond pays $1,000 and costs $947.36. A two-year bond pays $10 at year 1 and $1,010 at year 2 and costs $919.7563. A three-year bond pays $20 at years 1 and 2 and $120 at year 3 and costs $137.7726. Find the three-year discount factor and spot rate first with full-precision earlier factors, then with those earlier factors rounded to three decimals. Report spot rates to four decimal places.
Full-precision method. The one-year factor is
The two-year equation gives
Use these factors in the three-year equation:
The annual effective three-year spot rate is
Rounded-input calculation. If the earlier factors are rounded to three decimals, they become \(0.947\) and \(0.901\). Then
The resulting spot rate is
The rounded-input factor is \(0.000105\) above the full-precision factor, and the spot rate is about \(0.0044\) percentage points lower. The direction agrees with the sensitivity formula: a higher discount factor implies a lower spot rate. The full-precision calculation, not the rounded-input result, is the appropriate bootstrap result; the rounded calculation illustrates the cost of premature rounding.
Precision in Derived Spot Rates
Rounding a factor can affect a rate even when the factor itself looks close. The rate conversion raises the reciprocal factor to the power \(1/n\). For a small factor error, the approximate rate error is proportional to \((1+i_n)/(nD_n)\). Thus maturity matters, as does the factor level; it is not enough to decide on precision by looking only at the number of decimal places in \(D_n\).
Worked Example: A Long-Maturity Factor Near a Rounding Boundary
A hypothetical ten-year bootstrap produces the discount factor \(D_{10}=0.70004\). A report displays factors to four decimal places, so this factor would appear as \(0.7000\). Calculate the spot rate using the full factor and using the displayed factor. Report both rates to four decimal places and compare them.
Full-factor calculation.
Displayed-factor calculation. If \(0.7000\) is mistakenly treated as the calculation value, then
The displayed-factor calculation is about \(0.0006\) percentage points higher after rounding both rates to four decimal places. The difference is small here, but it is real and can matter when a required tolerance is tight or when rates are used in further calculations. The correct practice is to keep \(0.70004\) for the conversion and use \(0.7000\) only as a display value.
Check. Since \(0.7000<0.70004\), its reciprocal-power rate must be slightly larger. The calculated rates have that direction, providing a quick sign check.
Choosing and Reporting Precision
A useful calculation policy separates internal precision from reported precision. Retain all available digits from each solved factor when calculating later factors and spot rates. Round only the final quantity to the precision required for presentation. If the quoted prices themselves are rounded, do not imply that carrying many digits removes uncertainty in the input; it only prevents avoidable arithmetic error.
Write the price as the sum of each dated cash flow multiplied by its discount factor, checking the timing and amount of every payment.
Use the full calculated value of each earlier factor in every later equation. If a calculator or software displays fewer digits, distinguish that display from the stored value.
Apply \(i_n=D_n^{-1/n}-1\) to the unrounded factor, then round the rate at the end.
Substitute the solved factors into each bond’s cash-flow equation. A material price difference can reveal a timing, arithmetic, or premature-rounding error.
A frequent exam trap is to round every intermediate factor to the number of decimals printed in a question or in a working table. For example, using \(0.947\) and \(0.901\) as if they were exact in the preceding three-year calculation produces \(D_3=0.840105\), not \(0.840000\), and changes the derived spot rate. The correction is to preserve \(0.94736\) and \(0.90127\) internally and round only the final reported answer. Another trap is to round a factor and then report a rate to many decimals: extra displayed rate decimals do not restore information lost by rounding the factor.
Check Your Understanding
Work through these original problems in order. Retain full precision until the requested final rounding.
- A one-year zero-coupon bond pays $1,000 and costs $960. A two-year bond pays $4 at year 1 and $104 at year 2 and costs $97. Solve \(D_1\) and \(D_2\). (Answer: \(D_1=0.960000\), \(D_2=0.89576923\ldots\))
- In a three-year bond solve, the earlier cash flows are $12 and $8, the final cash flow is $108, and the earlier factors used have errors \(+0.0002\) and \(-0.0003\), respectively. With price and cash flows fixed, find the resulting error in the final factor. (Answer: \(0\))
- A five-year discount factor is \(0.810000\). Find its annual effective spot rate to four decimal places. (Answer: \(4.3045\%\))
- A six-year factor is \(0.8800\), but the full-precision factor is \(0.8799\). Using the small-error sensitivity formula, estimate how much the spot rate based on the full factor exceeds the rate based on \(0.8800\), in percentage points. (Answer: approximately \(0.0019\) percentage points)
- A three-year bond pays $10 at years 1 and 2 and $110 at year 3. Its price is $106.309; the earlier factors are \(D_1=0.9436\) and \(D_2=0.8873\). Find \(D_3\) using those exact factors, then using them rounded to three decimals. (Answer: exact-input \(D_3=0.800000\); rounded-input \(D_3=0.7999909\ldots\))