aboutsummaryrefslogtreecommitdiffstats
path: root/python/insert_fx_id.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/insert_fx_id.py')
-rw-r--r--python/insert_fx_id.py27
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)