aboutsummaryrefslogtreecommitdiffstats
path: root/python/test_option.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/test_option.py')
-rw-r--r--python/test_option.py77
1 files changed, 0 insertions, 77 deletions
diff --git a/python/test_option.py b/python/test_option.py
deleted file mode 100644
index daa52d81..00000000
--- a/python/test_option.py
+++ /dev/null
@@ -1,77 +0,0 @@
-from pyisda.utils import build_yc
-
-from quantlib.settings import Settings
-from quantlib.time.api import (
- Date, today, Period, Years, WeekendsOnly, Quarterly, CDS, Actual360,
- ModifiedFollowing, Actual365Fixed, Months)
-from quantlib.quotes import SimpleQuote
-from quantlib.termstructures.credit.api import (
- SpreadCdsHelper, Interpolator, ProbabilityTrait, PiecewiseDefaultCurve )
-from quantlib.termstructures.yields.api import YieldTermStructure, DepositRateHelper
-from quantlib.pricingengines.credit.isda_cds_engine import IsdaCdsEngine
-import datetime
-import math
-import numpy as np
-import pandas as pd
-from pandas.tseries.offsets import BusinessDay as BDay
-from db import dbengine
-from yieldcurve import YC
-from swaption import Index
-
-def get_spread(index, series):
- engine = dbengine("serenitasdb")
- df = pd.read_sql("SELECT date, tenor, closespread FROM index_quotes WHERE " \
- "index = %(index)s and series = %(series)s",
- engine,
- params = {"index": index, "series": series},
- parse_dates=['date'],
- index_col = ['date', 'tenor'])
- df = df.unstack('tenor')
- 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()
- settings.evaluation_date = today()
- tenors = [Period(3, Years), Period(5, Years), Period(7, Years), Period(10, Years)]
- 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 = PiecewiseDefaultCurve(ProbabilityTrait.SurvivalProbability,
- Interpolator.LogLinear,
- 0, WeekendsOnly(), helpers, Actual365Fixed())
- ts = YC()
- yts.link_to(ts)
- 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
- print(pdc.dates)
- print(pdc.data)
-
-
-if __name__ == "__main__":
- settings = Settings()
- trade_date = datetime.date.today()
- settings.evaluation_date = today()
- start_date = datetime.date(2016, 6, 20)
- term_date = datetime.date(2021, 6, 20)
- recovery = 0.4
- fixed_rate = 0.01
- ig26 = Index(start_date, term_date, recovery, fixed_rate)
- yc = build_yc(trade_date, True)
- exercise_date = datetime.date(2016, 10, 19)
- exercise_date_settle = pd.Timestamp(exercise_date + 3* BDay()).date()
- spread = np.array([65, 70, 72.5, 75, 77.5, 80, 85, 90, 95, 100, 110, 120, 130, 140])
- tailprob = np.array([64.2, 51.7, 45.8, 40.2, 35, 30.4, 23.2, 18, 14.3, 11.6, 7.9, 5.6, 4.1, 3])
- cumprob = 1-tailprob/100
- hist = cumprob/spread
- hist = np.hstack((0, hist))