aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/headers.py4
-rw-r--r--python/mtm_upload.py30
-rw-r--r--python/process_queue.py6
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)