I'm looking at the St. Louis Fed website's historical data for the 1-year treasury. There are two different but similar pages. One is titled:

1-Year Treasury Bill Secondary Market Rate, Discount Basis

The other is titled:

Market Yield on U.S. Treasury Securities at 1-Year Constant Maturity, Quoted on an Investment Basis

Looking at the spreadsheets, the yield data are somewhat similar but definitely different.

e.g., on 1/30/18 they show 1.88 on "investment basis" and 1.83 on "discount basis."

and, on 11/2/22 they show 4.76 on "investment basis" and 4.53 on "discount basis."

Can someone tell me what the distinction is here? And, if I go to, say, CNBC's US Treasury page and see the yield there, which one is that?

1 Answer 1


The convention for US treasury bills is discount yield. Constant maturity series (CMS) are not actual treasury yields but a computed construct that has always a set maturity (1 year for example). Insofar, it is not too important what exact quote this is if you hold actual treasury securities, as these values will not match each other in any case. With regards to CNBC - they use Tradeweb CMS which I do not use and cannot comment on. However, I think the formulas are here (see yield section), where REGNOT stands for treasury notes / bonds and REGBILL for treasury bills. This would be on an investment basis as shown below.

I'll use some Bloomberg screenshots to show the calculation. I am not showing the CMS computation as this is rather involved but only the difference in yield computation.

  • The discount basis formula (also called T- bill) method` is for example explained here. For the screenshot below: (FV-P)/FV * (Y/D) = (100-99.804625)/100*(360/27) = 2.605 where FV = Face value, P = price, Y is days per year (360 here) and D = days left to maturity.

enter image description here

  • The investment basis is also called bond equivalent and should be Actual/Actual EOMC Semi- Annually for treasuries. That is what Tradeweb (CNBS) uses according to the linked methodology. On BBG, Bid YTM (YLD_YTM_BID) is the so called US Treasury convention (utc) on the YAS screen above. You can switch the Simple Interest (Act/360) to 365 to see that this is the displayed US treasury convention (blue arrow). It is computed as the interest needed to get from the price to the face value: P*(1+utc*(D/Y)) = FV or solved for utc to get utc = (FV/P -1)*(Y/D).

A quick cross check on FLDS (or also YAS) allows to test that this is indeed what is computed if you manually override the "price".
enter image description here

While in this example the main difference between the two methods comes from the daycount, (FV−P)/FV ≠ (FV/P -1) = (FV-P)/P

In Python, you can compute it like so:

P = 99.804625     # Price (current)
FV = 100          # Face Value
D = 27            # Days to Maturity
Y1 = 365          # year
Y2 = 360
utc = 0.02646351  # US Treasury Convention

print(f'Discount formula (T-bill method): 360 (Bid PX) = {round((FV-P)/FV*(Y2/D),8)}')
print(f'Discount formula (T-bill method): 365 = {round((FV-P)/FV*(Y1/D),8)}')
print(f'Discount formula (T-bill method): P = 99 (Bid PX) = {round((FV-99)/FV*(Y2/D),8)}')

print(f'Final Value = {round(P*(1+utc*D/Y1),4)}')
print(f'Simple interest (utc): 365 (Bid YTM)= {round((FV/P-1)*(Y1/D),8)}')
print(f'Simple interest (utc): 360 = {round((FV/P-1)*(Y2/D),8)}')

which gives the following output: enter image description here


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .