aboutsummaryrefslogtreecommitdiffstats
path: root/python/populate_risk_numbers.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/populate_risk_numbers.py')
-rw-r--r--python/populate_risk_numbers.py60
1 files changed, 37 insertions, 23 deletions
diff --git a/python/populate_risk_numbers.py b/python/populate_risk_numbers.py
index 1aede16e..3ab01d39 100644
--- a/python/populate_risk_numbers.py
+++ b/python/populate_risk_numbers.py
@@ -3,13 +3,15 @@ from db import serenitasdb
import datetime
basedir = "/home/share/CorpCDOs"
-with open(os.path.join(basedir, "code", "etc", "runs.yml")) as fh:
- runs = yaml.load(fh)
- index_list = [[name[:2].upper(), int(name[2:]), tenor] for name, tenor in zip(runs['name'], runs['tenor'])]
+def get_index_list(basedir):
+ with open(os.path.join(basedir, "code", "etc", "runs.yml")) as fh:
+ runs = yaml.load(fh)
+ index_list = [[name[:2].upper(), int(name[2:]), tenor] for name, tenor
+ in zip(runs['name'], runs['tenor'])]
+ return index_list
-sqlstr1 = "SELECT * from nameToBasketID(%s, %s)"
-sqlstr2 = "INSERT INTO risk_numbers VALUES({0},{1})".format(",".join(["%s"] * 10),
- ",".join(["%s::float[]"]*9))
+sqlstr = "INSERT INTO risk_numbers VALUES({0},{1})".format(",".join(["%s"] * 10),
+ ",".join(["%s::float[]"]*9))
def get_attach_from_name(index_type, series):
if index_type.lower() == "ig":
@@ -24,20 +26,32 @@ def get_attach_from_name(index_type, series):
def convert(s):
return None if s=="NA" else float(s)
-for index_type, series, tenor in index_list:
- attach = get_attach_from_name(index_type, series)
- with open(os.path.join(basedir, "Tranche_data", "Runs",
- "{0}{1}.{2}.csv".format(index_type, series, tenor))) as fh:
- csvreader = csv.DictReader(fh)
- for line in csvreader:
- line['date'] = datetime.datetime.strptime(line['date'], "%Y-%m-%d").date()
- with serenitasdb.cursor() as c:
- greeks = []
- skew = [convert(line["{0} Corr".format(a)]) for a in attach[1:]]
- for k in ["Dealer Delta", "Model Delta", "Forward Deltas", "Gamma", "Theta",
- "Corr01", "Dur", "EL"]:
- greeks.append([convert(line["{0}-{1} {2}".format(l, u, k)])
- for l, u in zip(attach[:-1], attach[1:])])
- c.execute(sqlstr2, (line['date'], index_type, series, tenor, line['indexprice'],
- line['indexBasis'], line['indexEL'], line['indexduration'],
- line['indexTheta'], attach) + (skew,) + tuple(greeks))
+def populate_risk(basedir, db):
+ with db.cursor() as c:
+ c.execute("DELETE FROM risk_numbers")
+ db.commit()
+ for index_type, series, tenor in get_index_list(basedir):
+ attach = get_attach_from_name(index_type, series)
+ with open(os.path.join(basedir, "Tranche_data", "Runs",
+ "{0}{1}.{2}.csv".format(index_type, series, tenor))) as fh:
+ csvreader = csv.DictReader(fh)
+ with db.cursor() as c:
+ toinsert = []
+ for line in csvreader:
+ line['date'] = datetime.datetime.strptime(line['date'], "%Y-%m-%d").date()
+ greeks = []
+ skew = [convert(line["{0} Corr".format(a)]) for a in attach[1:]]
+ for k in ["Dealer Delta", "Model Delta", "Forward Deltas", "Gamma", "Theta",
+ "Corr01", "Dur", "EL"]:
+ greeks.append([convert(line["{0}-{1} {2}".format(l, u, k)])
+ for l, u in zip(attach[:-1], attach[1:])])
+ toinsert.append((line['date'], index_type, series, tenor, line['indexprice'],
+ line['indexBasis'], line['indexEL'], line['indexduration'],
+ line['indexTheta'], attach) + (skew,) + tuple(greeks))
+ c.executemany(sqlstr, toinsert)
+ db.commit()
+
+if __name__=="__main__":
+ basedir = "/home/share/CorpCDOs"
+ populate_risk(basedir, serenitasdb)
+ serenitasdb.close()