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
|
import os
import serenitas.analytics
import argparse
import datetime
from serenitas.utils.db import dbengine
from serenitas.utils.db2 import dbconn
from serenitas.utils.pool import dawn_pool
from .bonds import subprime_risk, clo_risk, crt_risk, insert_subprime_risk
from serenitas.analytics.base import Trade
from serenitas.analytics.dates import prev_business_day
from .indices import insert_curve_risk
from .ir import insert_ir_portfolio
from serenitas.analytics.api import IRSwaption
from .swaptions import get_swaption_portfolio, insert_swaption_portfolio
from .tranches import get_tranche_portfolio, insert_tranche_portfolio
os.environ["SERENITAS_APP_NAME"] = "risk"
parser = argparse.ArgumentParser()
parser.add_argument(
"cob",
nargs="?",
type=datetime.date.fromisoformat,
default=prev_business_day(datetime.date.today()),
help="close of business date",
)
args = parser.parse_args()
workdate = args.cob
Trade.init_ontr(workdate)
serenitas.analytics._include_todays_cashflows = True
serenitas.analytics._local = False
mysql_engine = dbengine("rmbs_model")
mysqlcrt_engine = dbengine("crt")
with dawn_pool.connection() as conn:
for fund in ("SERCGMAST", "BOWDST", "BRINKER", "ISOSEL"):
portf = get_swaption_portfolio(workdate, conn, source_list=["MS"], fund=fund)
insert_swaption_portfolio(portf, conn)
portf = get_tranche_portfolio(workdate, conn, fund=fund)
insert_tranche_portfolio(portf, conn)
insert_curve_risk(
workdate,
conn,
fund,
("SER_IGCURVE", "SER_ITRXCURVE", "XCURVE", "SER_HYCURVE"),
)
ir_portf = IRSwaption.get_portfolio(workdate, fund=fund)
insert_ir_portfolio(ir_portf, conn)
with dbconn("etdb") as etconn, dawn_pool.connection() 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)
|