aboutsummaryrefslogtreecommitdiffstats
path: root/python/quote_diff_bowdst.py
blob: 48f641414766ea0fd6e5b00a468652ef870da216 (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
57
58
59
60
61
62
63
64
65
66
67
68
from serenitas.utils.db import dbconn
import numpy as np
import datetime
import pandas as pd
from serenitas.utils.exchange import ExchangeMessage
from io import StringIO
from exchangelib import FileAttachment
import argparse

conn = dbconn("dawndb")

parser = argparse.ArgumentParser(description="determine sender destination")
parser.add_argument("--globeop", action="store_true", help="send to globeop")

args = parser.parse_args()

with conn.cursor() as c:
    df = pd.read_sql(
        sql="SELECT * FROM list_bowd_quotes(%s)",
        con=conn,
        params=(datetime.date.today() - datetime.timedelta(1),),
    )
    try:
        diff = df[~np.isclose(df["bowd_price"], df["closeprice"], atol=0.15)].rename(
            mapper={"closeprice": "our_price"}, axis=1
        )
    except TypeError:
        breakpoint()
    else:

        if not diff.empty:
            buf = StringIO()
            diff.to_csv(buf, index=False)
            subject = "ACTION REQUESTED: Stale/Inaccurate Quotes"
            msg = (
                "Good morning,\n\n"
                f"We notice a difference in our quotes by more than 15 cents for the following indices:\n\n"
                f"{diff.to_string(index=False)}\n\n"
                "We have also attached a copy of the csv for your convenience."
                f"Thanks for your help.\n\n"
                f"Flint"
            )
            attachments = [
                FileAttachment(
                    name=f"quote_differences.csv", content=buf.getvalue().encode()
                )
            ]
            em = ExchangeMessage()
            if args.globeop:
                recipients = (
                    "hm-operations@bnymellon.com",
                    "caagprim@bnymellon.com",
                )
                cc_recipients = (
                    "fyu@lmcg.com",
                    "Bowdoin-Ops@LMCG.com",
                )
            else:
                recipients = ("fyu@lmcg.com",)
                cc_recipients = ()

            em.send_email(
                subject,
                msg,
                to_recipients=recipients,
                cc_recipients=cc_recipients,
                attach=attachments,
            )