# Calculation for current value of Ibond in TreasuryDirect

I have purchased I bond from TreasuryDirect in the amount of \$10K in 8/2021 and 1/2022, totaling \$20K. Currently, TreasuryDirect shows the interest rate of 9.62% for my 8/2021 purchase and 6.48% for my 1/2022 purchase. The current value of my I bonds are \$21,312.00. How did TreasuryDirect calculate this current value? Thank you.

You can look here for the data used in the calc.

The actual calculation is straightforward. According to the screenshot, your 01-2022 bond has 3 periods with the following compound rates: 7.12%, 9.62%, 6.48%.

• How the inflation rates are computed are illustrated in this answer.
• How the interest itself is determined is shown here.
• How the following formula for the compound rate is designed is explained here

Composite rate = [Fixed rate + (2 x Semiannual inflation rate) + (Fixed rate x Semiannual inflation rate)]

The calculation in words
All bond values are based on a \$25 bond and rounded to two decimal places. Since interest is paid semiannually, you need to divide the rate by 2. Individual months within each 6 months period (afterwards the inflation rate resets) are computed with the following compounding logic: (1+rate)^(1/6) for the first month, (1+rate)^(2/6) for the second month and so forth. The only "trick" is that you need to start the next period with the final value from the previous period because that value is already "accrued".

The simplest case of buying the bond at the beginning of the inflation reset
If you hold the I bond from the first issue Date in the period, you get the accumulated value, as seen on the websites calculator:

For your bonds which you bought in between periods

This is for a denomination of \$1,000 for the one that pays \$70.8 - hence in your case \$708, the other for \$,5000 which means that the \$302 displayed become \$604 in your case, which gives a total gain of \$708+\$604 = 1,312.

Below, I'll use Julia to run the computation.

``````# input packages
using Dates, DataFrames

#define interest rates
i_Nov21 = 0.0712 # for the first period
i_May22 = 9.62/100
i_Nov22 = 6.48/100

# define return function: \$25*(1+rate)^(1/6) rounded for two digits (Note: 25 is only valid for the first period - afterwards it is the "compounded" value
function i_bond(val, rate, len)
return [round(val*(1+rate/2)^(i/6), digits=2) for i in 1:1:len]
end

# compute interest earned
nov21 = [i_Nov21 for i in 1:1:6]
may22 = [i_May22 for i in 1:1:6]
nov22 = [i_Nov22 for i in 1:1:3]
# combine all periods
interest = append!(append!(nov21,may22),nov22)

# compute returns
per1 = i_bond(25,i_Nov21, 6 )
per2 = i_bond(per1[end], i_May22, 6)  # end value "per1[end]" in first period is start value in second
per3 = i_bond(per2[end], i_Nov22, 3)
# combine all period returns
ret = append!(append!(per1,per2),per3)

# define DataFrame
dts = Date(2021,11):Month(1):Date(2023,1)
df = DataFrame(Dates = dts)
df[!, "Annualized Rate"] = interest
df[!, "Cumulative Value"] = ret
df[!, "Value of 10K"] = df[!, "Cumulative Value"]*(10000/25)
# print Prettytable
PrettyTables.pretty_table(df, alignment = :l, border_crayon = Crayons.crayon"blue", header_crayon = Crayons.crayon"bold green", highlighters = (hl_value(10768)))
``````

The reason you get 3 months less is due to the note (P5) in the screenshot of TreasuryDirect, which means TreasuryDirect reports values minus the three-month interest penalty for early redemptions. Therefore, the value for the bond in the first screen is the 10,768 in amber in my computation. This is identical to the 1,076.8 from the first TreasuryDirect screenshot (for 1,000 and 10,000 nominal respectively).

You purchased yours in 01/2022 which is another 2 months later. Hence you need to look at the value that is 2 months prior (the one inside the red box). So you have 604 interest rate gain (the second TreasuryDirect screenshot is for 5,000 and shows 302).

What remains is the other bond. You also purchased it in between the periods and need another inflation period to compute it.

This bond gained 708 interest, which in total makes it 604 + 708 + 20,000 = \$21,312.00.

Hope this helps.

• Why did you highlight in amber 10768 for the date 2022-09-01? I bought mines on 08/2021? Also, same for 10708 for the date 2022-06-01 because I bought mines on 01/2022? Why is there no 3-month less of the value for my second purchase on 01/2022? Thanks. Jan 6, 2023 at 23:13
• The highlighted value would be the one if you had bought it at the beginning of the interest period (see details in the text). Yours is the one in the red box (10,604). The second value is the one for your bond. 10,604 + 10,708 = 21,312. It is 3m due to P5, another 3 (May, Jun, Jul) for the one you bought in 08/21 bc the period started in May (total of 6). For the one you bougth in 01/22 it is just 5 (Nov and Dec + 3m for P5). See details in the text. Jan 6, 2023 at 23:46
• I understand P5, but what do you mean by "another 3 (May, Jun, Jul) for the one you bought in 08/21 bc the period started in May (total of 6). For the one you bought in 01/22 it is just 5 (Nov and Dec) (5 what?)? Is it because my 8/2021 purchase has now been over 1 year so the P5 applies, but my 01/2022 purchase hasn't been a year so the P5 doesn't apply? Jan 6, 2023 at 23:53
• Did you read my answer or look at the numbers? You bought yours in 08/21 but the inflation period for bond computation started in May 21. May till August is 3 months. Same for your other series, but it is just 2 months from Nov to Dec which means 3+2 is 5 months. Jan 6, 2023 at 23:57