aboutsummaryrefslogtreecommitdiffstats
path: root/python/mtm_upload.py
blob: f97bd9084a85a1537cf2cf0fc16a0e6cdd2096f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from io import StringIO
import csv
from serenitas.utils.env import DAILY_DIR
from serenitas.utils.remote import SftpClient
import datetime
from trade_dataclasses import CDSDeal, SwaptionDeal, TerminationDeal
from headers import MTM_HEADERS

deal_registry = {
    "cds": CDSDeal,
    "swaption": SwaptionDeal,
    "termination": TerminationDeal,
}


def mtm_process_upload(tradeids, product_type):
    objs = [
        deal_registry[product_type].from_tradeid(tradeid).to_markit()
        for tradeid in tradeids
    ]
    buf = StringIO()
    csvwriter = csv.writer(buf)
    csvwriter.writerow(MTM_HEADERS[product_type])
    csvwriter.writerows(
        [obj.get(h, None) for h in MTM_HEADERS[product_type]] for obj in objs
    )
    buf = buf.getvalue().encode()
    fname = (
        f"MTM.{datetime.datetime.now():%Y%m%d.%H%M%S}.{product_type.capitalize()}.csv"
    )
    sftp = SftpClient.from_creds("mtm")
    sftp.put(buf, fname)
    dest = DAILY_DIR / str(datetime.date.today()) / fname
    dest.write_bytes(buf)