aboutsummaryrefslogtreecommitdiffstats
path: root/python/insert_composite_quotes.py
blob: 027cd42ec6c8ac54268b66e88d1db371b6813176 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from sqlalchemy import Table, create_engine, MetaData
import os
import csv
import datetime

##script to load quotes from markit composite quotes csv file
engine = create_engine('postgresql://mlpdb_user:Serenitas1@debian/mlpdb')
metadata = MetaData(bind = engine)
quotes = Table('tranche_quotes', metadata, autoload = True)
ins = quotes.insert()

root_dir = '/home/share/CorpCDOs'

def convert(x):
    try:
        return float(x)
    except:
        return None

tenordict = {'3Y': '3yr', '5Y': '5yr', '7Y':'7yr', '10Y':'10yr'}

with open(os.path.join(root_dir, 'Tranche_data', 'CDXNAIG Tranches.csv')) as fh:
    reader = csv.DictReader(fh)
    data = []
    for csvdict in reader:
        timestamp =  datetime.datetime.strptime(csvdict['Date'], "%m/%d/%Y")
        if timestamp==datetime.datetime(2010, 7, 5):
            continue
        attach = int(float(csvdict['Attachment'])*100)
        detach = int(float(csvdict['Detachment'])*100)
        series = int(csvdict['Index Series'])
        version = int(csvdict['Index Version'])

        d = {'quotedate' : timestamp,
             'indexrefprice': float(csvdict['Index Price Mid'])*100,
             'indexrefspread': 80 if series==9 else 100,
             'quotesource' : 'MKIT',
             'trancheupfront' : convert(csvdict['Tranche Upfront Mid']),
             'trancherunning' : convert(csvdict['Tranche Spread Mid']),
             'tenor' : tenordict[csvdict['Index Term']],
             'index' : 'IG',
             'series': series,
             'version': version,
             'attach': attach,
             'detach': detach,
             'corratdetachment': convert(csvdict['Base Correlation'])
             }
        data.append(d)

with engine.begin() as conn:
    conn.execute(ins, data)