aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/test_option.py34
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