from analytics.cms_spread import ( quantlib_model, globeop_model, build_spread_index, VolatilityType) from yieldcurve import YC import pandas as pd from quantlib.time.api import Date swap_index_30y2y, 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): d = pd.Timestamp("2018-01-19") yc.link_to(YC(evaluation_date=d.date())) yc.extrapolation = True if d == pd.Timestamp("2018-02-16"): continue capped_floored_cms_spread_coupon_ln = \ quantlib_model(d, swap_index_30y2y, yc, cap, corr, maturity) rate1 = capped_floored_cms_spread_coupon_ln.rate cms_spread_coupon_n = quantlib_model(d, swap_index_30y2y, yc, cap, corr, maturity, VolatilityType.Normal) rate2 = cms_spread_coupon_n.rate rate3 = globeop_model(d, swap_index_30y2y, yc, cap, corr - 0.075, maturity) # df = pd.DataFrame(r, columns=['date', 'QL_ln', 'QL_n', 'Globeop']).set_index('date')