diff options
Diffstat (limited to 'python/markit')
| -rw-r--r-- | python/markit/rates.py | 87 |
1 files changed, 49 insertions, 38 deletions
diff --git a/python/markit/rates.py b/python/markit/rates.py index 8f1c0ffb..e7c35ade 100644 --- a/python/markit/rates.py +++ b/python/markit/rates.py @@ -192,52 +192,63 @@ def update_bbg_desc(conn, session, download_date): "INT_RATE_FUT_END_DT", "CRNCY", "FUT_NOTL_BOND", + "MATURITY", ] data = retrieve_data(session, missing_tickers, fields) with conn.cursor() as c: for k, v in data.items(): - if v["SECURITY_TYP2"] == "Future": - if v["FUT_NOTL_BOND"] == "Euro$ 3Mo TD": + match v["SECURITY_TYP2"]: + case "Future": + 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']}") + case "FIXED_FLOAT": + params = (k, "SWP", v["CRNCY"], v["SECURITY_TENOR_TWO"], None, None) + case "FIXED_FLOAT_OIS": + params = (k, "OIS", v["CRNCY"], v["SECURITY_TENOR_TWO"], None, None) + case "DEPOSIT": + params = (k, "DEP", v["CRNCY"], v["SECURITY_TENOR_ONE"], None, None) + case "Index": + params = (k, "IND", v["CRNCY"], None, None, None) + case "BASIS": params = ( k, - "FUT", + "BASIS", v["CRNCY"], - "3M", - v["INT_RATE_FUT_START_DT"].date(), - v["INT_RATE_FUT_END_DT"].date(), + v["SECURITY_TENOR_TWO"], + None, + None, ) - 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, None) - elif v["SECURITY_TYP2"] == "FIXED_FLOAT_OIS": - 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, None) - elif v["SECURITY_TYP2"] == "Index": - params = (k, "IND", v["CRNCY"], None, None, None) - elif v["SECURITY_TYP2"] == "BASIS": - params = (k, "BASIS", v["CRNCY"], v["SECURITY_TENOR_TWO"], None, None) - else: - raise ValueError("Unkown security type") + case "FORWARD": + params = (k, "FWD", v["CRNCY"], v["MATURITY"], None, None) + case _: + raise ValueError("Unkown security type") 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, " |
