Skip to content
All library documents

Pricing Amortizing Bonds from Cash Flows and Accrued Interest

Article Quant Q&A · Author: souptaco

Summary

This document explains how discounted cash flows connect to clean and dirty prices for an amortizing bond. Since amortization reduces outstanding principal, quoted prices are generally related to the unpaid principal rather than the original face amount. Discount future coupons and principal payments to obtain the dirty value, express that value against the relevant principal base, then remove accrued interest to obtain the clean price. The alternative formula expresses clean price as discounted value per unit of unpaid principal less the accrued rate.

A worked example tracks declining principal, coupons, accrued interest, and discounting, showing how the dirty price reconciles with discounted cash flows and how subtracting accrued interest yields the clean quote. The document also distinguishes original face value from remaining principal and explains the factor linking them. Its numerical example assumes annual coupons and simple annual yield discounting; market conventions, day-count rules, settlement, and discount curves may require more detailed treatment.

Key ideas

  • Amortization reduces unpaid principal while original face value remains fixed.
  • For an amortizing bond, price quotes are typically based on outstanding principal.
  • Discounting the remaining coupons and principal payments gives the dirty value.
  • The clean price excludes accrued interest, which must be calculated on unpaid principal.
  • The unpaid-principal factor links prices expressed against remaining principal to amounts based on original face value.

Tags

Full text
# If I have the present value of an amortizing bond's cashflows, how do I figure out price?


# If I have the present value of an amortizing bond's cashflows, how do I figure out price?












Say that I correctly compute the sum of the cash flows of a given bond. How does this relate to the quoted price that most people understand? For example, based on the stream of cashflows of a bond with a face value of 10,000,000, I calculate a PV of 5,000,000. Yet, the bond trades above par at a clean price of 102.

How can I compute the clean price consistent with a given PV? How do I go from the DCF to the clean price?

Alternatively, how can I get the clean price more directly using DCF?

## Answer by Dimitri Vulis (score 6, accepted)

https://quant.stackexchange.com/a/58650

Bullet bond prices are quoted as a percentage of face value (par).

For most amortizing bonds that have already amortized part of the initial principal (face value), the price is a percentage of the unpaid principal (initial principal minus principal payments). Amortization is a synonym for principal payment.

(I won't deal with bonds for which a dirty/full price is quoted. I only consider bonds whose quotes are clean/flat prices.)

Suppose, for concreteness, an example bond that

- has a face value of USD 1,000 (the principal when it was issued - not a very important number);

- matures in exactly 5 years;

- has already amortized 1/3, so the remaining "factor" (unpaid proportion) is 2/3; is scheduled to amortize another 1/3 in 2 years, and pay the last 1/3 of the principal at maturity;

- pays a 4% coupon annually (once a year).

If your trade settles 3 months after the previous coupon payment, then the accrued interest is 1% of the unpaid principal during the coupon period.

If the quoted clean price is 102 (the % is implied) and the accrued interest is 1, then the dirty price is 102% + 1% = 103%.

If you buy USD 1,000,000 face value at the (clean) price of 102%, then you pay a total of USD 1,000,000 * 2/3 * 103% = USD 686,666.67 and receive USD 1,000,000 / USD 1,000 = 1,000 bonds whose factor is 2/3. Your trade ticket should show that you've paid USD 1,000,000 * 2/3 * 102% = USD 680,000 for 666,666.67 of principal and USD 1,000,000 * 2/3 * 1% = 6,666.67 for the accrued interest (AI).

Every year you receive a coupon that amounts to USD 1,000,000 * factor * 4% = USD 40,000 * factor. It was USD 40,000 until and with the first amortization, then USD 26,666.67 until and with the second amortization, and then USD 13,333.33 until and with the third amortization upon maturity. Notice how the coupon rate (4%) is unchanged, but because the remaining principal decreases, so do coupon amounts.

The remaining cash flows of your bond position look like this:

$$\begin{array} {|c|c|c|c|c|c|} \hline & \mbox{Previous} & & & \mbox{Previous} & & & \mbox{Coupon} & & \mbox{Net} & \mbox{Net} \\ \mbox{Year} & \mbox{Principal} & \mbox{Principal} & \mbox{Principal} & \mbox{Notional} & \mbox{Factor} & \mbox{Factor} & \mbox{Rate} & \mbox{Coupon} & \mbox{Cashflow} & \mbox{Cashflow} \\ & \mbox{(aka Notional)} & \mbox{Payment} & \mbox{Remaining} & \mbox{Factor} & \mbox{Payment} & \mbox{Remaining} & \mbox{\%} & \mbox{\\\$} & \mbox{\\\$} & \mbox{\%} \\ \hline 1 & 666,666.67 & 0 & 666,666.67 & 2/3 & 0 & 2/3 & 4 & 26,666.67 & 26,666.67 & 4 \\ 2 & 666,666.67 & 333,333.33 & 333,333.33 & 2/3 & 1/3 & 1/3 & 4 & 26,666.67 & 360,000.00 & 54 \\ 3 & 333,333.33 & 0 & 333,333.33 & 1/3 & 0 & 1/3 & 4 & 13,333.33 & 13,333.33 & 2 \\ 4 & 333,333.33 & 0 & 333,333.33 & 1/3 & 0 & 1/3 & 4 & 13,333.33 & 13,333.33 & 2 \\ 5 & 333,333.33 & 333,333.33 & 0 & 1/3 & 1/3 & 0 & 4 & 13,333.33 & 346,666.67 & 52 \\ \\ \mbox{Total} & & & & & & & & & 760,000 & 114 \\ \hline \end{array}$$

Note that the prior history of how you got here doesn't matter much. You would have the same cash flows with a bond issued now, paying 4%, and amortizing 1/2 in 2 years and 1/2 in 5 years, as shown in the last column of the previous table. So you're promised USD 760,000 (114% of 666,666.67) over the next 5 years.

But comparing the USD 1 that you pay now to USD 1 that you might receive in the future, in which USD 1 might be purchasing much less than now, is not very meaningful. You need to discount future cash flows both for the "time value of money" and for the possibility that you might not get paid as promised etc.

Let us solve for the yield $y$ that corresponds to this price (102) and to these cash flows. For simplicity, let the discount factor in $n$ years be $(1+y)^{-n}$. (More generally, if the bond pay coupons with the frequency $f$ times a year, then the discount factor would be $(1+y/f)^{-fn}$.) Iterating, a solver finds that the value of $y$ that makes the sum of the discounted cash flows approximately match the given price approximately equals 3.07428%. The discount factors corresponding to this yield explain your dirty price as follows:

$$\begin{array} {|c|c|c|c|c|c|} \hline \ & \mbox{Undiscounted} & \mbox{Undiscounted} & \mathbf{{1.0307428}^{-\mbox{Years}}} & \mbox{Discounted} & \mbox{Discounted} \\ \mbox{Year} & \mbox{Cashflow} & \mbox{Cashflow} & \mbox{Discount} & \mbox{Cashflow} & \mbox{Cashflow} \\ & \mbox{\\\$} & \mbox{\%} & \mbox{Factor} & \mbox{\\\$} & \mbox{\%} \\ \hline 1 & 26,666.67 & 4 & 0.97017413 & 25,871.31 & 3.88 \\ 2 & 360,000.00 & 54 & 0.94123784 & 338,845.62 & 50.83 \\ 3 & 13,333.33 & 2 & 0.91316461 & 12,175.53 & 1.83 \\ 4 & 13,333.33 & 2 & 0.88592868 & 11,812.38 & 1.77 \\ 5 & 346,666.67 & 52 & 0.85950509 & 297,961.76 & 44.69 \\ \hline \\ \mbox{Total} & 760,000 & 114 & & 686,667 & 103 \\ \hline \end{array}$$

As you see, the sum of the discounted cash flows matches your proceeds (dirty price). But to get the clean price, you must subtract the accrued interest: 102 = 103 - 1.

Conversely, if you're just given some discount factors (eg from some swap curve) then you can multiply cash flows % by the given discount factors and sum them to get the price implied by the discount factors (which is not likely to match any observed price). For example

$$\begin{array} {|c|c|c|c|c|c|} \hline \ & \mbox{Undiscounted} & \mbox{Undiscounted} & \mbox{Made-up} & \mbox{Discounted} & \mbox{Discounted} \\ \mbox{Year} & \mbox{Cashflow} & \mbox{Cashflow} & \mbox{Discount} & \mbox{Cashflow} & \mbox{Cashflow} \\ & \mbox{\\\$} & \mbox{\%} & \mbox{Factor} & \mbox{\\\$} & \mbox{\%} \\ \hline 1 & 26,666.67 & 4 & \mathbf{0.95} & 25,333.33 & 3.80 \\ 2 & 360,000.00 & 54 & \mathbf{0.92} & 331,200.00 & 49.68 \\ 3 & 13,333.33 & 2 & \mathbf{0.89} & 11,866.67 & 1.78 \\ 4 & 13,333.33 & 2 & \mathbf{0.86} & 11,466.67 & 1.72 \\ 5 & 346,666.67 & 52 & \mathbf{0.83} & 287,733.33 & 43.16 \\ \hline \\ \mbox{Total} & 760,000 & 114 & & 667,600 & 100.14 \\ \hline \end{array}$$

These made-up discount factors imply the dirty price of 100.14. Subtracting the accrued interest, we get clean price of 100.14 - 1 = 99.14.

Or, if you're just given the net of the discounted cash flows, like USD 667,600, then you still can divide by the principal as of the settlement date (USD 1,000,000 * 2/3) to get the dirty price of 100.14%. If you wish, you can also solve for the yield explaining this price, possibly using yet other discount factors corresponding to this yield. To get a clean price, you subtract the accrued interest from the dirty price (again, being careful with the factor).

## Answer by Rodolfo Oviedo (score 1)

https://quant.stackexchange.com/a/76482

This answer formalizes the first part of the nice answer by @Dimitri Vulis, and his answer about the base of the dirty price in response to my question/comment below his main answer.

I do not know why parts of the formulas appear in dark red or in italics.

Definitions:

```
(1) Dirty Price = DCF / Face Value

(2) Clean Price = (DCF - Accrued Interest) / Unpaid Principal

(3) Factor = Unpaid Principal / Face Value

(4) Accrued Rate = Rate * Accrued Year Fraction

(5) Accrued Interest = Unpaid Principal * Acrued Rate
```

Comments:

- (1) and (2) are ratios usually expressed as percentages. A ratio of 1.02 is expressed as 102% so that people who are used to conceiving the dirty or clean price as the value of a bond of $100 face value or unpaid principal can ignore the % sign and keep 102. The latter is the typical way of reporting the price. However, it is more convenient to use the ratio (formatted as a percentage if convenient) to express the price in your code or spreadsheet. This way, the value (DCF) of a position is obtained as the product of the (Dirty or Clean) price and the quantity of a position, where the quantity is measured by the Face Value or Unpaid Principal, without the need to divide by 100 and the risk of forgetting to do so.

- You ask for the Present Value of Cash Flows as a percentage of par, which is the Clean Price. This is the price that can easily be 102% while half the principal has already been amortized. A clean price higher (lower) than 100% is said to be above (below) par. Such a statement is not true for the dirty price.

- In (3), Face Value is the original principal. The Face Value does not change with amortizations of the principal. Amortization reduces the (unpaid/outstanding) principal.

- What I call the Accrued Rate in (4) and (5) is the accrued interest per unit of Unpaid Principal. You can format it as a percentage.

- A more descriptive name of the Factor would be the Unpaid Principal Proportion. But people call it Factor, and it is shorter.

### Clean price

Substituting (Unpaid Principal * Acrued Rate) in (2), Clean Price = (DCF - Accrued Interest) / Unpaid Principal Clean Price = (DCF - Unpaid Principal * Accrued Rate) / Unpaid Principal

```
(6) Clean Price = DCF / Unpaid Principal -  Accrued Rate,
```

which is the formula of the Clean Price as a function of the DCF as required. Note that not only the fraction of the formula but also the Clean Price and the Accrued Rate are expressed as a proportion of the Unpaid Principal. As such, the formula tautologically says that clean value (without accrued interest) equals value less accrued interest.

Dividing the numerator and the denominator of the fraction in the previous formula by the Face Value, and using (1) and (3), we obtain the formula of the clean price as a function of the Dirty price:

```
Clean Price = Dirty Price / Factor -  Accrued Rate.
```

### Dirty price

From the previous formula, we solve for the Dirty price as a function of the clean price:

```
 Dirty Price = Factor * (Clean Price + Accrued Rate)
```

According to (1), the previous formula's elements express the payment as a proportion of the Face Value, i.e., per $1 of Face Value: the Dirty Price is the payment, Factor * Accrued Rate is the part of the payment attributed to the accrued interest, Factor * Clean Price is the portion of the payment attributed to the Unpaid Principal.

### Invoiced Amounts

The Total Invoiced Amount (DCF) can be obtained from (1):

```
DCF = Face Value * Dirty Price
```

Alternatively, it can be obtained from (6):

```
(7) DCF = Unpaid Principal * (Clean Price + Accrued Rate)

    DCF = Unpaid Principal * Clean Price + Unpaid Principal * Accrued Rate)
```

The ticket/invoice identifies the accrued interest, which is the term after the + sign according to (5). The term before the + sign is called the (Unpaid/Outstanding) Principal Value.

You first determine the Unpaid Principal using (3):

```
Unpaid Principal = Face Value * Factor
```

Then you compute the two items comprising the DCF or Total Invoiced Amount:

```
Principal Value = Unpaid Principal * Clean Price

Accrued Interest = Unpaid Principal * Rate * Accrued Year Fraction
```

where the last item is the result of substituting (4) in (5).

Any correction or suggestion will be warmly appreciated!

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.