Treasury Bill Discount Yield Versus Yield to Maturity
Summary
The document explains why two quoted yields for a US Treasury bill can differ even though the bill pays no coupons. It distinguishes the discount yield, which annualizes the discount from face value using a day-count basis, from the Treasury-convention yield to maturity, which expresses the price-to-face-value return as simple interest. Bloomberg field settings can affect which price side and convention a displayed yield uses.
A numerical example compares the formulas using a bill price, face value, and days remaining. It shows that the difference reflects both the denominator used—face value for discount yield versus purchase price for the Treasury-convention yield—and the annual day-count basis, such as 360 or 365. The explanation also describes checking Bloomberg’s field definitions and manually changing the price to verify the calculation. The example is specific to short-term bills and stated terminal conventions; it does not discuss broader bond yield measures or tax treatment.
Key ideas
- Discount yield annualizes the bill’s price discount relative to face value.
- Treasury-convention yield to maturity calculates the simple return from purchase price to face value.
- The two measures differ because they use different denominators and may use different day-count bases.
- Bloomberg YAS settings can affect whether the displayed yield is bid, ask, or mid.
Tags
Full text
# What is the difference between Discount Yield and Yield on US Treasury Bills
# What is the difference between Discount Yield and Yield on US Treasury Bills
I would like to understand the fundamental difference between yield and discount yield, specifically relating it to zero coupon treasury bills.
Please see image below:
For those who are terminal users, the image shows YAS_BOND_YLD vs YLD_YTM_BID.
The convention for US treasuries is discount yield, which is easily computed, directly from the purchase price. However the yield which from my understanding is computed more like an IRR, is always slightly higher. I thought that this may be from the compounding effect in an IRR calculation, however these are zero coupon so, that should not be a factor?
Would appreciate some insight into either BBG yas function or yield calculations on discount securities.
Thank you
## Answer by AKdemy (score 2)
https://quant.stackexchange.com/a/73322
The two fields in `HP` are not YAS_BOND_YLD vs YLD_YTM_BID. If you right click on the data point, you can select `validate data points` and Bid Px is actually PX_BID (Bid YTM is YLD_YTM_BID).
YAS_BOND_YLD itself depends on your `YASD` default settings and can be bid / ask or mid.
- Bid PX (PX_BID): the `YAS` help page states `For short term instruments, YAS uses the discount formula (T bill) method` which 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.
- 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)$
You can quickly cross check on `FLDS` (or also YAS) that this is indeed what is computed if you manually override the "price".
While in this example the main difference is indeed the daycount as pointed out by nbbo2, $(FV−P)/FV \neq (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: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.