diff options
Diffstat (limited to 'python/insert_fx_id.py')
| -rw-r--r-- | python/insert_fx_id.py | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/python/insert_fx_id.py b/python/insert_fx_id.py index ef648da9..82fabcd4 100644 --- a/python/insert_fx_id.py +++ b/python/insert_fx_id.py @@ -1,5 +1,6 @@ import argparse import datetime +import logging import pandas as pd from serenitas.utils.env import DAILY_DIR from serenitas.analytics.dates import prev_business_day @@ -7,6 +8,8 @@ from serenitas.utils.db import dawn_engine from serenitas.utils.db import dbconn from collateral.baml_isda import load_excel +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) FX_REPORT_COLUMNS = [ "cpty_id", @@ -32,10 +35,10 @@ def get_tag(fund): return "" -def read_BAMSNY(fund, cob): +def read_BAMSNY(fund, workdate): REPORTS_DIR = DAILY_DIR / fund / "BoA_reports" fname = next( - REPORTS_DIR.glob(f"301__LMCG_INVESTMEN{get_tag(fund)}_CSA_{cob:%m%d%Y}_*") + REPORTS_DIR.glob(f"301__LMCG_INVESTMEN{get_tag(fund)}_CSA_{workdate:%m%d%Y}_*") ) df = load_excel(fname) df = df[df["ProductID"] == "FX_Fwd"] @@ -62,9 +65,12 @@ def read_BAMSNY(fund, cob): yield from df.itertuples() -def read_MSCSNY(fund, cob): +def read_MSCSNY(fund, workdate): df = pd.read_excel( - DAILY_DIR / fund / "MS_reports" / f"Trade_Detail_FX_{cob:%Y%m%d}.xls" + DAILY_DIR + / fund + / "MS_reports" + / f"Trade_Detail_FX_{prev_business_day(workdate):%Y%m%d}.xls" ) df = df[ [ @@ -97,13 +103,13 @@ def get_forwards(cob): return df -def main(cob): +def main(workdate): conn = dbconn("dawndb") - dawn_trades = get_forwards(cob) + dawn_trades = get_forwards(workdate) for fund, fund_code in _fund_enums.items(): for counterparty in ("MSCSNY", "BAMSNY"): read_fun = globals()[f"read_{counterparty}"] - for row in read_fun(fund, cob): + for row in read_fun(fund, workdate): if row.cpty_id not in dawn_trades.cpty_id.values: matching_candidates = dawn_trades.loc[ (dawn_trades["cp_code"] == counterparty) @@ -140,6 +146,7 @@ def main(cob): matched_candidate.id, ), ) + logger.info("UPDATED %", matched_candidate.id) conn.commit() else: raise ValueError( @@ -152,11 +159,11 @@ def main(cob): if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( - "cob", + "workdate", type=datetime.date, nargs="?", - default=prev_business_day(datetime.date.today()), + default=datetime.date.today(), help="Date to process (YYYY-MM-DD)", ) args = parser.parse_args() - main(args.cob) + main(args.workdate) |
