{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import datetime\n", "import globeop_reports as go\n", "import pandas as pd\n", "import analytics\n", "import numpy as np\n", "\n", "from pandas.tseries.offsets import BDay, BMonthEnd\n", "from analytics.scenarios import run_portfolio_scenarios\n", "from risk.portfolio import build_portfolio, generate_vol_surface\n", "from pathlib import Path" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Set dates" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "position_date = (datetime.date.today() - BMonthEnd(1)).date()\n", "spread_date = position_date\n", "analytics._local = False\n", "analytics.init_ontr(spread_date)\n", "base_dir = Path('/home/serenitas/Daily/Risk/')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Run credit spread scenarios" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "spread_shock = np.array([-100., -25., 1., +25. , 100.])\n", "spread_shock /= analytics._ontr['HY'].spread\n", "portf, _ = build_portfolio(position_date, spread_date)\n", "vol_surface = generate_vol_surface(portf, 5)\n", "portf.reset_pv()\n", "scens = run_portfolio_scenarios(portf, date_range=[pd.Timestamp(spread_date)], params=['pnl'],\n", " spread_shock=spread_shock,\n", " vol_shock=[0.0],\n", " corr_shock=[0.0],\n", " vol_surface=vol_surface)\n", "scens = scens.sum(axis=1)\n", "scens.to_csv(base_dir / f\"csscen_{position_date:%Y%m%d}.csv\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Jump to default" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "_, portf = build_portfolio(position_date, spread_date)\n", "jtd = portf.jtd_single_names()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from analytics.index_data import load_all_curves\n", "from utils.db import serenitas_pool\n", "conn = serenitas_pool.getconn()\n", "surv_curves = load_all_curves(conn, spread_date)\n", "serenitas_pool.putconn(conn)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "jtd_sabo = jtd[[jtd.columns[0]]].join(surv_curves.groupby(level=0).first()[['name', 'company_id']])\n", "jtd_sabo.columns = ['jtd', 'name', 'company_id']\n", "jtd_sabo.to_csv(base_dir / f\"jtd_{position_date:%Y%m%d}.csv\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 4 }