aboutsummaryrefslogtreecommitdiffstats
path: root/python/admin_security_upload.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/admin_security_upload.py')
-rw-r--r--python/admin_security_upload.py51
1 files changed, 36 insertions, 15 deletions
diff --git a/python/admin_security_upload.py b/python/admin_security_upload.py
index e63f33c8..240fd451 100644
--- a/python/admin_security_upload.py
+++ b/python/admin_security_upload.py
@@ -1,5 +1,6 @@
from itertools import groupby
import datetime
+import argparse
from serenitas.utils.db2 import dbconn
from serenitas.ops.trade_dataclasses import BondDeal
@@ -8,20 +9,40 @@ from report_ops.services import get_service
conn = dbconn("dawndb")
-with conn.cursor() as c:
- c.execute(
- "SELECT bt.*, accounts.counterparty AS account_counterparty FROM bond_trades bt LEFT JOIN accounts ON bt.account=accounts.code WHERE bt.fund=%s AND bt.trade_date=%s;",
- ("BOWDST", datetime.date(2023, 5, 9)),
- )
- trades = [t._asdict() for t in c]
- for account_counterparty, trades in groupby(
- trades, lambda x: x["account_counterparty"]
- ):
- service = get_service(account_counterparty)
- for t in trades:
- trade = BondDeal.from_dict(**t, scaled=True)
- service.push_trade(trade, "NEW")
- service.build_buffer("bond")
+
+def upload_to_custodian(fund, trade_date):
+ with conn.cursor() as c:
+ c.execute(
+ "SELECT bt.*, accounts.counterparty AS account_counterparty FROM bond_trades bt LEFT JOIN accounts ON bt.account=accounts.code WHERE bt.fund=%s AND bt.trade_date=%s;",
+ (
+ fund,
+ trade_date,
+ ),
+ )
+ trades = [t._asdict() for t in c]
+ for account_counterparty, trades in groupby(
+ trades, lambda x: x["account_counterparty"]
+ ):
+ if account_counterparty == "NT":
+ continue
+ service = get_service(account_counterparty)
+ for t in trades:
+ trade = BondDeal.from_dict(**t, scaled=True)
+ service.push_trade(trade, "NEW")
+ service.build_buffer("bond")
+
if __name__ == "__main__":
- pass
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ "trade_date",
+ type=datetime.date.fromisoformat,
+ default=datetime.date.today(),
+ nargs="?",
+ )
+ parser.add_argument(
+ "-n", "--no-upload", action="store_true", help="do not upload to CTM"
+ )
+ args = parser.parse_args()
+ for fund in ("SERCGMAST", "BOWDST", "BRINKER", "ISOSEL"):
+ upload_to_custodian(fund, args.trade_date)