Last active
December 27, 2019 12:25
-
-
Save DBremen/8aef035c038cd14b120c19391c429c2b to your computer and use it in GitHub Desktop.
Monte Carlo Value at risk https://nbviewer.jupyter.org/gist/DBremen/8aef035c038cd14b120c19391c429c2b
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "# Monte Carlo Value at risk\nWhat is worth expected loss we might see?" | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "<h1 id=\"tocheading\">Table of Contents</h1>\n<div id=\"toc\"></div>" | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "%%javascript\n$.getScript('https://kmahelona.github.io/ipython_notebook_goodies/ipython_notebook_toc.js')", | |
| "execution_count": 1, | |
| "outputs": [ | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "text/plain": "<IPython.core.display.Javascript object>", | |
| "application/javascript": "$.getScript('https://kmahelona.github.io/ipython_notebook_goodies/ipython_notebook_toc.js')\n" | |
| }, | |
| "metadata": {} | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "import numpy as np\nimport pandas as pd\nimport numpy.random as npr\nimport pandas_datareader as pdr\nimport matplotlib.pyplot as plt\nimport matplotlib.ticker as mtick\nfrom pandas.plotting import register_matplotlib_converters\nregister_matplotlib_converters()\n#ax.yaxis.set_major_formatter(mtick.PercentFormatter())\npd.options.display.float_format = '${:,.2f}'.format\n%matplotlib inline\nimport seaborn\nseaborn.set()\n#format DataFrame example\n#formatted = df.style.format({'EPS': '${:,.2f}', 'PE':'{:,.2f}', 'Exp_Ret': '{:,.2%}', 'Price': '${:,.2f}'})", | |
| "execution_count": 2, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "https://github.com/PacktPublishing/Hands-on-Python-for-Finance-V/blob/master/Section+6/VaR.ipynb" | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "## Deterministic value at risk calculation" | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "# for short time horizons expecected retur will be small, and therefore VaR estimations\n# will not be much influenced by it\nfrom scipy.stats import norm\nconfidenceLevels = [0.95,.99]\nvolatility = 0.307\nTRADING_DAYS_PA= 252\nTRADING_DAYS_PM = 21\nquantity = 5000\naapl_price = pdr.get_quote_yahoo('AAPL')['price']\nportfolio_value = quantity * aapl_price\nportfolio_value = aapl_value.at['AAPL']\nt = TRADING_DAYS_PM/TRADING_DAYS_PA\nfor cl in confidenceLevels:\n cutoff = norm.ppf(cl)\n VaR = portfolio_value * volatility * np.sqrt(t) * cutoff\n text = \"At {:.0%} CL, loss will not exceed ${:,.2f} ({:.2f} StdDev below the average return)\"\n print(text.format(cl, VaR,cutoff))", | |
| "execution_count": 42, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": "At 95% CL, loss will not exceed $211,304.24 (1.64 StdDev below the average return)\nAt 99% CL, loss will not exceed $298,851.62 (2.33 StdDev below the average return)\n", | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "## Probabilistic model" | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "er = .19\niterations = 50000", | |
| "execution_count": 43, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "aapl_value", | |
| "execution_count": 44, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "execution_count": 44, | |
| "data": { | |
| "text/plain": "AAPL $1,449,550.00\nName: price, dtype: float64" | |
| }, | |
| "metadata": {} | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "def VaR(pv, er, vol, T, iterations):\n end = pv * np.exp((er - .5 * vol ** 2) * T + \n vol * np.sqrt(T) * np.random.standard_normal(iterations))\n return (end - pv)", | |
| "execution_count": 45, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "at_risk = VaR(portfolio_value,er,volatility, t, iterations)", | |
| "execution_count": 46, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "plt.figure(figsize=(12,8))\nplt.xlim(at_risk.min(), at_risk.max() );\nplt.hist(at_risk, bins=100, edgecolor='k');\nplt.axvline(np.median(at_risk), color='r');", | |
| "execution_count": 47, | |
| "outputs": [ | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "text/plain": "<Figure size 864x576 with 1 Axes>", | |
| "image/png": "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\n" | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "percentiles = [1] + list(range(5,55,5))\nvalues = np.percentile(at_risk, percentiles)\ni = 0\nfor percentile in percentiles:\n print(('There is a {:,.0%} chance that the end balance will be ${:,.2f}').format((100-percentile)/100,values[i]))\n i = i + 1", | |
| "execution_count": 48, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": "There is a 99% chance that the end balance will be $-255,227.81\nThere is a 95% chance that the end balance will be $-180,322.94\nThere is a 90% chance that the end balance will be $-139,725.19\nThere is a 85% chance that the end balance will be $-111,959.73\nThere is a 80% chance that the end balance will be $-88,859.28\nThere is a 75% chance that the end balance will be $-69,002.56\nThere is a 70% chance that the end balance will be $-49,940.08\nThere is a 65% chance that the end balance will be $-32,613.31\nThere is a 60% chance that the end balance will be $-15,754.47\nThere is a 55% chance that the end balance will be $398.81\nThere is a 50% chance that the end balance will be $16,650.14\n", | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "", | |
| "execution_count": null, | |
| "outputs": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "name": "python3", | |
| "display_name": "Python 3", | |
| "language": "python" | |
| }, | |
| "language_info": { | |
| "name": "python", | |
| "version": "3.7.3", | |
| "mimetype": "text/x-python", | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "pygments_lexer": "ipython3", | |
| "nbconvert_exporter": "python", | |
| "file_extension": ".py" | |
| }, | |
| "toc": { | |
| "nav_menu": {}, | |
| "number_sections": true, | |
| "sideBar": true, | |
| "skip_h1_title": false, | |
| "base_numbering": 1, | |
| "title_cell": "Table of Contents", | |
| "title_sidebar": "Contents", | |
| "toc_cell": false, | |
| "toc_position": {}, | |
| "toc_section_display": true, | |
| "toc_window_display": false | |
| }, | |
| "gist": { | |
| "id": "8aef035c038cd14b120c19391c429c2b", | |
| "data": { | |
| "description": "Monte Carlo Value at risk https://nbviewer.jupyter.org/gist/DBremen/8aef035c038cd14b120c19391c429c2b", | |
| "public": true | |
| } | |
| }, | |
| "_draft": { | |
| "nbviewer_url": "https://gist.github.com/8aef035c038cd14b120c19391c429c2b" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment