0
$\begingroup$

I'm trying to create a yield curve in QuantLib based on swap rates. The swap rates I'm using have a 6 months fixed frequency and a 3 month float frequency based on LIBOR.

What I don't understand is why changing the Euribor index doesn't seem to have an effect on the values of the spot rates derived from the yield curves. Please see below for a working example.

import xlwings as xw
import pandas as pd
import QuantLib as ql
from QuantLib import *
from IPython.display import display, HTML
import re
from pprint import pprint


calc_date = Date(22, May, 2019)
ql.Settings.instance().evaluationDate = calc_date

rates = [0.02437,0.0252475,0.025574,0.02457,0.022801,0.02202,0.021819,0.02188,0.022125,0.022375,0.022682,0.023005,0.023324,0.024505,0.025045,0.025275]
tenors = ['1M','3M','6M','1Y','2Y','3Y','4Y','5Y','6Y','7Y','8Y','9Y','10Y','15Y','20Y','30Y',]
tenors = [ (int(re.search(r'\d+', tenor).group()), Months if tenor[-1]=='M' else Years) for tenor in tenors ]

helpers1 = [
    SwapRateHelper(QuoteHandle(SimpleQuote(rate)),
                   Period(*tenor),
                   UnitedStates(),
                   Semiannual,
                   Unadjusted,
                   Thirty360(),
                   Euribor3M())
    for tenor, rate in zip(tenors, rates)
]

curve1 = PiecewiseFlatForward(0, UnitedStates(), helpers1, Actual360())

print('\nSpot rates from curve 1 based on 3M Euribor.')
print(curve1.zeroRate(1, Compounded))
print(curve1.zeroRate(Date(22, May, 2020), Actual360(), Compounded))
print(curve1.zeroRate(Date(22, May, 2020), Actual365Fixed(), Compounded))


helpers2 = [
    SwapRateHelper(QuoteHandle(SimpleQuote(rate)),
                   Period(*tenor),
                   UnitedStates(),
                   Semiannual,
                   Unadjusted,
                   Thirty360(),
                   Euribor11M())
    for tenor, rate in zip(tenors, rates)
]

curve2 = PiecewiseFlatForward(0, UnitedStates(), helpers2, Actual360())

print('\nSpot rates from curve 2 based on 11M Euribor.')
print(curve1.zeroRate(1, Compounded))
print(curve1.zeroRate(Date(22, May, 2020), Actual360(), Compounded))
print(curve1.zeroRate(Date(22, May, 2020), Actual365Fixed(), Compounded))

```
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.