diff options
Diffstat (limited to 'python/analytics/cms_spread.py')
| -rw-r--r-- | python/analytics/cms_spread.py | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/python/analytics/cms_spread.py b/python/analytics/cms_spread.py index e29f9381..e7d68cdc 100644 --- a/python/analytics/cms_spread.py +++ b/python/analytics/cms_spread.py @@ -31,18 +31,10 @@ from scipy.integrate import quad from scipy.interpolate import RectBivariateSpline from scipy.special import roots_hermitenorm from yieldcurve import YC -from db import dbconn +from .db import dawn_engine, serenitas_pool __all__ = ["CmsSpread"] -_serenitasdb = dbconn('serenitasdb') -_dawndb = dbconn('dawndb') - -@atexit.register -def close_dbs(): - _serenitasdb.close() - _dawndb.close() - @vectorize([float64(float64, float64, float64, float64, float64, float64, float64, float64, float64)], cache=True, nopython=True) def h_call(z, K, S1, S2, mu_x, mu_y, sigma_x, sigma_y, rho): @@ -139,9 +131,11 @@ def get_swaption_vol_data(source="ICPL", vol_type=VolatilityType.ShiftedLognorma else: sql_str += "AND date=%s" params = (source, date) - with _serenitasdb.cursor() as c: + conn = serenitas_pool.getconn() + with conn.cursor() as c: c.execute(sql_str, params) surf_data = next(c) + serenitas_pool.putconn(conn) return surf_data[0], np.array(surf_data[1:-1], order='F', dtype='float64').T @@ -317,21 +311,20 @@ class CmsSpread: @staticmethod def from_tradeid(trade_id): - with _dawndb.cursor() as c: - c.execute("SELECT " - "amount, expiration_date, floating_rate_index, strike, trade_date " - "FROM capfloors WHERE id = %s", (trade_id,)) - r = c.fetchone() - m = re.match(r"USD(\d{1,2})-(\d{1,2})CMS", r['floating_rate_index']) + rec = dawn_engine.execute("SELECT " + "amount, expiration_date, floating_rate_index, strike, trade_date " + "FROM capfloors WHERE id = %s", (trade_id,)) + r = rec.fetchone() + m = re.match(r"USD(\d{1,2})-(\d{1,2})CMS", r.floating_rate_index) if m: tenor2, tenor1 = map(int, m.groups()) if trade_id == 3: - instance = CmsSpread(r['expiration_date'], tenor1, tenor2, r['strike'] * 0.01, - value_date=r['trade_date'], notional=r['amount'], + instance = CmsSpread(r.expiration_date, tenor1, tenor2, r.strike * 0.01, + value_date=r.trade_date, notional=r.amount, conditional1=0.025) else: - instance = CmsSpread(r['expiration_date'], tenor1, tenor2, r['strike'] * 0.01, - value_date=r['trade_date'], notional=r['amount']) + instance = CmsSpread(r.expiration_date, tenor1, tenor2, r.strike * 0.01, + value_date=r.trade_date, notional=r.amount) return instance @property |
