diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/__init__.py | 5 | ||||
| -rw-r--r-- | python/analytics/curve_trades.py | 8 | ||||
| -rw-r--r-- | python/analytics/tranche_basket.py | 13 |
3 files changed, 20 insertions, 6 deletions
diff --git a/python/analytics/__init__.py b/python/analytics/__init__.py index 7fce2295..8875a11d 100644 --- a/python/analytics/__init__.py +++ b/python/analytics/__init__.py @@ -1,3 +1,4 @@ +from .curve_trades import on_the_run from .index import CreditIndex, ForwardIndex from .option import (BlackSwaption, Swaption, ATMstrike, ProbSurface, QuoteSurface, VolSurface, BlackSwaptionVolSurface) @@ -8,8 +9,8 @@ from .ir_swaption import IRSwaption import datetime -def init_ontr(): +def init_ontr(value_date=datetime.date.today()): global _ontr, _beta - _ontr = CreditIndex('HY', 31, '5yr') + _ontr = CreditIndex('HY', on_the_run("HY", value_date), '5yr', value_date) _ontr.mark() _beta = {'HY': 1, 'IG': .3, 'EU': .22} diff --git a/python/analytics/curve_trades.py b/python/analytics/curve_trades.py index 73be4ab5..9fe7da00 100644 --- a/python/analytics/curve_trades.py +++ b/python/analytics/curve_trades.py @@ -10,15 +10,17 @@ from itertools import chain from copy import deepcopy from matplotlib import cm +import datetime import pandas as pd import math import statsmodels.formula.api as smf import numpy as np import matplotlib.pyplot as plt -def on_the_run(index): - r = serenitas_engine.execute("SELECT max(series) FROM index_version WHERE index=%s", - (index,)) +def on_the_run(index, value_date=datetime.date.today()): + r = serenitas_engine.execute("SELECT max(series) FROM index_maturity WHERE index=%s " + "and issue_date <= %s", + (index, value_date)) series, = r.fetchone() return series diff --git a/python/analytics/tranche_basket.py b/python/analytics/tranche_basket.py index 3167841d..728662e9 100644 --- a/python/analytics/tranche_basket.py +++ b/python/analytics/tranche_basket.py @@ -24,12 +24,23 @@ class DualCorrTranche(): _cache = LRU(64) _Legs = namedtuple('Legs', 'coupon_leg, protection_leg, bond_price') - def __init__(self, index_type: str, series: int, tenor: str, *, + def __init__(self, index_type: str=None, series: int=None, + tenor: str=None, *, attach: float, detach: float, corr_attach: float, corr_detach: float, tranche_running: float, notional: float=10_000_000, + redcode: str=None, + maturity: datetime.date=None, value_date: pd.Timestamp=pd.Timestamp.today().normalize(), use_trunc=False): + + if all((redcode, maturity)): + r = (serenitas_engine. + execute("SELECT index, series, tenor FROM index_desc " + "WHERE redindexcode=%s AND maturity = %s", + (redcode, maturity))) + index_type, series, tenor = next(r) + self._index = BasketIndex(index_type, series, [tenor], value_date=value_date) |
