diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/analytics/db.py | 2 | ||||
| -rw-r--r-- | python/analytics/index_data.py | 16 | ||||
| -rw-r--r-- | python/analytics/utils.py | 2 |
3 files changed, 9 insertions, 11 deletions
diff --git a/python/analytics/db.py b/python/analytics/db.py index ccfe765f..08c59104 100644 --- a/python/analytics/db.py +++ b/python/analytics/db.py @@ -1,2 +1,2 @@ -from db import dbengine +from db import dbengine, dbconn _engine = dbengine('serenitasdb') diff --git a/python/analytics/index_data.py b/python/analytics/index_data.py index fd4271a3..41cc4f7f 100644 --- a/python/analytics/index_data.py +++ b/python/analytics/index_data.py @@ -1,20 +1,16 @@ -from db import dbengine, dbconn +from .db import _engine, dbconn from dates import bond_cal import numpy as np -from analytics.utils import roll_date, previous_twentieth +from .utils import roll_date, previous_twentieth, tenor_t from pandas.tseries.offsets import BDay 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(): """ @@ -33,7 +29,7 @@ def insert_quotes(): df = pd.read_sql_query("SELECT DISTINCT ON (date) * FROM index_quotes " \ "WHERE index='HY' AND tenor='5yr' " \ "ORDER BY date, series DESC, version DESC", - _serenitas_engine, parse_dates=['date'], index_col=['date']) + _engine, parse_dates=['date'], index_col=['date']) df = df.loc[dates] for tup in df.itertuples(): result = serenitasdb.execute("SELECT indexfactor, cumulativeloss FROM index_version " \ @@ -45,7 +41,7 @@ def insert_quotes(): recovery = 1-(cumloss2-cumloss1) version2_price = (factor1 * tup.closeprice - 100*recovery)/factor2 print(version2_price) - _serenitas_engine.execute("INSERT INTO index_quotes(date, index, series, version, tenor, closeprice)" \ + _engine.execute("INSERT INTO index_quotes(date, index, series, version, tenor, closeprice)" \ "VALUES(%s, %s, %s, %s, %s, %s)", (tup.Index, 'HY', tup.series, tup.version+1, tup.tenor, version2_price)) @@ -77,7 +73,7 @@ def get_index_quotes(index=None, series=None, tenor=None, from_date=None, years= return {k: tuple(v) if isinstance(v, list) else v for k, v in args.items() if v is not None} - df = pd.read_sql_query(sql_str, _serenitas_engine, parse_dates=['date'], + df = pd.read_sql_query(sql_str, _engine, parse_dates=['date'], index_col=['date', 'index', 'series', 'version'], params = make_params(args)) df.tenor = df.tenor.astype(tenor_t) @@ -118,7 +114,7 @@ def index_returns(df=None, index=None, series=None, tenor=None, from_date=None, df.columns = ['spread_return', 'price_return'] df = df.groupby(level=['date', 'index', 'series', 'tenor']).nth(0) 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_maturity WHERE coupon is NOT NULL", _engine, index_col=['index', 'series', 'tenor']) df = df.reset_index('date').join(coupon_data).reset_index('tenor') df.tenor = df.tenor.astype(tenor_t) diff --git a/python/analytics/utils.py b/python/analytics/utils.py index edd05284..0cefaa9c 100644 --- a/python/analytics/utils.py +++ b/python/analytics/utils.py @@ -4,6 +4,8 @@ from scipy.special import h_roots from dateutil.relativedelta import relativedelta import datetime from pyisda.date import pydate_to_TDate +from pandas.api.types import CategoricalDtype +tenor_t = CategoricalDtype(['3yr', '5yr', '7yr', '10yr'], ordered=True) def GHquad(n): """Gauss-Hermite quadrature weights""" |
