1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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')
|