diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/intex_prices.py | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/python/intex_prices.py b/python/intex_prices.py index 21b065a6..4ac14810 100644 --- a/python/intex_prices.py +++ b/python/intex_prices.py @@ -1,8 +1,9 @@ import os
import os.path
-import csv
import psycopg2
import pdb
+import pandas as pd
+
if os.name =='nt':
root = "//WDsentinel/share/CorpCDOs"
@@ -16,40 +17,36 @@ conn = psycopg2.connect(database="ET", cursor = conn.cursor()
def cusips_from_dealname(dealname, curr = cursor):
- curr.execute("SELECT \"Deal Cusip List\" from latest_clo_universe "
- " where dealname = %s", (dealname,))
+ curr.execute("SELECT \"Deal Cusip List\" FROM latest_clo_universe "
+ " WHERE dealname = %s", (dealname,))
return curr.fetchone()[0]
-prog = re.compile("\((.*)\)")
-
-def convert_float(string):
- string = string.replace(",","")
- if prog.match(string):
- return - float(prog.match(string).group(1))
+def sanitize_float(string):
+ if isinstance(string, float):
+ return string
else:
- return float(string)
+ string = string.replace(",","")
+ if "(" in string:
+ return - float(string[1:-1])
+ else:
+ return float(string)
fields = ["Price", "WAL", "Market Value", "Modified Duration"]
-data = {}
-n_scenarios = 100
+dealdata = {}
-for field in fields:
- data[field] = []
-
-for dealname in ["oceant2"]:
+for dealname in ["abcl071", "ammcclo5"]:
tranches = os.listdir(os.path.join(root, "Scenarios", "Prices", dealname))
+ d = {}
for tranche in tranches:
- with open(os.path.join(root, "Scenarios", "Prices", dealname, tranche)) as fh:
- csvinput = csv.reader(fh, dialect = 'excel-tab')
- for line in csvinput:
- if line[1] in fields:
- data[line[1]].append(map(convert_float, line[2:-1]))
- for field in fields:
- with open(os.path.join(root, "Scenarios", "Prices", "{0}-{1}.csv".format(dealname, field)), "wb") as fh:
- csvoutput = csv.writer(fh)
- csvoutput.writerow([tranche.split(",")[0] for tranche in tranches])
- for i in range(n_scenarios):
- csvoutput.writerow([data[field][j][i] for j in range(len(tranches))])
+ data = pd.read_table(os.path.join(root, "Scenarios", "Prices", dealname, tranche))
+ datamod = data[data.columns[2:-1]].T
+ datamod.columns = data[data.columns[1]]
+ for field in fields:
+ datamod[field] = datamod[field].apply(sanitize_float)
+ d[tranche[:-7]] = datamod[fields]
+ dealdata[dealname] = pd.concat(d)
+
+dealdata = pd.concat(dealdata)
cursor.close()
conn.close()
|
