2
$\begingroup$

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?

$\endgroup$
3
  • 3
    $\begingroup$ I think this question is non-trivial enough to deserve not to be closed. $\endgroup$ Commented Oct 14, 2020 at 16:52
  • $\begingroup$ Unless I am missing something, you merely compute your cashflows by assuming a notional equal to 100. $\endgroup$ Commented Oct 16, 2020 at 10:21
  • $\begingroup$ @DaneelOlivaw You are right. As the clean price is expressed as a percentage of the unpaid principal (UP), you construct the cash flow as a percentage of the UP. Then, you discount and subtract the accrued interest to obtain the clean price. $\endgroup$ Commented Aug 30, 2023 at 19:56

2 Answers 2

6
$\begingroup$

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).

$\endgroup$
7
  • $\begingroup$ Thank you for the response! To clarify, I do have the discounted cash flows. My confusion is: how do I get from the DCF to the price as a % of par? $\endgroup$
    – souptaco
    Commented Oct 13, 2020 at 18:49
  • $\begingroup$ @souptaco You haven't specified what you're discounting by. If it is in fact the bond yield then by definition the sum of the DCFs is the price of the bond. To express it as a % of par, divide this sum by the face value of the bond. $\endgroup$
    – Sharad
    Commented Oct 13, 2020 at 21:37
  • 2
    $\begingroup$ It was the sum of %'s that I was looking for. Thank you so much,, I have so much more clarity here now. $\endgroup$
    – souptaco
    Commented Oct 14, 2020 at 2:27
  • $\begingroup$ Great answer! Two questions: 1. Is the size of the transaction stated in terms of initial face value, outstanding principal, or the number of bonds? 2. I had the idea that the dirty/full/all-in true price of a bond is a percentage of the initial nominal value. Or is the dirty price also expressed as a percentage of the outstanding principal? $\endgroup$ Commented Dec 16, 2021 at 12:57
  • 1
    $\begingroup$ thanks! 1 On a typical ticket, you put the initial unamortized face value, the factor, and the clean price. Look at BXT on Bloomberg terminal if you can for some example bonds 2 if the example bond is 2/3 amortized and trading at par, then clean price is 100, and dirty price is 1/3+accured. (Further, Brazil P.U. is dirty, but also for par value 1,000 rather than 100) $\endgroup$ Commented Dec 16, 2021 at 17:40
1
$\begingroup$

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!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.