diff options
Diffstat (limited to 'python/markit/loans.py')
| -rw-r--r-- | python/markit/loans.py | 93 |
1 files changed, 61 insertions, 32 deletions
diff --git a/python/markit/loans.py b/python/markit/loans.py index 3e6766cd..5eae5334 100644 --- a/python/markit/loans.py +++ b/python/markit/loans.py @@ -8,21 +8,30 @@ from psycopg2 import IntegrityError logger = logging.getLogger(__name__)
+
def download_facility(workdate, payload):
- r = requests.post('https://loans.markit.com/loanx/LoanXFacilityUpdates.csv',
- params=payload)
- facility_filename = os.path.join(os.environ['DATA_DIR'], "Facility files", "facility_{0}.csv".format(workdate))
+ r = requests.post(
+ "https://loans.markit.com/loanx/LoanXFacilityUpdates.csv", params=payload
+ )
+ facility_filename = os.path.join(
+ os.environ["DATA_DIR"], "Facility files", "facility_{0}.csv".format(workdate)
+ )
with open(facility_filename, "wb") as fh:
fh.write(r.content)
-@with_connection('etdb')
+
+@with_connection("etdb")
def insert_facility(conn, workdate):
- facility_filename = os.path.join(os.environ['DATA_DIR'], "Facility files", "facility_{0}.csv".format(workdate))
- sqlstring = "INSERT INTO markit_facility VALUES( {0} )".format( ",".join(["%s"] * 13))
- with open( facility_filename, "r") as fh:
+ facility_filename = os.path.join(
+ os.environ["DATA_DIR"], "Facility files", "facility_{0}.csv".format(workdate)
+ )
+ sqlstring = "INSERT INTO markit_facility VALUES( {0} )".format(
+ ",".join(["%s"] * 13)
+ )
+ with open(facility_filename, "r") as fh:
reader = csv.reader(fh)
header = next(reader)
- if 'Authentication failed' in header:
+ if "Authentication failed" in header:
logger.error("Couldn't authenticate")
raise SystemExit
with conn.cursor() as c:
@@ -36,42 +45,60 @@ def insert_facility(conn, workdate): else:
conn.commit()
-@with_connection('etdb')
+
+@with_connection("etdb")
def download_marks(conn, workdate, payload):
- r = requests.post('https://loans.markit.com/loanx/LoanXMarks.csv',
- params=payload)
- marks_filename = os.path.join(os.environ['DATA_DIR'], "markit", "markit_data_{0}.csv".format(workdate))
+ r = requests.post("https://loans.markit.com/loanx/LoanXMarks.csv", params=payload)
+ marks_filename = os.path.join(
+ os.environ["DATA_DIR"], "markit", "markit_data_{0}.csv".format(workdate)
+ )
with open(marks_filename, "wb") as fh:
fh.write(r.content)
- sqlstring = "INSERT INTO markit_prices VALUES( {0} )".format(",".join([ "%s" ] * 5))
+ sqlstring = "INSERT INTO markit_prices VALUES( {0} )".format(",".join(["%s"] * 5))
with open(marks_filename, "r") as fh:
reader = csv.DictReader(fh)
- if 'Authentication failed' in reader.fieldnames[0]:
+ if "Authentication failed" in reader.fieldnames[0]:
logger.error("Couldn't authenticate")
raise SystemExit
with conn.cursor() as c:
for line in reader:
- if line['Depth'] == 'implied':
- line['Depth'] = 0
- c.execute(sqlstring, (line['LoanX ID'], line['Bid'], line['Offer'],
- line['Depth'], line['Mark Date']))
+ if line["Depth"] == "implied":
+ line["Depth"] = 0
+ c.execute(
+ sqlstring,
+ (
+ line["LoanX ID"],
+ line["Bid"],
+ line["Offer"],
+ line["Depth"],
+ line["Mark Date"],
+ ),
+ )
conn.commit()
-@with_connection('etdb')
+
+@with_connection("etdb")
def update_facility(conn, workdate, payload):
- #we update the missing facility loanxids
- sqlstring = "SELECT loanxid FROM markit_prices EXCEPT SELECT loanxid FROM markit_facility";
- facility_diff_filename = os.path.join(os.environ['DATA_DIR'], "Facility files",
- "facility_diff_{0}.csv".format(workdate))
- with open( facility_diff_filename, "wt") as fh:
+ # we update the missing facility loanxids
+ sqlstring = (
+ "SELECT loanxid FROM markit_prices EXCEPT SELECT loanxid FROM markit_facility"
+ )
+ facility_diff_filename = os.path.join(
+ os.environ["DATA_DIR"],
+ "Facility files",
+ "facility_diff_{0}.csv".format(workdate),
+ )
+ with open(facility_diff_filename, "wt") as fh:
flag = False
with conn.cursor() as c:
c.execute(sqlstring)
for loanxid in c:
- payload.update({'LOANXID': loanxid[0]})
- r = requests.post('https://loans.markit.com/loanx/LoanXOneFacility.csv',
- params=payload)
- header, *rest = r.content.decode().split('\n')
+ payload.update({"LOANXID": loanxid[0]})
+ r = requests.post(
+ "https://loans.markit.com/loanx/LoanXOneFacility.csv",
+ params=payload,
+ )
+ header, *rest = r.content.decode().split("\n")
if flag:
fh.write(rest[0] + "\n")
else:
@@ -79,9 +106,11 @@ def update_facility(conn, workdate, payload): fh.write(rest[0] + "\n")
flag = True
- sqlstring = "INSERT INTO markit_facility(LoanXID, PMDID, IssuerName, dealname, facility_type," \
- "loanx_facility_type, initial_amount, initial_spread, maturity, industry, modified_time)" \
- "VALUES( {0} )".format( ",".join( ["%s"] * 11))
+ sqlstring = (
+ "INSERT INTO markit_facility(LoanXID, PMDID, IssuerName, dealname, facility_type,"
+ "loanx_facility_type, initial_amount, initial_spread, maturity, industry, modified_time)"
+ "VALUES( {0} )".format(",".join(["%s"] * 11))
+ )
try:
with open(facility_diff_filename, "r") as fh:
reader = csv.reader(fh)
@@ -89,7 +118,7 @@ def update_facility(conn, workdate, payload): with conn.cursor() as c:
for line in reader:
newline = [v or None for v in line] + [workdate]
- newline.pop(9) # remove the spread to maturity value
+ newline.pop(9) # remove the spread to maturity value
c.execute(sqlstring, newline)
conn.commit()
except StopIteration:
|
