aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/cms_spread.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/cms_spread.py')
-rw-r--r--python/analytics/cms_spread.py33
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