aboutsummaryrefslogtreecommitdiffstats
path: root/python/markit
diff options
context:
space:
mode:
Diffstat (limited to 'python/markit')
-rw-r--r--python/markit/rates.py48
1 files changed, 41 insertions, 7 deletions
diff --git a/python/markit/rates.py b/python/markit/rates.py
index 0519d401..5796a295 100644
--- a/python/markit/rates.py
+++ b/python/markit/rates.py
@@ -156,25 +156,59 @@ def update_bbg_desc(conn, session, download_date):
"INT_RATE_FUT_START_DT",
"INT_RATE_FUT_END_DT",
"CRNCY",
+ "FUT_NOTL_BOND",
]
data = retrieve_data(session, missing_tickers, fields)
with conn.cursor() as c:
for k, v in data.items():
if v["SECURITY_TYP2"] == "Future":
- params = (k, "FUT", v["CRNCY"], None, v["INT_RATE_FUT_START_DT"].date())
+ if v["FUT_NOTL_BOND"] == "Euro$ 3Mo TD":
+ params = (
+ k,
+ "FUT",
+ v["CRNCY"],
+ "3M",
+ v["INT_RATE_FUT_START_DT"].date(),
+ v["INT_RATE_FUT_END_DT"].date(),
+ )
+ elif v["FUT_NOTL_BOND"] == "1mo SOFR":
+ params = (
+ k,
+ "SFR_FUT",
+ v["CRNCY"],
+ "1M",
+ v["INT_RATE_FUT_START_DT"].date(),
+ v["INT_RATE_FUT_END_DT"].date(),
+ )
+ elif v["FUT_NOTL_BOND"] == "3mo SOFR":
+ params = (
+ k,
+ "SFR_FUT",
+ v["CRNCY"],
+ "3M",
+ v["INT_RATE_FUT_START_DT"].date(),
+ v["INT_RATE_FUT_END_DT"].date(),
+ )
+ else:
+ raise ValueError(f"Unknown future type {k['FUT_NOTL_BOND']}")
elif v["SECURITY_TYP2"] == "FIXED_FLOAT":
- params = (k, "SWP", v["CRNCY"], v["SECURITY_TENOR_TWO"], None)
+ params = (k, "SWP", v["CRNCY"], v["SECURITY_TENOR_TWO"], None, None)
elif v["SECURITY_TYP2"] == "FIXED_FLOAT_OIS":
- params = (k, "OIS", v["CRNCY"], v["SECURITY_TENOR_TWO"], None)
+ params = (k, "OIS", v["CRNCY"], v["SECURITY_TENOR_TWO"], None, None)
elif v["SECURITY_TYP2"] == "DEPOSIT":
- params = (k, "DEP", v["CRNCY"], v["SECURITY_TENOR_ONE"], None)
+ params = (k, "DEP", v["CRNCY"], v["SECURITY_TENOR_ONE"], None, None)
elif v["SECURITY_TYP2"] == "Index":
- params = (k, "IND", v["CRNCY"], None, None)
+ params = (k, "IND", v["CRNCY"], None, None, None)
elif v["SECURITY_TYP2"] == "BASIS":
- params = (k, "BASIS", v["CRNCY"], v["SECURITY_TENOR_TWO"], None)
+ params = (k, "BASIS", v["CRNCY"], v["SECURITY_TENOR_TWO"], None, None)
else:
raise ValueError("Unkown security type")
- c.execute("INSERT INTO bbg_rate_tickers VALUES(%s, %s, %s, %s, %s)", params)
+ c.execute(
+ "INSERT INTO bbg_rate_tickers VALUES(%s, %s, %s, %s, %s, %s) "
+ "ON CONFLICT (bbg_ticker) DO UPDATE SET end_date=EXCLUDED.end_date, "
+ "tenor=EXCLUDED.tenor, quote_type=EXCLUDED.quote_type",
+ params,
+ )
conn.commit()