from analytics.cms_spread import ( quantlib_model, globeop_model, build_spread_index, VolatilityType) from yieldcurve import YC import pandas as pd cms30y2y, yc = build_spread_index(30, 2) cap = 0.00758 corr = 0.8 r = [] maturity = pd.Timestamp("2020-01-19") today = pd.Timestamp.today() for d in pd.bdate_range("2018-01-19", today, closed="left", normalize=True): yc.link_to(YC(evaluation_date=d.date())) yc.extrapolation = True if d == pd.Timestamp("2018-02-16"): continue cms_spread_coupon_ln = quantlib_model(d, cms30y2y, yc, cap, corr, maturity) rate1 = cms_spread_coupon_ln.rate cms_spread_coupon_n = quantlib_model(d, cms30y2y, yc, cap, corr, maturity, VolatilityType.Normal) rate2 = cms_spread_coupon_n.rate rate3 = globeop_model(d, cms30y2y, yc, cap, corr - 0.075, maturity) r.append((d, rate1, rate2, rate3)) df = pd.DataFrame(r, columns=['date', 'QL_ln', 'QL_n', 'Globeop']).set_index('date')