Bond-Equivalent Yield
Calculates the bond-equivalent yield (BEY) of every Treasury bill from its price. Bills are quoted on a discount-yield basis, which understates the return an investor earns because it is computed on face value rather than the (lower) purchase price, and uses a 360-day rather than a 365-day year. The bond-equivalent yield restates the discount yield on a basis that is comparable to coupon-bearing notes and bonds.
The formula is as follows:
\[\text{Discount Yield} = (100 - \text{Price}) / 100 \cdot 360 / \text{Days to Maturity}\] \[\text{BEY} = 365 \cdot \text{Discount Yield} / (360 - \text{Days to Maturity} \cdot \text{Discount Yield}),\;\; \text{for 182.5 days or less}\] \[\text{BEY} = (- 2t + 2 \cdot \sqrt{t ^{2} - (2t - 1) \cdot (1 - 100 / \text{Price})}) / (2t - 1),\;\; \text{with}\; t = \text{Days to Maturity} / 365,\;\; \text{for more than 182.5 days}\]A bill with half a year or less remaining takes the simple restatement onto the purchase price and a 365-day year. Beyond that an equivalent coupon-bearing note would have paid a coupon at the six month point, so the U.S. Treasury’s semi-annually compounded solution (31 CFR 356, Appendix B) is used instead. Applying the simple formula to a 52-week bill instead overstates its yield by roughly seven basis points.
The prices are the Treasury’s daily FedInvest prices, see get_treasury_securities. To convert a discount yield of your own, use bond_model.get_bond_equivalent_yield.
Also known as: BEY, coupon-equivalent yield, investment rate, T-bill yield.
Bond-Equivalent Yield in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_bond_equivalent_yield as shown below.
from financetoolkit import FixedIncome
fixedincome = FixedIncome()
bills = fixedincome.get_bond_equivalent_yield(date="2026-11-05")
bills.iloc[::4, :-1]
Or, after setting up the Finance Toolkit MCP, ask:
What discount yields and bond-equivalent yields did US Treasury bills offer on 5 November 2026?
Which returns:
| CUSIP | Maturity | Days to Maturity | Price | Discount Yield | Bond-Equivalent Yield |
|---|---|---|---|---|---|
| 912797VW4 | 2026-11-10 | 5 | 99.9576 | 0.0306 | 0.031 |
| 912797VY0 | 2026-11-24 | 19 | 99.8075 | 0.0365 | 0.0371 |
| 912797WE3 | 2026-12-08 | 33 | 99.6551 | 0.0376 | 0.0383 |
| 912797WG8 | 2026-12-22 | 47 | 99.4978 | 0.0385 | 0.0392 |
| 912797WN3 | 2027-01-05 | 61 | 99.3367 | 0.0391 | 0.04 |
| 912797WQ6 | 2027-01-19 | 75 | 99.1819 | 0.0393 | 0.0401 |
| 912797WS2 | 2027-02-02 | 89 | 99.0271 | 0.0394 | 0.0403 |
| 912797WZ6 | 2027-02-16 | 103 | 98.8582 | 0.0399 | 0.0409 |
| 912797XB8 | 2027-03-02 | 117 | 98.6982 | 0.0401 | 0.0411 |
| 912797WL7 | 2027-03-25 | 140 | 98.4401 | 0.0401 | 0.0413 |
| 912797WV5 | 2027-04-22 | 168 | 98.1073 | 0.0406 | 0.0419 |
| 912797VF1 | 2027-06-10 | 217 | 97.57 | 0.0403 | 0.0418 |
| 912797WJ2 | 2027-09-30 | 329 | 96.2827 | 0.0407 | 0.0424 |
Parameters
get_bond_equivalent_yield accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
bonds | list[str] | str | None | The CUSIPs (or US ISINs) of the bills, a list or a comma-separated string. Defaults to None, every bill. | None, every bill |
date | str | None | The day of the prices (YYYY-MM-DD). Defaults to None, the latest day with prices. | "2025-03-31" |
rounding | int | None | The number of decimals to round the results to. Defaults to None, which uses the rounding of the class. | 2 |