aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/insert_tranche_quotes.py62
1 files changed, 34 insertions, 28 deletions
diff --git a/python/insert_tranche_quotes.py b/python/insert_tranche_quotes.py
index 575136e0..1ce59002 100644
--- a/python/insert_tranche_quotes.py
+++ b/python/insert_tranche_quotes.py
@@ -3,7 +3,7 @@ from sqlalchemy.exc import IntegrityError
import os
import csv
import datetime
-import pdb
+import logging
engine = create_engine('postgresql://mlpdb_user:Serenitas1@debian/mlpdb')
metadata = MetaData(bind = engine)
@@ -20,7 +20,7 @@ tenordict = {'3': '3yr', '5': '5yr', '7':'7yr', '10':'10yr'}
runningdict1 = {0: 500, 3:100, 7:100, 15: 25}
runningdict2 = {0: 500, 3:500, 7:500, 10:100, 15:100, 30:100}
-def insert_quotes():
+def insert_quotes(year=2014):
root_dir = '/home/share/CorpCDOs'
quote_dir = os.path.join(root_dir, 'Tranche_data', 'Quotes')
quotefiles = [f for f in os.listdir(quote_dir) if 'csv' in f]
@@ -31,9 +31,10 @@ def insert_quotes():
for csvdict in reader:
try:
timestamp = datetime.datetime.strptime(csvdict['Date'], "%d %b %H:%M")
- timestamp = timestamp.replace(year=2014)
+ timestamp = timestamp.replace(year=int(year))
except ValueError:
- pdb.set_trace()
+ logging.error("%s: Date in the wrong format", csvdict['Date'])
+ return
attach = int(csvdict['Attach'])
series = int(csvdict['Series'])
@@ -42,28 +43,30 @@ def insert_quotes():
continue
#common values to all indices
- d = {'quotedate' : timestamp,
- 'tranchedelta': convert(csvdict['Delta']),
- 'quotesource' : csvdict['Source'],
- 'series': series,
- 'version': version,
- 'attach': attach,
- 'detach': int(csvdict['Detach']),
- 'tenor': tenordict[csvdict['Tenor']]
- }
+ try:
+ d = {'quotedate' : timestamp,
+ 'tranchedelta': convert(csvdict['Delta']),
+ 'quotesource' : csvdict['Source'],
+ 'series': series,
+ 'version': version,
+ 'attach': attach,
+ 'detach': int(csvdict['Detach']),
+ 'tenor': tenordict[csvdict['Tenor']]
+ }
+ except KeyError:
+ continue
if csvdict['Ticker'] == 'CDX-NAHY':
if csvdict['Price Bid']=='':
continue
- if series==9:
- version = 20
- elif series==10:
- version = 19
-
+ try:
+ trancheupfront = (float(csvdict['Price Bid'])+float(csvdict['Price Ask']))/2
+ except ValueError:
+ trancheupfront = None
d.update({'indexrefprice': float(csvdict['Ref']),
'indexrefspread': 375 if series==9 else 500,
- 'trancheupfront' : (float(csvdict['Price Bid'])+float(csvdict['Price Ask']))/2,
+ 'trancheupfront' : trancheupfront,
'trancherunning' : 0 if series in [9, 10] and attach==10 else 500,
'index': 'HY'
})
@@ -76,14 +79,15 @@ def insert_quotes():
trancheupfront = (float(csvdict['Upfront Bid'])+float(csvdict['Upfront Ask']))/2
except ValueError:
trancheupfront = None
- d.update({
- 'indexrefspread': int(float(csvdict['Ref'])),
- 'trancheupfront' : trancheupfront,
- 'trancherunning' : runningdict2[attach] if series<19 else runningdict1[attach],
- 'index' : 'IG'})
-
+ try:
+ d.update({'indexrefspread': int(float(csvdict['Ref'])),
+ 'trancheupfront' : trancheupfront,
+ 'trancherunning' : runningdict2[attach] if series<19 else runningdict1[attach],
+ 'index' : 'IG'})
+ except KeyError:
+ continue
elif csvdict['Ticker'] == 'ITRAXX-Europe':
- if series==9:
+ if series<=15:
if attach<=6:
trancherunning = 500 if attach<=3 else 300
try:
@@ -99,7 +103,10 @@ def insert_quotes():
if series==19:
if attach<=3:
trancherunning = 500
- trancheupfront = (float(csvdict['Upfront Bid'])+float(csvdict['Upfront Ask']))/2
+ try:
+ trancheupfront = (float(csvdict['Upfront Bid'])+float(csvdict['Upfront Ask']))/2
+ except ValueError:
+ trancheupfront=None
else:
try:
trancherunning=(float(csvdict['Bid'])+float(csvdict['Ask']))/2
@@ -123,7 +130,6 @@ def insert_quotes():
'index' : 'EU',
})
data.append(d)
-
with engine.connect() as conn:
for i, l in enumerate(data):
with conn.begin() as t: