diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/headers.py | 4 | ||||
| -rw-r--r-- | python/mtm_upload.py | 30 | ||||
| -rw-r--r-- | python/process_queue.py | 6 |
3 files changed, 15 insertions, 25 deletions
diff --git a/python/headers.py b/python/headers.py index 9759c77f..9b2534f4 100644 --- a/python/headers.py +++ b/python/headers.py @@ -450,7 +450,7 @@ MTM_HEADERS = { "Alternate Trade ID", "Definitions Type", ], - "swaptions": [ + "swaption": [ "Swap ID", "Allocation ID", "Description", @@ -527,7 +527,7 @@ MTM_HEADERS = { "Alternate Trade ID", "Sub Account Abbreviation", ], - "terminations": [ + "termination": [ "Swap ID", "Allocation ID", "Description", diff --git a/python/mtm_upload.py b/python/mtm_upload.py index fa2f526e..d56a60d2 100644 --- a/python/mtm_upload.py +++ b/python/mtm_upload.py @@ -8,37 +8,25 @@ from headers import MTM_HEADERS deal_registry = { "cds": CDSDeal, - "swaptions": SwaptionDeal, + "swaption": SwaptionDeal, "termination": TerminationDeal, } -def process_upload(tradeid, asset_type): - obj = deal_registry["asset_type"].from_tradeid(tradeid).to_markit() +def mtm_process_upload(tradeids, asset_type): + objs = [ + deal_registry["asset_type"].from_tradeid(tradeid).to_markit() + for tradeid in tradeids + ] buf = StringIO() csvwriter = csv.writer(buf) csvwriter.writerow(MTM_HEADERS[asset_type]) - csvwriter.writerows([obj.get(h, None) for h in MTM_HEADERS[asset_type]]) + csvwriter.writerows( + [obj.get(h, None) for h in MTM_HEADERS[asset_type]] for obj in objs + ) buf = buf.getvalue().encode() fname = f"MTM.{datetime.datetime.now():%Y%m%d.%H%M%S}.{asset_type.capitalize()}.csv" sftp = SftpClient.from_creds("mtm") sftp.put(buf, fname) dest = DAILY_DIR / str(datetime.date.today()) / fname dest.write_bytes(buf) - - -def upload_mtm_trades(trade_type, tradeid, conn=None): - match trade_type: - case "swaption": - process_upload( - SwaptionDeal.from_tradeid(tradeid).to_markit(), trade_type, True - ) - case "cds": - process_upload(CDSDeal.from_tradeid(tradeid).to_markit(), trade_type, True) - case "termination": - process_upload(terminations(tradeid, conn), trade_type, True) - - -if __name__ == "__main__": - conn = dbconn("dawndb") - upload_trades(conn) diff --git a/python/process_queue.py b/python/process_queue.py index 0fc42966..9c3143fb 100644 --- a/python/process_queue.py +++ b/python/process_queue.py @@ -30,7 +30,7 @@ from typing import Tuple, Union from quantlib.time.api import pydate_from_qldate, UnitedStates, Days, Date from tabulate import tabulate from headers import get_headers, get_termination_headers -from mtm_upload import upload_mtm_trades +from mtm_upload import mtm_process_upload _client_name = {"SERCGMAST": "Serenitas", "BOWDST": "HEDGEMARK", "BRINKER": "LMCG"} @@ -78,6 +78,7 @@ def process_indicative( for trade in get_trades(p, trade_type): process_fun(conn, session, trade) fund = trade["fund"] + mtm_uploads = [] if trade.get("upload", True) and ( fund in ("SERCGMAST", "BOWDST") or trade_type in ("cds", "swaption") ): @@ -86,7 +87,8 @@ def process_indicative( (trade_type == "cds" and trade.get("attach")) or (trade_type == "swaption" and trade.get("swap_type", "CD_INDEX_OPTION")) ) and trade.get("upload", True): - upload_mtm_trades(trade_type, trade["id"]) + mtm_uploads.append(trade["id"]) + mtm_process_upload(mtm_uploads, trade_type) p.delete(trade_type) |
