aboutsummaryrefslogtreecommitdiffstats
path: root/python/margin_estimates.py
blob: bd0f564725679ca4ac47b341e95d67661b6d170a (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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from serenitas.utils.db import dbconn
from serenitas.utils.exchange import ExchangeMessage, FileAttachment
from exchangelib import HTMLBody
import datetime
import argparse
from pandas.tseries.offsets import BDay
from io import StringIO

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "trade_date",
        nargs="?",
        default=(datetime.date.today() - BDay(1)).date(),
        type=datetime.date.fromisoformat,
    )
    args = parser.parse_args()
    dawndb = dbconn("dawndb")

    buf = StringIO()
    buf.write("<html><body>\n")

    cp_mapping = {
        "CITI": "Citi",
        "MS": "Morgan Stanley",
        "GS": "Goldman Sachs",
        "BAML_FCM": "Baml FCM",
        "BAML_ISDA": "Baml OTC",
        "WELLS": "Wells Fargo",
        "BNP": "BNP Paribas",
        "CS": "Credit Suisse",
        "JPM": "JP Morgan",
    }

    with dawndb.cursor() as c:
        buf.write(
            f"<h3> Collateral Estimates Receive/(Pay):</h3>\n\n<ol style='list-style-type:upper-roman'>"
        )
        c.execute(
            "SELECT date, broker, fund, sum(amount) as amount FROM strategy_im si WHERE strategy='CSH_CASH' and date=%s and fund='SERCGMAST' GROUP BY broker, date, fund ORDER BY date DESC;",
            (args.trade_date,),
        )
        for row in c:
            amount = (
                f"{-row.amount:,.0f}" if row.amount <= 0 else f"({row.amount:,.0f})"
            )
            buf.write(f"<li>{cp_mapping[row.broker]}: {amount} USD</li>")

    em = ExchangeMessage()
    buf.write("</body/></html>")
    em.send_email(
        f"Collateral Estimates {args.trade_date:%Y-%m-%d}",
        HTMLBody(buf.getvalue()),
        ["NYOps@lmcg.com"],
        ["fyu@lmcg.com"],
    )