diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/new_index_series.py | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/python/new_index_series.py b/python/new_index_series.py index d3843412..f9784f85 100644 --- a/python/new_index_series.py +++ b/python/new_index_series.py @@ -15,6 +15,9 @@ def bbg_name(index_type: str, series: int, tenor="5yr", version=None) -> str: index_name = "ITRX" elif index_type == "HYBB": index_name = "" + elif index_type == "EUFS": + index_name = "" + index_type = "SNRFIN" else: index_name = "CDX" return f"{index_name} {index_type} CDSI S{series} {f'V{version} ' if version else ''}{tenor[:2].upper()} Corp".lstrip() @@ -22,6 +25,7 @@ def bbg_name(index_type: str, series: int, tenor="5yr", version=None) -> str: def new_basket_id( conn, + session, index_type, series, version=1, @@ -31,9 +35,8 @@ def new_basket_id( ): if red is None: name = bbg_name(index_type, series, version=version) - with init_bbg_session() as session: - data = retrieve_data(session, [name], ["CDS_RED_PAIR_CODE"]) - red = data[name]["CDS_RED_PAIR_CODE"] + data = retrieve_data(session, [name], ["CDS_RED_PAIR_CODE"]) + red = data[name]["CDS_RED_PAIR_CODE"] sql_str = ( "INSERT INTO index_version(index, series, version, redindexcode) " "VALUES(%s, %s, %s, %s) RETURNING basketid" @@ -55,15 +58,15 @@ def new_basket_id( return basket_id -def get_index_members(index_type: str, series: int) -> pd.DataFrame: +def get_index_members(session, index_type: str, series: int) -> pd.DataFrame: name = bbg_name(index_type, series) - with init_bbg_session() as session: - df = retrieve_data(session, [name], ["INDX_MEMBERS"]) - df = df[name]["INDX_MEMBERS"] - tickers = df["column 4"] - company_ids = retrieve_data( - session, [t + " Corp" for t in tickers], ["cds_company_id"] - ) + df = retrieve_data(session, [name], ["INDX_MEMBERS"]) + df = df[name]["INDX_MEMBERS"] + breakpoint() + tickers = df["column 4"] + company_ids = retrieve_data( + session, [t + " Corp" for t in tickers], ["cds_company_id"] + ) company_ids = pd.DataFrame.from_dict(company_ids, orient="index") company_ids = company_ids.reset_index() company_ids["index"] = company_ids["index"].str.replace(" Corp", "") @@ -93,7 +96,7 @@ def new_index_series(conn, basketid, df): conn.commit() -def add_missing_issuers(conn, df): +def add_missing_issuers(conn, session, df): all_company_ids = pd.read_sql_query( "SELECT company_id, seniority FROM bbg_issuers", conn, @@ -101,18 +104,19 @@ def add_missing_issuers(conn, df): ) df = df.reset_index().set_index(["company_id", "seniority"]) df = df.loc[df.index.difference(all_company_ids.index)] - with init_bbg_session() as session: - tickers = [f"{t} Corp" for t in df.ticker] - bbg_data = retrieve_data( - session, - tickers, - [ - "cds_restructuring_type", - "cds_corp_tkr", - "restructuring_type_short_code", - "cds_curve_info", - ], - ) + if df.empty: + return [] + tickers = [f"{t} Corp" for t in df.ticker] + bbg_data = retrieve_data( + session, + tickers, + [ + "cds_restructuring_type", + "cds_corp_tkr", + "restructuring_type_short_code", + "cds_curve_info", + ], + ) sql_str = ( "INSERT INTO bbg_issuers " "(name, company_id, ticker, currency, seniority, doc_clause, cds_curve, short_code)" @@ -151,8 +155,9 @@ if __name__ == "__main__": from serenitas.utils.db import serenitas_pool conn = serenitas_pool.getconn() - df = get_index_members("HYBB", 35) - missing = add_missing_issuers(conn, df) - basketid = new_basket_id(conn, "HYBB", 35, coupon=500) + with init_bbg_session() as session: + df = get_index_members(session, "EUFS", 36) + missing = add_missing_issuers(conn, session, df) + basketid = new_basket_id(conn, session, "EUFS", 36, coupon=100) new_index_series(conn, basketid, df) serenitas_pool.putconn(conn) |
