diff options
Diffstat (limited to 'python/test_option.py')
| -rw-r--r-- | python/test_option.py | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/python/test_option.py b/python/test_option.py index 7f53d959..061be7c8 100644 --- a/python/test_option.py +++ b/python/test_option.py @@ -5,9 +5,11 @@ from pyisda.legs import ContingentLeg, FeeLeg from quantlib.settings import Settings from quantlib.time.api import ( Date, today, Period, Years, WeekendsOnly, Quarterly, CDS, Actual360, - ModifiedFollowing ) + ModifiedFollowing, Actual365Fixed) from quantlib.quotes import SimpleQuote -from quantlib.termstructures.credit.api import SpreadCdsHelper +from quantlib.termstructures.credit.api import ( + SpreadCdsHelper, Interpolator, ProbabilityTrait, PiecewiseDefaultCurve ) +from quantlib.termstructures.yields.api import YieldTermStructure from quantlib.pricingengines.credit.isda_cds_engine import IsdaCdsEngine import datetime import array @@ -16,6 +18,7 @@ import numpy as np import pandas as pd from db import dbengine from yieldcurve import YC +import pdb def get_spread(index, series): engine = dbengine("serenitasdb") @@ -26,22 +29,31 @@ def get_spread(index, series): parse_dates=['date'], index_col = ['date', 'tenor']) df = df.unstack('tenor') - return df + df.columns = ['spread_' + c for c in df.columns.levels[1]] + return df[['spread_3yr', 'spread_5yr', 'spread_7yr', 'spread_10yr']] def test_sc(df): + settings = Settings() tenors = [Period(3, Years), Period(5, Years), Period(7, Years), Period(10, Years)] - quotes = [SimpleQuote()]*3 + quotes = [] + for i in range(4): + quotes.append(SimpleQuote()) + yts = YieldTermStructure() helpers = [SpreadCdsHelper(q, t, 1, WeekendsOnly(), Quarterly, ModifiedFollowing, CDS, Actual360(), 0.4, + discount_curve = yts, lastperiod = Actual360(True)) for q, t in zip(quotes, tenors)] - pdc = PiecewiseCreditDefaultCurve( - for r in df.itertuples(index=False, name = None): - quotes[0].value = v[1] - quotes[1].value = v[2] - quotes[2].value = v[3] - quotes[3].value = v[4] - + pdc = PiecewiseDefaultCurve(ProbabilityTrait.SurvivalProbability, + Interpolator.LogLinear, + 0, WeekendsOnly(), helpers, Actual365Fixed()) + for r in df.itertuples(index=True, name = None): + settings.evaluation_date = Date.from_datetime(r[0]) + ts = YC() + yts.link_to(ts) + for i in range(4): + quotes[i].value = r[i+1] *1e-4 + return helpers def FEP(sc, recovery): pass |
