diff options
Diffstat (limited to 'python/markit/rates.py')
| -rw-r--r-- | python/markit/rates.py | 48 |
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() |
