diff options
Diffstat (limited to 'python/test_option.py')
| -rw-r--r-- | python/test_option.py | 77 |
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)) |
