Calculates the par yield curve implied by a zero-coupon (spot) yield curve. The par yield for a given maturity is the coupon rate that would need to be attached to a newly-issued bond of that maturity so that, once its cash flows are discounted with the spot curve, its price equals its par value exactly.

This is the curve that is typically quoted for on-the-run government bonds, as opposed to the theoretical spot curve which is usually bootstrapped rather than directly observed.

The par yield is calculated using the following formula:

\[\text{Par Yield} = \text{frequency} \cdot (1 - \operatorname{DF}(n)) / \operatorname{SUM}(\operatorname{DF}(k))\]

where DF(k) = 1 / (1 + spot_rate(k / frequency) / frequency)^k is the discount factor for the cash flow at period k, spot_rate(t) is obtained by interpolating the spot curve at time t (in years), and n = years_to_maturity * frequency is the number of coupon periods.

Also known as: par rate, par coupon rate.

No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the Par Yield for you. Just ask in plain English.

Calculate the Par Yield in Python

The Par Yield is available in the Fixed Income module of the open-source Finance Toolkit. Install it with:

pip install financetoolkit -U

Then call get_par_yield as shown below.

from financetoolkit import FixedIncome

fixedincome = FixedIncome()

fixedincome.get_par_yield(
    years_to_maturity=[1, 2, 3, 5, 10],
    show_input_info=False,
)

Which returns:

Years to Maturity Par Yield
1 0.03
2 0.032
3 0.0339
5 0.0377
10 0.0431

Parameters

get_par_yield accepts the following parameters:

  • spot_rates (pd.Series | dict, optional): The zero-coupon (spot) yield curve, indexed by maturity in years (in decimal). Defaults to a sample curve.
  • years_to_maturity (float | list, optional): The maturity (or maturities), in years, to calculate the par yield for. If not provided, a range of years to maturity will be used.
  • frequency (int, optional): The number of coupon payments per year. Defaults to 1.
  • par_value (float, optional): The face value of the bond. Defaults to 100.
  • show_input_info (bool, optional): Whether to display input information. Defaults to True.

The Fixed Income module page introduces the module, and the sidebar lists all of its functions.

Share