An investor who plans to invest at a later time might be curious to know what the future interest rate might look like, as implied by today's term structure of interest rates. For example, you might ask: What is the one-year spot rate one year from now? To answer this question, one can calculate forward rates for the period between and using this formula:
Here, and are the continuously compounded annual interest rates at time period and respectively.
The following Python code helps us generate a list of forward rates from a list of spot rates:
""" Get a list of forward rates starting from the second time period """ class ForwardRates(object): def __init__(self): self.forward_rates = [] self.spot_rates = dict() def add_spot_rate(self, T, spot_rate): self.spot_rates[T] = spot_rate def __calculate_forward_rate___(self, T1, T2): R1 = self.spot_rates[T1] R2 = self.spot_rates[T2] forward_rate = (R2*T2 - R1*T1)/(T2 - T1) return forward_rate def get_forward_rates(self): periods = sorted(self.spot_rates.keys()) for T2, T1 in zip(periods, periods[1:]): forward_rate = self.__calculate_forward_rate___(T1, T2) self.forward_rates.append(forward_rate) return self.forward_rates
Using spot rates derived from our preceding yield curve, we get the following result:
>>> fr = ForwardRates() >>> fr.add_spot_rate(0.25, 10.127) >>> fr.add_spot_rate(0.50, 10.469) >>> fr.add_spot_rate(1.00, 10.536) >>> fr.add_spot_rate(1.50, 10.681) >>> fr.add_spot_rate(2.00, 10.808) >>> print fr.get_forward_rates() [10.810999999999998, 10.603, 10.971, 11.189]
Calling the get_forward_rates
method of the ForwardRates
class returns a list of forward rates, starting from the next time period.