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"],
)
|