aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/index_data.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/index_data.py')
-rw-r--r--python/analytics/index_data.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/python/analytics/index_data.py b/python/analytics/index_data.py
index 8e6eda32..fd4271a3 100644
--- a/python/analytics/index_data.py
+++ b/python/analytics/index_data.py
@@ -8,11 +8,14 @@ from functools import lru_cache
from pyisda.curve import SpreadCurve, fill_curve
from multiprocessing import Pool
from yieldcurve import get_curve
+from pandas.api.types import CategoricalDtype
import datetime
import pandas as pd
_serenitas_engine = dbengine('serenitasdb')
+tenor_t = CategoricalDtype(['3yr', '5yr', '7yr', '10yr'], ordered=True)
+
def insert_quotes():
"""
backpopulate some version i+1 quotes one day before they start trading so that
@@ -77,7 +80,7 @@ def get_index_quotes(index=None, series=None, tenor=None, from_date=None, years=
df = pd.read_sql_query(sql_str, _serenitas_engine, parse_dates=['date'],
index_col=['date', 'index', 'series', 'version'],
params = make_params(args))
- df.tenor = pd.Categorical(df.tenor, categories=("3yr", "5yr", "7yr", "10yr"), ordered=True)
+ df.tenor = df.tenor.astype(tenor_t)
df = df.set_index('tenor', append=True)
df.sort_index(inplace=True)
## get rid of US holidays
@@ -117,8 +120,9 @@ def index_returns(df=None, index=None, series=None, tenor=None, from_date=None,
coupon_data = pd.read_sql_query("SELECT index, series, tenor, coupon * 1e-4 AS coupon, maturity FROM " \
"index_maturity WHERE coupon is NOT NULL", _serenitas_engine,
index_col=['index', 'series', 'tenor'])
-
- df = df.reset_index('date').join(coupon_data)
+ df = df.reset_index('date').join(coupon_data).reset_index('tenor')
+ df.tenor = df.tenor.astype(tenor_t)
+ df = df.set_index(['tenor'], append=True)
df['day_frac'] = (df.groupby(level=['index', 'series', 'tenor'])['date'].
diff().
astype('timedelta64[D]') / 360)