diff options
Diffstat (limited to 'python/monthend_recon_bowdst.py')
| -rw-r--r-- | python/monthend_recon_bowdst.py | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/python/monthend_recon_bowdst.py b/python/monthend_recon_bowdst.py index 346a3e50..a4d1919f 100644 --- a/python/monthend_recon_bowdst.py +++ b/python/monthend_recon_bowdst.py @@ -9,8 +9,8 @@ from serenitas.utils.db import dbconn, dawn_engine import datetime from pandas.tseries.offsets import BDay import numpy as np -import pandas_market_calendars as mcal from dateutil.relativedelta import relativedelta +from serenitas.analytics.dates import prev_business_day def get_dir(date): @@ -133,7 +133,7 @@ def recon(date, conn): bond_trades = bowd_bond_trades.merge( db_bond_trades, left_on="mellon_security_id", - right_on="cusip", + right_on="identifier", how="right", ) bond_trades = bond_trades[ @@ -145,7 +145,7 @@ def recon(date, conn): "current_notional", "base_market_value", "usd_market_value", - "cusip_y", + "identifier", ] ] bond_trades["db_notional"] = bond_trades["notional"] * bond_trades["factor"] @@ -167,7 +167,7 @@ def recon(date, conn): ) cdx_trades = pd.read_sql_query( - f"select security_id, security_desc, index, series, version, maturity, globeop_notional as admin_notional, notional * factor as db_notional, clean_nav as db_mv, globeop_nav as admin_mv from list_cds_marks(%s, null, 'BOWDST')", + f"select security_id, security_desc, index, series, version, maturity, globeop_notional as admin_notional, notional * factor as db_notional, clean_nav as db_mv, globeop_nav as admin_mv from list_cds_marks_legacy(%s, null, 'BOWDST')", conn, params=(date,), ) @@ -181,7 +181,7 @@ def recon(date, conn): ir_swaption_trades = pd.read_sql_query( "SELECT deal_id, option_type, strike, SECURITY_Id, expiration_date, notional AS db_notional, current_notional AS admin_notional, nav AS db_mv, base_market_value AS admin_mv FROM list_ir_swaption_positions(%s, 'BOWDST') LEFT JOIN bowdst_val ON deal_id=link_ref WHERE as_of_date=%s;", conn, - params=(last_bus_day(date), date), + params=(prev_business_day(date), date), ) kinds = [ @@ -225,16 +225,6 @@ def recon(date, conn): ) -def last_bus_day(date): - holidays = mcal.get_calendar("NYSE").holidays().holidays - if date in holidays: - return (date - BDay(1)).date() - elif not np.is_busday(date): - return (date - BDay(1)).date() - else: - return date - - def download_reports(date: datetime.date): target_directory = get_dir(date) @@ -245,7 +235,12 @@ def download_reports(date: datetime.date): for msg in em.get_msgs(path=["Month End Recon", "BNY"]): # We are getting reports the month after - if msg.datetime_received.month == date.month + 1: + from dateutil import relativedelta + + if ( + msg.datetime_received.month + == (date + relativedelta.relativedelta(months=1)).month + ): for attachment in msg.attachments: (target_directory / attachment.name).write_bytes(attachment.content) @@ -254,7 +249,7 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("end_date", type=datetime.date.fromisoformat) args = parser.parse_args() - download_reports(args.end_date) + # download_reports(args.end_date) dawndb = dbconn("dawndb") - load_val_report(args.end_date, dawndb) + # load_val_report(args.end_date, dawndb) recon(args.end_date, dawndb) |
