aboutsummaryrefslogtreecommitdiffstats
path: root/python/exploration/test_cms.py
blob: 57677b43e386bba45ce4b5833982dbb1fb8fbd9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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')