aboutsummaryrefslogtreecommitdiffstats
path: root/python/load_markit_data.py
blob: 519149c4ee93c5532480adc4433b6b03a2e330f3 (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
52
53
54
55
56
57
import os
import os.path
import datetime
from datetime import date
import pdb
import csv
from db import conn
from common import root

def convertToNone(s):
    return None if (s=='' or s=='NA') else s

fields = ["LoanX ID", "Issuer", "Deal Name", "Facility", "Industry", \
          "Current SP Rating", "Current Moodys Rating", "Initial Amount",\
          "Final Maturity", "Initial Spread", "Bid", "Offer", "Depth", \
          "Spread To Maturity"]

c = conn.cursor()
c.execute("SELECT MAX(pricingdate) from markit_prices")
latestdate = c.fetchone()[0]
c.close()

sql_fields = ["LoanXID", "Issuer", "DealName", "Facility", "Industry", "SP",
              "Moodys", "Amount", "Maturity", "Spread", "Bid", "Offer", "Depth",
              "STM", "PricingDate"]

for filename in os.listdir(os.path.join(root, "data", "markit")):
    date = datetime.datetime.strptime(filename.split("_")[2].split(".")[0], '%Y-%m-%d').date()
    # only update the new data
    if latestdate is None or date > latestdate:
        with open( os.path.join(root, "data", "markit", filename) ) as fh:
            dr = csv.DictReader(fh)
            data = []
            for line in dr:
                try:
                    line['Final Maturity'] = \
                        datetime.datetime.strptime(line['Final Maturity'], '%d-%b-%y')
                except ValueError:
                    if line['Final Maturity'] !='':
                        print('Maturity non empty')
                if line['Depth'] == 'implied':
                    line['Depth'] = 0
                try:
                    temp = [convertToNone(line[key]) for key in fields]
                except KeyError:
                    pdb.set_trace()
                data.append(temp)

        c = conn.cursor()
        for row in data:
            sqlstring = "INSERT INTO markit_prices({0}) " \
                "VALUES({1})".format(",".join(sql_fields), ",".join(["%s"] * len(sql_fields)))
            c.execute(sqlstring, tuple(row) + (date,))
        conn.commit()
        c.close()
conn.close()
print("done")