{ "cells": [ { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "\n", "*This notebook contains course material from [CBE40455](https://jckantor.github.io/CBE40455) by\n", "Jeffrey Kantor (jeff at nd.edu); the content is available [on Github](https://github.com/jckantor/CBE40455.git).\n", "The text is released under the [CC-BY-NC-ND-4.0 license](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode),\n", "and code is released under the [MIT license](https://opensource.org/licenses/MIT).*" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "\n", "< [Binomial Model for Pricing Options](http://nbviewer.jupyter.org/github/jckantor/CBE40455/blob/master/notebooks/07.03-Binomial-Model-for-Pricing-Options.ipynb) | [Contents](toc.ipynb) | [Portfolio Optimization](http://nbviewer.jupyter.org/github/jckantor/CBE40455/blob/master/notebooks/07.05-Portfolio-Optimization.ipynb) >
"
]
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {}
},
"source": [
"# Real Options"
]
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {}
},
"source": [
"## Implementing a Replicating Portfolio in Pyomo\n",
"\n",
"A replicating portfolio is the key concept for using of a binomial model to price options. In a nutshell, the value of an option is the money needed to construct a portfolio that replicates the option's payoff for every possible outcome. The replicating portfolio can be extended to applications involving 'real assets', including processes that convert commodity resources into higher value products. \n",
"\n",
"The period of the contract is broken into $N$ stages where $k=0$ denotes the start of the first stage of the option contract and $k=N$ denotes the end of the last stage. \n",
"\n",
"![](../img/TimelineRealOption.png)\n",
"\n",
"The value of the replicating portfolio at the start of stage $k+1$ in state $s$ is given by \n",
"\n",
"$$W_{k,s} = x_{k,s}S^f_{k,s} + y_{k,s}$$\n",
"\n",
"The portfolio consists of $x_{k,s}$ units of an underlying asset and $y_{k,s}$ is in units of cash. The values of $x_{k,s}$ or $y_{k,s}$ can be positive or negative. $S^f_{k,s}$ is the price of the underlying asset which is subject to statistical variability. Cash is assumed to have an investment return $r$ per period.\n",
"\n",
"For each stage $k = 1, 2, \\ldots, N$ and states $s = 0, 1, \\ldots, k$, the value of the portfolio must \n",
"\n",
"1. prepay expenses $P_{k,s}$ required to maintain the asset through period $k$,\n",
"2. pay out income $Q_{k,s}$ and $Q_{k,s+1}$ the asset generated in stage $k$,\n",
"3. finance the portfolio for the subsequent states,\n",
"4. be the greater than the value any option available at node ($k$,$s$).\n",
"\n",
"The last proposition establishes the value of holding the option. For the binomial model, these requirements produce two constraints associated with each stage and state. For stage $k$\n",
"\n",
"![](../img/BinomialRealOption.png)\n",
"\n",
"we write\n",
"\n",
"\\begin{align*}\n",
"x_{k-1,s}S^f_{k,s} + (y_{k-1,s}-P_{k,s})(1+r) & \\geq W_{k,s} + Q_{k,s}\\\\\n",
"x_{k-1,s}S^f_{k,s+1} + (y_{k-1,s}-P_{k,s})(1+r) & \\geq W_{k,s+1} + Q_{k,s+1}\n",
"\\end{align*}\n",
"\n",
"where we assume expenses are incurred immediately prior to the start of stage $k$, and income is accumulated immediately following completion of stage $k$."
]
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {}
},
"source": [
"## Example 1. Value of a fixed cash flow\n",
"\n",
"Suppose we are considering the purchase of lease on property that could generate $10,000 per year of income for the next 10 years. We assume there is virtually no risk that the full of those payments will not be received. \n",
"\n",
"The value of the portfolio after stage $k$ is designated $W_k$. The replicating portfolio consists of cash equivalents in the amount $y_k$ that may be deposited with an annual interest rate $r$.\n",
"\n",
"$$W_k = y_k$$\n",
"\n",
"Upon expiration the value of the lease is zero, thus\n",
"\n",
"$$W_N = y_N = 0$$\n",
"\n",
"for a lease $N=10$ years in length. \n",
"\n",
"The rental income $I_k$ is received at the beginning of each year $k$. The replicating portfolio must generate a payment equal to this amount at the beginning of the year, then at the end of the year retain enough value to self-finance the portfolio for the following year. This holds true for every year, thus\n",
"\n",
"$$(1+r)(y_{k-1} - P_k) = y_k$$\n",
"\n",
"Collectively, this establishes a difference equation\n",
"\n",
"$$y_{k-1} = \\frac{y_k}{1+r} + P_k$$\n",
"\n",
"where $y_N = 0$. The solution for $y_0$ gives the initial amount of money needed to create a cash portfolio replicating the lease payments.\n",
"\n",
"This model can be recast as an optimization problem by finding the minimum amount of initial cash is required to create a self-financing portfolio.\n",
"\n",
"\\begin{align*}\n",
"& \\min_{y_0,y_1,y_2,\\ldots, y_N} y_0 \\\\\n",
"\\mbox{subject to:}\\qquad\\qquad \\\\\n",
"y_k & \\geq 0 & \\forall k = 0,1,\\ldots,N \\\\\n",
"y_{k-1} & = \\frac{y_k}{1+r} + P_k & \\forall k = 1, 2, \\ldots, N\n",
"\\end{align*}"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"pycharm": {}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEICAYAAAC0+DhzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAH8lJREFUeJzt3X2UXHWd5/H3x4SHgIAQ3N6kkxBWMg6BXaL0JKDubK9R\nCerYnDlAQkaJngzZWVBxj7sK7tnx4UxmYc+uKKNkyIASEIFs1E3GAyoG6nh0kiAgimmI9ISHJDQJ\nJDRNM4B5+O4f91dSqdtJV1e66qa7Pq9z6tS933t/T1VJf+v+7q1bigjMzMwqvanoDpiZ2eHHycHM\nzHKcHMzMLMfJwczMcpwczMwsx8nBzMxynBxsP5KmSwpJ45vc7gRJ/yjpJUn/t8YyJUl/2ei+1UPS\nU5Lel5a/IOmmBrTxF5J+MtL1Nouk/yxpu6QBSROH2PcP7/VoH/do4eQwxkj6kaSvDBLvkvRcs//o\nD8OFQBswMSIuqt4o6UuSvtP8bh26iPjbiDikJDZY0o6I2yPiA4few8ZLfT+tYv0I4KvAByLizRGx\ns9a6RtO4RzMnh7FnBfBRSaqKfwy4PSL2FNCnWpwC/O5w6N9hnEBHnYO8lm3A0cDGJnbHhsHJYez5\nf8BE4N+XA5JOBD4M3JrWPyTpV5L6JW2R9KUDVVY5PZLW9/sEL+kcSf8kqU/SryV1HqSu09P0QJ+k\njZI+kuJfBv4amJ+mGBZXlZsHfKFi+68rNp8i6ReSXpb0E0kn19m3pyR9XtJvgFckjZc0WdL3JD0v\n6UlJn656HVZJuiu1/bCksw5Qd/Vr9p6Kfm2R9PEUP9j78rP03Jdeg3MlfVzSzyvqDUl/JemJVPc3\nyx8SJI2T9H8kvZDG8smDTR+m1+NqSd2SXpT0bUlHV2y/TFKPpF2S1kiaXNWPKyQ9ATwhqdz3X6e+\nfx7YVDGe+1K5d0n6pbKpxV9KetcB+lY97prK2TBFhB9j7AH8A3BTxfp/Ah6pWO8E/i3Zh4N/B2wH\nLkjbpgMBjE/rTwHvqyj7JeA7abkd2Al8MNX1/rT+1kH6dATQQ/ZH/kjgvcDLwNur6z3AmHLbgRLw\nz8AfARPS+jXD7VvFOB8Bpqa63gQ8RJa0jgT+DbAZOK+iP7vJpsOOAP4r8CRwRPXrVvWanZLGfUkq\nNxGYNdz3JcU+Dvy8Yj2AHwJvAaYBzwPz0ra/ArqBKcCJwE+r6xvk9fhtej1OAn4B/E3a9l7gBeCd\nwFHA3wE/q+rHvanchIrYaRX77DeetO+LZEe449Pr8yLZNGP5vf7L6nEPVc6P+h8+chibVgAXVnzS\nuzTFAIiIUkQ8GhH7IuI3wB3Af6ijnY8Cd0fE3amue4EHyf4gVzsHeDPZH+/fR8R9ZH/ILqmj3Urf\njojfRcSrwEpgVh19K7s+Irakuv6ELJF8JfV3M1nSXVCx/0MRsSoidpPNnx+dxnkwC4GfRsQdEbE7\nInZGxCMwYu/LNRHRFxHPAPfzxutxMfD1iNgaES8C19RQ1zfS67ELWMob79VfAN+KiIcj4nXgauBc\nSdMryv7PiNiVXstafAh4IiJui4g9EXEH8DjwZw0qZ0NwchiDIuLnZJ/sLpD0NmA28N3ydklzJN2f\npkteIvtUefLgtR3UKcBFaQqjT1If8B5g0iD7Tga2RMS+itjTZJ/wD8VzFcv/QpaAhtu3si0Vy6cA\nk6vKf4Fsrjy3fxrXVrJxHsxUsqOdnBF6Xw70ekxm//FVLh9I5T5P88bYJqd1ACJigOyorPK9rKX+\nSvvVWdHmUP8+6i1nQ/CJt7HrVrIjhrcDP46I7RXbvgt8Azg/Il6T9DUO/EfoFeCYivV/XbG8Bbgt\nIi6roT/PAlMlvakiQUwDfldDWcimIIZjOH0brI0twJMRMeMg+08tL0h6E9mUzbM19Gv2AbYd7H05\n1Nsn96b+lU090I4H2Gcab4ztWbLkCYCkY8mmx7ZV7D/c/u5XZ0WbP2pQORuCjxzGrluB9wGXUTGl\nlBwH7Ep/gGaTTXUcyCPAAklHSOogm2Mv+w7wZ5LOSyc8j5bUKWnKIPVsIPsk+7lUVyfZof+dNY5n\nOzA9/RGuxXD6NpgHgJfTSeoJqY4zJf1JxT5nS/rzdFL3M8DrwPoh6r0deJ+ki9NJ74mSylM/B3tf\nngf2kZ37qMdK4EpJ7ZLeAny+hjJXSJoi6STgvwN3pfgdwCckzZJ0FPC3wIaIeOogdW0fou93A38k\naWF6XeYDM8mmHg+m3nI2BCeHMSr9R/0n4FhgTdXmy4GvSHqZ7ITryoNU9T+At5Gd5PsyFdNTEbEF\n6CKbbnme7FPxf2OQf1cR8XuyZHA+2ZTXDcClEfF4jUMqfzFup6SHh9p5OH07QPm9ZFd4zSI70fwC\ncBNwQsVuq4H5vHFC9M/T+YeD1fsM2XmPzwK7yJJv+SqnA74vEfEvZPP+v0jTXEOd26j2D8BPgN8A\nvyL7o7oH2HuQMt9NZTaTTYX9TerLT8n+XXyP7Ijkbex/LmYwXwJWpL5fXL0xsu85fJjsddkJfA74\ncES8cLBK6y1nQ1OEf+zHbLjSZaanRcRHi+5LPSSdD/x9RFRPyZS3P0V2ddBPm9oxO2z4yMGsBaSp\nsQ+mqZd24IvAD4rulx2+nBzMWoPIpgVfJJtWeoxs6spsUJ5WMjOzHB85mJlZzpDfc5D0dt64hA2y\ny9H+muxSybvIvgb/FHBx+uYlkq4GFpNdCfHpiPhxip8N3EJ2e4K7gSsjItLlcLcCZ5NdcTB/iMvi\nOPnkk2P69Om1jbLKK6+8wrHHHltX2dHKY24NHnNrOJQxP/TQQy9ExFuH3HE499oAxpF9A/MU4H8B\nV6X4VcC1aXkm8Guye66cSnYJ3Li07QGy2wsIuIfsyz6QXcL392l5AXDXUH05++yzo173339/3WVH\nK4+5NXjMreFQxgw8GA24t9Jc4J8j4mmya8jLX65aAVyQlruAOyPi9Yh4kuxma7MlTQKOj4j1qYO3\nVpUp17UKmFu+m6SZmTXfcG+fsYDs25EAbRHRm5af4417zrSz/7dEt6bY7rRcHS+X2QIQEXvSfWUm\nkn3x6A8kLQGWALS1tVEqlYbZ/czAwEDdZUcrj7k1eMytoRljrjk5SDoS+AjZHRj3ExEhqeGXPUXE\ncmA5QEdHR3R2dtZVT6lUot6yo5XH3Bo85tbQjDEPZ1rpfODheOMGbtvTVBHpeUeKb2P/G3ZNSbFt\n7H/jr3J8vzLpPjUnkJ2YNjOzAgwnOVzCG1NKkN2vZ1FaXkR2n5lyfIGkoySdCswAHkhTUP3Kfp1L\nZHcMXT1IXRcC96XzEmZmVoCappXSLXnfT/aLYmXXACuV/aTj02Q/JkJEbJS0kuxXp/YAV0R2EzPI\nrkq6hexS1nvSA+Bm4DZJPWQ3IxvqJl5mZtZANSWHiHiF7ARxZWwn2dVLg+2/lOwOktXxB4EzB4m/\nBlxUS1/MzKzxWu4b0l/+x43c/tjrRXfDzOyw1nK/BNf9bD99/fuG3tHMrIW13JGDmZkNzcnBzMxy\nnBzMzCzHycHMzHKcHMzMLMfJwczMcpwczMwsx8nBzMxynBzMzCzHycHMzHKcHMzMLKfl7q0E8MzL\n+5h/47pC2u6a1c7COdMKadvMrFYtd+TQNaudaccVM+zu3n5WP7Jt6B3NzArWckcOC+dMY/Krm+ns\nPLfpbRd1tGJmNlwtd+RgZmZDc3IwM7McJwczM8txcjAzs5yakoOkt0haJelxSY9JOlfSSZLulfRE\nej6xYv+rJfVI2iTpvIr42ZIeTduul6QUP0rSXSm+QdL0kR6omZnVrtYjh68DP4qIPwbOAh4DrgLW\nRsQMYG1aR9JMYAFwBjAPuEHSuFTPMuAyYEZ6zEvxxcCLEXEacB1w7SGOy8zMDsGQyUHSCcCfAjcD\nRMTvI6IP6AJWpN1WABek5S7gzoh4PSKeBHqA2ZImAcdHxPqICODWqjLlulYBc8tHFWZm1ny1fM/h\nVOB54NuSzgIeAq4E2iKiN+3zHNCWltuB9RXlt6bY7rRcHS+X2QIQEXskvQRMBF6o7IikJcASgLa2\nNkqlUg3dzxsYGKi77KHo63sVoJC2ixpzkTzm1uAxN0YtyWE88E7gUxGxQdLXSVNIZRERkqIRHaxq\nZzmwHKCjoyM6OzvrqqdUKlFv2UOxbFP2JbgivoBX1JiL5DG3Bo+5MWo557AV2BoRG9L6KrJksT1N\nFZGed6Tt24CpFeWnpNi2tFwd36+MpPHACcDO4Q7GzMxGxpBHDhHxnKQtkt4eEZuAuUB3eiwCrknP\nq1ORNcB3JX0VmEx24vmBiNgrqV/SOcAG4FLg7yrKLALWARcC96XzEmNOd29/IbfROP2Y3XQ2vVUz\nG61qvbfSp4DbJR0JbAY+QXbUsVLSYuBp4GKAiNgoaSVZ8tgDXBERe1M9lwO3ABOAe9IDspPdt0nq\nAXaRXe005nTNah96pwbo7u2nb8K+Qto2s9GppuQQEY8AHYNsmnuA/ZcCSweJPwicOUj8NeCiWvoy\nmi2cM62Q23XPv3EdfX19TW/XzEYvf0PazMxynBzMzCzHycHMzHKcHMzMLMfJwczMcpwczMwsx8nB\nzMxynBzMzCzHycHMzHKcHMzMLMfJwczMcpwczMwsp9a7stoo98zL+wq5VThkd6Mt4oaDZlY/Hzm0\ngK5Z7Uw7rpi3uru3n9WPbBt6RzM7rPjIoQUsnDONya9uLuTnSYs6WjGzQ+MjBzMzy3FyMDOzHCcH\nMzPLcXIwM7McJwczM8txcjAzs5yakoOkpyQ9KukRSQ+m2EmS7pX0RHo+sWL/qyX1SNok6byK+Nmp\nnh5J10tSih8l6a4U3yBp+sgO08zMhmM4Rw7/MSJmRURHWr8KWBsRM4C1aR1JM4EFwBnAPOAGSeNS\nmWXAZcCM9JiX4ouBFyPiNOA64Nr6h2RmZofqUKaVuoAVaXkFcEFF/M6IeD0ingR6gNmSJgHHR8T6\niAjg1qoy5bpWAXPLRxVmZtZ8tX5DOoCfStoL3BgRy4G2iOhN258D2tJyO7C+ouzWFNudlqvj5TJb\nACJij6SXgInAC5WdkLQEWALQ1tZGqVSqsfv7GxgYqLvsaFXUmPv6XgUopG2/z63BY26MWpPDeyJi\nm6R/Bdwr6fHKjRERkmLku7e/lJSWA3R0dERnZ2dd9ZRKJeotO1oVNeZlm7LbZxRx6w6/z63BY26M\nmqaVImJbet4B/ACYDWxPU0Wk5x1p923A1IriU1JsW1quju9XRtJ44ARg5/CHY2ZmI2HI5CDpWEnH\nlZeBDwC/BdYAi9Jui4DVaXkNsCBdgXQq2YnnB9IUVL+kc9L5hEurypTruhC4L52XMDOzAtQyrdQG\n/CCdHx4PfDcifiTpl8BKSYuBp4GLASJio6SVQDewB7giIvamui4HbgEmAPekB8DNwG2SeoBdZFc7\nmZlZQYZMDhGxGThrkPhOYO4ByiwFlg4SfxA4c5D4a8BFNfTXRqHu3v5Cbt19+jG76Wx6q2Zjg3/P\nwRqqa1b70Ds1QHdvP30T9hXSttlY4ORgDbVwzrRCfiJ0/o3r6Ovra3q7ZmOF761kZmY5Tg5mZpbj\n5GBmZjlODmZmluPkYGZmOU4OZmaW4+RgZmY5Tg5mZpbj5GBmZjlODmZmluPkYGZmOU4OZmaW4+Rg\nZmY5Tg5mZpbj5GBmZjn+PQcbs555eV8hv0DXNau9kN+wMBtJPnKwMalrVjvTjmv+P+/u3n5WP7Kt\n6e2ajTQfOdiYtHDONCa/upnOznOb2m4RRypmjVDzRytJ4yT9StIP0/pJku6V9ER6PrFi36sl9Uja\nJOm8ivjZkh5N266XpBQ/StJdKb5B0vSRG6KZmQ3XcI67rwQeq1i/ClgbETOAtWkdSTOBBcAZwDzg\nBknjUpllwGXAjPSYl+KLgRcj4jTgOuDaukZjZmYjoqbkIGkK8CHgpopwF7AiLa8ALqiI3xkRr0fE\nk0APMFvSJOD4iFgfEQHcWlWmXNcqYG75qMLMzJqv1nMOXwM+BxxXEWuLiN60/BzQlpbbgfUV+21N\nsd1puTpeLrMFICL2SHoJmAi8UNkJSUuAJQBtbW2USqUau7+/gYGBusuOVh5zc/T1vQpQ2Gvt97k1\nNGPMQyYHSR8GdkTEQ5I6B9snIkJSjHTnBmlnObAcoKOjIzo7B+3OkEqlEvWWHa085uZYtik7Id3s\nE+Flfp9bQzPGXMuRw7uBj0j6IHA0cLyk7wDbJU2KiN40ZbQj7b8NmFpRfkqKbUvL1fHKMlsljQdO\nAHbWOSYzMztEQ55ziIirI2JKREwnO9F8X0R8FFgDLEq7LQJWp+U1wIJ0BdKpZCeeH0hTUP2Szknn\nEy6tKlOu68LURsOPRMzMbHCH8j2Ha4CVkhYDTwMXA0TERkkrgW5gD3BFROxNZS4HbgEmAPekB8DN\nwG2SeoBdZEnIzMwKMqzkEBEloJSWdwJzD7DfUmDpIPEHgTMHib8GXDScvpiZWeP49hlmZpbj5GBm\nZjlODmZmluPkYGZmOU4OZmaW4+RgZmY5Tg5mZpbj5GBmZjn+JTizEdbd21/YL8KdfsxuOgtp2cYa\nJwezEdQ1q33onRqku7efvgn7CmvfxhYnB7MRtHDONBbOmVZI2/NvXEdfX18hbdvY43MOZmaW4+Rg\nZmY5Tg5mZpbj5GBmZjlODmZmluPkYGZmOU4OZmaW4+RgZmY5Tg5mZpYzZHKQdLSkByT9WtJGSV9O\n8ZMk3SvpifR8YkWZqyX1SNok6byK+NmSHk3brpekFD9K0l0pvkHS9JEfqpmZ1aqWI4fXgfdGxFnA\nLGCepHOAq4C1ETEDWJvWkTQTWACcAcwDbpA0LtW1DLgMmJEe81J8MfBiRJwGXAdcOwJjMzOzOg2Z\nHCIzkFaPSI8AuoAVKb4CuCAtdwF3RsTrEfEk0APMljQJOD4i1kdEALdWlSnXtQqYWz6qMDOz5qvp\nxnvpk/9DwGnANyNig6S2iOhNuzwHtKXldmB9RfGtKbY7LVfHy2W2AETEHkkvAROBF6r6sQRYAtDW\n1kapVKql+zkDAwN1lx2tPOaxr6/vVfbu3dtSY4bWe5+hOWOuKTlExF5glqS3AD+QdGbV9pAUjehg\nVTvLgeUAHR0d0dnZWVc9pVKJesuOVh7z2LdsU3ZX1lYaM7Te+wzNGfOwrlaKiD7gfrJzBdvTVBHp\neUfabRswtaLYlBTblpar4/uVkTQeOAHYOZy+mZnZyKnlaqW3piMGJE0A3g88DqwBFqXdFgGr0/Ia\nYEG6AulUshPPD6QpqH5J56TzCZdWlSnXdSFwXzovYWZmBahlWmkSsCKdd3gTsDIifihpHbBS0mLg\naeBigIjYKGkl0A3sAa5I01IAlwO3ABOAe9ID4GbgNkk9wC6yq53MzKwgQyaHiPgN8I5B4juBuQco\nsxRYOkj8QeDMQeKvARfV0F8zM2sCf0PazMxy/BvSZmPIMy/vY/6N65rebtes9sJ+O9saw0cOZmNE\n16x2ph3X/P/S3b39rH5k29A72qjiIwezMWLhnGlMfnUznZ3nNrXdIo5UrPF85GBmZjlODmZmluPk\nYGZmOU4OZmaW4+RgZmY5Tg5mZpbj5GBmZjlODmZmluPkYGZmOU4OZmaW4+RgZmY5Tg5mZpbj5GBm\nZjlODmZmluPkYGZmOU4OZmaWM2RykDRV0v2SuiVtlHRlip8k6V5JT6TnEyvKXC2pR9ImSedVxM+W\n9Gjadr0kpfhRku5K8Q2Spo/8UM3MrFa1HDnsAT4bETOBc4ArJM0ErgLWRsQMYG1aJ21bAJwBzANu\nkDQu1bUMuAyYkR7zUnwx8GJEnAZcB1w7AmMzM7M6DZkcIqI3Ih5Oyy8DjwHtQBewIu22ArggLXcB\nd0bE6xHxJNADzJY0CTg+ItZHRAC3VpUp17UKmFs+qjAzs+Yb1m9Ip+medwAbgLaI6E2bngPa0nI7\nsL6i2NYU252Wq+PlMlsAImKPpJeAicALVe0vAZYAtLW1USqVhtP9PxgYGKi77GjlMbeGIsbc1/cq\nQGGvtd/nxqg5OUh6M/A94DMR0V/5wT4iQlI0oH/7iYjlwHKAjo6O6OzsrKueUqlEvWVHK4+5NRQx\n5mWb1gHQ2XluU9st8/vcGDUlB0lHkCWG2yPi+ym8XdKkiOhNU0Y7UnwbMLWi+JQU25aWq+OVZbZK\nGg+cAOysYzxmVoDu3n7m37iukLZPP2Y3nYW0PLbVcrWSgJuBxyLiqxWb1gCL0vIiYHVFfEG6AulU\nshPPD6QpqH5J56Q6L60qU67rQuC+dF7CzA5zXbPamTnp+ELa7u7tZ92zewppe6yr5cjh3cDHgEcl\nPZJiXwCuAVZKWgw8DVwMEBEbJa0EusmudLoiIvamcpcDtwATgHvSA7Lkc5ukHmAX2dVOZjYKLJwz\njYVzphXS9vwb19HX11dI22PdkMkhIn4OHOjKobkHKLMUWDpI/EHgzEHirwEXDdUXMzNrDn9D2szM\ncpwczMwsx8nBzMxynBzMzCzHycHMzHKcHMzMLMfJwczMcpwczMwsx8nBzMxynBzMzCzHycHMzHKc\nHMzMLMfJwczMcpwczMwsx8nBzMxynBzMzCzHycHMzHKcHMzMLMfJwczMcpwczMwsx8nBzMxyhkwO\nkr4laYek31bETpJ0r6Qn0vOJFduultQjaZOk8yriZ0t6NG27XpJS/ChJd6X4BknTR3aIZmY2XLUc\nOdwCzKuKXQWsjYgZwNq0jqSZwALgjFTmBknjUpllwGXAjPQo17kYeDEiTgOuA66tdzBmZjYyxg+1\nQ0T8bJBP811AZ1peAZSAz6f4nRHxOvCkpB5gtqSngOMjYj2ApFuBC4B7UpkvpbpWAd+QpIiIegdl\nZq3jmZf3Mf/GdU1vt2tWOwvnTGt6u80yZHI4gLaI6E3LzwFtabkdWF+x39YU252Wq+PlMlsAImKP\npJeAicAL1Y1KWgIsAWhra6NUKtXV+YGBgbrLjlYec2totTGffsxudh4T9PX1NbXdZ17eR19fH5Nf\n3dzUdsua8T7Xmxz+ICJCUlM+5UfEcmA5QEdHR3R2dtZVT6lUot6yo5XH3BpabcydFDPm8pFKZ+e5\nTW23rBljrvdqpe2SJgGk5x0pvg2YWrHflBTblpar4/uVkTQeOAHYWWe/zMxsBNSbHNYAi9LyImB1\nRXxBugLpVLITzw+kKah+Seekq5QurSpTrutC4D6fbzAzK9aQ00qS7iA7ejtZ0lbgi8A1wEpJi4Gn\ngYsBImKjpJVAN7AHuCIi9qaqLie78mkC2Ynoe1L8ZuC2dPJ6F9nVTmZmVqBarla65ACb5h5g/6XA\n0kHiDwJnDhJ/DbhoqH6YmVnz+BvSZmaW4+RgZmY5Tg5mZpbj5GBmZjlODmZmluPkYGZmOU4OZmaW\n4+RgZmY5Tg5mZpbj5GBmZjlODmZmluPkYGZmOU4OZmaW4+RgZmY5Tg5mZpbj5GBmZjlODmZmluPk\nYGZmOU4OZmaW4+RgZmY5h01ykDRP0iZJPZKuKro/Zmat7LBIDpLGAd8EzgdmApdImllsr8zMWtf4\nojuQzAZ6ImIzgKQ7gS6gu9BemZkdQHdvP/NvXFdI28fve53Ozsa2cbgkh3ZgS8X6VmBO9U6SlgBL\nANra2iiVSnU1NjAwUHfZ0cpjbg0ec3Ocfsxu+ibso6+vr6ntlk2YsLfhYz5ckkNNImI5sBygo6Mj\nOutMnaVSiXrLjlYec2vwmJujua3lNWPMh8U5B2AbMLVifUqKmZlZAQ6X5PBLYIakUyUdCSwA1hTc\nJzOzlnVYTCtFxB5JnwR+DIwDvhURGwvulplZyzoskgNARNwN3F10P8zM7PCZVjIzs8OIk4OZmeU4\nOZiZWY6Tg5mZ5Sgiiu5DXSQ9DzxdZ/GTgRdGsDujgcfcGjzm1nAoYz4lIt461E6jNjkcCkkPRkRH\n0f1oJo+5NXjMraEZY/a0kpmZ5Tg5mJlZTqsmh+VFd6AAHnNr8JhbQ8PH3JLnHMzM7OBa9cjBzMwO\nwsnBzMxyWi45SJonaZOkHklXFd2fRpM0VdL9krolbZR0ZdF9agZJ4yT9StIPi+5LM0h6i6RVkh6X\n9Jikc4vuU6NJ+i/p3/RvJd0h6eii+zTSJH1L0g5Jv62InSTpXklPpOcTG9F2SyUHSeOAbwLnAzOB\nSyTNLLZXDbcH+GxEzATOAa5ogTEDXAk8VnQnmujrwI8i4o+BsxjjY5fUDnwa6IiIM8lu9b+g2F41\nxC3AvKrYVcDaiJgBrE3rI66lkgMwG+iJiM0R8XvgTqCr4D41VET0RsTDafllsj8a7cX2qrEkTQE+\nBNxUdF+aQdIJwJ8CNwNExO8jopgfN26u8cAESeOBY4BnC+7PiIuInwG7qsJdwIq0vAK4oBFtt1py\naAe2VKxvZYz/oawkaTrwDmBDsT1puK8BnwP2Fd2RJjkVeB74dppKu0nSsUV3qpEiYhvwv4FngF7g\npYj4SbG9apq2iOhNy88BbY1opNWSQ8uS9Gbge8BnIqK/6P40iqQPAzsi4qGi+9JE44F3Assi4h3A\nKzRoquFwkebZu8gS42TgWEkfLbZXzRfZdxEa8n2EVksO24CpFetTUmxMk3QEWWK4PSK+X3R/Guzd\nwEckPUU2bfheSd8ptksNtxXYGhHlI8JVZMliLHsf8GREPB8Ru4HvA+8quE/Nsl3SJID0vKMRjbRa\ncvglMEPSqZKOJDuBtabgPjWUJJHNRT8WEV8tuj+NFhFXR8SUiJhO9v7eFxFj+hNlRDwHbJH09hSa\nC3QX2KVmeAY4R9Ix6d/4XMb4SfgKa4BFaXkRsLoRjRw2vyHdDBGxR9IngR+TXd3wrYjYWHC3Gu3d\nwMeARyU9kmJfSL/ZbWPHp4Db04eezcAnCu5PQ0XEBkmrgIfJrsj7FWPwNhqS7gA6gZMlbQW+CFwD\nrJS0mOxnCy5uSNu+fYaZmVVrtWklMzOrgZODmZnlODmYmVmOk4OZmeU4OZiZWY6Tg5mZ5Tg5mJlZ\nzv8HG96oebaankkAAAAASUVORK5CYII=\n",
"text/plain": [
" "
]
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}