diff options
Diffstat (limited to 'python/admin_security_upload.py')
| -rw-r--r-- | python/admin_security_upload.py | 51 |
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) |
