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.py44
1 files changed, 41 insertions, 3 deletions
diff --git a/python/insert_fx_id.py b/python/insert_fx_id.py
index 40053ff7..ef23770c 100644
--- a/python/insert_fx_id.py
+++ b/python/insert_fx_id.py
@@ -6,7 +6,9 @@ from serenitas.utils.env import DAILY_DIR
from serenitas.analytics.dates import prev_business_day
from serenitas.utils.db import dawn_engine
from serenitas.utils.db import dbconn
-from collateral.baml_isda import load_excel
+from collateral.baml_isda import load_excel as load_excel_baml
+from collateral.gs import load_file as load_excel_gs
+
from report_ops.enums import FundEnum
logger = logging.getLogger(__name__)
@@ -39,7 +41,7 @@ def read_BAMSNY(fund, workdate):
fname = next(
REPORTS_DIR.glob(f"301__LMCG_INVESTMEN{get_tag(fund)}_CSA_{workdate:%m%d%Y}_*")
)
- df = load_excel(fname)
+ df = load_excel_baml(fname)
df = df[df["ProductID"] == "FX_Fwd"]
df = df[
[
@@ -96,6 +98,38 @@ def read_MSCSNY(fund, workdate):
yield from df.itertuples()
+def extract_amounts_and_currencies(row):
+ cpty_id = row["Trade Id"]
+ trade_date = datetime.datetime.strptime(row["Trade Date"], "%d-%b-%Y").date()
+ settle_date = datetime.datetime.strptime(row["Maturity Date"], "%d-%b-%Y").date()
+ if row["Notional(1)"] < 0: # From perspective of GSIL
+ buy_amount = abs(row["Notional(1)"])
+ buy_currency = row["Not1Ccy"]
+ sell_amount = abs(row["Notional(2)"])
+ sell_currency = row["Not2Ccy"]
+ else:
+ buy_amount = abs(row["Notional(2)"])
+ buy_currency = row["Not2Ccy"]
+ sell_amount = abs(row["Notional(1)"])
+ sell_currency = row["Not1Ccy"]
+ return {
+ "cpty_id": cpty_id,
+ "trade_date": trade_date,
+ "settle_date": settle_date,
+ "buy_amount": buy_amount,
+ "buy_currency": buy_currency,
+ "sell_amount": sell_amount,
+ "sell_currency": sell_currency,
+ }
+
+
+def read_GOLDNY(fund, workdate):
+ df = load_excel_gs(prev_business_day(workdate), fund, "Trade_Detail")
+ df = df[df["Transaction Type"] == "FX"]
+ result = df.apply(extract_amounts_and_currencies, axis=1)
+ yield from pd.DataFrame.from_records(result).itertuples()
+
+
def get_forwards(cob):
df = pd.read_sql_query("SELECT * FROM forward_trades", con=dawn_engine)
df[["buy_amount", "sell_amount"]] = df[["buy_amount", "sell_amount"]].apply(
@@ -154,7 +188,11 @@ def main(workdate):
conn = dbconn("dawndb")
dawn_trades = get_forwards(workdate)
for fund in FundEnum:
- for counterparty in ("MSCSNY", "BAMSNY"):
+ for counterparty in (
+ "MSCSNY",
+ "BAMSNY",
+ "GOLDNY",
+ ):
process_rows(fund, counterparty, workdate, dawn_trades, conn)