aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/book_bbg.py41
1 files changed, 27 insertions, 14 deletions
diff --git a/python/book_bbg.py b/python/book_bbg.py
index 0c4978d0..7d345789 100644
--- a/python/book_bbg.py
+++ b/python/book_bbg.py
@@ -9,6 +9,7 @@ from serenitas.utils.db import dbconn
fund_dictionary = {"SERENITAS_CGMF": "SERCGMAST", "BOWDOINST": "BOWDST"}
fcm_dictionary = {"Bank of America, N.A.": "BAML", "Goldman Sachs": "GS"}
+counterparty_dictionary = {"BNP PARIB.": "BNPBNY"}
def download_files(date):
@@ -25,13 +26,13 @@ def download_files(date):
modification_time = datetime.datetime.fromtimestamp(
f.st_mtime, tz=datetime.timezone.utc
).astimezone(est)
- if not local_file.exists() and (modification_time.date() == date):
+ if notlocal_file.exists() and (modification_time.date() == date):
sftp.client.get(f"{src}/{f.filename}", localpath=local_file)
downloaded_files.append(local_file)
return downloaded_files
-def get_bbg_data(bbg_id, trade_date):
+def get_bbg_data(bbg_id, trade_date, conn):
try:
_, indextype, _, series, tenor = bbg_id.split()
except ValueError:
@@ -45,49 +46,61 @@ def get_bbg_data(bbg_id, trade_date):
"WHERE index=%s and series=%s and tenor=%s "
" and lastdate >=%s ORDER BY version"
)
- db = get_db()
- with db.cursor() as c:
+ with conn.cursor() as c:
c.execute(sql_str, (indextype, series, tenor, trade_date))
redcode, maturity, coupon = c.fetchone()
return str(maturity), redcode, coupon
def cdx_booking_process(path):
+ conn = dbconn("dawndb")
reader = csv.DictReader(open(path))
- for csvdict in reader:
+ trades = []
+ for csv_dict in reader:
rename_keys(
csv_dict,
{
"Curncy": "currency",
- "Quantity": "notional",
+ # 'Net': 'upfront'
},
)
- csv_dict["security_desc"] = csv_dict["security_desc"].replace(" PRC", "")
+ csv_dict["upfront"] = float(csv_dict["Net"])
+ csv_dict["security_desc"] = csv_dict["Security"].replace(" PRC", "")
csv_dict["traded_level"] = float(csv_dict["Price (Dec)"])
csv_dict["notional"] = float(csv_dict["Quantity"])
csv_dict["trade_date"] = datetime.datetime.strptime(
- csv_dict["Trade Dt"], "%Y-%m-%d"
+ csv_dict["Trade Dt"], "%m/%d/%Y"
)
csv_dict["upfront_settle_date"] = datetime.datetime.strptime(
- csv_dict["SetDt"], "%Y-%m-%d"
+ csv_dict["SetDt"], "%m/%d/%Y"
)
csv_dict["protection"] = "Buyer" if csv_dict["Side"] == "B" else "Seller"
csv_dict["account_code"] = fcm_dictionary[csv_dict["Client FCM"]]
csv_dict["fund"] = fund_dictionary[csv_dict["Account"]]
csv_dict["action"] = "NEW"
- csv_dict["folder"] = None
- csv_dict["cp_code"] = None
+ csv_dict["folder"] = "*"
+ csv_dict["cp_code"] = counterparty_dictionary[csv_dict["BrkrName"]]
csv_dict["payment_rolldate"] = "Following"
csv_dict["day_count"] = "ACT/360"
csv_dict["frequency"] = 4
csv_dict["swap_type"] = "CD_INDEX"
- csv_dict["portfolio"] = None
+ csv_dict["portfolio"] = "UNALLOCATED"
+ csv_dict["clearing_facility"] = "ICE-CREDIT"
(
csv_dict["maturity"],
csv_dict["security_id"],
csv_dict["fixed_rate"],
- ) = get_bbg_data(csv_dict["security_desc"], csv_dict["trade_date"])
+ ) = get_bbg_data(csv_dict["security_desc"], csv_dict["trade_date"], conn)
csv_dict["effective_date"] = datetime.date(2021, 12, 20)
+ trades.append(csv_dict)
+
+ with conn.cursor() as c:
+ c.executemany(
+ "INSERT INTO cds (action, folder, cp_code, trade_date, effective_date, maturity, currency, payment_rolldate, notional, fixed_rate, day_count, frequency, protection, security_id, security_desc, upfront, upfront_settle_date, swap_type, clearing_facility, portfolio, fund) "
+ "VALUES (%(action)s, %(folder)s, %(cp_code)s, %(trade_date)s, %(effective_date)s, %(maturity)s, %(currency)s, %(payment_rolldate)s, %(notional)s, %(fixed_rate)s, %(day_count)s, %(frequency)s, %(protection)s, %(security_id)s, %(security_desc)s, %(upfront)s, %(upfront_settle_date)s, %(swap_type)s, %(clearing_facility)s, %(portfolio)s, %(fund)s);",
+ trades,
+ )
+ conn.commit()
def book_trades(date):
@@ -99,4 +112,4 @@ def book_trades(date):
if __name__ == "__main__":
- book_trades(datetime.date(2022, 2, 4))
+ book_trades(datetime.date(2022, 2, 7))