aboutsummaryrefslogtreecommitdiffstats
path: root/python/intex_scenarios.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/intex_scenarios.py')
-rw-r--r--python/intex_scenarios.py41
1 files changed, 21 insertions, 20 deletions
diff --git a/python/intex_scenarios.py b/python/intex_scenarios.py
index e948ead5..fa5268d1 100644
--- a/python/intex_scenarios.py
+++ b/python/intex_scenarios.py
@@ -7,6 +7,7 @@ import json
import re
import psycopg2
import common
+from common import query_db, root
import sys
import yaml
@@ -24,49 +25,50 @@ pattern9 = re.compile("(?P<a>SEVERITY\[\w+,\d+\]=)mkt\(70\)")
global_reinvfloatpercentage = 84
global_reinvfixedpercentage = 16
-def get_reinv_assets(dealname, workdate, cursor):
+def get_reinv_assets(dealname, workdate):
sqlstr = 'select * from et_historicaldealinfo(%s, %s) where ReinvFlag IS TRUE'
- cursor.execute(sqlstr, (dealname, workdate))
- reinvassets = cursor.fetchall()
+ reinvassets = query_db(sqlstr, params = (dealname, workdate), one = False)
d = {}
for line in reinvassets:
d[line[3]] = line[22]
return d
-def get_recovery(dealname, workdate, cursor):
+def get_recovery(dealname, workdate, defaultrecovery = 50):
""" compute average price of defaulted assets
"""
- defaultrecovery = 50
- sqlstr = "select sum(coalesce(price, {0}) * currentbalance)/sum(currentbalance) ".format(defaultrecovery) + \
+ sqlstr = "select sum(coalesce(price, %s) * currentbalance)/sum(currentbalance) " + \
"from et_aggdealinfo_historical(%s, %s) where defaultedflag is True"
- cursor.execute(sqlstr, (dealname, workdate))
- recovery = cursor.fetchone()[0]
+
+ recovery = query_db(sqlstr, params = (defaultrecovery, dealname, workdate))
+
if not recovery:
- recovery = 50
+ recovery = defaultrecovery
+ else:
+ recovery = recovery[0]
return float(recovery)
-def get_reinvenddate(dealname, cursor):
- cursor.execute('SELECT \"Reinv End Date\" from latest_clo_universe where dealname=%s', (dealname,))
- reinvenddate = cursor.fetchone()[0]
+def get_reinvenddate(dealname):
+ sqlstr = 'SELECT \"Reinv End Date\" from latest_clo_universe where dealname=%s'
+ reinvenddate = query_db(sqlstr, params = (dealname,))[0]
if reinvenddate:
reinvenddate = reinvenddate.strftime("%Y%m%d")
return reinvenddate
else:
raise Exception("missing reinvestment end date")
-def generate_scenarios(workdate, dealnames, conn, cursor):
- prometheus = os.path.join(common.root, "Scenarios", "prometheus.sss")
+def generate_scenarios(workdate, dealnames):
+ prometheus = os.path.join(root, "Scenarios", "prometheus.sss")
n_scenarios = 100
- basedir = os.path.join(common.root, "Scenarios", "Intex curves_" + workdate)
+ basedir = os.path.join(root, "Scenarios", "Intex curves_" + workdate)
for dealname in dealnames:
- defaultedprice = get_recovery(dealname, workdate, cursor)
+ defaultedprice = get_recovery(dealname, workdate)
replace = "\g<a>{0:.3f}".format(defaultedprice)
with open(os.path.join(basedir, "csv", dealname + ".config")) as fh:
config = yaml.load(fh)
reinvflag = config['reinvflag']
if reinvflag:
- reinvenddate = get_reinvenddate(dealname, cursor)
- reinv_assets = get_reinv_assets(dealname, workdate, cursor)
+ reinvenddate = get_reinvenddate(dealname)
+ reinv_assets = get_reinv_assets(dealname, workdate)
n_float_assets = len([v for v in reinv_assets.values() if v == 'FLOAT'])
n_fixed_assets = len([v for v in reinv_assets.values() if v == 'FIXED'])
rollingmat = config['rollingmat']
@@ -221,6 +223,5 @@ if __name__ == "__main__":
os.listdir(os.path.join(common.root, "Scenarios",
"Intex curves_" + workdate, "csv"))
if "RData" in d]
- generate_scenarios(workdate, dealnames, common.conn, common.cursor)
- common.cursor.close()
+ generate_scenarios(workdate, dealnames)
common.conn.close()