aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/curve_trades.py6
-rw-r--r--python/analytics/option.py11
-rw-r--r--python/analytics/portfolio.py6
-rw-r--r--python/analytics/sabr.py4
4 files changed, 14 insertions, 13 deletions
diff --git a/python/analytics/curve_trades.py b/python/analytics/curve_trades.py
index f76f6b88..b989bd69 100644
--- a/python/analytics/curve_trades.py
+++ b/python/analytics/curve_trades.py
@@ -1,6 +1,6 @@
from analytics.index_data import get_index_quotes, index_returns
from db import dbengine
-from analytics import Index, Portfolio
+from analytics import CreditIndex, Portfolio
from analytics.utils import roll_date
from dateutil.relativedelta import relativedelta
from analytics.basket_index import MarkitBasketIndex
@@ -278,8 +278,8 @@ def curve_pos(value_date, index_type='IG'):
df = pd.read_sql_query(sql_string, dawndb,
params=[value_date, f'SER_{index_type}CURVE'])
- portf = Portfolio([Index.from_name(row.index, row.series, row.tenor,
- value_date, -row.notional)
+ portf = Portfolio([CreditIndex(row.index, row.series, row.tenor,
+ value_date, -row.notional)
for row in df[['index', 'tenor', 'series', 'notional']].
itertuples(index=False)])
portf.mark()
diff --git a/python/analytics/option.py b/python/analytics/option.py
index c0989814..34f1b7a0 100644
--- a/python/analytics/option.py
+++ b/python/analytics/option.py
@@ -8,7 +8,7 @@ from db import dbengine
from .black import black, Nx
from .sabr import sabr
from .utils import GHquad, build_table
-from .index import g, ForwardIndex, Index
+from .index import g, ForwardIndex, CreditIndex
from .db import _engine
from yieldcurve import roll_yc
from pandas.tseries.offsets import BDay
@@ -55,7 +55,7 @@ def ATMstrike(index, exercise_date):
Parameters
----------
index :
- Index object
+ CreditIndex object
exercise_date : datetime.date
expiration date.
price : bool, defaults to False
@@ -99,7 +99,7 @@ class BlackSwaption(ForwardIndex):
if rec is None:
return ValueError("trade_id doesn't exist")
if index is None:
- index = Index.from_name(redcode=rec.security_id, maturity=rec.maturity, value_date=rec.trade_date)
+ index = CreditIndex(redcode=rec.security_id, maturity=rec.maturity, value_date=rec.trade_date)
index.ref = rec.index_ref
instance = cls(index, rec.expiration_date, rec.strike, rec.swaption_type.lower(),
direction="Long" if rec.buysell else "Short")
@@ -519,6 +519,7 @@ class QuoteSurface():
r.append((quotedate, quotesource))
return r
+
class VolSurface(QuoteSurface):
def __init__(self, index_type, series, tenor='5yr', value_date=datetime.date.today()):
super().__init__(index_type, series, tenor, value_date)
@@ -626,7 +627,7 @@ class ModelBasedVolSurface(VolSurface):
def __init__(self, index_type, series, tenor='5yr', value_date=datetime.date.today(),
interp_method='bivariate_spline'):
super().__init__(index_type, series, tenor, value_date)
- self._index = Index.from_name(index_type, series, tenor, value_date, notional=1.)
+ self._index = CreditIndex(index_type, series, tenor, value_date, notional=1.)
self._surfaces = {}
self._index_refs = {}
self._quotes = self._quotes.assign(
@@ -716,7 +717,7 @@ class ProbSurface(QuoteSurface):
def __init__(self, index_type, series, tenor='5yr', value_date=datetime.date.today()):
super().__init__(index_type, series, tenor, value_date)
self._surfaces = {}
- self._index = Index.from_name(index_type, series, tenor, value_date)
+ self._index = CreditIndex(index_type, series, tenor, value_date)
def __getitem__(self, surface_id):
if surface_id not in self._surfaces:
diff --git a/python/analytics/portfolio.py b/python/analytics/portfolio.py
index 004288f2..3b9e1a9a 100644
--- a/python/analytics/portfolio.py
+++ b/python/analytics/portfolio.py
@@ -1,4 +1,4 @@
-from .index import Index
+from .index import CreditIndex
from .option import BlackSwaption
from warnings import warn
import pandas as pd
@@ -36,7 +36,7 @@ class Portfolio:
def __init__(self, trades, trade_ids=None):
self.trades = trades
self.trade_ids = trade_ids
- self.indices = [t for t in trades if isinstance(t, Index)]
+ self.indices = [t for t in trades if isinstance(t, CreditIndex)]
self.swaptions = [t for t in trades if isinstance(t, BlackSwaption)]
value_dates = set(t.value_date for t in self.trades)
self._keys = set([(index.index_type, index.series, index.tenor) for index in self.indices])
@@ -158,7 +158,7 @@ class Portfolio:
"Vega"]
rec = []
for t in self.trades:
- if isinstance(t, Index):
+ if isinstance(t, CreditIndex):
name = f"{t.index_type}{t.series} {t.tenor}"
r = ("Index", name,
t.notional, t.ref, "N/A", t.direction, "N/A", "N/A", None, t.pv, 1., 0., t.theta, 0.)
diff --git a/python/analytics/sabr.py b/python/analytics/sabr.py
index eba32bac..4de15338 100644
--- a/python/analytics/sabr.py
+++ b/python/analytics/sabr.py
@@ -58,10 +58,10 @@ def sabr(alpha, beta, rho, nu, F, K, T):
if __name__ == "__main__":
from analytics.option import BlackSwaption
- from analytics import Index
+ from analytics import CreditIndex
from scipy.optimize import least_squares
- underlying = Index.from_name("IG", 28, "5yr")
+ underlying = CreditIndex("IG", 28, "5yr")
underlying.spread = 67.5
exercise_date = datetime.date(2017, 9, 20)
option = BlackSwaption(underlying, exercise_date, 70)