Bond-Equivalent Yield
Converts a money-market discount yield (e.g. quoted for Treasury bills) into a bond-equivalent yield (BEY). Money-market instruments are often quoted on a discount-yield basis, which understates the actual 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 bonds and notes.
The bond-equivalent yield is calculated using the following formula:
\[\text{BEY} = 365 \cdot \text{Discount Yield} / (360 - \text{Days to Maturity} \cdot \text{Discount Yield})\]for a bill with half a year or less remaining. 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 - see bond_model.get_bond_equivalent_yield. Applying the simple formula to a 52-week bill instead overstates its yield by roughly seven basis points.
Also known as: BEY, coupon-equivalent yield, investment rate.
No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the Bond-Equivalent Yield for you. Just ask in plain English.
Calculate the Bond-Equivalent Yield in Python
The Bond-Equivalent Yield is available in the Fixed Income module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_bond_equivalent_yield as shown below.
from financetoolkit import FixedIncome
fixedincome = FixedIncome()
fixedincome.get_bond_equivalent_yield(
discount_yield=[0.03, 0.05, 0.07],
days_to_maturity=[90, 180, 360],
show_input_info=False,
)
Which returns:
| Discount Yield | 90 | 180 | 360 |
|---|---|---|---|
| 0.03 | 0.0306 | 0.0309 | 0.0311 |
| 0.05 | 0.0513 | 0.052 | 0.0527 |
| 0.07 | 0.0722 | 0.0735 | 0.0749 |
The 360-day column is computed with the Treasury’s semi-annually compounded formula rather than the simple one, because a bill of that length would have paid a coupon halfway through if it were a note.
Parameters
get_bond_equivalent_yield accepts the following parameters:
- discount_yield (float | list, optional): The money-market discount yield of the instrument (in decimal). If not provided, a range of discount yields will be used.
- days_to_maturity (float | list, optional): The number of days until the instrument matures. If not provided, a range of typical T-bill maturities will be used.
- show_input_info (bool, optional): Whether to display input information. Defaults to True.
Related Bond Valuations
The Fixed Income module page introduces the module, and the sidebar lists all of its functions.