Skip to content
All library documents

Accrued Interest on Treasury Bonds Uses Actual/Actual

Article Quant Q&A · Author: Jojo

Summary

The document addresses a discrepancy in a calculation of accrued interest on semiannual Treasury bonds. The original approach approximates each coupon period as 180 days and computes accrual from a count of months. The accepted response identifies the key issue: US Treasuries use the Actual/Actual day-count convention, so calendar days in both the full coupon period and the elapsed accrual period matter.

An example uses a settlement date four days after a prior coupon date, with 184 days between coupon dates and a 5% annual coupon. Accrued interest is calculated as the fraction of the coupon period elapsed multiplied by half the annual coupon rate, yielding the stated amount. This illustrates why a fixed 180-day denominator can diverge from a calendar-based calculation. The example is specific to the dates and convention described; the document does not provide a general implementation for irregular schedules or other bond day-count conventions.

Key ideas

  • US Treasury accrued interest uses the Actual/Actual day-count convention.
  • The coupon period length should be measured in calendar days rather than assumed to be 180 days.
  • Accrual is proportional to the elapsed days divided by the days in the coupon period.
  • The example applies half the annual coupon rate for a semiannual payment.

Tags

Full text
# Calculating Accrued Interest of Bonds


# Calculating Accrued Interest of Bonds












I am trying to calculate the accrued interest for a set of Treasury Bonds. I am comparing the answer from the code below with that for the 1st Bond(row) over here. In the link the AI is `0.061` whereas from the Python code I get `0.125` and am therefore trying to understand where I'm going wrong. I use the formula for AI available here.

```
#l contains the months to maturity 
accrued_interest = 0
d_ordered = {}
l = [0]*59 # My set of Bonds (not included here) includes a 30 year to maturity Semi-Annual coupon bearing bond and hence l will have 59 periods
l[0] = 3 # I have a function (not included here) which calculates the difference in months between each of the coupon payments (and the settlement date and first coupon payment)
d_ordered[0] = l
coupon = 0.250
days_in_coupon_period = 180 #The Link contains half-yearly bonds
for i in range(0,1,1):
    months_to_maturity_array = numpy.array(d_ordered[i])
    for k in range(0,59,1):
        # Adding the AI associated with each period k
        accrued_interest = accrued_interest + ((coupon) * ((30*months_to_maturity_array[k]) /days_in_coupon_period))
    print('AI', accrued_interest)
```

Thank You

## Answer by Helin (score 1, accepted)

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

US Treasuries follow the Actual/Actual day count convention, so you can't make the assumption that there are 180 days in a coupon period.

Let's assume that the settlement date (T + 1 for US Treasuries) is 8/6/2015, the previous coupon date for a bond is 7/31/2015, and the next coupon date is 1/31/2016. Then the number of days in the coupon period is 184 days, and the accrual period is 4 days. The accrued interest, assuming a 5% coupon rate, must be $4/184 \times 5/2 = 0.054347826$.

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.