diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/analytics/index_data.py | 10 |
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) |
