aboutsummaryrefslogtreecommitdiffstats
path: root/python/risk/__main__.py
blob: 346150f8ae20ebe3cf3b5afa55060e5975183a92 (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
import argparse
import logging
import pandas as pd
from . import dbconn, dbengine
from pandas.tseries.offsets import BDay
from .bonds import subprime_risk, clo_risk, crt_risk, insert_subprime_risk
from analytics import init_ontr
from .swaptions import get_swaption_portfolio, insert_swaption_portfolio
from .tranches import get_tranche_portfolio, insert_tranche_portfolio
from . import SerenitasFileHandler

parser = argparse.ArgumentParser()
parser.add_argument(
    "workdate", nargs="?", type=lambda s: pd.datetime.strptime(s, "%Y-%m-%d").date()
),
args = parser.parse_args()
if args.workdate is None:
    workdate = (pd.Timestamp.today() - BDay()).date()
else:
    workdate = args.workdate

fh = SerenitasFileHandler("risk.log")
init_ontr(workdate)

loggers = [logging.getLogger("analytics"), logging.getLogger("risk")]
for logger in loggers:
    logger.setLevel(logging.INFO)
    logger.addHandler(fh)

mysql_engine = dbengine("rmbs_model")
mysqlcrt_engine = dbengine("crt")

with dbconn("dawndb") as conn:
    portf = get_swaption_portfolio(workdate, conn, source_list=["GS"])
    insert_swaption_portfolio(portf, conn)
    portf = get_tranche_portfolio(workdate, conn)
    insert_tranche_portfolio(portf, conn)

with dbconn("etdb") as etconn, dbconn("dawndb") as dawnconn:
    subprime = subprime_risk(workdate, dawnconn, mysql_engine)
    insert_subprime_risk(subprime, dawnconn)
    clo = clo_risk(workdate, dawnconn, etconn)
    crt = crt_risk(workdate, dawnconn, mysqlcrt_engine)
    # portf = get_rmbs_portfolio(workdate, conn)
    # crt_portf = portf[portf.strategy.str.contains("CRT")]
    # subprime_portf = portf[~portf.strategy.str.contains("CRT")]
    # subprime_portf_zero = subprime_portf[subprime_portf.identifier.str.endswith("_A")]
    # subprime_portf = subprime_portf[~subprime_portf.identifier.str.endswith("_A")]
    # df = subprime_risk(workdate)
    # subprime_portf = subprime_portf.join(df)