Calculates the implied forward rates between pairs of maturities of a country’s zero-coupon (spot) yield curve on a day. The forward rate is the interest rate, implied by that day’s curve, for a loan that starts at a future date: it follows from no-arbitrage pricing rather than being a forecast of future rates, and contains a term premium.

The formula is as follows:

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

where:

\[r_{1} = \text{Zero-coupon rate at the near maturity},\;\; \text{interpolated linearly from the curve}\] \[t_{1} = \text{Near maturity},\;\; \text{in years}\] \[r_{2} = \text{Zero-coupon rate at the far maturity},\;\; \text{interpolated linearly from the curve}\] \[t_{2} = \text{Far maturity},\;\; \text{in years}\]

The curve is the zero-coupon curve of get_zero_coupon_curve, bootstrapped from the country’s government bond par yields and annually compounded, so the forward rate is annually compounded as well. For a curve of your own, use yieldcurve_model.get_forward_rate.

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

Forward Rate in Python or via the MCP

Install the Finance Toolkit 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, 5], far_maturity=[5, 10, 30], date="2026-11-05"
)

Or, after setting up the Finance Toolkit MCP, ask:

Which forward rates from 1, 2 and 5 years to 5, 10 and 30 years did the US Treasury curve imply on 5 November 2026?

Which returns:

Near Maturity 5 10 30
1 0.0473 0.0501 0.0548
2 0.0474 0.0505 0.0551
5 nan 0.0524 0.056

Parameters

get_forward_rate accepts the following parameters.

ParameterTypeDescriptionExample
near_maturityfloat | str | list | NoneThe nearer maturity (or maturities), in years or as labels such as ‘6M’. Defaults to None, 1 to 5 years.2.0
far_maturityfloat | str | list | NoneThe further maturity (or maturities), in years or as labels such as ‘10Y’. Defaults to None, 5 to 10 years.5.0
countrystrThe country, see get_zero_coupon_curve. Defaults to “United States”."US"
datestr | NoneThe day of the curve (YYYY-MM-DD), or the last day before it with a curve. Defaults to None, the end date."2025-03-31"
roundingint | NoneThe number of decimals to round the results to. Defaults to None, which uses the rounding of the class.2
Share