import serenitas.analytics import argparse import datetime from serenitas.utils.db import dbconn, dbengine from .bonds import subprime_risk, clo_risk, crt_risk, insert_subprime_risk from serenitas.analytics import init_ontr from serenitas.analytics.utils import prev_business_day from .indices import insert_curve_risk from .swaptions import get_swaption_portfolio, insert_swaption_portfolio from .tranches import get_tranche_portfolio, insert_tranche_portfolio 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 init_ontr(workdate) serenitas.analytics._include_todays_cashflows = True serenitas.analytics._local = False mysql_engine = dbengine("rmbs_model") mysqlcrt_engine = dbengine("crt") with dbconn("dawndb") as conn: for fund in ("SERCGMAST", "BOWDST", "BRINKER"): 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"), ) 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)