aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/basket_index.py21
-rw-r--r--python/analytics/index_data.py8
2 files changed, 14 insertions, 15 deletions
diff --git a/python/analytics/basket_index.py b/python/analytics/basket_index.py
index f835cd61..78c353b0 100644
--- a/python/analytics/basket_index.py
+++ b/python/analytics/basket_index.py
@@ -52,7 +52,8 @@ class BasketIndex(CreditIndex):
self._version = tuple(tuple(t) for t in r)
self.issue_date = self.index_desc.issue_date[0]
self.index_desc = self.index_desc.loc[tenors]
- maturities = self.index_desc.maturity.sort_values().dt.to_pydatetime()
+ self.index_desc = self.index_desc.sort_values('maturity')
+ maturities = self.index_desc.maturity.dt.to_pydatetime()
self.index_desc = self.index_desc.reset_index().set_index('maturity')
self.index_desc.tenor = self.index_desc.tenor.astype(tenor_t)
curves = get_singlenames_curves(index_type, series, value_date)
@@ -168,7 +169,7 @@ class BasketIndex(CreditIndex):
if theta_date is provided, computes the theta to that specific date
instead of one-year theta"""
if hasattr(self, "index_quotes"):
- index_quotes = self.index_quotes.loc[self.value_date]
+ index_quotes = self._get_quotes()
else:
index_quotes = None
if maturity is None:
@@ -231,17 +232,15 @@ class MarkitBasketIndex(BasketIndex):
super().__init__(index_type, series, tenors, value_date=value_date)
self.index_quotes = (get_index_quotes(index_type, series,
tenors, years=None,
- remove_holidays=False)['closeprice'].
- unstack().
- groupby(level='date', as_index=False).nth(0).
- reset_index(['index', 'series', 'version'], drop=True))
- self.index_quotes.columns = (self.index_desc.reset_index().
- set_index('tenor').
- loc[self.index_quotes.columns, "maturity"])
- self.index_quotes = 1 - self.index_quotes / 100
+ remove_holidays=False)[['close_price', 'id']].
+ groupby(level=['date', 'tenor'], as_index=True).
+ nth(0))
+ self.index_quotes.close_price = 1 - self.index_quotes.close_price / 100
def _get_quotes(self):
- return self.index_quotes.loc[self.value_date]
+ quote = self.index_quotes.loc[self.value_date, "close_price"]
+ return {m: quote[self.index_desc.tenor[m]]
+ for m in self.maturities}
if __name__ == "__main__":
diff --git a/python/analytics/index_data.py b/python/analytics/index_data.py
index 9a68f3d5..18aeaaba 100644
--- a/python/analytics/index_data.py
+++ b/python/analytics/index_data.py
@@ -47,7 +47,7 @@ def insert_quotes():
def get_index_quotes(index=None, series=None, tenor=None, from_date=None,
- years=3, remove_holidays=True):
+ years=3, remove_holidays=True, source='MKIT'):
args = locals().copy()
del args['remove_holidays']
if args['years'] is not None:
@@ -69,7 +69,7 @@ def get_index_quotes(index=None, series=None, tenor=None, from_date=None,
where_clause = " AND ".join(make_str(k, v)
for k, v in args.items() if v is not None)
- sql_str = "SELECT * FROM index_quotes"
+ sql_str = "SELECT * FROM index_quotes_pre"
if where_clause:
sql_str = " WHERE ".join([sql_str, where_clause])
@@ -116,11 +116,11 @@ def index_returns(df=None, index=None, series=None, tenor=None, from_date=None,
df = get_index_quotes(index, series, tenor, from_date, years)
spread_return = (df.
groupby(level=['index', 'series', 'tenor', 'version']).
- closespread.
+ close_spread.
pct_change(periods=per))
price_return = (df.
groupby(level=['index', 'series', 'tenor', 'version']).
- closeprice.
+ close_price.
diff() / 100)
df = pd.concat([spread_return, price_return], axis=1,
keys=['spread_return', 'price_return'])