From 2c34f7d51bad680e872065dd38d18d02e552823d Mon Sep 17 00:00:00 2001 From: Akshat Sharma <111536616+Akshat111111@users.noreply.github.com> Date: Mon, 11 Dec 2023 11:35:13 +0530 Subject: [PATCH 1/2] Delete notebooks/models/FINGBMPROCESS_generatePaths.ipynb --- .../models/FINGBMPROCESS_generatePaths.ipynb | 429 ------------------ 1 file changed, 429 deletions(-) delete mode 100644 notebooks/models/FINGBMPROCESS_generatePaths.ipynb diff --git a/notebooks/models/FINGBMPROCESS_generatePaths.ipynb b/notebooks/models/FINGBMPROCESS_generatePaths.ipynb deleted file mode 100644 index ebd29ba0..00000000 --- a/notebooks/models/FINGBMPROCESS_generatePaths.ipynb +++ /dev/null @@ -1,429 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# MODEL GENERATION OF GBM RANDOM PATHS" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this notebook I show how you can generate random paths according to a GBM" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "####################################################################\n", - "# FINANCEPY BETA Version 0.33 - This build: 11 Nov 2023 at 07:07 #\n", - "# This software is distributed FREE AND WITHOUT ANY WARRANTY #\n", - "# Report bugs as issues at https://github.com/domokane/FinancePy #\n", - "####################################################################\n", - "\n" - ] - } - ], - "source": [ - "from financepy.models.gbm_process_simulator import *" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "process = FinGBMProcess()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Single Asset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can generate time series for a single asset over time." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "num_paths = 10000\n", - "num_time_steps = 2\n", - "t = 1.0\n", - "mu = 0.03\n", - "S=100.0\n", - "vol = 0.2\n", - "seed = 1912" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "x = get_paths(num_paths,num_time_steps,t,mu,S,vol,seed)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This can be plotted" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(20000, 3)" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x.shape" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The distribution at time zero is peaked at 100.0" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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TM4rr7yiqKgopaWlfWldaWmpJCk2NlaS5PV69dFHH+nw4cNOTUFBgTwejwYMGODUFBYWBo1TUFAgr9fbgisAAADtWauEnMbGRr3yyisaO3asOnb8/5tF+/fv1+zZs1VSUqKDBw/qnXfe0ZgxYzRs2DDdeOONkqSUlBQNGDBADz74oHbu3Km1a9fqiSeeUFZWlnMXZuLEiTpw4IAee+wx7d27V88//7yWL1+uKVOmtMZyAABAO9QqIWfdunWqqKjQj370o6B2l8uldevWKSUlRf369dPPf/5zjRw5Uu+++65T06FDB+Xn56tDhw7yer164IEHNGbMmKDfq5OQkKBVq1apoKBAgwYN0vz58/Xiiy/y9XEAAOAIMcaYtp5EWwkEAoqIiJDf75fH42nr6QBoYb2mrwo6Pzjnyz8+B9A+XOj7N3+7CgAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYqcVDTm5urkJCQoKOfv36Of1nzpxRVlaWunfvriuvvFIjR45UVVVV0BgVFRVKS0tTly5dFBUVpalTp6q+vj6oZuPGjRoyZIjcbreuu+46LV26tKWXAgAA2rFWuZMzcOBAVVZWOsfmzZudvilTpujdd9/VihUrtGnTJh06dEj33nuv09/Q0KC0tDTV1tZqy5YtevXVV7V06VLNmDHDqSkvL1daWpruuusulZaWavLkyRo/frzWrl3bGssBAADtUMdWGbRjR8XExJzV7vf79dJLL+n111/Xd77zHUnSK6+8ov79++v999/XLbfcovfee08ff/yx1q1bp+joaA0ePFizZ8/WtGnTlJubK5fLpSVLlighIUHz58+XJPXv31+bN2/WggULlJqa2hpLAgAA7Uyr3Mn59NNPFRcXp969e2v06NGqqKiQJJWUlKiurk7JyclObb9+/dSjRw8VFxdLkoqLi5WYmKjo6GinJjU1VYFAQHv27HFqvjhGU03TGOdTU1OjQCAQdAAAADu1eMhJSkrS0qVLtWbNGi1evFjl5eW64447dPz4cfl8PrlcLkVGRga9Jjo6Wj6fT5Lk8/mCAk5Tf1Pfl9UEAgGdPn36vHPLy8tTRESEc8THx/+rywUAAJeoFv+4asSIEc7PN954o5KSktSzZ08tX75cnTt3bunLNUtOTo6ys7Od80AgQNABAMBSrf4V8sjISF1//fXat2+fYmJiVFtbq+rq6qCaqqoq5xmemJiYs75t1XT+VTUej+dLg5Tb7ZbH4wk6AACAnVo95Jw4cUL79+9XbGyshg4dqk6dOqmwsNDpLysrU0VFhbxeryTJ6/Xqo48+0uHDh52agoICeTweDRgwwKn54hhNNU1jAAAAtHjI+cUvfqFNmzbp4MGD2rJli37wgx+oQ4cOysjIUEREhDIzM5Wdna0NGzaopKRE48aNk9fr1S233CJJSklJ0YABA/Tggw9q586dWrt2rZ544gllZWXJ7XZLkiZOnKgDBw7oscce0969e/X8889r+fLlmjJlSksvBwAAtFMt/kzO559/royMDB05ckRXX321br/9dr3//vu6+uqrJUkLFixQaGioRo4cqZqaGqWmpur55593Xt+hQwfl5+frJz/5ibxer6644gqNHTtWs2bNcmoSEhK0atUqTZkyRQsXLtS1116rF198ka+PAwAAR4gxxrT1JNpKIBBQRESE/H4/z+cAFuo1fVXQ+cE5aW00EwAt6ULfv/nbVQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASi0ecvLy8vStb31L4eHhioqKUnp6usrKyoJq7rzzToWEhAQdEydODKqpqKhQWlqaunTpoqioKE2dOlX19fVBNRs3btSQIUPkdrt13XXXaenSpS29HAAA0E61eMjZtGmTsrKy9P7776ugoEB1dXVKSUnRyZMng+oefvhhVVZWOsfcuXOdvoaGBqWlpam2tlZbtmzRq6++qqVLl2rGjBlOTXl5udLS0nTXXXeptLRUkydP1vjx47V27dqWXhIAAGiHOrb0gGvWrAk6X7p0qaKiolRSUqJhw4Y57V26dFFMTMw5x3jvvff08ccfa926dYqOjtbgwYM1e/ZsTZs2Tbm5uXK5XFqyZIkSEhI0f/58SVL//v21efNmLViwQKmpqS29LAAA0M60+jM5fr9fktStW7eg9tdee01XXXWVbrjhBuXk5OjUqVNOX3FxsRITExUdHe20paamKhAIaM+ePU5NcnJy0JipqakqLi4+71xqamoUCASCDgAAYKcWv5PzRY2NjZo8ebJuu+023XDDDU77qFGj1LNnT8XFxWnXrl2aNm2aysrK9Oabb0qSfD5fUMCR5Jz7fL4vrQkEAjp9+rQ6d+581nzy8vI0c+bMFl0jAAC4NLVqyMnKytLu3bu1efPmoPYJEyY4PycmJio2NlZ333239u/frz59+rTafHJycpSdne2cBwIBxcfHt9r1AABA22m1j6smTZqk/Px8bdiwQddee+2X1iYlJUmS9u3bJ0mKiYlRVVVVUE3TedNzPOer8Xg857yLI0lut1sejyfoAAAAdmrxkGOM0aRJk/TWW29p/fr1SkhI+MrXlJaWSpJiY2MlSV6vVx999JEOHz7s1BQUFMjj8WjAgAFOTWFhYdA4BQUF8nq9LbQSAADQnrV4yMnKytLvf/97vf766woPD5fP55PP59Pp06clSfv379fs2bNVUlKigwcP6p133tGYMWM0bNgw3XjjjZKklJQUDRgwQA8++KB27typtWvX6oknnlBWVpbcbrckaeLEiTpw4IAee+wx7d27V88//7yWL1+uKVOmtPSSAABAO9TiIWfx4sXy+/268847FRsb6xzLli2TJLlcLq1bt04pKSnq16+ffv7zn2vkyJF69913nTE6dOig/Px8dejQQV6vVw888IDGjBmjWbNmOTUJCQlatWqVCgoKNGjQIM2fP18vvvgiXx8HAACSpBBjjGnrSbSVQCCgiIgI+f1+ns8BLNRr+qqg84Nz0tpoJgBa0oW+f/O3qwAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAldp9yFm0aJF69eqlsLAwJSUladu2bW09JQAAcAlo1yFn2bJlys7O1lNPPaUPP/xQgwYNUmpqqg4fPtzWUwMAAG2sXYecZ555Rg8//LDGjRunAQMGaMmSJerSpYtefvnltp4aAABoYx3begJfV21trUpKSpSTk+O0hYaGKjk5WcXFxed8TU1NjWpqapxzv98vSQoEAq07WQBtorHmVNA5/60Ddmj6b9kY86V17Tbk/OMf/1BDQ4Oio6OD2qOjo7V3795zviYvL08zZ848qz0+Pr5V5gjg0hLxbFvPAEBLOn78uCIiIs7b325DzteRk5Oj7Oxs57yxsVFHjx5V9+7dFRIS0oYza3uBQEDx8fH67LPP5PF42no61mKfLx72+uJgny8O9jmYMUbHjx9XXFzcl9a125Bz1VVXqUOHDqqqqgpqr6qqUkxMzDlf43a75Xa7g9oiIyNba4rtksfj4T+gi4B9vnjY64uDfb442Of/92V3cJq02wePXS6Xhg4dqsLCQqetsbFRhYWF8nq9bTgzAABwKWi3d3IkKTs7W2PHjtVNN92km2++Wc8++6xOnjypcePGtfXUAABAG2vXIee+++7T3//+d82YMUM+n0+DBw/WmjVrznoYGV/N7XbrqaeeOuvjPLQs9vniYa8vDvb54mCfv54Q81XfvwIAAGiH2u0zOQAAAF+GkAMAAKxEyAEAAFYi5AAAACsRcix1/PhxTZ48WT179lTnzp1166236oMPPnD6q6qq9NBDDykuLk5dunTR8OHD9emnn37luNXV1crKylJsbKzcbreuv/56rV69ujWXcklrrX1+9tln1bdvX3Xu3Fnx8fGaMmWKzpw505pLuWQUFRXpnnvuUVxcnEJCQrRy5cqgfmOMZsyYodjYWHXu3FnJycln7enRo0c1evRoeTweRUZGKjMzUydOnPjS6545c0ZZWVnq3r27rrzySo0cOfKsXzZqm7bY66NHj+qRRx5x/n336NFDP/vZz5y/JWijtvo3/cXxR4wYcc5r246QY6nx48eroKBAv/vd7/TRRx8pJSVFycnJ+tvf/iZjjNLT03XgwAG9/fbb2rFjh3r27Knk5GSdPHnyvGPW1tbqu9/9rg4ePKg//vGPKisr029/+1tdc801F3Fll5bW2OfXX39d06dP11NPPaVPPvlEL730kpYtW6Zf/vKXF3FlbefkyZMaNGiQFi1adM7+uXPn6je/+Y2WLFmirVu36oorrlBqampQCBw9erT27NmjgoIC5efnq6ioSBMmTPjS606ZMkXvvvuuVqxYoU2bNunQoUO69957W3Rtl5q22OtDhw7p0KFD+q//+i/t3r1bS5cu1Zo1a5SZmdni67tUtNW/6SbPPvvs5funiwysc+rUKdOhQweTn58f1D5kyBDz+OOPm7KyMiPJ7N692+lraGgwV199tfntb3973nEXL15sevfubWpra1tt7u1Ja+1zVlaW+c53vhPUlp2dbW677baWXUA7IMm89dZbznljY6OJiYkx8+bNc9qqq6uN2+02f/jDH4wxxnz88cdGkvnggw+cmj/96U8mJCTE/O1vfzvndaqrq02nTp3MihUrnLZPPvnESDLFxcUtvKpL08Xa63NZvny5cblcpq6u7l9fyCXuYu/zjh07zDXXXGMqKyvPuvblgDs5Fqqvr1dDQ4PCwsKC2jt37qzNmzerpqZGkoL6Q0ND5Xa7tXnz5vOO+84778jr9SorK0vR0dG64YYb9PTTT6uhoaF1FnKJa619vvXWW1VSUqJt27ZJkg4cOKDVq1fre9/7Xiuson0pLy+Xz+dTcnKy0xYREaGkpCQVFxdLkoqLixUZGambbrrJqUlOTlZoaKi2bt16znFLSkpUV1cXNG6/fv3Uo0cPZ9zLTWvt9bn4/X55PB517Niufz/t19Ka+3zq1CmNGjVKixYtOu/fdLQdIcdC4eHh8nq9mj17tg4dOqSGhgb9/ve/V3FxsSorK53/eefk5OjYsWOqra3Vr3/9a33++eeqrKw877gHDhzQH//4RzU0NGj16tV68sknNX/+fP3qV7+6iKu7dLTWPo8aNUqzZs3S7bffrk6dOqlPnz668847L5uPq76Mz+eTpLN+q3l0dLTT5/P5FBUVFdTfsWNHdevWzak517gul+usP9j7xXEvN6211//sH//4h2bPnn3BH73YpjX3ecqUKbr11lv1/e9/v4Vn3X4Qciz1u9/9TsYYXXPNNXK73frNb36jjIwMhYaGqlOnTnrzzTf1l7/8Rd26dVOXLl20YcMGjRgxQqGh5/8n0djYqKioKL3wwgsaOnSo7rvvPj3++ONasmTJRVzZpaU19nnjxo16+umn9fzzz+vDDz/Um2++qVWrVmn27NkXcWVA6wsEAkpLS9OAAQOUm5vb1tOxyjvvvKP169fr2WefbeuptClCjqX69OmjTZs26cSJE/rss8+0bds21dXVqXfv3pKkoUOHqrS0VNXV1aqsrNSaNWt05MgRp/9cYmNjdf3116tDhw5OW//+/eXz+VRbW9vqa7oUtcY+P/nkk3rwwQc1fvx4JSYm6gc/+IGefvpp5eXlqbGx8WIt7ZLUdMv9n7/1VFVV5fTFxMTo8OHDQf319fU6evToeW/Zx8TEqLa2VtXV1ecd93LTWnvd5Pjx4xo+fLjCw8P11ltvqVOnTi04+/ajtfZ5/fr12r9/vyIjI9WxY0fno8CRI0fqzjvvbOFVXLoIOZa74oorFBsbq2PHjmnt2rVn3baMiIjQ1VdfrU8//VTbt2//0tuat912m/bt2xf0RvuXv/xFsbGxcrlcrbaG9qAl9/nUqVNn3elpCpbmMv9TcwkJCYqJiVFhYaHTFggEtHXrVnm9XkmS1+tVdXW1SkpKnJr169ersbFRSUlJ5xx36NCh6tSpU9C4ZWVlqqiocMa93LTWXjeNk5KSIpfLpXfeeees59ouJ621z9OnT9euXbtUWlrqHJK0YMECvfLKK623oEtNGz/4jFayZs0a86c//ckcOHDAvPfee2bQoEEmKSnJ+WbU8uXLzYYNG8z+/fvNypUrTc+ePc29994bNMaDDz5opk+f7pxXVFSY8PBwM2nSJFNWVmby8/NNVFSU+dWvfnVR13YpaY19fuqpp0x4eLj5wx/+4Izbp08f88Mf/vCirq2tHD9+3OzYscPs2LHDSDLPPPOM2bFjh/nrX/9qjDFmzpw5JjIy0rz99ttm165d5vvf/75JSEgwp0+fdsYYPny4+eY3v2m2bt1qNm/ebL7xjW+YjIwMp//zzz83ffv2NVu3bnXaJk6caHr06GHWr19vtm/fbrxer/F6vRdv4W2gLfba7/ebpKQkk5iYaPbt22cqKyudo76+/uJuwEXSVv+m/5kuw29XEXIstWzZMtO7d2/jcrlMTEyMycrKMtXV1U7/woULzbXXXms6depkevToYZ544glTU1MTNMa3v/1tM3bs2KC2LVu2mKSkJON2u03v3r3Nf/7nf1r7P6YL0Rr7XFdXZ3Jzc02fPn1MWFiYiY+PNz/96U/NsWPHLtKq2taGDRuMpLOOpj1qbGw0Tz75pImOjjZut9vcfffdpqysLGiMI0eOmIyMDHPllVcaj8djxo0bZ44fP+70l5eXG0lmw4YNTtvp06fNT3/6U9O1a1fTpUsX84Mf/MBUVlZejCW3mbbY6/NdU5IpLy+/SCu/uNrq3/Q/uxxDTogxl/n9bwAAYCWeyQEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASv8LwboobY3yp4oAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.hist(x[:,0], 100);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "After a year there is a full lognormal distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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587tr1Mwwqf141/+8he98cYbWrp0qd544w29+uqramho0N133x1Sj3688s/jRVu2bNH+/fu7XaqcfrxyP/7ud7/TlClTlJOTo1/96ld66623tHTpUg0dOtSuU1ZWpm3btmnz5s3as2ePmpqaNGPGjP46BXNYg9iiRYusKVOmfGJ5V1eX5fF4rGeeecbe19raajkcDuu//uu/+qOJMaGwsND613/915B9M2bMsIqLiy3Loh97QpK1ZcsW+3VP+uzYsWOWJOvgwYN2nR07dlhxcXHWBx980G9tN8ml/didAwcOWJKs999/37Is+rE7n9SPf/jDH6zPfOYz1ttvv22NHj3aWrVqlV1GP16uu3687777rPvvv/8T39Pa2molJiZamzdvtvcdP37ckmT5fL6r1VQjDeoRlF/84heaOHGivvGNbyg9PV3jx4/Xiy++aJefPHlSfr9f+fn59j6Xy6W8vDz5fL5oNNlIX/rSl1RbW6t3331XkvS///u/+s1vfqNp06ZJoh97oyd95vP5lJKSookTJ9p18vPzFR8fr7q6un5vc6wIBAKKi4uzn+dFP/ZMV1eXZs+erYULF+rGG2+8rJx+vLKuri5t375dn//851VQUKD09HTl5eWFXAaqr69XZ2dnyP/9nJwcZWVlDbrfl4M6oPz+97/XunXrNGbMGO3atUvz5s3TI488og0bNkiS/H6/JF22uq3b7bbLIC1evFgzZ85UTk6OEhMTNX78eC1YsEDFxcWS6Mfe6Emf+f1+paenh5QnJCQoNTWVfv0EbW1tWrRokWbNmmU/oI1+7Jmnn35aCQkJeuSRR7otpx+vrKWlRWfPntWKFSt055136rXXXtPXv/51zZgxQ3v27JH0t35MSkq67IG4g/H3ZdSWujdBV1eXJk6cqKeeekqSNH78eL399tuqqqpSSUlJlFsXO372s59p48aN2rRpk2688UYdPnxYCxYsUEZGBv0IY3R2duqb3/ymLMvSunXrot2cmFJfX68f//jHeuONNxQXFxft5sSsrq4uSdL06dNVVlYmSbr11lu1b98+VVVV6ctf/nI0m2ecQT2CMmrUKOXm5obsGzt2rD2b2uPxSNJls6ebm5vtMkgLFy60R1HGjRun2bNnq6ysTJWVlZLox97oSZ95PB61tLSElJ8/f16nT5+mXy9xMZy8//77qqmpCXm8Pf14Zb/+9a/V0tKirKwsJSQkKCEhQe+//76+853v6IYbbpBEP/bEtddeq4SEhCt+73R0dKi1tTWkzmD8fTmoA8rkyZPV0NAQsu/dd9/V6NGjJUnZ2dnyeDyqra21y4PBoOrq6uT1evu1rSb7y1/+ovj40B+lIUOG2H8t0I/h60mfeb1etba2qr6+3q6ze/dudXV1KS8vr9/bbKqL4eTEiRN6/fXXlZaWFlJOP17Z7Nmz9dZbb+nw4cP2lpGRoYULF2rXrl2S6MeeSEpK0m233fap3zsTJkxQYmJiyP/9hoYGNTY2Dr7fl9GepRtNBw4csBISEqwf/OAH1okTJ6yNGzdaw4cPt37605/adVasWGGlpKRYP//5z6233nrLmj59upWdnW399a9/jWLLzVJSUmJ95jOfsaqrq62TJ09ar776qnXttddajz76qF2HfrzcmTNnrDfffNN68803LUnWs88+a7355pv23SU96bM777zTGj9+vFVXV2f95je/scaMGWPNmjUrWqcUFZ/Wjx0dHdbdd99tXX/99dbhw4etDz/80N7a29vtY9CPV/55vNSld/FYFv1oWVfux1dffdVKTEy0XnjhBevEiRPW2rVrrSFDhli//vWv7WM89NBDVlZWlrV7927r0KFDltfrtbxeb7ROKWoGdUCxLMvatm2bddNNN1kOh8PKycmxXnjhhZDyrq4ua+nSpZbb7bYcDod1xx13WA0NDVFqrZmCwaD17W9/28rKyrKGDh1qffazn7W+973vhXwB0I+X++Uvf2lJumwrKSmxLKtnffanP/3JmjVrljVixAjL6XRa3/rWt6wzZ85E4Wyi59P68eTJk92WSbJ++ctf2segH6/883ip7gIK/dizfnzppZesz33uc9bQoUOtW265xdq6dWvIMf76179a//Zv/2Zdc8011vDhw62vf/3r1ocfftjPZxJ9cZb1seU+AQAADDCo56AAAAAzEVAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYJz/B7QxzEo8iYitAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.hist(x[:,1], 100);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Multiple Assets One Time" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "num_assets = 2\n", - "num_paths = 10000\n", - "num_time_steps = 2\n", - "t = 1.0\n", - "mus = 0.03 * np.ones(num_assets)\n", - "stock_prices = 100.0 * np.ones(num_assets)\n", - "volatilities = 0.2 * np.ones(num_assets)\n", - "rho = 0.9999\n", - "corr_matrix = np.array([[1.0, rho],[rho, 1.0]])\n", - "seed = 1912" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "x = get_assets(num_assets, num_paths, t,\n", - " mus, stock_prices, volatilities,\n", - " corr_matrix, seed)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(20000, 2)" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[177.55530639, 178.00024012],\n", - " [ 98.01446156, 98.5703073 ],\n", - " [122.594059 , 122.28616957],\n", - " ...,\n", - " [ 81.19405101, 81.2466739 ],\n", - " [129.68390628, 129.74501396],\n", - " [ 83.74783896, 83.33294683]])" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Multiple Assets and Times" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "num_assets = 2\n", - "num_paths = 10000\n", - "num_time_steps = 2\n", - "t = 1.0\n", - "mus = 0.03 * np.ones(num_assets)\n", - "stock_prices = 100.0 * np.ones(num_assets)\n", - "volatilities = 0.2 * np.ones(num_assets)\n", - "rho = 0.3\n", - "corr_matrix = np.array([[1.0, rho],[rho, 1.0]])\n", - "seed = 1912" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([0.03, 0.03]), array([100., 100.]), array([0.2, 0.2]))" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mus, stock_prices, volatilities" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1. , 0.3],\n", - " [0.3, 1. ]])" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "corr_matrix" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "x = get_paths_assets(num_assets, num_paths, num_time_steps, t,\n", - " mus, stock_prices, volatilities,\n", - " corr_matrix, seed)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(20000, 3, 2)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[[100. , 100. ],\n", - " [ 98.38791532, 130.76293912],\n", - " [113.39649611, 121.56624422]],\n", - "\n", - " [[100. , 100. ],\n", - " [122.73085817, 103.85874482],\n", - " [ 94.80993213, 91.09672743]],\n", - "\n", - " [[100. , 100. ],\n", - " [ 92.99294116, 104.15982172],\n", - " [101.33438841, 103.86885503]],\n", - "\n", - " ...,\n", - "\n", - " [[100. , 100. ],\n", - " [ 84.43564014, 112.01112396],\n", - " [ 80.53857693, 135.91115838]],\n", - "\n", - " [[100. , 100. ],\n", - " [110.01676438, 115.42047693],\n", - " [115.22905479, 99.58218223]],\n", - "\n", - " [[100. , 100. ],\n", - " [116.01756008, 95.42216717],\n", - " [114.06612186, 122.72885293]]])" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) 2019, Dominic O'Kane " - ] - } - ], - "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.10.13" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 4f9bef9e6dcb858440cdc095eb0a1ad7ad4c47b6 Mon Sep 17 00:00:00 2001 From: Akshat Sharma <111536616+Akshat111111@users.noreply.github.com> Date: Mon, 11 Dec 2023 11:36:09 +0530 Subject: [PATCH 2/2] Add files via upload --- .../FINGBMPROCESS_generatePaths (2).ipynb | 600 ++++++++++++++++++ 1 file changed, 600 insertions(+) create mode 100644 notebooks/models/FINGBMPROCESS_generatePaths (2).ipynb diff --git a/notebooks/models/FINGBMPROCESS_generatePaths (2).ipynb b/notebooks/models/FINGBMPROCESS_generatePaths (2).ipynb new file mode 100644 index 00000000..e12b645e --- /dev/null +++ b/notebooks/models/FINGBMPROCESS_generatePaths (2).ipynb @@ -0,0 +1,600 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# MODEL GENERATION OF GBM RANDOM PATHS\n", + "In this notebook I show how you can generate random paths according to a GBM" + ], + "metadata": { + "id": "ZfG37OKQdnda" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "gsfqtPCS_LEC" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "source": [ + "pip install financepy" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "urTtO08m_Ncm", + "outputId": "cf70ed1a-0191-4531-fd67-99f19c8d0603" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting financepy\n", + " Downloading financepy-0.310-py3-none-any.whl (628 kB)\n", + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/628.6 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.4/628.6 kB\u001b[0m \u001b[31m4.4 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m628.6/628.6 kB\u001b[0m \u001b[31m9.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from financepy) (1.23.5)\n", + "Requirement already satisfied: numba in /usr/local/lib/python3.10/dist-packages (from financepy) (0.58.1)\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from financepy) (1.11.3)\n", + "Requirement already satisfied: llvmlite in /usr/local/lib/python3.10/dist-packages (from financepy) (0.41.1)\n", + "Requirement already satisfied: ipython in /usr/local/lib/python3.10/dist-packages (from financepy) (7.34.0)\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from financepy) (3.7.1)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from financepy) (1.5.3)\n", + "Requirement already satisfied: prettytable in /usr/local/lib/python3.10/dist-packages (from financepy) (3.9.0)\n", + "Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.10/dist-packages (from ipython->financepy) (67.7.2)\n", + "Collecting jedi>=0.16 (from ipython->financepy)\n", + " Downloading jedi-0.19.1-py2.py3-none-any.whl (1.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m61.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: decorator in /usr/local/lib/python3.10/dist-packages (from ipython->financepy) (4.4.2)\n", + "Requirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from ipython->financepy) (0.7.5)\n", + "Requirement already satisfied: traitlets>=4.2 in /usr/local/lib/python3.10/dist-packages (from ipython->financepy) (5.7.1)\n", + "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from ipython->financepy) (3.0.41)\n", + "Requirement already satisfied: pygments in /usr/local/lib/python3.10/dist-packages (from ipython->financepy) (2.16.1)\n", + "Requirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from ipython->financepy) (0.2.0)\n", + "Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from ipython->financepy) (0.1.6)\n", + "Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from ipython->financepy) (4.8.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->financepy) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->financepy) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->financepy) (4.44.3)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->financepy) (1.4.5)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->financepy) (23.2)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->financepy) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->financepy) (3.1.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->financepy) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->financepy) (2023.3.post1)\n", + "Requirement already satisfied: wcwidth in /usr/local/lib/python3.10/dist-packages (from prettytable->financepy) (0.2.10)\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->ipython->financepy) (0.8.3)\n", + "Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.10/dist-packages (from pexpect>4.3->ipython->financepy) (0.7.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib->financepy) (1.16.0)\n", + "Installing collected packages: jedi, financepy\n", + "Successfully installed financepy-0.310 jedi-0.19.1\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from financepy.models.gbm_process_simulator import *" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TJc1qkQW_dm-", + "outputId": "8ea2f690-c24e-40ff-ed83-b8ef135f53ee" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "####################################################################\n", + "# FINANCEPY BETA Version 0.310 - This build: 25 Aug 2023 at 16:17 #\n", + "# This software is distributed FREE AND WITHOUT ANY WARRANTY #\n", + "# Report bugs as issues at https://github.com/domokane/FinancePy #\n", + "####################################################################\n", + "\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "process = FinGBMProcess()" + ], + "metadata": { + "id": "ZUOMNLhK_iqB" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Single Asset\n", + "We can generate time series for a single asset over time." + ], + "metadata": { + "id": "5DDyJkQp_mkr" + } + }, + { + "cell_type": "code", + "source": [ + "num_paths = 10000\n", + "num_time_steps = 2\n", + "t = 1.0\n", + "mu = 0.03\n", + "S=100.0\n", + "vol = 0.2\n", + "seed = 1912\n" + ], + "metadata": { + "id": "BEAchrII_qj_" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x = get_paths(num_paths,num_time_steps,t,mu,S,vol,seed)" + ], + "metadata": { + "id": "S2ap4QVK_wol" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "This can be plotted" + ], + "metadata": { + "id": "Bt_CP_APeDDg" + } + }, + { + "cell_type": "code", + "source": [ + "x.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "loEtojyt_0k7", + "outputId": "51bec9a5-76fa-49d5-f9bf-611543f17257" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(20000, 3)" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "The distribution at time zero is peaked at 100.0" + ], + "metadata": { + "id": "lx-W9yGfeI9c" + } + }, + { + "cell_type": "code", + "source": [ + "plt.hist(x[:,0], 100);" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "id": "0tvFRim6_2DS", + "outputId": "ded0d4a2-7fe9-4ba6-dc92-bd4d96e575ef" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAGdCAYAAADwjmIIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAxuElEQVR4nO3de3SU1b3G8ScBZgKaSQDNTQMErNyMULDG8UK1pgk0y9NUzqkGFKRBShuskBYhVTFAj6FwEOkSYVkveFqtQJeiBgqGcMmhRJBIQFBSgdBoyYQWyAzXXPf546y8xymgxCaEbL6ftd618u79m/3uvRc6z3rnnSTEGGMEAABgmdC2ngAAAEBrIOQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKzUsa0n0JYaGxt16NAhhYeHKyQkpK2nAwAALoAxRsePH1dcXJxCQ89/v+ayDjmHDh1SfHx8W08DAAB8DZ999pmuvfba8/Zf1iEnPDxc0v9tksfjaePZAACACxEIBBQfH++8j5/PZR1ymj6i8ng8hBwAANqZr3rUhAePAQCAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKzQo5eXl5+ta3vqXw8HBFRUUpPT1dZWVlQTVnzpxRVlaWunfvriuvvFIjR45UVVVVUE1FRYXS0tLUpUsXRUVFaerUqaqvrw+q2bhxo4YMGSK3263rrrtOS5cuPWs+ixYtUq9evRQWFqakpCRt27atOcsBAAAWa1bI2bRpk7KysvT++++roKBAdXV1SklJ0cmTJ52aKVOm6N1339WKFSu0adMmHTp0SPfee6/T39DQoLS0NNXW1mrLli169dVXtXTpUs2YMcOpKS8vV1pamu666y6VlpZq8uTJGj9+vNauXevULFu2TNnZ2Xrqqaf04YcfatCgQUpNTdXhw4f/lf0AAAC2MP+Cw4cPG0lm06ZNxhhjqqurTadOncyKFSucmk8++cRIMsXFxcYYY1avXm1CQ0ONz+dzahYvXmw8Ho+pqakxxhjz2GOPmYEDBwZd67777jOpqanO+c0332yysrKc84aGBhMXF2fy8vIueP5+v99IMn6/vxmrBgAAbelC37//pWdy/H6/JKlbt26SpJKSEtXV1Sk5Odmp6devn3r06KHi4mJJUnFxsRITExUdHe3UpKamKhAIaM+ePU7NF8doqmkao7a2ViUlJUE1oaGhSk5OdmrOpaamRoFAIOgAAAB26vh1X9jY2KjJkyfrtttu0w033CBJ8vl8crlcioyMDKqNjo6Wz+dzar4YcJr6m/q+rCYQCOj06dM6duyYGhoazlmzd+/e8845Ly9PM2fObP5iAbRLvaavCjo/OCetjWYCoC187Ts5WVlZ2r17t954442WnE+rysnJkd/vd47PPvusracEAABayde6kzNp0iTl5+erqKhI1157rdMeExOj2tpaVVdXB93NqaqqUkxMjFPzz9+Cavr21Rdr/vkbWVVVVfJ4POrcubM6dOigDh06nLOmaYxzcbvdcrvdzV8wAABod5p1J8cYo0mTJumtt97S+vXrlZCQENQ/dOhQderUSYWFhU5bWVmZKioq5PV6JUler1cfffRR0LegCgoK5PF4NGDAAKfmi2M01TSN4XK5NHTo0KCaxsZGFRYWOjUAAODy1qw7OVlZWXr99df19ttvKzw83HmGJiIiQp07d1ZERIQyMzOVnZ2tbt26yePx6JFHHpHX69Utt9wiSUpJSdGAAQP04IMPau7cufL5fHriiSeUlZXl3GWZOHGinnvuOT322GP60Y9+pPXr12v58uVater/P1/Pzs7W2LFjddNNN+nmm2/Ws88+q5MnT2rcuHEttTcAAKAda1bIWbx4sSTpzjvvDGp/5ZVX9NBDD0mSFixYoNDQUI0cOVI1NTVKTU3V888/79R26NBB+fn5+slPfiKv16srrrhCY8eO1axZs5yahIQErVq1SlOmTNHChQt17bXX6sUXX1RqaqpTc9999+nvf/+7ZsyYIZ/Pp8GDB2vNmjVnPYwMAAAuTyHGGNPWk2grgUBAERER8vv98ng8bT0dAC2Mb1cBdrrQ92/+dhUAALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsFKzQ05RUZHuuecexcXFKSQkRCtXrgzqDwkJOecxb948p6ZXr15n9c+ZMydonF27dumOO+5QWFiY4uPjNXfu3LPmsmLFCvXr109hYWFKTEzU6tWrm7scAABgqWaHnJMnT2rQoEFatGjROfsrKyuDjpdfflkhISEaOXJkUN2sWbOC6h555BGnLxAIKCUlRT179lRJSYnmzZun3NxcvfDCC07Nli1blJGRoczMTO3YsUPp6elKT0/X7t27m7skAABgoY7NfcGIESM0YsSI8/bHxMQEnb/99tu666671Lt376D28PDws2qbvPbaa6qtrdXLL78sl8ulgQMHqrS0VM8884wmTJggSVq4cKGGDx+uqVOnSpJmz56tgoICPffcc1qyZElzlwUAACzTqs/kVFVVadWqVcrMzDyrb86cOerevbu++c1vat68eaqvr3f6iouLNWzYMLlcLqctNTVVZWVlOnbsmFOTnJwcNGZqaqqKi4vPO5+amhoFAoGgAwAA2KnZd3Ka49VXX1V4eLjuvffeoPaf/exnGjJkiLp166YtW7YoJydHlZWVeuaZZyRJPp9PCQkJQa+Jjo52+rp27Sqfz+e0fbHG5/Oddz55eXmaOXNmSywNAABc4lo15Lz88ssaPXq0wsLCgtqzs7Odn2+88Ua5XC79+Mc/Vl5entxud6vNJycnJ+jagUBA8fHxrXY9AADQdlot5PzP//yPysrKtGzZsq+sTUpKUn19vQ4ePKi+ffsqJiZGVVVVQTVN503P8Zyv5nzP+UiS2+1u1RAFAAAuHa32TM5LL72koUOHatCgQV9ZW1paqtDQUEVFRUmSvF6vioqKVFdX59QUFBSob9++6tq1q1NTWFgYNE5BQYG8Xm8LrgIAALRXzQ45J06cUGlpqUpLSyVJ5eXlKi0tVUVFhVMTCAS0YsUKjR8//qzXFxcX69lnn9XOnTt14MABvfbaa5oyZYoeeOABJ8CMGjVKLpdLmZmZ2rNnj5YtW6aFCxcGfdT06KOPas2aNZo/f7727t2r3Nxcbd++XZMmTWrukgAAgIWa/XHV9u3bdddddznnTcFj7NixWrp0qSTpjTfekDFGGRkZZ73e7XbrjTfeUG5urmpqapSQkKApU6YEBZiIiAi99957ysrK0tChQ3XVVVdpxowZztfHJenWW2/V66+/rieeeEK//OUv9Y1vfEMrV67UDTfc0NwlAQAAC4UYY0xbT6KtBAIBRUREyO/3y+PxtPV0ALSwXtNXBZ0fnJPWRjMB0JIu9P2bv10FAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKzU7JBTVFSke+65R3FxcQoJCdHKlSuD+h966CGFhIQEHcOHDw+qOXr0qEaPHi2Px6PIyEhlZmbqxIkTQTW7du3SHXfcobCwMMXHx2vu3LlnzWXFihXq16+fwsLClJiYqNWrVzd3OQAAwFLNDjknT57UoEGDtGjRovPWDB8+XJWVlc7xhz/8Iah/9OjR2rNnjwoKCpSfn6+ioiJNmDDB6Q8EAkpJSVHPnj1VUlKiefPmKTc3Vy+88IJTs2XLFmVkZCgzM1M7duxQenq60tPTtXv37uYuCQAAWCjEGGO+9otDQvTWW28pPT3daXvooYdUXV191h2eJp988okGDBigDz74QDfddJMkac2aNfre976nzz//XHFxcVq8eLEef/xx+Xw+uVwuSdL06dO1cuVK7d27V5J033336eTJk8rPz3fGvuWWWzR48GAtWbLkguYfCAQUEREhv98vj8fzNXYAwKWs1/RVQecH56S10UwAtKQLff9ulWdyNm7cqKioKPXt21c/+clPdOTIEaevuLhYkZGRTsCRpOTkZIWGhmrr1q1OzbBhw5yAI0mpqakqKyvTsWPHnJrk5OSg66ampqq4uPi886qpqVEgEAg6AACAnVo85AwfPlz//d//rcLCQv3617/Wpk2bNGLECDU0NEiSfD6foqKigl7TsWNHdevWTT6fz6mJjo4Oqmk6/6qapv5zycvLU0REhHPEx8f/a4sFAACXrI4tPeD999/v/JyYmKgbb7xRffr00caNG3X33Xe39OWaJScnR9nZ2c55IBAg6AAAYKlW/wp57969ddVVV2nfvn2SpJiYGB0+fDiopr6+XkePHlVMTIxTU1VVFVTTdP5VNU395+J2u+XxeIIOAABgp1YPOZ9//rmOHDmi2NhYSZLX61V1dbVKSkqcmvXr16uxsVFJSUlOTVFRkerq6pyagoIC9e3bV127dnVqCgsLg65VUFAgr9fb2ksCAADtQLNDzokTJ1RaWqrS0lJJUnl5uUpLS1VRUaETJ05o6tSpev/993Xw4EEVFhbq+9//vq677jqlpqZKkvr376/hw4fr4Ycf1rZt2/TnP/9ZkyZN0v3336+4uDhJ0qhRo+RyuZSZmak9e/Zo2bJlWrhwYdBHTY8++qjWrFmj+fPna+/evcrNzdX27ds1adKkFtgWAADQ7plm2rBhg5F01jF27Fhz6tQpk5KSYq6++mrTqVMn07NnT/Pwww8bn88XNMaRI0dMRkaGufLKK43H4zHjxo0zx48fD6rZuXOnuf32243b7TbXXHONmTNnzllzWb58ubn++uuNy+UyAwcONKtWrWrWWvx+v5Fk/H5/c7cBQDvQc1p+0AHADhf6/v0v/Z6c9o7fkwPYjd+TA9ipTX9PDgAAQFsj5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAVmp2yCkqKtI999yjuLg4hYSEaOXKlU5fXV2dpk2bpsTERF1xxRWKi4vTmDFjdOjQoaAxevXqpZCQkKBjzpw5QTW7du3SHXfcobCwMMXHx2vu3LlnzWXFihXq16+fwsLClJiYqNWrVzd3OQAAwFLNDjknT57UoEGDtGjRorP6Tp06pQ8//FBPPvmkPvzwQ7355psqKyvTv/3bv51VO2vWLFVWVjrHI4884vQFAgGlpKSoZ8+eKikp0bx585Sbm6sXXnjBqdmyZYsyMjKUmZmpHTt2KD09Xenp6dq9e3dzlwQAACzUsbkvGDFihEaMGHHOvoiICBUUFAS1Pffcc7r55ptVUVGhHj16OO3h4eGKiYk55zivvfaaamtr9fLLL8vlcmngwIEqLS3VM888owkTJkiSFi5cqOHDh2vq1KmSpNmzZ6ugoEDPPfeclixZ0txlAQAAy7T6Mzl+v18hISGKjIwMap8zZ466d++ub37zm5o3b57q6+udvuLiYg0bNkwul8tpS01NVVlZmY4dO+bUJCcnB42Zmpqq4uLi886lpqZGgUAg6AAAAHZq9p2c5jhz5oymTZumjIwMeTwep/1nP/uZhgwZom7dumnLli3KyclRZWWlnnnmGUmSz+dTQkJC0FjR0dFOX9euXeXz+Zy2L9b4fL7zzicvL08zZ85sqeUBAIBLWKuFnLq6Ov3whz+UMUaLFy8O6svOznZ+vvHGG+VyufTjH/9YeXl5crvdrTUl5eTkBF07EAgoPj6+1a4HAADaTquEnKaA89e//lXr168PuotzLklJSaqvr9fBgwfVt29fxcTEqKqqKqim6bzpOZ7z1ZzvOR9JcrvdrRqiAADApaPFn8lpCjiffvqp1q1bp+7du3/la0pLSxUaGqqoqChJktfrVVFRkerq6pyagoIC9e3bV127dnVqCgsLg8YpKCiQ1+ttwdUAAID2qtl3ck6cOKF9+/Y55+Xl5SotLVW3bt0UGxurf//3f9eHH36o/Px8NTQ0OM/IdOvWTS6XS8XFxdq6davuuusuhYeHq7i4WFOmTNEDDzzgBJhRo0Zp5syZyszM1LRp07R7924tXLhQCxYscK776KOP6tvf/rbmz5+vtLQ0vfHGG9q+fXvQ18wBAMBlzDTThg0bjKSzjrFjx5ry8vJz9kkyGzZsMMYYU1JSYpKSkkxERIQJCwsz/fv3N08//bQ5c+ZM0HV27txpbr/9duN2u80111xj5syZc9Zcli9fbq6//nrjcrnMwIEDzapVq5q1Fr/fbyQZv9/f3G0A0A70nJYfdACww4W+f4cYY0ybpKtLQCAQUEREhPx+/1c+NwSg/ek1fVXQ+cE5aW00EwAt6ULfv/nbVQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASs0OOUVFRbrnnnsUFxenkJAQrVy5MqjfGKMZM2YoNjZWnTt3VnJysj799NOgmqNHj2r06NHyeDyKjIxUZmamTpw4EVSza9cu3XHHHQoLC1N8fLzmzp171lxWrFihfv36KSwsTImJiVq9enVzlwMAACzV7JBz8uRJDRo0SIsWLTpn/9y5c/Wb3/xGS5Ys0datW3XFFVcoNTVVZ86ccWpGjx6tPXv2qKCgQPn5+SoqKtKECROc/kAgoJSUFPXs2VMlJSWaN2+ecnNz9cILLzg1W7ZsUUZGhjIzM7Vjxw6lp6crPT1du3fvbu6SAACAhUKMMeZrvzgkRG+99ZbS09Ml/d9dnLi4OP385z/XL37xC0mS3+9XdHS0li5dqvvvv1+ffPKJBgwYoA8++EA33XSTJGnNmjX63ve+p88//1xxcXFavHixHn/8cfl8PrlcLknS9OnTtXLlSu3du1eSdN999+nkyZPKz8935nPLLbdo8ODBWrJkyQXNPxAIKCIiQn6/Xx6P5+tuA4BLVK/pq4LOD85Ja6OZAGhJF/r+3aLP5JSXl8vn8yk5Odlpi4iIUFJSkoqLiyVJxcXFioyMdAKOJCUnJys0NFRbt251aoYNG+YEHElKTU1VWVmZjh075tR88TpNNU3XOZeamhoFAoGgAwAA2KlFQ47P55MkRUdHB7VHR0c7fT6fT1FRUUH9HTt2VLdu3YJqzjXGF69xvpqm/nPJy8tTRESEc8THxzd3iQAAoJ24rL5dlZOTI7/f7xyfffZZW08JAAC0khYNOTExMZKkqqqqoPaqqiqnLyYmRocPHw7qr6+v19GjR4NqzjXGF69xvpqm/nNxu93yeDxBBwAAsFOLhpyEhATFxMSosLDQaQsEAtq6dau8Xq8kyev1qrq6WiUlJU7N+vXr1djYqKSkJKemqKhIdXV1Tk1BQYH69u2rrl27OjVfvE5TTdN1AADA5a3ZIefEiRMqLS1VaWmppP972Li0tFQVFRUKCQnR5MmT9atf/UrvvPOOPvroI40ZM0ZxcXHON7D69++v4cOH6+GHH9a2bdv05z//WZMmTdL999+vuLg4SdKoUaPkcrmUmZmpPXv2aNmyZVq4cKGys7OdeTz66KNas2aN5s+fr7179yo3N1fbt2/XpEmT/vVdAQAA7Z9ppg0bNhhJZx1jx441xhjT2NhonnzySRMdHW3cbre5++67TVlZWdAYR44cMRkZGebKK680Ho/HjBs3zhw/fjyoZufOneb22283brfbXHPNNWbOnDlnzWX58uXm+uuvNy6XywwcONCsWrWqWWvx+/1GkvH7/c3bBADtQs9p+UEHADtc6Pv3v/R7cto7fk8OYDd+Tw5gpzb5PTkAAACXCkIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGClFg85vXr1UkhIyFlHVlaWJOnOO+88q2/ixIlBY1RUVCgtLU1dunRRVFSUpk6dqvr6+qCajRs3asiQIXK73bruuuu0dOnSll4KAABoxzq29IAffPCBGhoanPPdu3fru9/9rv7jP/7DaXv44Yc1a9Ys57xLly7Ozw0NDUpLS1NMTIy2bNmiyspKjRkzRp06ddLTTz8tSSovL1daWpomTpyo1157TYWFhRo/frxiY2OVmpra0ksCAADtUIuHnKuvvjrofM6cOerTp4++/e1vO21dunRRTEzMOV//3nvv6eOPP9a6desUHR2twYMHa/bs2Zo2bZpyc3Plcrm0ZMkSJSQkaP78+ZKk/v37a/PmzVqwYAEhBwAASGrlZ3Jqa2v1+9//Xj/60Y8UEhLitL/22mu66qqrdMMNNygnJ0enTp1y+oqLi5WYmKjo6GinLTU1VYFAQHv27HFqkpOTg66Vmpqq4uLiL51PTU2NAoFA0AEAAOzU4ndyvmjlypWqrq7WQw895LSNGjVKPXv2VFxcnHbt2qVp06aprKxMb775piTJ5/MFBRxJzrnP5/vSmkAgoNOnT6tz587nnE9eXp5mzpzZUssDAACXsFYNOS+99JJGjBihuLg4p23ChAnOz4mJiYqNjdXdd9+t/fv3q0+fPq05HeXk5Cg7O9s5DwQCio+Pb9VrAgCAttFqIeevf/2r1q1b59yhOZ+kpCRJ0r59+9SnTx/FxMRo27ZtQTVVVVWS5DzHExMT47R9scbj8Zz3Lo4kud1uud3uZq8FAAC0P632TM4rr7yiqKgopaWlfWldaWmpJCk2NlaS5PV69dFHH+nw4cNOTUFBgTwejwYMGODUFBYWBo1TUFAgr9fbgisAAADtWauEnMbGRr3yyisaO3asOnb8/5tF+/fv1+zZs1VSUqKDBw/qnXfe0ZgxYzRs2DDdeOONkqSUlBQNGDBADz74oHbu3Km1a9fqiSeeUFZWlnMXZuLEiTpw4IAee+wx7d27V88//7yWL1+uKVOmtMZyAABAO9QqIWfdunWqqKjQj370o6B2l8uldevWKSUlRf369dPPf/5zjRw5Uu+++65T06FDB+Xn56tDhw7yer164IEHNGbMmKDfq5OQkKBVq1apoKBAgwYN0vz58/Xiiy/y9XEAAOAIMcaYtp5EWwkEAoqIiJDf75fH42nr6QBoYb2mrwo6Pzjnyz8+B9A+XOj7N3+7CgAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYqcVDTm5urkJCQoKOfv36Of1nzpxRVlaWunfvriuvvFIjR45UVVVV0BgVFRVKS0tTly5dFBUVpalTp6q+vj6oZuPGjRoyZIjcbreuu+46LV26tKWXAgAA2rFWuZMzcOBAVVZWOsfmzZudvilTpujdd9/VihUrtGnTJh06dEj33nuv09/Q0KC0tDTV1tZqy5YtevXVV7V06VLNmDHDqSkvL1daWpruuusulZaWavLkyRo/frzWrl3bGssBAADtUMdWGbRjR8XExJzV7vf79dJLL+n111/Xd77zHUnSK6+8ov79++v999/XLbfcovfee08ff/yx1q1bp+joaA0ePFizZ8/WtGnTlJubK5fLpSVLlighIUHz58+XJPXv31+bN2/WggULlJqa2hpLAgAA7Uyr3Mn59NNPFRcXp969e2v06NGqqKiQJJWUlKiurk7JyclObb9+/dSjRw8VFxdLkoqLi5WYmKjo6GinJjU1VYFAQHv27HFqvjhGU03TGOdTU1OjQCAQdAAAADu1eMhJSkrS0qVLtWbNGi1evFjl5eW64447dPz4cfl8PrlcLkVGRga9Jjo6Wj6fT5Lk8/mCAk5Tf1Pfl9UEAgGdPn36vHPLy8tTRESEc8THx/+rywUAAJeoFv+4asSIEc7PN954o5KSktSzZ08tX75cnTt3bunLNUtOTo6ys7Od80AgQNABAMBSrf4V8sjISF1//fXat2+fYmJiVFtbq+rq6qCaqqoq5xmemJiYs75t1XT+VTUej+dLg5Tb7ZbH4wk6AACAnVo95Jw4cUL79+9XbGyshg4dqk6dOqmwsNDpLysrU0VFhbxeryTJ6/Xqo48+0uHDh52agoICeTweDRgwwKn54hhNNU1jAAAAtHjI+cUvfqFNmzbp4MGD2rJli37wgx+oQ4cOysjIUEREhDIzM5Wdna0NGzaopKRE48aNk9fr1S233CJJSklJ0YABA/Tggw9q586dWrt2rZ544gllZWXJ7XZLkiZOnKgDBw7oscce0969e/X8889r+fLlmjJlSksvBwAAtFMt/kzO559/royMDB05ckRXX321br/9dr3//vu6+uqrJUkLFixQaGioRo4cqZqaGqWmpur55593Xt+hQwfl5+frJz/5ibxer6644gqNHTtWs2bNcmoSEhK0atUqTZkyRQsXLtS1116rF198ka+PAwAAR4gxxrT1JNpKIBBQRESE/H4/z+cAFuo1fVXQ+cE5aW00EwAt6ULfv/nbVQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASi0ecvLy8vStb31L4eHhioqKUnp6usrKyoJq7rzzToWEhAQdEydODKqpqKhQWlqaunTpoqioKE2dOlX19fVBNRs3btSQIUPkdrt13XXXaenSpS29HAAA0E61eMjZtGmTsrKy9P7776ugoEB1dXVKSUnRyZMng+oefvhhVVZWOsfcuXOdvoaGBqWlpam2tlZbtmzRq6++qqVLl2rGjBlOTXl5udLS0nTXXXeptLRUkydP1vjx47V27dqWXhIAAGiHOrb0gGvWrAk6X7p0qaKiolRSUqJhw4Y57V26dFFMTMw5x3jvvff08ccfa926dYqOjtbgwYM1e/ZsTZs2Tbm5uXK5XFqyZIkSEhI0f/58SVL//v21efNmLViwQKmpqS29LAAA0M60+jM5fr9fktStW7eg9tdee01XXXWVbrjhBuXk5OjUqVNOX3FxsRITExUdHe20paamKhAIaM+ePU5NcnJy0JipqakqLi4+71xqamoUCASCDgAAYKcWv5PzRY2NjZo8ebJuu+023XDDDU77qFGj1LNnT8XFxWnXrl2aNm2aysrK9Oabb0qSfD5fUMCR5Jz7fL4vrQkEAjp9+rQ6d+581nzy8vI0c+bMFl0jAAC4NLVqyMnKytLu3bu1efPmoPYJEyY4PycmJio2NlZ333239u/frz59+rTafHJycpSdne2cBwIBxcfHt9r1AABA22m1j6smTZqk/Px8bdiwQddee+2X1iYlJUmS9u3bJ0mKiYlRVVVVUE3TedNzPOer8Xg857yLI0lut1sejyfoAAAAdmrxkGOM0aRJk/TWW29p/fr1SkhI+MrXlJaWSpJiY2MlSV6vVx999JEOHz7s1BQUFMjj8WjAgAFOTWFhYdA4BQUF8nq9LbQSAADQnrV4yMnKytLvf/97vf766woPD5fP55PP59Pp06clSfv379fs2bNVUlKigwcP6p133tGYMWM0bNgw3XjjjZKklJQUDRgwQA8++KB27typtWvX6oknnlBWVpbcbrckaeLEiTpw4IAee+wx7d27V88//7yWL1+uKVOmtPSSAABAO9TiIWfx4sXy+/268847FRsb6xzLli2TJLlcLq1bt04pKSnq16+ffv7zn2vkyJF69913nTE6dOig/Px8dejQQV6vVw888IDGjBmjWbNmOTUJCQlatWqVCgoKNGjQIM2fP18vvvgiXx8HAACSpBBjjGnrSbSVQCCgiIgI+f1+ns8BLNRr+qqg84Nz0tpoJgBa0oW+f/O3qwAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAldp9yFm0aJF69eqlsLAwJSUladu2bW09JQAAcAlo1yFn2bJlys7O1lNPPaUPP/xQgwYNUmpqqg4fPtzWUwMAAG2sXYecZ555Rg8//LDGjRunAQMGaMmSJerSpYtefvnltp4aAABoYx3begJfV21trUpKSpSTk+O0hYaGKjk5WcXFxed8TU1NjWpqapxzv98vSQoEAq07WQBtorHmVNA5/60Ddmj6b9kY86V17Tbk/OMf/1BDQ4Oio6OD2qOjo7V3795zviYvL08zZ848qz0+Pr5V5gjg0hLxbFvPAEBLOn78uCIiIs7b325DzteRk5Oj7Oxs57yxsVFHjx5V9+7dFRIS0oYza3uBQEDx8fH67LPP5PF42no61mKfLx72+uJgny8O9jmYMUbHjx9XXFzcl9a125Bz1VVXqUOHDqqqqgpqr6qqUkxMzDlf43a75Xa7g9oiIyNba4rtksfj4T+gi4B9vnjY64uDfb442Of/92V3cJq02wePXS6Xhg4dqsLCQqetsbFRhYWF8nq9bTgzAABwKWi3d3IkKTs7W2PHjtVNN92km2++Wc8++6xOnjypcePGtfXUAABAG2vXIee+++7T3//+d82YMUM+n0+DBw/WmjVrznoYGV/N7XbrqaeeOuvjPLQs9vniYa8vDvb54mCfv54Q81XfvwIAAGiH2u0zOQAAAF+GkAMAAKxEyAEAAFYi5AAAACsRcix1/PhxTZ48WT179lTnzp1166236oMPPnD6q6qq9NBDDykuLk5dunTR8OHD9emnn37luNXV1crKylJsbKzcbreuv/56rV69ujWXcklrrX1+9tln1bdvX3Xu3Fnx8fGaMmWKzpw505pLuWQUFRXpnnvuUVxcnEJCQrRy5cqgfmOMZsyYodjYWHXu3FnJycln7enRo0c1evRoeTweRUZGKjMzUydOnPjS6545c0ZZWVnq3r27rrzySo0cOfKsXzZqm7bY66NHj+qRRx5x/n336NFDP/vZz5y/JWijtvo3/cXxR4wYcc5r246QY6nx48eroKBAv/vd7/TRRx8pJSVFycnJ+tvf/iZjjNLT03XgwAG9/fbb2rFjh3r27Knk5GSdPHnyvGPW1tbqu9/9rg4ePKg//vGPKisr029/+1tdc801F3Fll5bW2OfXX39d06dP11NPPaVPPvlEL730kpYtW6Zf/vKXF3FlbefkyZMaNGiQFi1adM7+uXPn6je/+Y2WLFmirVu36oorrlBqampQCBw9erT27NmjgoIC5efnq6ioSBMmTPjS606ZMkXvvvuuVqxYoU2bNunQoUO69957W3Rtl5q22OtDhw7p0KFD+q//+i/t3r1bS5cu1Zo1a5SZmdni67tUtNW/6SbPPvvs5funiwysc+rUKdOhQweTn58f1D5kyBDz+OOPm7KyMiPJ7N692+lraGgwV199tfntb3973nEXL15sevfubWpra1tt7u1Ja+1zVlaW+c53vhPUlp2dbW677baWXUA7IMm89dZbznljY6OJiYkx8+bNc9qqq6uN2+02f/jDH4wxxnz88cdGkvnggw+cmj/96U8mJCTE/O1vfzvndaqrq02nTp3MihUrnLZPPvnESDLFxcUtvKpL08Xa63NZvny5cblcpq6u7l9fyCXuYu/zjh07zDXXXGMqKyvPuvblgDs5Fqqvr1dDQ4PCwsKC2jt37qzNmzerpqZGkoL6Q0ND5Xa7tXnz5vOO+84778jr9SorK0vR0dG64YYb9PTTT6uhoaF1FnKJa619vvXWW1VSUqJt27ZJkg4cOKDVq1fre9/7Xiuson0pLy+Xz+dTcnKy0xYREaGkpCQVFxdLkoqLixUZGambbrrJqUlOTlZoaKi2bt16znFLSkpUV1cXNG6/fv3Uo0cPZ9zLTWvt9bn4/X55PB517Niufz/t19Ka+3zq1CmNGjVKixYtOu/fdLQdIcdC4eHh8nq9mj17tg4dOqSGhgb9/ve/V3FxsSorK53/eefk5OjYsWOqra3Vr3/9a33++eeqrKw877gHDhzQH//4RzU0NGj16tV68sknNX/+fP3qV7+6iKu7dLTWPo8aNUqzZs3S7bffrk6dOqlPnz668847L5uPq76Mz+eTpLN+q3l0dLTT5/P5FBUVFdTfsWNHdevWzak517gul+usP9j7xXEvN6211//sH//4h2bPnn3BH73YpjX3ecqUKbr11lv1/e9/v4Vn3X4Qciz1u9/9TsYYXXPNNXK73frNb36jjIwMhYaGqlOnTnrzzTf1l7/8Rd26dVOXLl20YcMGjRgxQqGh5/8n0djYqKioKL3wwgsaOnSo7rvvPj3++ONasmTJRVzZpaU19nnjxo16+umn9fzzz+vDDz/Um2++qVWrVmn27NkXcWVA6wsEAkpLS9OAAQOUm5vb1tOxyjvvvKP169fr2WefbeuptClCjqX69OmjTZs26cSJE/rss8+0bds21dXVqXfv3pKkoUOHqrS0VNXV1aqsrNSaNWt05MgRp/9cYmNjdf3116tDhw5OW//+/eXz+VRbW9vqa7oUtcY+P/nkk3rwwQc1fvx4JSYm6gc/+IGefvpp5eXlqbGx8WIt7ZLUdMv9n7/1VFVV5fTFxMTo8OHDQf319fU6evToeW/Zx8TEqLa2VtXV1ecd93LTWnvd5Pjx4xo+fLjCw8P11ltvqVOnTi04+/ajtfZ5/fr12r9/vyIjI9WxY0fno8CRI0fqzjvvbOFVXLoIOZa74oorFBsbq2PHjmnt2rVn3baMiIjQ1VdfrU8//VTbt2//0tuat912m/bt2xf0RvuXv/xFsbGxcrlcrbaG9qAl9/nUqVNn3elpCpbmMv9TcwkJCYqJiVFhYaHTFggEtHXrVnm9XkmS1+tVdXW1SkpKnJr169ersbFRSUlJ5xx36NCh6tSpU9C4ZWVlqqiocMa93LTWXjeNk5KSIpfLpXfeeees59ouJ621z9OnT9euXbtUWlrqHJK0YMECvfLKK623oEtNGz/4jFayZs0a86c//ckcOHDAvPfee2bQoEEmKSnJ+WbU8uXLzYYNG8z+/fvNypUrTc+ePc29994bNMaDDz5opk+f7pxXVFSY8PBwM2nSJFNWVmby8/NNVFSU+dWvfnVR13YpaY19fuqpp0x4eLj5wx/+4Izbp08f88Mf/vCirq2tHD9+3OzYscPs2LHDSDLPPPOM2bFjh/nrX/9qjDFmzpw5JjIy0rz99ttm165d5vvf/75JSEgwp0+fdsYYPny4+eY3v2m2bt1qNm/ebL7xjW+YjIwMp//zzz83ffv2NVu3bnXaJk6caHr06GHWr19vtm/fbrxer/F6vRdv4W2gLfba7/ebpKQkk5iYaPbt22cqKyudo76+/uJuwEXSVv+m/5kuw29XEXIstWzZMtO7d2/jcrlMTEyMycrKMtXV1U7/woULzbXXXms6depkevToYZ544glTU1MTNMa3v/1tM3bs2KC2LVu2mKSkJON2u03v3r3Nf/7nf1r7P6YL0Rr7XFdXZ3Jzc02fPn1MWFiYiY+PNz/96U/NsWPHLtKq2taGDRuMpLOOpj1qbGw0Tz75pImOjjZut9vcfffdpqysLGiMI0eOmIyMDHPllVcaj8djxo0bZ44fP+70l5eXG0lmw4YNTtvp06fNT3/6U9O1a1fTpUsX84Mf/MBUVlZejCW3mbbY6/NdU5IpLy+/SCu/uNrq3/Q/uxxDTogxl/n9bwAAYCWeyQEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASv8LwboobY3yp4oAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "After a year there is a full lognormal distribution" + ], + "metadata": { + "id": "Nyt1vVUJ_9rf" + } + }, + { + "cell_type": "code", + "source": [ + "plt.hist(x[:,1], 100);" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "id": "n1Le4DW-_95E", + "outputId": "a472ef45-9b50-4889-bbc4-2298a028b5fa" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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587tr1Mwwqf141/+8he98cYbWrp0qd544w29+uqramho0N133x1Sj3688s/jRVu2bNH+/fu7XaqcfrxyP/7ud7/TlClTlJOTo1/96ld66623tHTpUg0dOtSuU1ZWpm3btmnz5s3as2ePmpqaNGPGjP46BXNYg9iiRYusKVOmfGJ5V1eX5fF4rGeeecbe19raajkcDuu//uu/+qOJMaGwsND613/915B9M2bMsIqLiy3Loh97QpK1ZcsW+3VP+uzYsWOWJOvgwYN2nR07dlhxcXHWBx980G9tN8ml/didAwcOWJKs999/37Is+rE7n9SPf/jDH6zPfOYz1ttvv22NHj3aWrVqlV1GP16uu3687777rPvvv/8T39Pa2molJiZamzdvtvcdP37ckmT5fL6r1VQjDeoRlF/84heaOHGivvGNbyg9PV3jx4/Xiy++aJefPHlSfr9f+fn59j6Xy6W8vDz5fL5oNNlIX/rSl1RbW6t3331XkvS///u/+s1vfqNp06ZJoh97oyd95vP5lJKSookTJ9p18vPzFR8fr7q6un5vc6wIBAKKi4uzn+dFP/ZMV1eXZs+erYULF+rGG2+8rJx+vLKuri5t375dn//851VQUKD09HTl5eWFXAaqr69XZ2dnyP/9nJwcZWVlDbrfl4M6oPz+97/XunXrNGbMGO3atUvz5s3TI488og0bNkiS/H6/JF22uq3b7bbLIC1evFgzZ85UTk6OEhMTNX78eC1YsEDFxcWS6Mfe6Emf+f1+paenh5QnJCQoNTWVfv0EbW1tWrRokWbNmmU/oI1+7Jmnn35aCQkJeuSRR7otpx+vrKWlRWfPntWKFSt055136rXXXtPXv/51zZgxQ3v27JH0t35MSkq67IG4g/H3ZdSWujdBV1eXJk6cqKeeekqSNH78eL399tuqqqpSSUlJlFsXO372s59p48aN2rRpk2688UYdPnxYCxYsUEZGBv0IY3R2duqb3/ymLMvSunXrot2cmFJfX68f//jHeuONNxQXFxft5sSsrq4uSdL06dNVVlYmSbr11lu1b98+VVVV6ctf/nI0m2ecQT2CMmrUKOXm5obsGzt2rD2b2uPxSNJls6ebm5vtMkgLFy60R1HGjRun2bNnq6ysTJWVlZLox97oSZ95PB61tLSElJ8/f16nT5+mXy9xMZy8//77qqmpCXm8Pf14Zb/+9a/V0tKirKwsJSQkKCEhQe+//76+853v6IYbbpBEP/bEtddeq4SEhCt+73R0dKi1tTWkzmD8fTmoA8rkyZPV0NAQsu/dd9/V6NGjJUnZ2dnyeDyqra21y4PBoOrq6uT1evu1rSb7y1/+ovj40B+lIUOG2H8t0I/h60mfeb1etba2qr6+3q6ze/dudXV1KS8vr9/bbKqL4eTEiRN6/fXXlZaWFlJOP17Z7Nmz9dZbb+nw4cP2lpGRoYULF2rXrl2S6MeeSEpK0m233fap3zsTJkxQYmJiyP/9hoYGNTY2Dr7fl9GepRtNBw4csBISEqwf/OAH1okTJ6yNGzdaw4cPt37605/adVasWGGlpKRYP//5z6233nrLmj59upWdnW399a9/jWLLzVJSUmJ95jOfsaqrq62TJ09ar776qnXttddajz76qF2HfrzcmTNnrDfffNN68803LUnWs88+a7355pv23SU96bM777zTGj9+vFVXV2f95je/scaMGWPNmjUrWqcUFZ/Wjx0dHdbdd99tXX/99dbhw4etDz/80N7a29vtY9CPV/55vNSld/FYFv1oWVfux1dffdVKTEy0XnjhBevEiRPW2rVrrSFDhli//vWv7WM89NBDVlZWlrV7927r0KFDltfrtbxeb7ROKWoGdUCxLMvatm2bddNNN1kOh8PKycmxXnjhhZDyrq4ua+nSpZbb7bYcDod1xx13WA0NDVFqrZmCwaD17W9/28rKyrKGDh1qffazn7W+973vhXwB0I+X++Uvf2lJumwrKSmxLKtnffanP/3JmjVrljVixAjL6XRa3/rWt6wzZ85E4Wyi59P68eTJk92WSbJ++ctf2segH6/883ip7gIK/dizfnzppZesz33uc9bQoUOtW265xdq6dWvIMf76179a//Zv/2Zdc8011vDhw62vf/3r1ocfftjPZxJ9cZb1seU+AQAADDCo56AAAAAzEVAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYJz/B7QxzEo8iYitAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Multiple Assets One Time" + ], + "metadata": { + "id": "XULMMo9lAM_-" + } + }, + { + "cell_type": "code", + "source": [ + "num_assets = 2\n", + "num_paths = 10000\n", + "num_time_steps = 2\n", + "t = 1.0\n", + "mus = 0.03 * np.ones(num_assets)\n", + "stock_prices = 100.0 * np.ones(num_assets)\n", + "volatilities = 0.2 * np.ones(num_assets)\n", + "rho = 0.9999\n", + "corr_matrix = np.array([[1.0, rho],[rho, 1.0]])\n", + "seed = 1912\n", + "\n", + "x = get_assets(num_assets, num_paths, t,\n", + " mus, stock_prices, volatilities,\n", + " corr_matrix, seed)" + ], + "metadata": { + "id": "x-p2F4EUAPMJ" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qx_lsnDnAdWJ", + "outputId": "13694ddc-5258-4c88-9796-3362e5fbdf47" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(20000, 2)" + ] + }, + "metadata": {}, + "execution_count": 12 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mVk3rfxiAhGQ", + "outputId": "f2dcd9d7-f438-4793-a598-47706a40b4a7" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[177.55530639, 178.00024012],\n", + " [ 98.01446156, 98.5703073 ],\n", + " [122.594059 , 122.28616957],\n", + " ...,\n", + " [ 81.19405101, 81.2466739 ],\n", + " [129.68390628, 129.74501396],\n", + " [ 83.74783896, 83.33294683]])" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ] + }, + { + "cell_type": "code", + "source": [ + "plt.hist(x[:,1], 100);" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "id": "PKX84noEAkBT", + "outputId": "f283e0eb-65ed-4e18-e96a-bdf4dc178a76" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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f/xjc9FFF5l9+/aZ6upqZ2m562L37t1m+fLlZt++feazzz4zzz33nBk6dKi58847o7xnkfm243Ds2DHz85//3Pj9fnP48GGzfft2c+WVV5rLLrvMnDx50tlGbz8fWgSDQTNgwACzevXqVu/vLefDrFmzjNvtNjt37gw777/55hunzrm+I5qamszo0aPN5MmTzb59+8y2bdvM0KFDTUlJSTR2qV3OdRyCwaDJzs42WVlZ5tChQ2F1mpqajDHGvPLKK+bpp582+/fvNwcPHjSrVq0yAwYMMIsWLYqoLQSZNtx6661m2LBhJiEhwfzVX/2VufXWW82hQ4ec8j//+c/mpz/9qbnwwgvNgAEDzN/93d+Z6urqKLa467z++utGkqmoqAhbX1lZaa677jqTnJxsEhMTzXe+8x0zf/58EwwGo9TSzvPWW28ZSa2WwsJCY8zpW7AffPBB4/F4TGJiopk0aVKr4/P111+b22+/3QwaNMi4XC5z9913m2PHjkVhb9rv247D4cOH2yyTZN566y1jjDHl5eUmOzvbuN1uc8EFF5hRo0aZxx57LOwL3gbfdhy++eYbM3nyZDN06FATHx9vhg8fbu69996w22qN6f3nQ4tf//rXpn///qaurq7V+3vL+XC2837t2rVOnfP5jvj888/N1KlTTf/+/c2QIUPMz372s7Dbknu6cx2Hs50vkszhw4eNMaenIbjiiivMoEGDzMCBA83YsWPNmjVrzKlTpyJqS8z/bxAAAIB1GCMDAACsRZABAADWIsgAAABrEWQAAIC1CDIAAMBaBBkAAGAtggwAALAWQQYAAFiLIAMAAKxFkAEAANYiyAAAAGsRZAAAgLX+H4GirfDbJflvAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Multiple Assets and Times" + ], + "metadata": { + "id": "vhw5QBDFAu8M" + } + }, + { + "cell_type": "code", + "source": [ + "num_assets = 2\n", + "num_paths = 10000\n", + "num_time_steps = 2\n", + "t = 1.0\n", + "mus = 0.03 * np.ones(num_assets)\n", + "stock_prices = 100.0 * np.ones(num_assets)\n", + "volatilities = 0.2 * np.ones(num_assets)\n", + "rho = 0.3\n", + "corr_matrix = np.array([[1.0, rho],[rho, 1.0]])\n", + "seed = 1912\n", + "\n", + "mus, stock_prices, volatilities" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2PyyrnhpAxpf", + "outputId": "07e82ec4-8655-4eeb-eaa9-541854c05497" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(array([0.03, 0.03]), array([100., 100.]), array([0.2, 0.2]))" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "code", + "source": [ + "corr_matrix" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WO9CyIY_A6_H", + "outputId": "2b79227f-f4ef-4143-ba3a-5f916bf8f2dc" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[1. , 0.3],\n", + " [0.3, 1. ]])" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x = get_paths_assets(num_assets, num_paths, num_time_steps, t,\n", + " mus, stock_prices, volatilities,\n", + " corr_matrix, seed)" + ], + "metadata": { + "id": "v9suCxxCA8KZ" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "x.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xcQV2Wg0A-2A", + "outputId": "786404ab-06f9-4661-b95c-3597501fe72e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(20000, 3, 2)" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "code", + "source": [ + "x" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "irWrRvidBCAq", + "outputId": "1ec19942-e95f-4df1-9b9e-45f24048f3e4" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[[100. , 100. ],\n", + " [ 98.38791532, 130.76293912],\n", + " [113.39649611, 121.56624422]],\n", + "\n", + " [[100. , 100. ],\n", + " [122.73085817, 103.85874482],\n", + " [ 94.80993213, 91.09672743]],\n", + "\n", + " [[100. , 100. ],\n", + " [ 92.99294116, 104.15982172],\n", + " [101.33438841, 103.86885503]],\n", + "\n", + " ...,\n", + "\n", + " [[100. , 100. ],\n", + " [ 84.43564014, 112.01112396],\n", + " [ 80.53857693, 135.91115838]],\n", + "\n", + " [[100. , 100. ],\n", + " [110.01676438, 115.42047693],\n", + " [115.22905479, 99.58218223]],\n", + "\n", + " [[100. , 100. ],\n", + " [116.01756008, 95.42216717],\n", + " [114.06612186, 122.72885293]]])" + ] + }, + "metadata": {}, + "execution_count": 19 + } + ] + }, + { + "cell_type": "code", + "source": [ + "plt.hist(x[:,1], 100);" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "id": "D60XzHqTBMET", + "outputId": "5d4ba1bc-f921-453c-e499-fccdbe2f95f8" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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cqRiY2OVlJSkn/zkJ6qtrfV7jVAZK+nyP1tf99Of/lRhYWF66aWX/LaHynhdyVgdPnxY99xzj5xOp2JjY3XLLbeourrarm9qalJeXp4SEhLUv39/ZWdnX3Ah1N7icuN16tQpzZw5U4MGDVLfvn3tmxl/XVeNF4HlEv7617/qtttuU2RkpN5++20dOnRIL7zwgq677jq7zeLFi7V06VKtXLlSFRUVio2NVWZmppqamoLY8+B47rnntGLFCv3Hf/yHDh8+rOeee06LFy/WsmXL7DahPF6nT5/WTTfdpOLi4g7rr2RscnJydPDgQZWWlqqkpES7du3S9OnTu2sXus2lxuqLL77QBx98oAULFuiDDz7QG2+8oaqqKt1zzz1+7UJlrKTL/2y1e/PNN7Vnz54OL4seKuN1ubH64x//qNtvv12pqal699139dFHH2nBggWKiYmx28yePVubNm3S+vXrtXPnTtXW1mry5MndtQvd6nLjlZ+fry1btujVV1/V4cOHNWvWLM2cOVMbN26023TZeAV+68LQMXfuXOv222+/aH1bW5vldrutf//3f7e3NTQ0WNHR0dZ///d/d0cXjZKVlWU9+uijftsmT55s5eTkWJbFeH2dJOvNN9+0H1/J2Bw6dMiSZO3bt89u8/bbb1thYWHWsWPHuq3v3e38serI3r17LUnW559/bllW6I6VZV18vP70pz9Z3/jGN6yPP/7YSklJsZYsWWLXhep4dTRWDzzwgPXQQw9d9DkNDQ1WZGSktX79envb4cOHLUlWeXn5teqqEToarxEjRliFhYV+226++Wbr5z//uWVZXTtezLBcwsaNGzVu3Djdf//9SkxM1JgxY/TKK6/Y9UePHpXX61VGRoa9zel0Kj09XeXl5cHoclDdeuutKisr0yeffCJJ+t///V+99957mjRpkiTG61KuZGzKy8sVFxencePG2W0yMjIUHh6uioqKbu+zSRobGxUWFmbfY4yx8tfW1qapU6dqzpw5GjFixAX1jNc5bW1t2rx5s7797W8rMzNTiYmJSk9P9zsMUllZqdbWVr/f1dTUVCUnJ4fk59itt96qjRs36tixY7IsS++8844++eQTTZgwQVLXjheB5RI+/fRTrVixQsOGDdPWrVs1Y8YMPfHEE1q7dq0kyev1StIFV+d1uVx2XSiZN2+eHnzwQaWmpioyMlJjxozRrFmzlJOTI4nxupQrGRuv16vExES/+oiICMXHx4f0+DU1NWnu3LmaMmWKfcM1xsrfc889p4iICD3xxBMd1jNe59TX1+vUqVN69tlnNXHiRG3btk0/+tGPNHnyZO3cuVPSubGKioq64Aa8ofo5tmzZMqWlpWnQoEGKiorSxIkTVVxcrO9973uSuna8gnZp/p6gra1N48aN0zPPPCNJGjNmjD7++GOtXLlSubm5Qe6deX7729/qtdde07p16zRixAjt379fs2bNUlJSEuOFa6K1tVU//vGPZVmWVqxYEezuGKmyslK//vWv9cEHHygsLCzY3TFaW1ubJOnee+/V7NmzJUmjR4/W7t27tXLlSn3/+98PZveMtGzZMu3Zs0cbN25USkqKdu3apby8PCUlJfnNqnQFZlguYeDAgUpLS/PbNnz4cHu1uNvtlqQLVjvX1dXZdaFkzpw59izLyJEjNXXqVM2ePVtFRUWSGK9LuZKxcbvdqq+v96s/c+aMTpw4EZLj1x5WPv/8c5WWlvrdzp6x+srvf/971dfXKzk5WREREYqIiNDnn3+uf/mXf9GQIUMkMV7trr/+ekVERFz2c7+lpUUNDQ1+bULxc+zLL7/Uv/3bv+nFF1/U3XffrVGjRmnmzJl64IEH9Pzzz0vq2vEisFzCbbfdpqqqKr9tn3zyiVJSUiRJQ4cOldvtVllZmV3v8/lUUVEhj8fTrX01wRdffKHwcP8fqT59+tj/tTBeF3clY+PxeNTQ0KDKykq7zY4dO9TW1qb09PRu73MwtYeVI0eOaPv27UpISPCrZ6y+MnXqVH300Ufav3+/XZKSkjRnzhxt3bpVEuPVLioqSrfccsslP/fHjh2ryMhIv9/VqqoqVVdXh9znWGtrq1pbWy/5ud+l49WZlcKhYu/evVZERIT1q1/9yjpy5Ij12muvWf369bNeffVVu82zzz5rxcXFWb/73e+sjz76yLr33nutoUOHWl9++WUQex4cubm51je+8Q2rpKTEOnr0qPXGG29Y119/vfXkk0/abUJ5vE6ePGl9+OGH1ocffmhJsl588UXrww8/tM9suZKxmThxojVmzBiroqLCeu+996xhw4ZZU6ZMCdYuXTOXGquWlhbrnnvusQYNGmTt37/fOn78uF2am5vt1wiVsbKsy/9sne/8s4QsK3TG63Jj9cYbb1iRkZHWyy+/bB05csRatmyZ1adPH+v3v/+9/Ro//elPreTkZGvHjh3W+++/b3k8Hsvj8QRrl66py43X97//fWvEiBHWO++8Y3366afW6tWrrZiYGGv58uX2a3TVeBFYLmPTpk3WjTfeaEVHR1upqanWyy+/7Fff1tZmLViwwHK5XFZ0dLR15513WlVVVUHqbXD5fD7rZz/7mZWcnGzFxMRY3/zmN62f//znfn9EQnm83nnnHUvSBSU3N9eyrCsbm7/85S/WlClTrP79+1sOh8N65JFHrJMnTwZhb66tS43V0aNHO6yTZL3zzjv2a4TKWFnW5X+2ztdRYAmV8bqSsVq1apX1rW99y4qJibFuuukma8OGDX6v8eWXX1r//M//bF133XVWv379rB/96EfW8ePHu3lPusflxuv48ePWww8/bCUlJVkxMTHWd77zHeuFF16w2tra7NfoqvEKs6yvXYYUAADAQKxhAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4/x90ICQojrbVvAAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Copyright (c) 2019, Dominic O'Kane" + ], + "metadata": { + "id": "p0d_FHNIeZYU" + } + } + ] +} \ No newline at end of file