aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/__init__.py5
-rw-r--r--python/analytics/curve_trades.py8
-rw-r--r--python/analytics/tranche_basket.py13
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)