Skip to content

Instantly share code, notes, and snippets.

@DBremen
Last active December 27, 2019 12:25
Show Gist options
  • Select an option

  • Save DBremen/8aef035c038cd14b120c19391c429c2b to your computer and use it in GitHub Desktop.

Select an option

Save DBremen/8aef035c038cd14b120c19391c429c2b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"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