Calculates the implied forward rate between pairs of points on a zero-coupon (spot) yield curve. The forward rate is the interest rate, implied by today’s yield curve, for a loan that starts at a future date - it is derived purely from no-arbitrage pricing rather than a forecast of future rates.

The rate for each maturity is obtained by linearly interpolating the supplied spot curve, so near_maturity and far_maturity do not need to coincide exactly with a maturity present in spot_rates.

The forward rate is calculated using the following formula:

\[\text{Forward Rate} = ((1 + r_{2}) ^{t_{2}} / (1 + r_{1}) ^{t_{1}}) ^{1 / (t_{2} - t_{1})} - 1\]

where:

  • r1 = Spot rate at the near maturity
  • t1 = Near maturity, in years
  • r2 = Spot rate at the far maturity
  • t2 = Far maturity, in years

Also known as: implied forward rate, forward-forward rate.

Forward Rate in Python

get_forward_rate is part of the Fixed Income module of the open-source Finance Toolkit. Install it with:

pip install financetoolkit -U

Then call get_forward_rate as shown below.

from financetoolkit import FixedIncome

fixedincome = FixedIncome()

fixedincome.get_forward_rate(
    near_maturity=[1, 2, 3],
    far_maturity=[5, 10],
    show_input_info=False,
)

Which returns:

Near Maturity 5 10
1 0.04 0.0456
2 0.042 0.047
3 0.044 0.0483

Parameters

get_forward_rate 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.
  • near_maturity (float | list, optional): The nearer maturity (or maturities), in years. If not provided, a range of near maturities will be used.
  • far_maturity (float | list, optional): The further maturity (or maturities), in years. If not provided, a range of far maturities will be used.
  • show_input_info (bool, optional): Whether to display input information. Defaults to True.
Share