├── .gitignore ├── LICENSE ├── README.md ├── Chapter 7 Model BMWK.ipynb ├── extra └── pysolve tutorial.ipynb ├── Chapter 6 Model OPENM.ipynb └── Chapter 9 Model DISINF1.ipynb /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | bin/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | *.egg-info/ 22 | .installed.cfg 23 | *.egg 24 | 25 | # Installer logs 26 | pip-log.txt 27 | pip-delete-this-directory.txt 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .coverage 33 | .cache 34 | nosetests.xml 35 | coverage.xml 36 | 37 | # Translations 38 | *.mo 39 | 40 | # Mr Developer 41 | .mr.developer.cfg 42 | .project 43 | .pydevproject 44 | 45 | # Rope 46 | .ropeproject 47 | 48 | # Django stuff: 49 | *.log 50 | *.pot 51 | 52 | # Sphinx documentation 53 | docs/_build/ 54 | 55 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 kennt 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | monetary-economics 2 | ================== 3 | 4 | The models are from the book "Monetary Economics 2e" by Godley and Lavoie, 2012 5 | 6 | This implementation of the models is based on the implementation developed by 7 | Prof. Gennaro Zezza (http://gennaro.zezza.it/software/eviews/gl2006.php) 8 | The models are specified and solved using the pysolve package. 9 | 10 | To see all the notebooks, visit 11 | http://nbviewer.ipython.org/github/kennt/monetary-economics/tree/master/ 12 | 13 | Also here is an example of an interactive graph 14 | [Interactive graphs](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/extra/Model%20SIM%20Interactive%20Test.ipynb) 15 | 16 | 17 | Individual files can be viewed at (using the nbviewer web site): 18 | 19 | [Chapter 3 Model SIM](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%203%20Model%20SIM.ipynb) 20 | 21 | [Chapter 3 Model SIMEX](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%203%20Model%20SIMEX.ipynb) 22 | 23 | [Chapter 4 Model PC](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%204%20Model%20PC.ipynb) 24 | 25 | [Chapter 5 Model LP](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%205%20Model%20LP.ipynb) 26 | 27 | [Chapter 6 Model REG](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%206%20Model%20REG.ipynb) 28 | 29 | [Chapter 6 Model OPEN](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%206%20Model%20OPEN.ipynb) 30 | 31 | [Chapter 6 Model OPENG](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%206%20Model%20OPENG.ipynb) 32 | 33 | [Chapter 6 Model OPENM](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%206%20Model%20OPENM.ipynb) 34 | 35 | [Chapter 6 Model OPENM3](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%206%20Model%20OPENM3.ipynb) 36 | 37 | [Chapter 7 Model BMW](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%207%20Model%20BMW.ipynb) 38 | 39 | [Chapter 7 Model BMWK](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%207%20Model%20BMWK.ipynb) 40 | 41 | [Chapter 9 Model DIS](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%209%20Model%20DIS.ipynb) 42 | 43 | [Chapter 9 Model DISINF2](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%209%20Model%20DISINF2.ipynb) 44 | 45 | [Chapter 10 Model INSOUT](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%2010%20Model%20INSOUT.ipynb) 46 | 47 | [Chapter 10 Model INSOUTB](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%2010%20Model%20INSOUTB.ipynb) 48 | 49 | [Chapter 11 Model GROWTH](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%2011%20Model%20GROWTH.ipynb) 50 | 51 | [Chapter 11 Model GROWTHB](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%2011%20Model%20GROWTHB.ipynb) 52 | 53 | [Chapter 12 Model OPENFIX](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%2012%20Model%20OPENFIX.ipynb) 54 | 55 | [Chapter 12 Model OPENFIXR](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%2012%20Model%20OPENFIXR.ipynb) 56 | 57 | [Chapter 12 Model OPENFIXG](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%2012%20Model%20OPENFIXG.ipynb) 58 | 59 | [Chapter 12 Model OPENFLEX](http://nbviewer.ipython.org/github/kennt/monetary-economics/blob/master/Chapter%2012%20Model%20OPENFLEX.ipynb) 60 | -------------------------------------------------------------------------------- /Chapter 7 Model BMWK.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Monetary Economics: Chapter 7" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "### Preliminaries" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 1, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "# This line configures matplotlib to show figures embedded in the notebook, \n", 24 | "# instead of opening a new window for each figure. More about that later. \n", 25 | "# If you are using an old version of IPython, try using '%pylab inline' instead.\n", 26 | "%matplotlib inline\n", 27 | "\n", 28 | "from pysolve.model import Model\n", 29 | "from pysolve.utils import is_close,round_solution\n", 30 | "\n", 31 | "import matplotlib.pyplot as plt" 32 | ] 33 | }, 34 | { 35 | "cell_type": "markdown", 36 | "metadata": {}, 37 | "source": [ 38 | "### Model BMWK" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 2, 44 | "metadata": {}, 45 | "outputs": [], 46 | "source": [ 47 | "def create_bmwk_model():\n", 48 | " model = Model()\n", 49 | "\n", 50 | " model.set_var_default(0)\n", 51 | " model.var('AF', desc='Amortization funds')\n", 52 | " model.var('Cd', desc='Consumption goods demand by households')\n", 53 | " model.var('Cs', desc='Consumption goods supply')\n", 54 | " model.var('DA', desc='Depreciation allowance')\n", 55 | " model.var('K', desc='Stock of capital')\n", 56 | " model.var('Kt', desc='Target stock of capital')\n", 57 | " model.var('Ld', desc='Demand for bank loans')\n", 58 | " model.var('Ls', desc='Supply of bank loans')\n", 59 | " model.var('Id', desc='Demand for investment goods')\n", 60 | " model.var('Is', desc='Supply of investment goods')\n", 61 | " model.var('Mh', desc='Bank deposits held by households')\n", 62 | " model.var('Ms', desc='Supply of bank deposits')\n", 63 | " model.var('Nd', desc='Demand for labor')\n", 64 | " model.var('Ns', desc='Supply of labor')\n", 65 | " model.var('Rl', desc='Rate of interest on bank loans')\n", 66 | " model.var('Rm', desc='Rate of interest on bank deposits')\n", 67 | " model.var('W', desc='Wage rate')\n", 68 | " model.var('WBd', desc='Wage bill - demand')\n", 69 | " model.var('WBs', desc='Wage bill - supply')\n", 70 | " model.var('Y', desc='Income = GDP')\n", 71 | " model.var('YD', desc='Disposable income of households')\n", 72 | " \n", 73 | " model.set_param_default(0)\n", 74 | " model.param('alpha0', desc='Exogenous component in consumption')\n", 75 | " model.param('alpha1r', desc='Propensity to consume out of interest income')\n", 76 | " model.param('alpha1w', desc='Propensity to consume out of wage income')\n", 77 | " model.param('alpha2', desc='Propensity to consume out of wealth')\n", 78 | " model.param('delta', desc='Depreciation rate')\n", 79 | " model.param('gamma', desc='Speed of adjustment of capital to its target value')\n", 80 | " model.param('kappa', desc='Capital-output ratio')\n", 81 | "\n", 82 | " model.param('PR', desc='Labor productivity')\n", 83 | " model.param('Rlbar', desc='Rate of interest on bank loans, set exogenously')\n", 84 | "\n", 85 | " # Basic behavioural equations\n", 86 | " model.add('Cs = Cd')\n", 87 | " model.add('Is = Id')\n", 88 | " model.add('Ns = Nd')\n", 89 | " model.add('Ls - Ls(-1) = Ld - Ld(-1)')\n", 90 | " model.add('Y = Cs + Is')\n", 91 | " model.add('WBd = Y - Rl(-1)*Ld(-1) - AF')\n", 92 | " model.add('AF = delta * K(-1)')\n", 93 | " model.add('Ld - Ld(-1) = Id - AF')\n", 94 | " \n", 95 | " # Transactions of households\n", 96 | " model.add('YD = WBs + Rm(-1)*Mh(-1)')\n", 97 | " model.add('Mh - Mh(-1) = YD - Cd')\n", 98 | " \n", 99 | " # Transactions of the banks\n", 100 | " model.add('Ms - Ms(-1) = Ls - Ls(-1)')\n", 101 | " model.add('Rm = Rl')\n", 102 | " \n", 103 | " # The wage bill\n", 104 | " model.add('WBs = W * Ns')\n", 105 | " model.add('Nd = Y / PR')\n", 106 | " model.add('W = WBd / Nd')\n", 107 | " \n", 108 | " # Household behavior\n", 109 | " model.add('Cd = alpha0 + alpha1w*WBs + alpha1r*Rm(-1)*Mh(-1) + alpha2*Mh(-1)')\n", 110 | " \n", 111 | " # The investment beahavior\n", 112 | " model.add('K - K(-1) = Id - DA')\n", 113 | " model.add('DA = delta * K(-1)')\n", 114 | " model.add('Kt = kappa * Y(-1)')\n", 115 | " model.add('Id = gamma * (Kt - K(-1)) + DA')\n", 116 | " \n", 117 | " # The behaviour of banks\n", 118 | " model.add('Rl = Rlbar') \n", 119 | "\n", 120 | " return model\n", 121 | "\n", 122 | "bmwk_parameters = {'alpha0': 25,\n", 123 | " 'alpha1r': 0.5,\n", 124 | " 'alpha1w': 0.75,\n", 125 | " 'alpha2': 0.1,\n", 126 | " 'delta': 0.1,\n", 127 | " 'gamma': 0.15,\n", 128 | " 'kappa': 1}\n", 129 | "bmwk_exogenous = {'PR': 1,\n", 130 | " 'Rlbar': 0.04}\n", 131 | "bmwk_variables = {'Mh': 185.2,\n", 132 | " 'Ms': 185.2,\n", 133 | " 'Ld': 185.2,\n", 134 | " 'Ls': 185.2,\n", 135 | " 'K': 185.2,\n", 136 | " 'Y': 185.2,\n", 137 | " 'Rl': 0.04,\n", 138 | " 'Rm' : 0.04,\n", 139 | " 'W': 0.86,\n", 140 | " 'Cd': 1}" 141 | ] 142 | }, 143 | { 144 | "cell_type": "markdown", 145 | "metadata": {}, 146 | "source": [ 147 | "### Scenario: Model BMWK, increase in the interest rate on loans" 148 | ] 149 | }, 150 | { 151 | "cell_type": "code", 152 | "execution_count": 3, 153 | "metadata": {}, 154 | "outputs": [], 155 | "source": [ 156 | "interest = create_bmwk_model()\n", 157 | "interest.set_values(bmwk_parameters)\n", 158 | "interest.set_values(bmwk_exogenous)\n", 159 | "interest.set_values(bmwk_variables)\n", 160 | "\n", 161 | "# run to convergence\n", 162 | "# Give the system more time to reach a steady state\n", 163 | "for _ in range(15):\n", 164 | " interest.solve(iterations=200, threshold=1e-5)\n", 165 | "\n", 166 | "# shock the system\n", 167 | "interest.set_values({'Rlbar': 0.05})\n", 168 | "\n", 169 | "for _ in range(40):\n", 170 | " interest.solve(iterations=100, threshold=1e-5)" 171 | ] 172 | }, 173 | { 174 | "cell_type": "markdown", 175 | "metadata": {}, 176 | "source": [ 177 | "###### Figure 7.8" 178 | ] 179 | }, 180 | { 181 | "cell_type": "code", 182 | "execution_count": 4, 183 | "metadata": {}, 184 | "outputs": [ 185 | { 186 | "data": { 187 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAF8CAYAAABSR7jeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAz7UlEQVR4nO3deZxcVZ338c8vC2sIELIICAaQVpElQB5AJWwJGMdlgHFBRUTnIYIsA6KADwrBcRkBh9FRB6IwICIimwsoogiyLwmEhIDsYTERwmLYhGzn+ePcTiqVqu7qTtfSXZ/363VfdevUrVvnnq6u+tZdzomUEpIkqX0NanYFJElScxkGJElqc4YBSZLanGFAkqQ2ZxiQJKnNGQYkSWpz3YaBiDgvIp6NiPtKysZFxO0RMTMipkfELiWPbR8Rt0XEnIiYHRFr1avykiRp9dWyZ+B8YHJZ2enAaSmlccApxX0iYgjwU+DwlNI7gb2AxX1U1x6LiCnNeu2BzHatH9u2PmzX+rFt66PR7dptGEgp3Qi8UF4MDC/m1wfmFfP7AbNSSvcWz30+pbS0j+raG75J68N2rR/btj5s1/qxbeujoe06pJfPOxb4fUScSQ4U7y7KO4AUEb8HRgE/Tymdvtq1lCRJddPbMHAEcFxK6fKI+ChwLjCpWN/uwP8BXgOui4gZKaXryldQ7AKZArDNNtvsPGfOnF5WpbpzzjkH8l4M9SHbtX5s2/qwXevHtq2PerVrRHyOlfc6TEspTYtaxiaIiLHAVSmlbYv7C4ENUkopIgJYmFIaHhEHAZNTSocWy30VeD2ldEZX6x8/fnyaPn16b7ZLkiTVLioV9vbSwnnAnsX8PsDDxfzvge0jYp3iZMI9gft7+RqSJKkBuj1MEBEXk68KGBkRTwOnAocB3y2+8F+n2OWQUnoxIv4TuIu8e+O3KaWr61R3SZLUB2o6TFBvHiaQJKkh+vQwgSRJGiAMA5IktTnDgCRJbc4wIElSmzMMSJLU5gwDkiS1OcOAJEltzjAgSVKbMwxIktTmDAOSJLU5w4AkSW3OMCBJUpszDEiS1OYMA5IktTnDgCRJbc4wIElSmzMMSJLU5gwDkiS1OcOAJEltzjAgSVKbMwxIktTmDAOSJLU5w4AkSW3OMCBJUpszDEiS1OYMA5IktTnDgCRJbc4wIElSmzMMSJLU5gwDkiS1OcOAJEltzjAgSVKbMwxIktTmDAOSJLU5w4AkSW3OMCBJUpszDEiS1OaGNLsC9bL77vDAA3k+pTx1zpfeAgwaBBErbsvnS59TaV2wYtlqU/nzytdVy3oqbUtX66i0vmrrKN+ertbTqat2PeII+MpXkCT1AwM2DLzvfTBu3KpfZuXznV9oy5atfFs639WXYukXfVdTpedV+5Luah3VtqW7sFBaVq0unfNdrad8HaXP6Sy75hr47W8NA5LUXwzYMHDyyc2uQfv6xCfgjjuaXQtJUq08Z0B9bswYePbZZtdCklQrw4D63Jgx8Mor8Nprza6JJKkWhgH1udGj8+0zzzS3HpKk2hgG1OfGjMm3HiqQpP6h2zAQEedFxLMRcV9J2biIuD0iZkbE9IjYpSgfGxH/KMpnRsTZ9ay8WlNnGHDPgCT1D7XsGTgfmFxWdjpwWkppHHBKcb/ToymlccV0eJ/UUv2KhwkkqX/pNgyklG4EXigvBoYX8+sD8/q4XurHOsOAhwkkqX/obT8DxwK/j4gzyYHi3SWPbRER9wAvAV9JKd20elVUf7PWWrD++u4ZkKT+orcnEB4BHJdS2gw4Dji3KJ8PbJ5S2hH4AvCziBheaQURMaU432D6ggULelkNtarRo90zIEmtpvS7t5imAEQq75C+8pPHAlellLYt7i8ENkgppYgIYGFKaZUv/Yi4AfhiSml6V+sfP358mj69y0XUz0yYAEOGwPXXN7smkqQSUamwt3sG5gF7FvP7AA8DRMSoiBhczG8JbA081svXUD82ZoyHCSSpv+j2nIGIuBjYCxgZEU8DpwKHAd+NiCHA68CUYvE9gK9FxBJgKXB4Sqn85EO1gdGj4YYbml0LSVItug0DKaWPV3lo5wrLXg5cvrqVUv83Zgw8/zwsXgxDhza7NpKkrtgDoeqis+Mhzw2VpNZnGFBd2NeAJPUfhgHVhV0SS1L/YRhQXdglsST1H4YB1YUjF0pS/2EYUF2st17ultg9A5LU+gwDqouIfKjAMCBJrc8woLoZM8bDBJLUHxgGVDd2SSxJ/YNhQHXjYQJJ6h8MA6qbMWNyD4TLljW7JpKkrhgGVDdjxsCSJfDii82uiSSpK4YB1Y0dD0lS/2AYUN3Y8ZAk9Q+GAdWN4xNIUv9gGFDdeJhAkvoHw4DqZqONYPBgDxNIUqszDKhuBg2CUaPcMyBJrc4woLqy4yFJan2GAdWV4xNIUuszDKiuHJ9AklqfYUB11XmYIKVm10SSVI1hQHU1Zgz84x/w6qvNrokkqRrDgOrKjockqfUZBlRXnR0PeRKhJLUuw4Dqyj0DktT6DAOqK7sklqTWZxhQXXmYQJJan2FAdbXGGrDhhu4ZkKRWZhhQ3dklsSS1NsOA6s4uiSWptRkGVHd2SSxJrc0woLrzMIEktTbDgOpuzBj4+99h0aJm10SSVIlhQHXX2fGQ5w1IUmsyDKju7HhIklqbYUB1554BSWpthgHVneMTSFJrMwyo7jxMIEmtzTCguhs2DNZZx8MEktSqDANqCDsekqTWZRhQQ9jxkCS1LsOAGsLxCSSpdRkG1BAeJpCk1tVtGIiI8yLi2Yi4r6RsXETcHhEzI2J6ROxS9pzNI+KViPhiPSqt/mf0aFiwAJYubXZNJEnlatkzcD4wuazsdOC0lNI44JTifqmzgN+tbuU0cIwZA8uWwQsvNLsmkqRy3YaBlNKNQPlHeAKGF/PrA/M6H4iI/YHHgDl9U0UNBPY1IEmtq7fnDBwLnBERTwFnAl8GiIh1gROB07pbQURMKQ4xTF+wYEEvq6H+wl4IJan5Sr97i2kK9D4MHAEcl1LaDDgOOLcoPw04K6X0SncrSClNSymNTymNHzVqVC+rof7C8QkkqflKv3uLaRrAkF6u79PAvxXzlwI/LuZ3BT4cEacDGwDLIuL1lNL3V6PuGgA8TCBJrau3YWAesCdwA7AP8DBASmlC5wIRMRV4xSAggA03hCFDDAOS1Iq6DQMRcTGwFzAyIp4GTgUOA74bEUOA14Ep9ayk+r9Bg/LeAQ8TSFLr6TYMpJQ+XuWhnbt53tTeVEgDl10SS1JrsgdCNYy9EEpSazIMqGEcn0CSWpNhQA3TeZggpWbXRJJUyjCghhkzBt54A15+udk1kSSVMgyoYeyFUJJak2FADWPHQ5LUmgwDahi7JJak1mQYUMN4mECSWpNhQA0zcmS+NQxIUmsxDKhhhg6FjTbyMIEktRrDgBrKXgglqfUYBtRQjk8gSa3HMKCGsktiSWo9hgE1lHsGJKn1GAbUUGPGwEsvweuvN7smkqROhgE1lB0PSVLrMQyooeySWJJaj2FADWUvhJLUegwDaigPE0hS6zEMqKE8TCBJrccwoIZaZx0YNswwIEmtxDCghrPjIUlqLYYBNZwdD0lSazEMqOEcrEiSWothQA3nYQJJai2GATXc6NHw3HOwZEmzayJJAsOAmmDMGEgpBwJJUvMZBtRwdjwkSa3FMKCGs+MhSWothgE13JvelG/nz29uPSRJmWFADTd2LAwaBI880uyaSJLAMKAmWGONHAgeeqjZNZEkgWFATdLRYRiQpFZhGFBTdIaBlJpdE0mSYUBN0dEBr77qSYSS1AoMA2qKjo58+/DDza2HJMkwoCbpDAOeNyBJzWcYUFNsthmsuaZhQJJagWFATTFoELz1rYYBSWoFhgE1jZcXSlJrMAyoaTo64NFHHcpYkprNMKCm6eiAxYvhySebXRNJam+GATWNVxRIUmswDKhpDAOS1Bq6DQMRcV5EPBsR95WUjYuI2yNiZkRMj4hdivJdirKZEXFvRBxQz8qrfxs1CoYPNwxIUrPVsmfgfGByWdnpwGkppXHAKcV9gPuA8UX5ZOCciBjSJzXVgBPhFQWS1Aq6DQMppRuBF8qLgeHF/PrAvGLZ11JKneeGr1UsJ1VlGJCk5uvtOQPHAmdExFPAmcCXOx+IiF0jYg4wGzi8JBysJCKmFIcYpi9YsKCX1VB/19GRryZ4/fVm10SSBr7S795imgK9DwNHAMellDYDjgPO7XwgpXRHSumdwP8BvhwRa1VaQUppWkppfEpp/KhRo3pZDfV3HR15GONHH212TSRp4Cv97i2madD7MPBp4Ipi/lJglwov+ADwKrBtL19DbcArCiSp+XobBuYBexbz+wAPA0TEFp0nDEbEW4C3AXNXs44awLbeOt8aBiSpebo90z8iLgb2AkZGxNPAqcBhwHeLL/7XgSnF4rsDJ0XEYmAZ8PmU0nP1qLgGhuHDYcwYw4AkNVO3YSCl9PEqD+1cYdkLgQtXt1JqL15RIEnNZQ+EajrDgCQ1l2FATdfRAc8+CwsXNrsmktSeDANqus4rCh5+uLn1kKR2ZRhQ03l5oSQ1l2FATbfllnmcAsOAJDWHYUBNt9Za8Ja3GAYkqVkMA2oJXlEgSc1jGFBL6OjIJxAmx7mUpIYzDKgldHTASy/lSwwlSY1lGFBL8IoCSWoew4BagmFAkprHMKCWsPnmsMYahgFJagbDgFrC4MGw1VaGAUlqBsOAWkbnFQWSpMYyDKhldHTAI4/A0qXNrokktRfDgFpGRwe88QY89VSzayJJ7cUwoJbhFQWS1ByGAbUMw4AkNYdhQC1jzBgYNswwIEmNZhhQy4jwigJJagbDgFqKoxdKUuMZBtRSOjpg7tx8VYEkqTEMA2opHR2wbBk89lizayJJ7cMwoJbiFQWS1HiGAbWUrbfOt4YBSWocw4BaygYbwKhRhgFJaiTDgFqOlxdKUmMZBtRyvLxQkhrLMKCW09EB8+fDyy83uyaS1B4MA2o5nVcUeKhAkhrDMKCW4+WFktRYhgG1nK22yreGAUlqDMOAWs7aa8Pmm3uYQJIaxTCgluQVBZLUOIYBtaSODnjwQUip2TWRpIHPMKCWtOOOsHAhPPBAs2siSQOfYUAtaeLEfHvddc2thyS1A8OAWtIWW8CWWxoGJKkRDANqWRMnwvXXw5Ilza6JJA1shgG1rEmT4KWXYMaMZteksSKC448/fvn9M888k6lTp3b5nBtuuIFbb711+f2zzz6bn/zkJ31ar7lz57LtttuuUj5v3jw+/OEP9+lrSWosw4Ba1t5759s//rG59Wi0NddckyuuuILnnnuu5ueUh4HDDz+cQw45pB7VW8Umm2zCZZdd1pDXklQfhgG1rFGjYIcd2u+8gSFDhjBlyhTOOuusVR77zW9+w6677sqOO+7IpEmTeOaZZ5g7dy5nn302Z511FuPGjeOmm25i6tSpnHnmmQDMnDmT3Xbbje23354DDjiAF198EYC99tqLE088kV122YWOjg5uuukmIO8BmDBhAjvttBM77bTTSiGjktI9Bueffz4HHnggkydPZuutt+aEE05Yvtw111zDTjvtxA477MDE4gzRF154gf3335/tt9+e3XbbjVmzZgEwdepUPv3pT7PffvsxduxYrrjiCk444QS22247Jk+ezOLFiwGYMWMGe+65JzvvvDPvfe97mT9//uo0vdS2DANqaZMmwS23wGuvNbsmjXXkkUdy0UUXsXDhwpXKd999d26//XbuueceDjroIE4//XTGjh3L4YcfznHHHcfMmTOZMGHCSs855JBD+Pa3v82sWbPYbrvtOO2005Y/tmTJEu68807+67/+a3n56NGj+cMf/sDdd9/NJZdcwjHHHNOjus+cOZNLLrmE2bNnc8kll/DUU0+xYMECDjvsMC6//HLuvfdeLr30UgBOPfVUdtxxR2bNmsU3v/nNlfZmPProo1x99dX86le/4uCDD2bvvfdm9uzZrL322lx99dUsXryYo48+mssuu4wZM2bw2c9+lpNPPrlHdZWUDelugYg4D/gA8GxKaduibBxwNrAWsAT4fErpzojYF/gPYA1gEfCllNKf6lR3tYGJE+E738mBYN99m12bxhk+fDiHHHII3/ve91h77bWXlz/99NN87GMfY/78+SxatIgtttiiy/UsXLiQv//97+y5554AfPrTn+YjH/nI8scPPPBAAHbeeWfmzp0LwOLFiznqqKOYOXMmgwcP5qEedgU5ceJE1l9/fQC22WYbnnjiCV588UX22GOP5fUdMWIEADfffDOXX345APvssw/PP//88gD0vve9j6FDh7LddtuxdOlSJk+eDMB2223H3LlzefDBB7nvvvvYt3hjLF26lI033rhHdZWU1bJn4HxgclnZ6cBpKaVxwCnFfYDngA+mlLYDPg1c2DfVVLuaMAGGDGm/QwUAxx57LOeeey6vvvrq8rKjjz6ao446itmzZ3POOefw+uuvr9ZrrLnmmgAMHjyYJcVlG2eddRZjxozh3nvvZfr06SxatKhX6yxdb0qJiFhl2VShi8nO5TrXM2jQIIYOHbq8fNCgQcvX+c53vpOZM2cyc+ZMZs+ezbXXXtujukrKug0DKaUbgRfKi4Hhxfz6wLxi2XtSSvOK8jnAWhGxJlIvDRsG73pXe4aBESNG8NGPfpRzzz13ednChQvZdNNNAbjggguWl6+33nq8/PLLq6xj/fXXZ8MNN1x+PsCFF164fC9BNQsXLmTjjTdm0KBBXHjhhSxdunS1t+Vd73oXf/7zn3n88ceBfK4AwB577MFFF10E5JMgR44cyfDhw6uup9Tb3vY2FixYwG233QbkPRpz5sxZ7bpK7ai35wwcC5wREU8BZwJfrrDMvwD3pJTe6OVrSEA+VDBjBrxQHknbwPHHH7/SVQVTp07lIx/5CBMmTGDkyJHLyz/4wQ9y5ZVXLj+BsNQFF1zAl770JbbffntmzpzJKaec0uVrfv7zn+eCCy5gt91246GHHmLddddd7e0YNWoU06ZN48ADD2SHHXbgYx/72PLtmT59Ottvvz0nnXTSSgGnO2ussQaXXXYZJ554IjvssAPjxo3r9mRHSZVFpd10qywUMRa4quScge8Bf04pXR4RHwWmpJQmlSz/TuDXwH4ppUerrHMKMAVg88033/mJJ55Y3W3RAHXLLbD77nD55VAc4pYk9UJEfI7iu7cwLaU0rbdhYCGwQUopRT6QtzClNLx47M3An4DPpJRuqaVy48ePT9OnT+/RBql9LF4MI0bAIYfAD37Q7NpIUr+26sk79P4wwTyg88DjPsDDABGxAXA18OVag4DUnaFDYY892q/zIUlqlG7DQERcDNwGvC0ino6IfwUOA74TEfcC32TFLoejgLcCX42ImcU0uk51VxuZNAkeegieeqrZNZGkgafbfgZSSh+v8tDOFZb9OvD11a2UVK50SONDD21qVSRpwLEHQvUL226buydux0sMJaneDAPqFwYNynsHrrsOajjnVZLUA4YB9RsTJ8L8+fDAA82uiSQNLIYB9Rul5w1IkvqOYUD9xhZbwJZbGgYkqa8ZBtSvTJwI118PxZg6kqQ+0O2lhVIrmTQJfvSjPFbBrrs2uzYaSFKCpUtz0FyypPJ86W3nVH5/2bI8VZsvnVKqPt/VVFrnSre1ishTtflap0GDqt/vnO/qtny+0v3uykunwYNrf3zw4BXb3c4MA+pX9t473/7xj4aBdpQSvPYaPP88PPdcvn3+eXjpJXjlFXj55ZWnzrLXXoM33oBFi/JUab4PBmdUP9YZDIYMWTENHbry/SFD8jLlYaLafOlUa1nntOOO8NnPNm77DQPqV0aNgh12yOcNnHxys2ujvrJkCfztb/D003n6619XzD/77Mpf/q+/3vW61lkH1ltv5WnECFhzTVhjjTyVzndOnR/85V8InfdLbzun8vvdfVFErCir9qu41l/jnUp/zZfedqd0L0Ol+Z5O5Xs0Svd2VCsr3ytSWlZ6f+nS6o91t/el9PHOvT/V9t50TosXr9grVDotXtz93p/O28WL83u1tLx8D1J5Wem0cKFhQOrSpEnw3/+df+2ts06za6NavfRS7lK6dHrssfyFP39+/nAsteaasOmm8KY3weabw047wUYbwciRK9+OGAHrr5+/9IcNy1+2knrGMKB+Z+JE+M538tDG++7b7Nqo3AsvwD335OnBB/OX/oMPwjPPrFgmAsaOha22gv32y1/6b37zimnTTfMXvcdypcYwDKjfmTAh75697jrDQLM9/3w+mXPGDLj77nz7+OMrHh89Gjo64AMfyLed05ZbwlprNa/eklZmGFC/M2wYvOtd9jfQaCnlX/jXX5+nO+6AJ59c8fiWW8L48fC5z8HOO+cToDbaqHn1lVQ7w4D6pYkT4bTT8i7pESOaXZuBKSV49NEVX/7XX59P8oO8K/8974Gjjlrxxb/hhs2tr6TeMwyoX5o4EaZOhRtugAMPbHZtBo6FC+F3v4Pf/jZ/+T/9dC5/05vyZZ2d01ZbeTxfGkgMA+qXdt01Hy646irDwOr661/h17+GX/4yB4DFi/OZ+qVf/m97m1/+0kBmGFC/NHQofPKTcN558NWv5nELVJuU4P774Ve/ygHgrrty+dZbw7HHwv7757DlJXpS+4jUAoPDjx8/Pk2fPr3Z1VA/89e/5t3VBx0E55/f7Nq0vqefhgsugJ/8JF/uB7DLLvnLf//94e1v99e/1AYq/pe7Z0D91qab5hPYzjoLTjwR3vGOZteo9bzxRt4DcN55cO21ea/AXnvBccfBhz4Em2zS7BpKagXuGVC/9txz+RDB5Mlw6aXNrk3ruOeeHAB+9rN8xcVmm8Ghh+Zpyy2bXTtJTeSeAQ08I0fC8cfnywxnzMiXubWrV1/NhwCmTYOZM3N3vgcckPs332cfzwGQVN2gZldAWl1f+ELua+ArX2l2TZpj/vw8aNPmm8PnP5+P+3//+zBvHlx8ce6l0SAgqSuGAfV7w4fDSSfBNdfAjTc2uzaNM2tW3u3/lrfAt74Fe+4JN9+c95AceaSdMUmqnWFAA8KRR8LGG+dfyC1wGkzdpJRDz7775qGcL700d//78MNwxRW5V0CvCJDUU4YBDQjrrJP7G7j55vxlOdAsWQIXXgjbbgvve1/uJ+Bb34KnnsrDOW+1VbNrKKk/MwxowPjXf81XFpx8Mixb1uza9I0lS3IfCu94BxxySD72/5Of5JEBTzrJQwGS+oZhQAPGGmvkqwruuSfvMu/PFi/Olwa+7W3wmc/AeuvBlVfmqwQ+9am8rZLUVwwDGlA+8QnYZpt8yGDJkmbXpucWLYIf/Qg6OvKejg03zJ0GzZiRewkc5H+spDrwo0UDyuDB8PWvw1/+Aj/9abNrU7tFi+Ccc/L4AFOmwKhReRCmu+7KPQV6UqCkejIMaMDZf38YPz4PcfzGG82uTdcWLcqdBG29NRx+eO4e+He/gzvugPe/3xAgqTEMAxpwIuAb34Annsi73FvR4sXw4x/nwwGf+1y+LPKaa+DWW3PXyoYASY1kGNCAtO++uROer38dFi5sdm1WKD0x8LDDYPRo+O1v4bbb4L3vNQRIag7DgAakiHwd/oIFeZjeWbOaW5/OSwTf/vZ8YuBGG+VzAu64I/cbYAiQ1EyGAQ1Y73oX/OlP8PLLsOuuebd8o3snfOEFOP303CnQZz4DG2wAv/kN3Hmn5wRIah2GAQ1oe+6Zr82fMCHvlv/Up+CVV+r/urNn56sC3vxmOPHEHAZ+/WuYPh0+8AFDgKTWYhjQgDd6dD4579//PY/iN358fQ4bLF0Kv/xlHi54++3zpY0HH5xf609/gg9+0BAgqTUZBtQWBg3KQxxfd10+obCvDhukBI88AmecAW99KxxwADz6KHz723ncgGnTYLvt+mYbJKlehjS7AlIj7bVXPmxw8MH5sMGf/wz/8z8wbFjt65g/P//Sv+66PD35ZC7fc0/4zndyJ0FD/M+S1I9EaoHxXsePH5+mT5/e7GqojSxdmvsimDo19/u/+eb5Wv/SaZNN8u3o0XmUwM4v/wceyOsYMQL23hsmToRJk3LHQZLU4ioerDQMqK3deCP8/Of51/78+TBvHvztb7k/gHLrrJNPRJw4MU/jxjlWgKR+p2IYcGem2toee+Sp1LJl+ZLAzoDwt7/B2LGw226OFihpYDIMSGUGDYKRI/PkyX+S2oE7OSVJanOGAUmS2ly3YSAizouIZyPivpKycRFxe0TMjIjpEbFLUb5RRFwfEa9ExPfrWXFJktQ3atkzcD4wuazsdOC0lNI44JTiPsDrwFeBL/ZR/SRJUp11GwZSSjcCL5QXA8OL+fWBecWyr6aUbiaHAkmS1A/09mqCY4HfR8SZ5EDx7j6rkSRJaqjenkB4BHBcSmkz4Djg3J6uICKmFOcbTF+wYEEvqyFJkmpV+t1bTFOgxh4II2IscFVKadvi/kJgg5RSiogAFqaUhpcsfygwPqV0VC2VswdCSZIaomIPhL3dMzAP2LOY3wd4uJfrkSRJTdbtOQMRcTGwFzAyIp4GTgUOA74bEUPIJwtOKVl+LvnkwjUiYn9gv5TS/X1ec0mS1Ce6DQMppY9XeWjnKsuPXZ0KSZKkxrIHQkmS2pxhQJKkNmcYkCSpzRkGJElqc4YBSZLanGFAkqQ2ZxiQJKnNGQYkSWpzhgFJktqcYUCSpDZnGJAkqc0ZBiRJanOGAUmS2pxhQJKkNmcYkCSpzRkGJElqc4YBSZLanGFAkqQ2ZxiQJKnNGQYkSWpzhgFJktqcYUCSpDZnGJAkqc0ZBiRJanOGAUmS2pxhQJKkNmcYkCSpzRkGJElqc4YBSZLanGFAkqQ2ZxiQJKnNGQYkSWpzhgFJktqcYUCSpDZnGJAkqc0ZBiRJanOGAUmS2pxhQJKkNmcYkCSpzRkGJElqc4YBSZLanGFAkqQ2ZxiQJKnNGQYkSWpz3YaBiDgvIp6NiPtKysZFxO0RMTMipkfELiWPfTkiHomIByPivfWquCRJ6hu17Bk4H5hcVnY6cFpKaRxwSnGfiNgGOAh4Z/GcH0bE4L6qrCRJ6nvdhoGU0o3AC+XFwPBifn1gXjH/z8DPU0pvpJQeBx4BdkGSJLWsIb183rHA7yPiTHKgeHdRvilwe8lyTxdlkiSpRfU2DBwBHJdSujwiPgqcC0wCosKyqdIKImIKMKW4+0pEPNjLunRlJPBcHdbb7mzX+rFt68N2rR/btj7q1a73Aa+X3J+WUprW2zDwaeDfivlLgR8X808Dm5Us92ZWHEJYSUppGjCtl69fk4iYnlIaX8/XaEe2a/3YtvVhu9aPbVsfjW7X3l5aOA/Ys5jfB3i4mP81cFBErBkRWwBbA3euXhUlSVI9dbtnICIuBvYCRkbE08CpwGHAdyNiCHl3wxSAlNKciPgFcD+wBDgypbS0TnWXJEl9oNswkFL6eJWHdq6y/DeAb6xOpfpQXQ9DtDHbtX5s2/qwXevHtq2PhrZrpFTx/D5JktQm7I5YkqQ2NyDDQERMLrpDfiQiTmp2ffqzKt1Rj4iIP0TEw8Xths2sY38UEZtFxPUR8UBEzImIfyvKbdvVEBFrRcSdEXFv0a6nFeW2ax+JiMERcU9EXFXct21XU0TMjYjZnV38F2UNbdcBFwaK7o9/ALwP2Ab4eNFNsnrnfFbtjvok4LqU0tbAdcV99cwS4PiU0juA3YAji/epbbt63gD2SSntAIwDJkfEbtiufenfgAdK7tu2fWPvlNK4kssJG9quAy4MkLs/fiSl9FhKaRHwc3I3yeqFKt1R/zNwQTF/AbB/I+s0EKSU5qeU7i7mXyZ/uG6KbbtaUvZKcXdoMSVs1z4REW8G3s+KvmXAtq2XhrbrQAwDmwJPldy3S+S+NyalNB/ylxowusn16dciYiywI3AHtu1qK3ZjzwSeBf6QUrJd+85/AScAy0rKbNvVl4BrI2JG0TsvNLhde9sDYSuruUtkqdkiYhhwOXBsSumliEpvX/VE0bfJuIjYALgyIrZtcpUGhIj4APBsSmlGROzV5OoMNO9JKc2LiNHAHyLiL42uwEDcM1Bzl8jqtWciYmOA4vbZJtenX4qIoeQgcFFK6Yqi2LbtIymlvwM3kM95sV1X33uAD0XEXPLh130i4qfYtqstpTSvuH0WuJJ8uLuh7ToQw8BdwNYRsUVErAEcRO4mWX3n1+TxKShuf9XEuvRLkXcBnAs8kFL6z5KHbNvVEBGjij0CRMTa5AHU/oLtutpSSl9OKb05pTSW/Ln6p5TSwdi2qyUi1o2I9Trngf3Igwk1tF0HZKdDEfFP5GNbg4Hzil4R1Qul3VEDz5C7o/4l8Atgc+BJ4CMppfKTDNWFiNgduAmYzYrjr/+PfN6AbdtLEbE9+WSrweQfO79IKX0tIjbCdu0zxWGCL6aUPmDbrp6I2JK8NwDyofufpZS+0eh2HZBhQJIk1W4gHiaQJEk9YBiQJKnNGQYkSWpzhgFJktqcYUCSpDZnGJAkqc316zAQEUuLIR87p7FF+a0NrsfbyurxUkQcW2G544phVe+LiIsjYq0a1l2+jb0auSoiXunm8Q0i4vNlZXVvx4g4phjG96IKj42JiJ9FxGNFn923RcQB9a5T8dqd7T6nGA73CxHR8P+X1f27dPd3b7aIWDsi/lyMJ/COiHi8s50jYlBEXBsRh0TEjRHR4+7Tu3p/lSzzSqX53mr054/UF/p1PwMR8UpKaVid1h3k9lnW7cIrP28w8Fdg15TSEyXlmwI3A9uklP4REb8AfptSOr+b9fXJNna3niJIXZVSamg/7kUf3O9LKT1eVh7ArcAFKaWzi7K3AB9KKf132XI9/jvVUK/l7VX0F/4z4JaU0ql9+To11GMsq/F3qef/SF+IiCOBISml7xb3fwf8T0rp1xHxH8C6KaWjI+JU8mikVb/Uq6y/4vurbJnSv3VLt5dUNymlfjsBr3RXDnyV3B3pH4CLgS8CY4H7Spb5IjC1KH8A+CFwD/CW4vGDgTuBmcA5wOAu6rQf+UujvLxzNMUR5F6mrgL26802At8GPl9yfypwfDH/BXJXlveRB79ZaT1dbPvPgX8U23hGhXZcZb0l7fUjYA5wLbB2le2o9PyzgUXkXviOK1t+IvDnKuta5e9UZf3rAlcD9xblH+uqvKt2B7YEnmdFgK7WHn8hD+96H3ARuTvcW4CHgV1K1rfKe6pSvWr4uxwCzCqec2G17ejub1VpPfXYxgr1uxUYW/b/8zvgX8g9NA4tyncgh+eefD6s9P6qtD0V2rO79/wJwDHF/FnkLnkhv19/WmubU+Fzqco2/BKYUTx/Sk//75ycap2aXoHVqjwsLT5oZgJXlpR3/jOOLx5bG1iv+LDqLgwsA3YreewdwG9KPpR+CBzSRZ3OA46q8ti/Aa8AC8iD0/R0G2eSvyB2pOSLErif3GXlzsUH37rAsOKDYseyNulq2+8re+3O51Rcb/GcJcC4YrlfAAdX2Iau6jUXGFnhOccAZ1Vpk5X+Tl3U71+AH5U8b/3itmJ5pW0vK3sRGFNDe2xHPgQ3o3g/BHls8l929Z6qVK9u/i7vBB7sbD9gRLXt6OpvVWk99drGsrqtAfytQp1nAw8BG5eUDQYWlNzfsMb/n7nkrrS7/d+o8T2/G3BpscxN5LAzlNxN9+dqaXOqfC5Vqf+I4nZtcijZqKu/pZNTb6d+fc4A8I+U0rhiqnQseXfgVymlf6SUXiZ/OHXniZTS7SX3J5I/GO6KPEb6RPKvxFUUAyN9CLi0wmMbkj8stwA2AdaNiINrqE/pNo5LKV2SUroHGB0Rm0TEDsCLKaUni+29MqX0akrpFeAKYEINr9Gdrtb7eEppZjE/g/xB1ZPn1yQiflAcu7+rKCr9O1Vb/2xgUkR8OyImpJQWFstXK++2GjVsz+MppdkpH7aYA1yXUkrFa44tlqn2nuppvfYBLkspPQeQuu+3vNrfqtJ66rWNpUYCf69Qz1uB/0zFWO5FnZYCizoHdCH/Ku+Jnr4Hqy0/A9i5qMcbwG3kL/cJ5HBQrlKb9+Rz6ZiIuBe4nTwa69ZdrFfqtR6fkNPPVBscfgkrnzxZeiLfqxXWcUFK6cs1vN77gLtTSs9UeGwS+R94AUBEXAG8G/hpDeut5DLgw8CbyLuSO+vana62vZqu1vtGyfxS8i+Ynjy/mjnkX8oApJSOjIiRwPSiqPTvVHH9KaWHImJn4J+Ab0XEtSmlr1Ur76oyxWAiS8nDiNbaHstK7i9jxf9b1fdUeb2An3RVLSB1Ve8u6lb6t6q0nrptY4l/UPn9tw3wvxXK1wRej4jJwNsj4osppTO7WH+pnr4Hq72nFkcewvcz5NAyC9gb2Iq8675cpTavqS7FYECTgHellF6LiBtY0V61/N9JNevvewa6czPwwYhYKyKGAe8vyp8h/7LeKCLWBD7QxTquAz5cnERGRIwoTmSr5OPk43+VPAnsFhHrFCe9TaTyh0etfk4eRvTD5GAAcCOwf/Ea6wIHsOqvlWrb/jJ5l2Ultay3K715/p+AtSLiiJKydXqy/ojYBHgtpfRT4ExgJ4Bq5dVExCjy8efvF7+AV7c9Kr6nqtSrq7/LdcBHI49uRkSM6EEdultPXbaxdIGU0ovA4Fj1qpp3kneJL1fUbUFKaTHwHPn4/JnFY9cVJ+h2pafb09XyN5IPr91YlB0OzCzeG7Wo9rlUbn3yXr/XIuLt5EMUUl0M6D0DKaW7IuLX5JOiniD/qlxYpPuvkYeLfZx8Ik+1ddwfEV8Bri0ueVoMHFmsb7mIWAfYF/hcWflvgf+bUrojIi4D7ib/Or8HmFbDZqxd7GbtdE1K6aSU0pxiV+VfO3enppTujojzyccxAX5cHFIo3Z6K255Sej4ibomI+4DfpZS+VPKciustznTvVi31qvCcFBH7A2dFxAnk8yxeBU6sdf0R8V7gjIhYRv67dQaL7aqUl+ps96Hkv9eFwH9283pju9qmkvpWe0+tX16vbv4ucyLiG8CfI2Ip+T11aC11KKvPKutJKR1ap218omzRa8m7zf8IEBGbAX8vds2X2hv4bTG/Pfl/mmLdbwW6PETS0/dgN8vfBJwM3JZSejUiXqcHQana51KFRa8BDo+IWeRzOm6vsIzUJ/r1pYW1iIhhKaVXii/rG8ln5N7d7HpJgojYEfhCSulT3Sx3BfDllNKDEfEh8iGk/yCfWPjZlNIX6l/bvuPnklpNO4SBn5GPQa5FPob5rSZXSVKJiPgs+X9zaZXH1wAOSil1df5Ev+LnklrNgA8DkiSpawP9BEJJktQNw4AkSW2u34aBiDg8Ig5pdj16InInQZd1v+RKzzm2OMmo836vB1KJiPER8b1ullllYJx6KN+uXq5j/4jYZjWe32171FNE3BAR43uzTFH+YOTBlB6IiCklj82NiJvKlp9ZXJFARNwTEeOK+SER8WqUdIAVeVConSLi0Ij4flE2KCIuiIjzIqI3/UZIamH9NgyklM7uixOKIg8s1BAppXkppQ/38GnHUv36+p6+/vSU0jHdLLYB0KMwEFlP30vHUsN2dfP32Z98Elav1NgereyTKaVxwHuAbxcn2nVar7hMj4h4R9nzbiV3eAW5z/8HO+8X19RvSXHpXlEW5H4WhpIvk/VEI2mA6bdhICKmRsQXi/kbInfhemdEPBQRE4rywRFxZkTMjohZEXF0UT43Ik6JiJuBj0TEfpGHx707Ii6N3BEIxTJ3RR5yeFrnL6LIw6LeX6zz50XZusWvpruKX17/XKHOY0t+nR0aEVdExDUR8XBEnF5h+WPIXRdfHxHXl5R/I3LXvLdHxJiibFREXF68/l0R8Z4K69srIq4qab/zirZ7rHgtyJdrbVX8kjyjWPZLxTpnRcRpJdvyQET8kNx3wmZVlls3Iq4u6ntfRHys2naV1LP873NYsd57i21cJyLeTe76+YyirlsV0zXFL9ubInfU0tV7qJb2KH/OK8V7bUZE/DEidil5zoeKZdaKiP8t3nf3RMTeRfnaEfHzon0uoaTXuGrvwRoNI/fBUHo2/i/I41jAqp1h3cKKMPBu8hf9uOL+LuReNEvX9V1yn/iHpD4eHVJSi0gtMEBCbyby4DpfLOZvAL5TzP8T8Mdi/gjgcvIQqbBi0I+5wAnF/Ejydb7rFvdPBE4pXb6YvxD4YDE/D1izmN+guP0mKwZ+2YA80Mq6ZXUeSzHoDLlzmMfIHc2sRe58ZLMK2zmXkoF8yN3GdtbjdOArxfzPgN2L+c2BByqsay/ycLid7XcruYvXkeQR+Yay6kBG+5E7RwpyeLwK2INVBwuqtly1wYJW2q4K23xCyf2NSua/DhxdzJ8PfLjkseuArYv5XSlGlOviPdRte1R4TiIPiQtwJbnTnKHkX9gzi/Ljgf8t5t9O7n1yLfIoeOcV5duTOzMaT9fvwRuA8RXqcQP5F/0scre+nytrvw7g1uL+PeQ9KJ3vvbHAY8X8xUUdryf3dHgy8LWS9+gL5PCwSls4OTkNnGkg9UB4RXFbOmjHJODslNISWGUgl0uK293IH5S3FD/81yAPPgKwd+Te79Yhj+Q2hzyoyCzgooj4JXmIUchfhh+KYm8F+cN/c7rucvi6VAxGExH3k4fifaqb7VxE/qLt3NZ9S7Z1m1hxOHd4RKyX8kAo1VydUnoDeCMiniWPyFduv2Lq7H1tGHmwlCdZebCgasvdBJwZEd8mf/HW2lPbJSXz20bE18khaxjw+/KFi1/S7wYuLWmDNWt8rU6V2uPpsmUWkXuGgzwwzxsp9+pYOkjP7sB/A6SU/hIRT5C/nPcAvleUz4rcsxx0/R7syidTStMjd5d8a0Rck1Lq7OHvBeDFiDiI/B58rfNJKaW5EbFGRLyJHAQeBO4iB6h3d9a9cHexzC7kUCBpABpIYaBz4I6lrDxYSrXjm6+WLPOHlNLHSx+M3F/6D8m/yp6KiKmsGCTk/eQP9g8BX42Idxbr+ZeU0oO9qHN5vbuyOKXUuU2lzxlEHtDkH338+gF8K6V0zkqFuVva8sGCVlmuWLZHgwIVStd9PrB/SuneiDiU/Iu+3CByN7bjalh3NbW0R2n7Lx+kJ6W0LCJK33fVVHo/VnwP1iqltCAi7iZ/mZd293sJ8AMqd1F8G3lci/kppRQRt5PPPdiFlbu9/QtwCvCLiHhvSmlOb+ooqbX123MGanQtuW/vIVB1IJfbgfdExFuLZdaJiA5WfPE/V/zq/HDx+CDy7vzrgRNY+dfq0RHLzyvYsY+2oauBakpdCxzVeSeKs8X74PV+D3w2VpxHsWkUg8+UqbhcVB8UqNbtolhufkQMBT5Zqa4ppZeAxyPiI8XrR+ThnYmIAyKikT283dhZz+K9tDn513dp+bbkQwVQ/T1Yk8hXZewIPFr20JXkQ0mr7Ekh/8o/jhV7IG4DDgH+llL6e+mCKaVbyYPxXB0Rm9daL0n9x0APAz8m786eFXlM8E+UL5DykMKHAhcXu21vB95efCD+iLwr+Jfk3aiQ+0L/abFb+B7grGLZfycfO54V+STBf++jbZgG/K7SiXZljgHGFyen3U/+8O6xlNLz5N3V90XEGSmla8nnI9xWbPNlVPgS72K57YA7Iw/6czL5mH9Ptgvgq+SBlf7AyoNK/Rz4UnGS3lbkL9p/Lf7Wc4DOkzi3Al6qtQ36wA/Jo/HNJv86P7Q4/PA/wLDifXYCxSA41d6DNbzORUW7zgDOTynNKH0wpfRySunbKaVFFZ57C/mqgduKZeeT39u3VnqhlNJVwGnANVGMbihp4LA7Yg14EfFT4LjiS1eSVMYwIElSmxvohwkkSVI3DAOSJLU5w4AkSW3OMCBJUpszDEiS1OYMA5IktTnDgCRJbe7/A41lBzhyAu8XAAAAAElFTkSuQmCC\n", 188 | "text/plain": [ 189 | "
" 190 | ] 191 | }, 192 | "metadata": { 193 | "needs_background": "light" 194 | }, 195 | "output_type": "display_data" 196 | } 197 | ], 198 | "source": [ 199 | "caption = '''\n", 200 | " Figure 7.8 Evolution of Gross Domestic Income $(Y)_{t}$, following an\n", 201 | " increase in the interest rate, in model BMWK'''\n", 202 | "data = [s['Y'] for s in interest.solutions[5:]]\n", 203 | "\n", 204 | "fig = plt.figure()\n", 205 | "axes = fig.add_axes([0.1, 0.1, 1.1, 1.1])\n", 206 | "axes.tick_params(top='off', right='off')\n", 207 | "axes.spines['top'].set_visible(False)\n", 208 | "axes.spines['right'].set_visible(False)\n", 209 | "axes.set_ylim(180, 186)\n", 210 | "\n", 211 | "axes.plot(data, linestyle='-', color='b')\n", 212 | "# add labels\n", 213 | "plt.text(20, 182, 'National income')\n", 214 | " \n", 215 | "fig.text(0.1, -.05, caption);" 216 | ] 217 | }, 218 | { 219 | "cell_type": "code", 220 | "execution_count": null, 221 | "metadata": {}, 222 | "outputs": [], 223 | "source": [] 224 | } 225 | ], 226 | "metadata": { 227 | "kernelspec": { 228 | "display_name": "Python 3 (ipykernel)", 229 | "language": "python", 230 | "name": "python3" 231 | }, 232 | "language_info": { 233 | "codemirror_mode": { 234 | "name": "ipython", 235 | "version": 3 236 | }, 237 | "file_extension": ".py", 238 | "mimetype": "text/x-python", 239 | "name": "python", 240 | "nbconvert_exporter": "python", 241 | "pygments_lexer": "ipython3", 242 | "version": "3.8.13" 243 | } 244 | }, 245 | "nbformat": 4, 246 | "nbformat_minor": 1 247 | } 248 | -------------------------------------------------------------------------------- /extra/pysolve tutorial.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "name": "", 4 | "signature": "sha256:4d6348f7698218d06b7810f787c71ce8055e98c24b697cf65e919d8b6a0d6d46" 5 | }, 6 | "nbformat": 3, 7 | "nbformat_minor": 0, 8 | "worksheets": [ 9 | { 10 | "cells": [ 11 | { 12 | "cell_type": "heading", 13 | "level": 1, 14 | "metadata": {}, 15 | "source": [ 16 | "pysolve tutorial" 17 | ] 18 | }, 19 | { 20 | "cell_type": "heading", 21 | "level": 2, 22 | "metadata": {}, 23 | "source": [ 24 | "Introduction" 25 | ] 26 | }, 27 | { 28 | "cell_type": "markdown", 29 | "metadata": {}, 30 | "source": [ 31 | "_pysolve_ is a Python library written to aid in solving systems of (nonlinear) equations." 32 | ] 33 | }, 34 | { 35 | "cell_type": "markdown", 36 | "metadata": {}, 37 | "source": [ 38 | "This tutorial will walk through and explain in greater detail how to use pysolve." 39 | ] 40 | }, 41 | { 42 | "cell_type": "heading", 43 | "level": 2, 44 | "metadata": {}, 45 | "source": [ 46 | "Installation" 47 | ] 48 | }, 49 | { 50 | "cell_type": "markdown", 51 | "metadata": {}, 52 | "source": [ 53 | "To install\n", 54 | "\n", 55 | "```\n", 56 | "pip install pysolve\n", 57 | "```\n", 58 | "\n", 59 | "Note that there are external dependencies. _pysolve_ is dependent on the _sympy_ and _numpy_ packages." 60 | ] 61 | }, 62 | { 63 | "cell_type": "heading", 64 | "level": 2, 65 | "metadata": {}, 66 | "source": [ 67 | "Specifying the model" 68 | ] 69 | }, 70 | { 71 | "cell_type": "markdown", 72 | "metadata": {}, 73 | "source": [ 74 | "The sample simulates the SIM model from \"Monetary Economics\" by Godley and Lavoie (2006)." 75 | ] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "collapsed": false, 80 | "input": [ 81 | "from pysolve.model import Model\n", 82 | "\n", 83 | "def create_sim_model():\n", 84 | " model = Model()\n", 85 | "\n", 86 | " model.set_var_default(0)\n", 87 | " model.var('Cd', desc='Consumption goods demand by households')\n", 88 | " model.var('Cs', desc='Consumption goods supply')\n", 89 | " model.var('Gs', desc='Government goods, supply')\n", 90 | " model.var('Hh', desc='Cash money held by households')\n", 91 | " model.var('Hs', desc='Cash money supplied by the government')\n", 92 | " model.var('Nd', desc='Demand for labor')\n", 93 | " model.var('Ns', desc='Supply of labor')\n", 94 | " model.var('Td', desc='Taxes, demand')\n", 95 | " model.var('Ts', desc='Taxes, supply')\n", 96 | " model.var('Y', desc='Income = GDP')\n", 97 | " model.var('YD', desc='Disposable income of households')\n", 98 | "\n", 99 | " model.param('Gd', desc='Government goods, demand')\n", 100 | " model.param('W', desc='Wage rate')\n", 101 | " model.param('alpha1', desc='Propensity to consume out of income')\n", 102 | " model.param('alpha2', desc='Propensity to consume out of wealth')\n", 103 | " model.param('theta', desc='Tax rate')\n", 104 | "\n", 105 | " model.add('Cs = Cd') # 3.1\n", 106 | " model.add('Gs = Gd') # 3.2\n", 107 | " model.add('Ts = Td') # 3.3\n", 108 | " model.add('Ns = Nd') # 3.4\n", 109 | " model.add('YD = (W*Ns) - Ts') # 3.5\n", 110 | " model.add('Td = theta * W * Ns') # 3.6, theta < 1.0\n", 111 | " model.add('Cd = alpha1*YD + alpha2*Hh(-1)') # 3.7, 0 < alpha2 < alpha1 < 1\n", 112 | " model.add('Hs - Hs(-1) = Gd - Td') # 3.8\n", 113 | " model.add('Hh - Hh(-1) = YD - Cd') # 3.9\n", 114 | " model.add('Y = Cs + Gs') # 3.10\n", 115 | " model.add('Nd = Y/W') # 3.11\n", 116 | " \n", 117 | " return model\n" 118 | ], 119 | "language": "python", 120 | "metadata": {}, 121 | "outputs": [], 122 | "prompt_number": 1 123 | }, 124 | { 125 | "cell_type": "markdown", 126 | "metadata": {}, 127 | "source": [ 128 | "There are four main parts when creating a model.\n", 129 | "* Creation of the model object\n", 130 | "* Specifying the variables\n", 131 | "* Specifying the parameters\n", 132 | "* Specifying the equations" 133 | ] 134 | }, 135 | { 136 | "cell_type": "heading", 137 | "level": 3, 138 | "metadata": {}, 139 | "source": [ 140 | "Model" 141 | ] 142 | }, 143 | { 144 | "cell_type": "markdown", 145 | "metadata": {}, 146 | "source": [ 147 | "**Sample line 4** creates the model object. Currently, there are no parameters to the model object.\n", 148 | "```python\n", 149 | " model = Model()\n", 150 | "```" 151 | ] 152 | }, 153 | { 154 | "cell_type": "heading", 155 | "level": 6, 156 | "metadata": {}, 157 | "source": [ 158 | "Model attributes" 159 | ] 160 | }, 161 | { 162 | "cell_type": "markdown", 163 | "metadata": {}, 164 | "source": [ 165 | "* variables\n", 166 | "* parameters\n", 167 | "* equations\n", 168 | "* solutions" 169 | ] 170 | }, 171 | { 172 | "cell_type": "heading", 173 | "level": 3, 174 | "metadata": {}, 175 | "source": [ 176 | "Variables" 177 | ] 178 | }, 179 | { 180 | "cell_type": "markdown", 181 | "metadata": {}, 182 | "source": [ 183 | "A **variable**, within _pysolve_, is a value that the solver is allowed to change when solving a system of equations. It also means that an equation defining the variable is required before attempting to solve the system.\n", 184 | "\n", 185 | "The solver will attempt to \"solve\" the equation by iterating, through whatever method is selected, until the value of all variables are within a specified tolerance.\n", 186 | "\n", 187 | "Variable specification is done in **Sample lines 6-17**.\n", 188 | "\n", 189 | "```python\n", 190 | " model.set_var_default(0)\n", 191 | " model.var('Cd', desc='Consumption goods demand by households')\n", 192 | " model.var('Cs', desc='Consumption goods supply')\n", 193 | " model.var('Gs', desc='Government goods, supply')\n", 194 | " model.var('Hh', desc='Cash money held by households')\n", 195 | " model.var('Hs', desc='Cash money supplied by the government')\n", 196 | " model.var('Nd', desc='Demand for labor')\n", 197 | " model.var('Ns', desc='Supply of labor')\n", 198 | " model.var('Td', desc='Taxes, demand')\n", 199 | " model.var('Ts', desc='Taxes, supply')\n", 200 | " model.var('Y', desc='Income = GDP')\n", 201 | " model.var('YD', desc='Disposable income of households')\n", 202 | "```\n", 203 | "\n", 204 | "The first parameter (and only required parameter) is the name of the variable. This is case-sensitive and must be unique (across all variables and parameters) within the model. In general, avoid using common mathematical names, such as I, E, pi, and nan, as these are used by sympy.\n", 205 | "\n" 206 | ] 207 | }, 208 | { 209 | "cell_type": "heading", 210 | "level": 6, 211 | "metadata": {}, 212 | "source": [ 213 | "Accessing the variables" 214 | ] 215 | }, 216 | { 217 | "cell_type": "markdown", 218 | "metadata": {}, 219 | "source": [ 220 | "The variable is returned from the call to _model.var()_ and this can be used to modify the variable. In addition, the variables can be retrieved from the model also. The following snippets of code will return the same variable for _x_:\n", 221 | "```python\n", 222 | " x_var = model.var('x')\n", 223 | "```\n", 224 | "is equivalent to\n", 225 | "```python\n", 226 | " model.var('x')\n", 227 | " x_var = model.variables['x']\n", 228 | "```" 229 | ] 230 | }, 231 | { 232 | "cell_type": "heading", 233 | "level": 6, 234 | "metadata": {}, 235 | "source": [ 236 | "variable Attributes" 237 | ] 238 | }, 239 | { 240 | "cell_type": "markdown", 241 | "metadata": {}, 242 | "source": [ 243 | "* name\n", 244 | "* desc\n", 245 | "* default\n", 246 | "* value\n", 247 | "* model\n", 248 | "* equation" 249 | ] 250 | }, 251 | { 252 | "cell_type": "heading", 253 | "level": 6, 254 | "metadata": {}, 255 | "source": [ 256 | "Defaults" 257 | ] 258 | }, 259 | { 260 | "cell_type": "markdown", 261 | "metadata": {}, 262 | "source": [ 263 | "It is **highly recommended**, though not required, that defaults be given to the variables. This is done on **Sample line 6**.\n", 264 | "\n", 265 | "```python\n", 266 | " model.set_var_default(0)\n", 267 | "```\n", 268 | "\n", 269 | "The default value is used to give the variable an initial value when the variable is created. If variables are created **before** the call to _set_var_default()_, they will not have an initial value. If the variable is used before a value is assigned, this may cause hard-to-debug errors when running the simulation.\n", 270 | "\n", 271 | "Default values are also used in cases where values for a previous iteration are requested (but we may not have iterated far enough).\n", 272 | "\n", 273 | "Defaults may also be given to individual variables using the _default_ named parameter. This value will take precedence over the _set_var_default_ value.\n", 274 | "\n", 275 | "```python\n", 276 | " model.var('YD', desc='Disposable income', default=1.2)\n", 277 | "```\n", 278 | "\n" 279 | ] 280 | }, 281 | { 282 | "cell_type": "heading", 283 | "level": 6, 284 | "metadata": {}, 285 | "source": [ 286 | "Creating multiple variables at once" 287 | ] 288 | }, 289 | { 290 | "cell_type": "markdown", 291 | "metadata": {}, 292 | "source": [ 293 | "The creation of multiple variables at the same is also supported. However the ability to specify descriptions and defaults is not allowed. Although those values can be set separately.\n", 294 | "\n", 295 | "```python\n", 296 | " model.vars('x', 'y', 'z')\n", 297 | " \n", 298 | " # Note that setting the default will not set the value for x, as that is\n", 299 | " # done only during creation of the variable.\n", 300 | " model.variables['x'].default = 1.1\n", 301 | " model.variables['x'].description = 'variable for x'\n", 302 | " model.variables['x'].value = 2\n", 303 | "```\n" 304 | ] 305 | }, 306 | { 307 | "cell_type": "heading", 308 | "level": 3, 309 | "metadata": {}, 310 | "source": [ 311 | "Parameters" 312 | ] 313 | }, 314 | { 315 | "cell_type": "markdown", 316 | "metadata": {}, 317 | "source": [ 318 | "A **parameter**, within _pysolve_, is a value that the solver is not allowed to change when solving a system of equations. That is, it is considered a constant by the solver. An error will be generated if an equation is used to define the value of a parameter. Note that I use the term \"parameter\" for true system parameters and exogenous variables.\n", 319 | "\n", 320 | "Note that the solver will not change the value of a parameter. But the value of a parameter may\n", 321 | "be changed in between iterations by the user.\n", 322 | "\n", 323 | "Parameter specification is done in **Sample lines 19-23**.\n", 324 | "\n", 325 | "```python\n", 326 | " model.param('Gd', desc='Government goods, demand')\n", 327 | " model.param('W', desc='Wage rate')\n", 328 | " model.param('alpha1', desc='Propensity to consume out of income')\n", 329 | " model.param('alpha2', desc='Propensity to consume out of wealth')\n", 330 | " model.param('theta', desc='Tax rate')\n", 331 | "```\n", 332 | "\n", 333 | "The first parameter (and only required parameter) is the name of the parameter. This is case-sensitive and must be unique (across all variables and parameters) within the model. In general, avoid using common mathematical names, such as I, E, pi, and nan, as these are used by sympy.\n", 334 | "\n", 335 | "\n" 336 | ] 337 | }, 338 | { 339 | "cell_type": "heading", 340 | "level": 6, 341 | "metadata": {}, 342 | "source": [ 343 | "Accessing the parameters" 344 | ] 345 | }, 346 | { 347 | "cell_type": "markdown", 348 | "metadata": {}, 349 | "source": [ 350 | "The parameter is returned from the call to _model.param()_ and this can be used to modify the parameter. In addition, the parameters can be retrieved from the model also. The following snippets of code will return the same parameter for _a_:\n", 351 | "```python\n", 352 | " a_param = model.var('a')\n", 353 | "```\n", 354 | "is equivalent to\n", 355 | "```python\n", 356 | " a_param = model.variables['a']\n", 357 | "```" 358 | ] 359 | }, 360 | { 361 | "cell_type": "heading", 362 | "level": 6, 363 | "metadata": {}, 364 | "source": [ 365 | "parameter Attributes" 366 | ] 367 | }, 368 | { 369 | "cell_type": "markdown", 370 | "metadata": {}, 371 | "source": [ 372 | "* name\n", 373 | "* desc\n", 374 | "* default\n", 375 | "* value\n", 376 | "* model" 377 | ] 378 | }, 379 | { 380 | "cell_type": "heading", 381 | "level": 6, 382 | "metadata": {}, 383 | "source": [ 384 | "Defaults" 385 | ] 386 | }, 387 | { 388 | "cell_type": "markdown", 389 | "metadata": {}, 390 | "source": [ 391 | "It is **highly recommended**, though not required, that defaults be given to the parameters. For example,\n", 392 | "\n", 393 | "```python\n", 394 | " model.set_param_default(0)\n", 395 | "```\n", 396 | "\n", 397 | "The default value is used to give the parameter an initial value when the variable is created. If parameters are created **before** the call to _set_param_default()_, they will not have an initial value. If the parameter is used before a value is assigned, this may cause hard-to-debug errors when running the simulation.\n", 398 | "\n", 399 | "Default values are also used in cases where values for a previous iteration are requested (but we may not have iterated far enough).\n", 400 | "\n", 401 | "Defaults may also be given to individual parameters using the _default_ named parameter. This value will take precedence over the _set_param_default_ value.\n", 402 | "\n", 403 | "```python\n", 404 | " model.param('YD', desc='Disposable income', default=1.2)\n", 405 | "```\n" 406 | ] 407 | }, 408 | { 409 | "cell_type": "heading", 410 | "level": 3, 411 | "metadata": {}, 412 | "source": [ 413 | "Equations" 414 | ] 415 | }, 416 | { 417 | "cell_type": "markdown", 418 | "metadata": {}, 419 | "source": [ 420 | "The equations are at the heart of the model. However there are some specifics that \n", 421 | "must be understood when writing the equations. The equations may be non-linear, there is\n", 422 | "no linearity requirement. Because of this, the equations may or may not converge to a solution.\n", 423 | "\n", 424 | "Hers are the equations from **Sample lines 25-35**\n", 425 | "\n", 426 | "```python\n", 427 | " model.add('Cs = Cd') # 3.1\n", 428 | " model.add('Gs = Gd') # 3.2\n", 429 | " model.add('Ts = Td') # 3.3\n", 430 | " model.add('Ns = Nd') # 3.4\n", 431 | " model.add('YD = (W*Ns) - Ts') # 3.5\n", 432 | " model.add('Td = theta * W * Ns') # 3.6, theta < 1.0\n", 433 | " model.add('Cd = alpha1*YD + alpha2*Hh(-1)') # 3.7, 0 < alpha2 < alpha1 < 1\n", 434 | " model.add('Hs - Hs(-1) = Gd - Td') # 3.8\n", 435 | " model.add('Hh - Hh(-1) = YD - Cd') # 3.9\n", 436 | " model.add('Y = Cs + Gs') # 3.10\n", 437 | " model.add('Nd = Y/W') # 3.11\n", 438 | "\n", 439 | "```\n", 440 | "\n", 441 | "The model equations follow the python way of writing equations. Thus '*' is used for multiplication for example." 442 | ] 443 | }, 444 | { 445 | "cell_type": "heading", 446 | "level": 6, 447 | "metadata": {}, 448 | "source": [ 449 | "Requirements" 450 | ] 451 | }, 452 | { 453 | "cell_type": "markdown", 454 | "metadata": {}, 455 | "source": [ 456 | "* **Each variable can only be solved for once**\n", 457 | "\n", 458 | " There cannot be two equations solving for a variable. For example, the following is not allowed\n", 459 | "```python\n", 460 | " x = y + z + ...\n", 461 | " x = log(y) + 2*z + ...\n", 462 | "```\n", 463 | "* **Each variable must have an equation defining it**\n", 464 | "\n", 465 | " There must be an equation that \"defines\" the variable. This is mostly a requirement for the Gauss-Seidel algorithm. Thus, for a variable _x_, there must be an equation of the form, _x = ..._\n", 466 | " \n", 467 | " \n", 468 | "* **The left-hand side of the equation must contain only one variable**\n", 469 | "\n", 470 | " The variable on the left-hand side of the equation is the variable being defined. Thus there can only be one variable on the left-hand side.\n", 471 | " \n", 472 | " This also means that there can be constants and parameters on the left-hand side. For example:\n", 473 | " \n", 474 | "```python\n", 475 | " # Good\n", 476 | " 10*x = .....\n", 477 | " x - x(-1) = ....\n", 478 | " \n", 479 | " # Bad\n", 480 | " x*y = ....\n", 481 | " log(x) = ...\n", 482 | "```\n", 483 | "\n", 484 | "* **The variable on the left-hand side must be of linear form**\n", 485 | "\n", 486 | " There cannot be an exponential power or inside of a function parameter.\n", 487 | "\n", 488 | "```python\n", 489 | " # Bad\n", 490 | " log(x) = ...\n", 491 | " x**2 = ...\n", 492 | "```\n", 493 | " \n", 494 | "\n", 495 | "* **Only variables can be solved for (no parameters)**\n", 496 | "\n", 497 | " Only variables can be solved for. Parameters cannot be defined.\n", 498 | " \n", 499 | " \n" 500 | ] 501 | }, 502 | { 503 | "cell_type": "heading", 504 | "level": 6, 505 | "metadata": {}, 506 | "source": [ 507 | "Accessing previous iterations's values" 508 | ] 509 | }, 510 | { 511 | "cell_type": "markdown", 512 | "metadata": {}, 513 | "source": [ 514 | "In the sample, there are some lines which look like this:\n", 515 | "```python\n", 516 | " model.add('Hh - Hh(-1) = YD - Cd') # 3.9\n", 517 | "```\n", 518 | "This equation uses the value of Hh from a previous iteration (or solution from a previous iteration). This is done with the \"Hh(-1)\". Using \"-1\" will refer to the previous iteration,\n", 519 | "\"-2\" will refer to the iteration before that, and so on.\n", 520 | "\n", 521 | "Values from a previous iteration are treated as parameters by the system.\n", 522 | "\n", 523 | "This will work for both parameters and variables." 524 | ] 525 | }, 526 | { 527 | "cell_type": "heading", 528 | "level": 6, 529 | "metadata": {}, 530 | "source": [ 531 | "Functions available for use within an equation" 532 | ] 533 | }, 534 | { 535 | "cell_type": "markdown", 536 | "metadata": {}, 537 | "source": [ 538 | "* **The delta ('d') function**\n", 539 | "\n", 540 | " This is a special function. The purpose of this is to reduce the amount of work in order to display the difference between the current value and the immediate past value. \n", 541 | "\n", 542 | " Thus\n", 543 | "```python\n", 544 | " d(x)\n", 545 | "```\n", 546 | " is equivalent to using\n", 547 | "```python\n", 548 | " x - x(-1)\n", 549 | "```\n", 550 | "\n", 551 | " However, \"d(x)\" cannot be used on the left-hand side of an equation.\n", 552 | "\n", 553 | "\n", 554 | "* **if_true**\n", 555 | "\n", 556 | " This function will return the value 1.0 if the argument is true, 0.0 otherwise.\n", 557 | "```python\n", 558 | " x = 5\n", 559 | " if_true(x >= 4)\n", 560 | "```\n", 561 | " The call to if_true() here will return 1.0.\n", 562 | "\n", 563 | "\n", 564 | "* **Abs**\n", 565 | "\n", 566 | " Absolute value\n", 567 | "\n", 568 | "\n", 569 | "* **exp**\n", 570 | "\n", 571 | " The natural exponential function.\n", 572 | "\n", 573 | "\n", 574 | "* **log**\n", 575 | "\n", 576 | " The natural logarithim.\n", 577 | "\n", 578 | "\n", 579 | "* **Max**\n", 580 | "\n", 581 | " Returns the maximum of two values.\n", 582 | "\n", 583 | "\n", 584 | "* **Min**\n", 585 | "\n", 586 | " Returns the mininum of two values.\n", 587 | "\n", 588 | "\n", 589 | "* **sqrt**\n", 590 | "\n", 591 | " Returns the square root of a value.\n", 592 | " \n", 593 | "\n", 594 | "* **sign**\n", 595 | "\n", 596 | " Returns the sign of the argument.\n", 597 | " \n" 598 | ] 599 | }, 600 | { 601 | "cell_type": "heading", 602 | "level": 6, 603 | "metadata": {}, 604 | "source": [ 605 | "Model.evaluate()" 606 | ] 607 | }, 608 | { 609 | "cell_type": "markdown", 610 | "metadata": {}, 611 | "source": [ 612 | "This is a special function that is available. This takes a string argument. It will evaluate the string and then return the value.\n", 613 | "\n", 614 | "```python\n", 615 | " # assuming that x = 1 and y = 2\n", 616 | " # this will return the value 11\n", 617 | " val = model.evaluate('3*x + 4*y')\n", 618 | "```" 619 | ] 620 | }, 621 | { 622 | "cell_type": "heading", 623 | "level": 6, 624 | "metadata": {}, 625 | "source": [ 626 | "Equation attributes" 627 | ] 628 | }, 629 | { 630 | "cell_type": "markdown", 631 | "metadata": {}, 632 | "source": [ 633 | "* equation\n", 634 | "* desc\n", 635 | "* model\n", 636 | "* expr\n", 637 | "* func\n", 638 | "* variable" 639 | ] 640 | }, 641 | { 642 | "cell_type": "heading", 643 | "level": 1, 644 | "metadata": {}, 645 | "source": [ 646 | "Solving the model" 647 | ] 648 | }, 649 | { 650 | "cell_type": "markdown", 651 | "metadata": {}, 652 | "source": [ 653 | "To solve the model, we will run various iterative algorithms until the values converge. In addition, the Model object will store solutions from previous runs." 654 | ] 655 | }, 656 | { 657 | "cell_type": "heading", 658 | "level": 3, 659 | "metadata": {}, 660 | "source": [ 661 | "Sample" 662 | ] 663 | }, 664 | { 665 | "cell_type": "code", 666 | "collapsed": false, 667 | "input": [ 668 | "from pysolve.utils import is_close\n", 669 | "\n", 670 | "steady_state = create_sim_model()\n", 671 | "steady_state.set_values({'alpha1': 0.6,\n", 672 | " 'alpha2': 0.4,\n", 673 | " 'theta': 0.2,\n", 674 | " 'Gd': 20,\n", 675 | " 'W': 1})\n", 676 | "\n", 677 | "for _ in xrange(100):\n", 678 | " steady_state.solve(iterations=100, threshold=1e-4)\n", 679 | "\n", 680 | " prev_soln = steady_state.solutions[-2]\n", 681 | " soln = steady_state.solutions[-1]\n", 682 | " if is_close(prev_soln, soln, rtol=1e-4):\n", 683 | " break\n" 684 | ], 685 | "language": "python", 686 | "metadata": {}, 687 | "outputs": [], 688 | "prompt_number": 2 689 | }, 690 | { 691 | "cell_type": "heading", 692 | "level": 6, 693 | "metadata": {}, 694 | "source": [ 695 | "Setting initial values" 696 | ] 697 | }, 698 | { 699 | "cell_type": "markdown", 700 | "metadata": {}, 701 | "source": [ 702 | "Use the _set_values()_ function to change the values for a group of parameters for variables. Arguments to this function can either be a python dictionary() or a python list(). There are two use cases here.\n", 703 | "\n", 704 | "The specification of the value involves the name of the variable and the value. The value may either be a numeric value (integer or float) or may be a string value. In the case of a string value, the string will be evaluated with the current context of values.\n", 705 | "\n", 706 | "The python dictionary is the more natural, however, python dictionaries are unordered, so the actual order in which the variables are applied is not apparent.\n", 707 | "\n", 708 | "If a list ot tuples is passed in, the values will be evaluated in the order of the list, thus one can use the value of previous entries and use calculated values.\n", 709 | "\n", 710 | "Example using a dictionary\n", 711 | "```python\n", 712 | " model.set_values({'x': 1.1,\n", 713 | " 'y': 2.2})\n", 714 | "```\n", 715 | "\n", 716 | "Example using a list of tuples\n", 717 | "```python\n", 718 | " model.set_values([('x', 1.1),\n", 719 | " ('y', 'x*2')]\n", 720 | "```\n", 721 | "\n", 722 | "Using a formula for _y_ in the dictionary example is not guaranteed to work since the order of the dictionary is not guaranteed." 723 | ] 724 | }, 725 | { 726 | "cell_type": "heading", 727 | "level": 6, 728 | "metadata": {}, 729 | "source": [ 730 | "Invoking solve()" 731 | ] 732 | }, 733 | { 734 | "cell_type": "markdown", 735 | "metadata": {}, 736 | "source": [ 737 | "```python\n", 738 | " model.solve(iterations=10, threshold=0.001, method='gauss-seidel', debuglist=None)\n", 739 | "```\n", 740 | "\n", 741 | "The method is pretty straightforward.\n", 742 | "\n", 743 | "* **iterations**\n", 744 | "\n", 745 | " This is the maximum number of iterations allowed until we reach convergence. If all of the variables fail to converge, then a SolutionNotFound() exception is raised.\n", 746 | "\n", 747 | "\n", 748 | "* **threshold**\n", 749 | "\n", 750 | " This is the relative tolerance that is used to test for convergence.\n", 751 | "\n", 752 | "\n", 753 | "* **method**\n", 754 | "\n", 755 | " This is the method used to find a solution. There are currently three options: 'gauss-seidel',\n", 756 | " 'newton-raphson', and 'broyden'. For 'gauss-seidel', the equations are evaluated in the order\n", 757 | " in which they are added.\n", 758 | " \n", 759 | " \n", 760 | "* **debuglist**\n", 761 | "\n", 762 | " If a list is passed in, then the debuglist will contain a list of the values that the solver\n", 763 | " is using, one entry per iteration.\n" 764 | ] 765 | }, 766 | { 767 | "cell_type": "heading", 768 | "level": 1, 769 | "metadata": {}, 770 | "source": [ 771 | "Using the model" 772 | ] 773 | }, 774 | { 775 | "cell_type": "markdown", 776 | "metadata": {}, 777 | "source": [ 778 | "Using the model refers to being able to access the solutions." 779 | ] 780 | }, 781 | { 782 | "cell_type": "heading", 783 | "level": 3, 784 | "metadata": {}, 785 | "source": [ 786 | "Sample" 787 | ] 788 | }, 789 | { 790 | "cell_type": "markdown", 791 | "metadata": {}, 792 | "source": [ 793 | "Here is some code that prints out the values from the zeroth iteration (the initial values), the first to third iterations, and the final iteration.\n", 794 | "\n", 795 | "Note that the values are not quite whole. So at the end, I take the final solution, round off the values to 1 decimal place and then print it out. Note that _print_solutions()_ expects a list, which is why I convert _nice_solution_ into a list before invoking the function." 796 | ] 797 | }, 798 | { 799 | "cell_type": "code", 800 | "collapsed": false, 801 | "input": [ 802 | "from pysolve.utils import is_aclose, round_solution\n", 803 | "\n", 804 | "def print_solutions(solns, vars, indexes):\n", 805 | " print \"----------------\"\n", 806 | " s = \"{0:12} :\".format('subiter')\n", 807 | " for i in indexes:\n", 808 | " s += \" {0: >10} \".format(i)\n", 809 | " print s\n", 810 | " for x in vars:\n", 811 | " s = \"{0:12} :\".format(x[0])\n", 812 | " for i in indexes:\n", 813 | " s += \" {0: >10.6f}\".format(solns[i][x[1]])\n", 814 | " if i != 0:\n", 815 | " if not is_aclose([solns[i][x[1]],], [solns[i-1][x[1]],], rtol=1e-4):\n", 816 | " s += '*'\n", 817 | " else:\n", 818 | " s += ' '\n", 819 | " else:\n", 820 | " s += ' '\n", 821 | " print s\n", 822 | "\n", 823 | "ax = sorted([(str(k), k) for k,v in steady_state.solutions[0].items()], key=lambda x: x[0])\n", 824 | "print_solutions(steady_state.solutions, ax, [0, 1, 2, 3, -1])\n", 825 | "\n", 826 | "nice_solution = round_solution(steady_state.solutions[-1], decimals=1)\n", 827 | "print_solutions([nice_solution,], ax, [0])\n" 828 | ], 829 | "language": "python", 830 | "metadata": {}, 831 | "outputs": [ 832 | { 833 | "output_type": "stream", 834 | "stream": "stdout", 835 | "text": [ 836 | "----------------\n", 837 | "subiter : 0 1 2 3 -1 \n", 838 | "Cd : 0.000000 18.462208* 27.930344* 35.941876* 79.966725 \n", 839 | "Cs : 0.000000 18.460760* 27.928167* 35.939386* 79.966662 \n", 840 | "Gd : 20.000000 20.000000 20.000000 20.000000 20.000000 \n", 841 | "Gs : 0.000000 20.000000* 20.000000 20.000000 20.000000 \n", 842 | "Hh : 0.000000 12.308139* 22.722942* 31.535565* 79.965855 \n", 843 | "Hs : 0.000000 12.307511* 22.721372* 31.532915* 80.053316 \n", 844 | "Nd : 0.000000 38.460760* 47.928167* 55.939386* 99.966662 \n", 845 | "Ns : 0.000000 38.462444* 47.930699* 55.942282* 99.961105 \n", 846 | "Td : 0.000000 7.692489* 9.586140* 11.188456* 19.992221 \n", 847 | "Ts : 0.000000 7.692097* 9.585551* 11.187783* 19.992638 \n", 848 | "W : 1.000000 1.000000 1.000000 1.000000 1.000000 \n", 849 | "Y : 0.000000 38.460760* 47.928167* 55.939386* 99.966662 \n", 850 | "YD : 0.000000 30.770347* 38.345148* 44.754499* 79.968467 \n", 851 | "_Hh__1 : 0.000000 0.000000 12.308139* 22.722942* 79.964113 \n", 852 | "_Hs__1 : 0.000000 0.000000 12.307511* 22.721372* 80.045537 \n", 853 | "alpha1 : 0.600000 0.600000 0.600000 0.600000 0.600000 \n", 854 | "alpha2 : 0.400000 0.400000 0.400000 0.400000 0.400000 \n", 855 | "theta : 0.200000 0.200000 0.200000 0.200000 0.200000 \n", 856 | "----------------\n", 857 | "subiter : 0 \n", 858 | "Cd : 80.000000 \n", 859 | "Cs : 80.000000 \n", 860 | "Gd : 20.000000 \n", 861 | "Gs : 20.000000 \n", 862 | "Hh : 80.000000 \n", 863 | "Hs : 80.100000 \n", 864 | "Nd : 100.000000 \n", 865 | "Ns : 100.000000 \n", 866 | "Td : 20.000000 \n", 867 | "Ts : 20.000000 \n", 868 | "W : 1.000000 \n", 869 | "Y : 100.000000 \n", 870 | "YD : 80.000000 \n", 871 | "_Hh__1 : 80.000000 \n", 872 | "_Hs__1 : 80.000000 \n", 873 | "alpha1 : 0.600000 \n", 874 | "alpha2 : 0.400000 \n", 875 | "theta : 0.200000 \n" 876 | ] 877 | } 878 | ], 879 | "prompt_number": 3 880 | }, 881 | { 882 | "cell_type": "heading", 883 | "level": 6, 884 | "metadata": {}, 885 | "source": [ 886 | "The solutions data" 887 | ] 888 | }, 889 | { 890 | "cell_type": "markdown", 891 | "metadata": {}, 892 | "source": [ 893 | "An individual solution is just a python dictionary, mapping the variable/parameter name to a value." 894 | ] 895 | }, 896 | { 897 | "cell_type": "code", 898 | "collapsed": false, 899 | "input": [ 900 | "from pprint import pprint\n", 901 | "\n", 902 | "pprint(steady_state.solutions[-1])" 903 | ], 904 | "language": "python", 905 | "metadata": {}, 906 | "outputs": [ 907 | { 908 | "output_type": "stream", 909 | "stream": "stdout", 910 | "text": [ 911 | "{'Cd': 79.96672536628363,\n", 912 | " 'Cs': 79.96666214153672,\n", 913 | " 'Gd': 20.0,\n", 914 | " 'Gs': 20.0,\n", 915 | " 'Hh': 79.96585457376605,\n", 916 | " 'Hs': 80.05331608214169,\n", 917 | " 'Nd': 99.96666214153672,\n", 918 | " 'Ns': 99.96110498893788,\n", 919 | " 'Td': 19.992220997787577,\n", 920 | " 'Ts': 19.992638037619106,\n", 921 | " 'W': 1.0,\n", 922 | " 'Y': 99.96666214153672,\n", 923 | " 'YD': 79.96846695131877,\n", 924 | " '_Hh__1': 79.9641129887309,\n", 925 | " '_Hs__1': 80.04553707992926,\n", 926 | " 'alpha1': 0.6,\n", 927 | " 'alpha2': 0.4,\n", 928 | " 'theta': 0.2}\n" 929 | ] 930 | } 931 | ], 932 | "prompt_number": 4 933 | }, 934 | { 935 | "cell_type": "heading", 936 | "level": 6, 937 | "metadata": {}, 938 | "source": [ 939 | "Accessing previous solutions" 940 | ] 941 | }, 942 | { 943 | "cell_type": "markdown", 944 | "metadata": {}, 945 | "source": [ 946 | "The data in model.solutions is a list of solutions, where each individual solution is a dict() of parameter and variable values.\n", 947 | "\n", 948 | "Thus, the normal python list access and slicing features are available to access the information.\n", 949 | "\n", 950 | "So to access the last solution in the list\n", 951 | "```python\n", 952 | " model.solutions[-1]\n", 953 | "```\n", 954 | "To gather solutions from 5 to 10 (python lists are 0-based)\n", 955 | "```python\n", 956 | " model.solutions[5:10]\n", 957 | "```\n", 958 | "To get all solutions starting from 5 on\n", 959 | "```python\n", 960 | " model.solutions[5:]\n", 961 | "```" 962 | ] 963 | }, 964 | { 965 | "cell_type": "code", 966 | "collapsed": false, 967 | "input": [], 968 | "language": "python", 969 | "metadata": {}, 970 | "outputs": [] 971 | } 972 | ], 973 | "metadata": {} 974 | } 975 | ] 976 | } -------------------------------------------------------------------------------- /Chapter 6 Model OPENM.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Monetary Economics: Chapter 6" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "### Preliminaries" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 1, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "# This line configures matplotlib to show figures embedded in the notebook, \n", 24 | "# instead of opening a new window for each figure. More about that later. \n", 25 | "# If you are using an old version of IPython, try using '%pylab inline' instead.\n", 26 | "%matplotlib inline\n", 27 | "\n", 28 | "from pysolve.model import Model\n", 29 | "from pysolve.utils import is_close,round_solution\n", 30 | "\n", 31 | "import matplotlib.pyplot as plt" 32 | ] 33 | }, 34 | { 35 | "cell_type": "markdown", 36 | "metadata": {}, 37 | "source": [ 38 | "### Model OPENM" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 2, 44 | "metadata": {}, 45 | "outputs": [], 46 | "source": [ 47 | "def create_openm_model():\n", 48 | " model = Model()\n", 49 | "\n", 50 | " model.set_var_default(0)\n", 51 | " model.var('BcbN', desc='Bills held by the Central Bank in Country N')\n", 52 | " model.var('BcbS', desc='Bills held by the Central Bank in Country S')\n", 53 | " model.var('BhN', desc='Bills held by households, Country N')\n", 54 | " model.var('BhS', desc='Bills held by households, Country S')\n", 55 | " model.var('BsN', desc='Supply of government bills in Country N')\n", 56 | " model.var('BsS', desc='Supply of government bills in Country S')\n", 57 | " model.var('CN', desc='Consumption, Country N')\n", 58 | " model.var('CS', desc='Consumption, Country S')\n", 59 | " model.var('HhN', desc='Cash held by households, Country N')\n", 60 | " model.var('HhS', desc='Cash held by households, Country S')\n", 61 | " model.var('HsN', desc='Supply of cash in Country N')\n", 62 | " model.var('HsS', desc='Supply of cash in Country S')\n", 63 | " model.var('IMN', desc='Imports, Region N')\n", 64 | " model.var('IMS', desc='Imports, Region S')\n", 65 | " model.var('ORN', desc='Gold holding by Central bank in Country N')\n", 66 | " model.var('ORS', desc='Gold holding by Central bank in Country S')\n", 67 | " model.var('PgN', desc='Price of gold in Country N')\n", 68 | " model.var('PgS', desc='Price of gold in Country S')\n", 69 | " model.var('RN', desc='Interest rate on bills in Country N')\n", 70 | " model.var('RS', desc='Interest rate on bills in Country S')\n", 71 | " model.var('TN', desc='Tax payments, Country N')\n", 72 | " model.var('TS', desc='Tax payments, Country S')\n", 73 | " model.var('VN', desc='Household wealth, Country N')\n", 74 | " model.var('VS', desc='Household wealth, Country S')\n", 75 | " model.var('XN', desc='Exports, Country N')\n", 76 | " model.var('XS', desc='Exports, Country S')\n", 77 | " model.var('XR', desc='Exchange rate (units of currency S for one unit of currency N)')\n", 78 | " model.var('YN', desc='National income, Country N')\n", 79 | " model.var('YS', desc='National income, Country S')\n", 80 | " model.var('YDN', desc='National disposable income, Country N')\n", 81 | " model.var('YDS', desc='National disposable income, Country S')\n", 82 | "\n", 83 | " model.set_param_default(0)\n", 84 | " model.param('alpha1N', desc='Propensity to consume out of income, Country N')\n", 85 | " model.param('alpha1S', desc='Propensity to consume out of income, Country S')\n", 86 | " model.param('alpha2N', desc='Propensity to consume out of wealth, Country N')\n", 87 | " model.param('alpha2S', desc='Propensity to consume out of wealth, Country S')\n", 88 | " model.param('lambda0N', desc='Parameter in asset demand function, Country N')\n", 89 | " model.param('lambda0S', desc='Parameter in asset demand function, Country S')\n", 90 | " model.param('lambda1N', desc='Parameter in asset demand function, Country N')\n", 91 | " model.param('lambda1S', desc='Parameter in asset demand function, Country S')\n", 92 | " model.param('lambda2N', desc='Parameter in asset demand function, Country N')\n", 93 | " model.param('lambda2S', desc='Parameter in asset demand function, Country S')\n", 94 | " model.param('muN', desc='Import propensity, Country N')\n", 95 | " model.param('muS', desc='Import propensity, Country S')\n", 96 | " model.param('phiN', desc='Parameter in fiscal policy reaction function, Country N')\n", 97 | " model.param('phiS', desc='Parameter in fiscal policy reaction function, Country S')\n", 98 | " model.param('thetaN', desc='Tax rate in Country N')\n", 99 | " model.param('thetaS', desc='Tax rate in Country S')\n", 100 | "\n", 101 | " model.param('GN', desc='Government expenditure, Region N')\n", 102 | " model.param('GS', desc='Government expenditure, Region S')\n", 103 | " model.param('Pgbar', desc='Price of gold, set exogenously')\n", 104 | " #model.param('RbarN', desc='Interest rate on bills set exogenously in Country N')\n", 105 | " #model.param('RbarS', desc='Interest rate on bills set exogenously in Country S')\n", 106 | " model.param('XRbar', desc='Exchange rate, set exogenously')\n", 107 | "\n", 108 | " model.add('YN = CN + GN + XN - IMN')\n", 109 | " model.add('YS = CS + GS + XS - IMS')\n", 110 | " model.add('IMN = muN * YN')\n", 111 | " model.add('IMS = muS * YS')\n", 112 | " model.add('XN = IMS/XR')\n", 113 | " model.add('XS = IMN*XR')\n", 114 | " model.add('YDN = YN - TN + RN(-1)*BhN(-1)')\n", 115 | " model.add('YDS = YS - TS + RS(-1)*BhS(-1)')\n", 116 | " model.add('TN = thetaN * (YN + RN(-1)*BhN(-1))')\n", 117 | " model.add('TS = thetaS * (YS + RS(-1)*BhS(-1))')\n", 118 | " model.add('VN - VN(-1) = YDN - CN')\n", 119 | " model.add('VS - VS(-1) = YDS - CS')\n", 120 | " model.add('CN = alpha1N*YDN + alpha2N*VN(-1)')\n", 121 | " model.add('CS = alpha1S*YDS + alpha2S*VS(-1)')\n", 122 | " model.add('HhN = VN - BhN')\n", 123 | " model.add('HhS = VS - BhS')\n", 124 | " model.add('BhN = VN*(lambda0N + lambda1N*RN - lambda2N*(YDN/VN))')\n", 125 | " model.add('BhS = VS*(lambda0S + lambda1S*RS - lambda2S*(YDS/VS))')\n", 126 | " model.add('BsN - BsN(-1) = (GN + RN(-1)*BsN(-1)) - (TN + RN(-1)*BcbN(-1))')\n", 127 | " model.add('BsS - BsS(-1) = (GS + RS(-1)*BsS(-1)) - (TS + RS(-1)*BcbS(-1))')\n", 128 | " model.add('BcbN = BsN - BhN')\n", 129 | " model.add('BcbS = BsS - BhS')\n", 130 | " model.add('ORN - ORN(-1)= (HsN - HsN(-1) - (BcbN - BcbN(-1)))/PgN')\n", 131 | " model.add('ORS - ORS(-1)= (HsS - HsS(-1) - (BcbS - BcbS(-1)))/PgS')\n", 132 | " model.add('HsN = HhN')\n", 133 | " model.add('HsS = HhS')\n", 134 | " model.add('PgN = Pgbar')\n", 135 | " model.add('PgS = PgN*XR')\n", 136 | " model.add('XR = XRbar')\n", 137 | " model.add('RN = RN(-1) - phiN*((ORN(-1) - ORN(-2))*PgN(-1))/ORN(-1)')\n", 138 | " model.add('RS = RS(-1) - phiS*((ORS(-1) - ORS(-2))*PgS(-1))/ORS(-1)')\n", 139 | " #model.add('GN = GN(-1) + phiN*(ORN - ORN(-1))*PgN(-1)')\n", 140 | " #model.add('GS = GS(-1) + phiS*(ORS - ORS(-1))*PgS(-1)')\n", 141 | " \n", 142 | " return model\n", 143 | "\n", 144 | "openm_parameters = {'alpha1N': 0.6,\n", 145 | " 'alpha1S': 0.7,\n", 146 | " 'alpha2N': 0.4,\n", 147 | " 'alpha2S': 0.3,\n", 148 | " 'lambda0N': 0.635,\n", 149 | " 'lambda0S': 0.67,\n", 150 | " 'lambda1N': 5,\n", 151 | " 'lambda1S': 6,\n", 152 | " 'lambda2N': 0.01,\n", 153 | " 'lambda2S': 0.07,\n", 154 | " 'muN': 0.18781,\n", 155 | " 'muS': 0.18781,\n", 156 | " 'phiN': 0.02,\n", 157 | " 'phiS': 0.06,\n", 158 | " 'thetaN': 0.2,\n", 159 | " 'thetaS': 0.2}\n", 160 | "openm_exogenous = {'Pgbar': 1,\n", 161 | " 'GN': 20,\n", 162 | " 'GS': 20,\n", 163 | " 'XRbar': 1}\n", 164 | "openm_variables = {'BcbN': 11.622,\n", 165 | " 'BcbS': 11.622,\n", 166 | " 'BhN': 64.865,\n", 167 | " 'BhS': 64.865,\n", 168 | " 'BsN': 76.486,\n", 169 | " 'BsS': 76.486,\n", 170 | " 'ORN': 10,\n", 171 | " 'ORS': 10,\n", 172 | " 'PgN': 1,\n", 173 | " 'PgS': 1,\n", 174 | " 'RN': 0.025,\n", 175 | " 'RS': 0.025,\n", 176 | " 'VN': 86.487,\n", 177 | " 'VS': 86.487,\n", 178 | " 'HhN': 86.487 - 64.865,\n", 179 | " 'HhS': 86.487 - 64.865,\n", 180 | " 'HsN': 86.487 - 64.865,\n", 181 | " 'HsS': 86.487 - 64.865,\n", 182 | " 'XR': 1}" 183 | ] 184 | }, 185 | { 186 | "cell_type": "markdown", 187 | "metadata": {}, 188 | "source": [ 189 | "### Scenario: Model OPENM, increase propensity to import of country S" 190 | ] 191 | }, 192 | { 193 | "cell_type": "code", 194 | "execution_count": 3, 195 | "metadata": {}, 196 | "outputs": [], 197 | "source": [ 198 | "muS = create_openm_model()\n", 199 | "muS.set_values(openm_parameters)\n", 200 | "muS.set_values(openm_exogenous)\n", 201 | "muS.set_values(openm_variables)\n", 202 | "\n", 203 | "# run to convergence\n", 204 | "# Give the system more time to reach a steady state\n", 205 | "for _ in range(15):\n", 206 | " muS.solve(iterations=100, threshold=1e-6)\n", 207 | "\n", 208 | "# shock the system\n", 209 | "muS.set_values({'muS': 0.20781})\n", 210 | "\n", 211 | "for _ in range(10):\n", 212 | " muS.solve(iterations=100, threshold=1e-6)" 213 | ] 214 | }, 215 | { 216 | "cell_type": "markdown", 217 | "metadata": {}, 218 | "source": [ 219 | "###### Figure 6.14" 220 | ] 221 | }, 222 | { 223 | "cell_type": "code", 224 | "execution_count": 4, 225 | "metadata": {}, 226 | "outputs": [ 227 | { 228 | "data": { 229 | "image/png": "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K2B5zPsV0WepSHlYMxtuZjPNbOaaNWtSHL2ISM1y990huX33XbojqRlic0P0KNMO3lROPEl0YmuqV3SkPKy7PwI8AtCrVy9dMSIiGWfNGrjtNsjJgV13TXc0NUNsbiiPVFpyK4A2Me9bAytTHH9FhhURySh/+lO4KeqoUemOpPZIJcnNADqYWXszqwucBUxIcfwVGVZEJGN8/jk89BBcdBEcdFC6o6k9St1d6e55ZnYp8CqQBTzu7vPM7OKo+8NmthcwE2gCFJjZlUAnd/8x0bBVNC8iItXWk0+GMylHjkx3JLWLeTUsmNarVy+fOXNmusMQEak07rBwIXTsmO5IapwKFTxTWS8RkSrkDmvXhtqUSnA7npKciEgVmjgR2rYNxZhlx1OSExGpInl5oQhzy5aQnZ3uaGonFWgWEakiTz4J8+fDuHEq35UuasmJiFSBjRvhxhuhb1845ZR0R1N7qSUnIlIFJk2CVavg2Wd1Q9R0UpITEakCP/85LFoUbqcj6aPdlSIilWz16vCsBJd+SnIilejWW2/lZz/7GV27diU7O5sPPvigXOOZMmUK7733XtH7YcOGMW7cuFKH69evX6n93HPPPWzatKlccaXqxRdfZP78it02cs6cOUycOLGSItpxPvssXDLw1FPpjkRASU6k0rz//vu8/PLLfPjhh8ydO5fXX3+dNm3alD5gAvFJLlWpDFOeJJefn1+m/lNNcnl5eUm71dQkd911UKcOHHNMuiMRUJITqTSrVq1i9913Z5dddgFg9913p2XLlgC88cYbdO/enS5dunDBBRfw008/AdCuXTu+/fZbAGbOnMnAgQNZunQpDz/8MHfffTfZ2dlMnToVgLfffpt+/fqx7777Jm3VNWrUCAhJcuDAgZx22ml07NiRc845B3fnvvvuY+XKleTk5JCTkwPApEmTOOSQQ+jRowenn346GzZsKIrtlltu4dBDD+W5555L2t8111xDp06d6Nq1KyNGjOC9995jwoQJ/P73vyc7O5vPP/98uxiHDRvG7373O3JycvjDH/7A9OnT6devH927d6dfv34sXLiQrVu3cuONN/Lss8+SnZ3Ns88+y8aNG7ngggvo3bs33bt356WXXqq0766yfPBBuFzg97+HvfZKdzQCgLtXu0fPnj1dpKZZv369d+vWzTt06OCXXHKJT5kyxd3dN2/e7K1bt/aFCxe6u/u5557rd999t7u7t23b1tesWePu7jNmzPABAwa4u/tNN93kd9xxR9G4hw4d6qeddprn5+f7vHnzfL/99ksYQ8OGDd3dffLkyd6kSRNfvny55+fne9++fX3q1KnFprlmzRo/7LDDfMOGDe7uPmrUKL/55puL+rv99ttL7G/t2rV+wAEHeEFBgbu7f//990XxPvfccwljHDp0qA8aNMjz8vLc3X3dunWem5vr7u6vvfaan3LKKe7u/sQTT/hvfvObouGuvfZaf/rpp4um06FDh6J4qoOCAvfDDnPfc0/39evTHU1GqVA+0dmVIpWkUaNGzJo1i6lTpzJ58mTOPPNMRo0aRffu3Wnfvj0HHHAAAEOHDuXBBx/kyiuvLNP4Tz75ZHbaaSc6derE6sIzG0rQp08fWrduDUB2djZLly7l0EMP3a6fadOmMX/+fPr37w/A1q1bOeSQQ4q6n3nmmSX216RJE+rVq8dFF13EoEGDGDx4cErzcvrpp5OVlQXAunXrGDp0KJ999hlmRm5ubsJhJk2axIQJE7jzzjsB2LJlC8uWLeOganLfmkWLYOZMuOsuiBrUUg0oyYlUoqysLAYOHMjAgQPp0qULTz75JNkl1HOqU6cOBQUFQNhol6RwNyiEPTClie0/Kysr4fEvd+foo4/mmWeeSTiOhg0bltrf9OnTeeONNxg7diwPPPAAb775ZqmxFY4X4IYbbiAnJ4fx48ezdOlSBg4cmHAYd+f555/nwAMPLHX86XDggeGkkz32SHckEkvH5EQqycKFC/nss8+K3s+ZM4e2bdvSsWNHli5dyuLFiwF4+umnGTBgABCOe82aNQuA559/vmjYxo0bs379+iqJM3bcffv25d133y2KbdOmTSxatKjYMMn627BhA+vWreOEE07gnnvuYc6cOWWOf926dbRq1QqA0aNHJ4wT4Nhjj+X+++8vSvCzZ88u24xXoa++CncbaNVK5buqGyU5kUqyYcMGhg4dWnQSxvz58xk5ciT16tXjiSee4PTTT6dLly7stNNOXHzxxQDcdNNNXHHFFRx22GFFu+8ATjzxRMaPH7/diSeVZfjw4Rx//PHk5OTQokULRo8ezdlnn03Xrl3p27cvn376abFhkvW3fv16Bg8eTNeuXRkwYAB33303AGeddRZ33HEH3bt3L3biSbyrr76aa6+9lv79+293FmdOTg7z588vOvHkhhtuIDc3l65du9K5c2duuOGGSl0u5bVxI/TuDb/7XbojkUR001QRkQr405/ghhvg3XchhcsUpex001QRkXT45hu4/fZQwksJrnpSkhMRKadbboHNm+G229IdiSSjJCciUg6bN8OECTB8eDizUqonXUIgIlIO9evDggWQ5LI+qSbUkhOpRJs3b2bAgAEJaz2mUmT5008/JTs7u+isxNIKLt944428/vrrwI4pvJxMeQsyjxgxIqXr6qqblSth61Zo2BCaNUt3NFISJTmRSvT4449zyimnbHc5QFm8+OKLDBkyhNmzZ7PffvuVWnD5lltu4aijjgKqb5IrqQjzZZddxqhRo6oqrCrhDmeeCUcdFV5L9aYkJ1KJxowZw5AhQ4BQoePSSy+lU6dODBo0iG+++aaov1mzZjFgwAB69uzJsccey6pVq5g4cSL33HMPjz32WFHx5EYx9aH+8pe/0KVLF7p168Y111wDbGsdJiq8HGvGjBn069ePbt260adPH9avX8+WLVs4//zz6dKlC927d2fy5MlAuCD70ksvLRp28ODBTJkypSie66+/nm7dutG3b19Wr16dsCDzwIEDue666xgwYAC33nor7du3LyrX9eOPP9KuXTtyc3Np27Yta9eu5euvv67Eb6FqTZgA77wD55yjO37XBDomJ1JJtm7dypIlS2jXrh0A48ePZ+HChXz88cesXr2aTp06ccEFF5Cbm8tll13GSy+9RIsWLXj22We5/vrrefzxx7n44otp1KgRI0aM2G7c//vf/3jxxRf54IMPaNCgAd9999123S+//HLuuusuJk+ezO67714srjPPPJNnn32W3r178+OPP1K/fn3uvfdeAD7++GM+/fRTjjnmmITVTmJt3LiRvn37cuutt3L11Vfz6KOP8n//93+cdNJJDB48mNNOO62o3x9++IG33noLgKVLl/Lf//6Xk08+mbFjx3Lqqaeyc1QapEePHrz77ruceuqpZV/oO1heHlxzTTjR5MIL0x2NpEJJTqSSfPvttzSLOUDz9ttvc/bZZ5OVlUXLli054ogjgFD+65NPPuHoo48Gwr3a9t577xLH/frrr3P++efToEEDAHbdddeU41q4cCF77703vXv3BqBJkyYAvPPOO1x22WUAdOzYkbZt25aa5OrWrVtUhLlnz5689tprSfstLO4McNFFF/GXv/yFk08+mSeeeIJHH320qNsee+zBypUrU56fdHr8cfj0Uxg/PtwzTqo/fU0ilaR+/frFiixbgv1Z7s7PfvYz3n///ZTH7e4Jx1WRYZNVO4otGg3bF47eeeedi8aVrOhzodgizP3792fp0qW89dZb5Ofn07lz5+3GX79+/dRnKI1efBH694doj7TUADomJ1JJmjdvTn5+flFSOPzwwxk7diz5+fmsWrWq6JjXgQceyJo1a4qSXG5uLvPmzStx3McccwyPP/540Ykl8bsrIXlR5I4dO7Jy5UpmzJgBwPr168nLy+Pwww9nzJgxACxatIhly5Zx4IEH0q5dO+bMmUNBQQHLly9n+vTppc57KgWZzzvvPM4++2zOP//87T5ftGjRdkmvOnv5ZXjhBR2Lq0mU5EQq0THHHMM777wDwM9//nM6dOhAly5duOSSS4ruPFC3bl3GjRvHH/7wB7p160Z2dnapZ1Eed9xxnHTSSfTq1Yvs7Oyie6rFii28HKtu3bo8++yzXHbZZXTr1o2jjz6aLVu28Otf/5r8/Hy6dOnCmWeeyejRo9lll13o378/7du3p0uXLowYMYIePXqUOt+pFGQ+55xz+P777zn77LOLPsvNzWXx4sX06tWr1Gmk03ffhcdOO+lWOjWNCjSLVKLZs2dz11138fTTT6c7lGpn3LhxvPTSS9stm/Hjx/Phhx/yxz/+MY2Rle7Xv4Zx42DJEt0QNQ0q1G7WMTmRStS9e3dycnLIz88v97Vymeiyyy7jf//7HxMnTtzu87y8PK666qo0RZWahQvhkUfg4ouV4GoiteREREpw6qkwaRJ8/rl2VaaJbrUjIlIV3n03nGhy9dVKcDVVSknOzI4zs4VmttjMrknQ3czsvqj7XDPrEdPtt2Y2z8w+MbNnzKxeZc6AiEhVmTwZWrbUXb9rslKTnJllAQ8CxwOdgLPNrFNcb8cDHaLHcOChaNhWwOVAL3fvDGQBZ1Va9CIiVaDwKM7118P06aEQs9RMqbTk+gCL3X2Ju28FxgLxl0IOAZ7yYBrQzMwKSzjUAeqbWR2gAVAzShuISK00bx507x5OODGDVq3SHZFURCpJrhWwPOb9iuizUvtx96+AO4FlwCpgnbtPSjQRMxtuZjPNbOaaNWtSjV9EpNLMnQsDB0JMLW1Js9jcED2Gl2X4VJJcojNb4k/JTNiPmTUntPLaAy2Bhmb2y0QTcfdH3L2Xu/dq0aJFCmGJiFSe2bMhJwd22QXeekt3+64uYnND9HikLMOnkuRWAG1i3rem+C7HZP0cBXzh7mvcPRd4ASj5LpAiIjvYvHlw5JHh2Ntbb0GHDumOSCpLKkluBtDBzNqbWV3CiSMT4vqZAJwXnWXZl7BbchVhN2VfM2tgoarrkcCCSoxfRKTC2rWDQYNCgttvv3RHI5Wp1Ion7p5nZpcCrxLOjnzc3eeZ2cVR94eBicAJwGJgE3B+1O0DMxsHfAjkAbOBMjU1RUSqyuzZsP/+0LgxqBJbZlLFExGpld59F44/Hk4+GZ56Kt3RSAlU8UREpCzefhuOPRb23htuuy3d0UhVUpITkVplypTQgmvTJrzWdXCZTUlORGqNvDwYPjycaDJlSmjJSWbTrXZEpNaoUwf++19o2lQFl2sLteREJOP9738wYkSoSdmhgxJcbaKWnIhktP/8B047DTp3ho0bdePT2kYtORHJWC++GG562q0bvP66ElxtpCQnIhnp+efh9NOhRw947TVo3jzdEUk6KMmJSEbaeWc49FCYNCmcaCK1k5KciGSU5dFNv046Cd58E5o0SW88kl5KciKSMZ56KhRYfu218N4qVBBKMoGSnIhkhCeegGHD4PDDoX//dEcj1YWSnIjUeI89BhdeCEcfHS4ZaNAg3RFJdaEkJyI12owZ8KtfhYLLL70E9eunOyKpTpTkRKRG69ULRo8O18TVq5fuaKS6UZITkRrp4Yfh44/DySVDh8Iuu6Q7IqmOlOREpMb561/hkkvggQfSHYlUd0pyIlKjjBoVii2fcYaSnJROSU5Eaow//QmuvRZ+8QsYMyZUNREpiZKciNQIeXnw1ltw7rnhou86uoeKpECriYhUa+6wZUu4NGDCBKhbF7Ky0h2V1BRqyYlIteUO110HAweGe8HVr68EJ2WjJCci1ZI7XH11ONGkRw9d5C3lo92VIlLtuMNvfwv33guXXgr33adiy1I+asmJSLVzyy0hwV1xhRKcVIxaciJS7Zx7bjh78rrrlOCkYtSSE5FqoaAA/vnP8LzvvnD99UpwUnFKciKSdvn5cNFFoQX38svpjkYyiXZXikha5efD+efD00/DTTfBiSemOyLJJGrJiUjafP89nHVWSHC33AIjR2oXpVQuteREJG2+/DLsnrzzTrjqqnRHI5lISU5Edqgffgg3OB02DLKzQ6LbY4/0xiSZS7srRWSHeeUV6Nw5nGSyeHH4TAlOqlJKSc7MjjOzhWa22MyuSdDdzOy+qPtcM+sR062ZmY0zs0/NbIGZHVKZMyAi1d+6dSGxHX88NG0K778P+++f7qikNih1d6WZZQEPAkcDK4AZZjbB3efH9HY80CF6HAw8FD0D3Au84u6nmVldoEElxi8i1Vx+Phx6KMyfD9dcE86grFcv3VFJbZHKMbk+wGJ3XwJgZmOBIUBskhsCPOXuDkyLWm97AxuBw4FhAO6+FdhaeeGLSHW1YQM0bBjuGjByJLRuDQcfXOpgIpUqld2VrYDlMe9XRJ+l0s++wBrgCTObbWaPmVnDRBMxs+FmNtPMZq5ZsyblGRCR6uf11+FnP4PHHgvvTz1VCU7KJzY3RI/hZRk+lSSX6KoVT7GfOkAP4CF3705o2RU7pgfg7o+4ey9379WiRYsUwhKR6mb9erjkEjj66LBLsnPndEckNV1sbogej5Rl+FSS3AqgTcz71sDKFPtZAaxw9w+iz8cRkp6IZJipU6FrV/j738M1b3PmwCE6zUzSLJUkNwPoYGbtoxNHzgImxPUzATgvOsuyL7DO3Ve5+9fAcjM7MOrvSLY/liciGWLDBth555Ds7rxTNzmV6qHUE0/cPc/MLgVeBbKAx919npldHHV/GJgInAAsBjYB58eM4jJgTJQgl8R1E5Ea7K234OOPw41Njz8ejjoqJDqR6sLCCZHVS69evXzmzJnpDkNEkti4Ea69Fu6/Hw48ED76CHbZJd1RSYaqUDVTVTwRkTJ5+23o1i0kuMsug1mzlOCk+lLtShFJ2apV4czJ1q1hyhQYMCDdEYmUTC05ESlVYZ3JvfcOxZXnzlWCk5pBSU5Ektq8OVwOcMAB8Oqr4bPjjw+VTERqAu2uFJGE3n8/3A5n0aJwgXf//umOSKTs1JITkWJuuSUUVd6yJZTo+tvfoFGjdEclUnZKciJSTOvW4dY4H38MRx6Z7mhEyk/XyYkIW7aEOwV06AAXXpjuaES2o+vkRKT8ZsyAnj3h9tvhk0/SHY1I5VKSE6mlfvoJrr8+FFFetw7+9z+4++50RyVSuZTkRGqp996DP/8ZzjsvtOCOOy7dEYlUPl1CIFKL/PQTvPNOOJkkJydc1N2lS7qjEqk6asmJ1BIffgi9eoUW29Kl4TMlOMl0SnIiGW7jRrjxRujTB9auDWW52rVLd1QiO4Z2V4pksK1boXPn0HI791y4915o3jzdUYnsOGrJiWSY3Fx46SVwh7p1w33f3nkHnnpKCU5qHyU5kQyRnw9jxkCnTnDyyaH2JMDw4ao7KbWXkpxIDecOL7wQbmT6y1+GOwRMmBCufxOp7XRMTqSG27Qp3CWgeXN49lk47TTYSX9fRQC15ERqpMmT4ZxzIC8vtNymTAkXdJ9xhhKcSCz9HERqkGnT4Kij4IgjQmIrvGP3QQdBHe2XESlGSU6kBvjuOzjxxHCcbe7cUGNy8WLo2DHdkYlUb/rvJ1KNrV8PjRtDs2ahiPKf/wyXXaYbmIqkSklOpBpasgRuvjncGeCzz6BpU3jrLbAK3VlLpPbR7kqRamTFCrj4YjjwQPj3v8MdAgrva6wEJ1J2asmJVBPLlsEBB0BBQbiA+/rroWXLdEclUrOpJSeSRt99F0pwAeyzD9x2GyxaBA8+qAQnUhnUkhNJgx9/DMWS77wz3ONtxQrYfXf47W/THZlIZlFLTmQH2rQpJLZ99w23v8nJgRkzQoITkcqnJCeyA61aFe4K0KsXTJ8e7u2mG5eKVB3trhSpQnl58PTTIaE99BDstx98+ml4FpGqp5acSBUoKIBnngm3vbngApg1K9yhG5TgRHYkJTmRSjZvXrjtzS9+AfXqhV2SH3wQCimLyI6l3ZUilcA9XA6w227QqlVIaM88o7sCiKRbSj8/MzvOzBaa2WIzuyZBdzOz+6Luc82sR1z3LDObbWYvV1bgItXBTz+FY269eoU7AxQUhDqT06bBWWcpwYmkW6k/QTPLAh4Ejgc6AWebWae43o4HOkSP4cBDcd2vABZUOFqRauKbb+CPf4R27ULprc2b4Te/CUlORKqPVP5n9gEWu/sSd98KjAWGxPUzBHjKg2lAMzPbG8DMWgODgMcqMW6RtChMYq+8Eq5z69EDJk0Kx+GGD9c93USqm1SSXCtgecz7FdFnqfZzD3A1UOJ/XDMbbmYzzWzmmjVrUghLZMfIzw+lt3Jy4K67wmdnnhkuBfjvf+Hoo1U8WaSqxOaG6DG8LMOn8r8z0c/XU+nHzAYD37j7LDMbWNJE3P0R4BGAXr16xY9fZIf78Ud4/HG4//5w65t99oFddw3ddtkl3ClARKpWbG4oj1SS3AqgTcz71sDKFPs5DTjJzE4A6gFNzOyf7v7L8gYssqP88pfwn/9A//5w++1w8snaHSlS06Syu3IG0MHM2ptZXeAsYEJcPxOA86KzLPsC69x9lbtf6+6t3b1dNNybSnBSHbnD5Mnw85+HYskAN90UKpW88w6cdpoSnEhNVOrP1t3zzOxS4FUgC3jc3eeZ2cVR94eBicAJwGJgE3B+1YUsUnm2bIF//SvcEWDu3FAoecECaN0aevZMd3QiUlHmXv0Of/Xq1ctnzpyZ7jAkw23aBPvvH4omd+kCV165rUqJiFQbFTqtSztgpFaZNQtefx3+8Ado0AB+97twGUBOjs6QFMlEaslJxsvLC/Uj7703HF9r3DicLal7uInUCBX6+6miQ5LRpk8PVf9PPx2++gruvhuWL1eCE6ktlOQk4yxaFJIbhGNuBx0E48fDZ5+F425Nm1bdtM2Mq666quj9nXfeyciRI8s0jilTpvDee+8VvR82bBjjxo0rdbh+/fqV2s8999zDpk2byhRPWb344ovMnz+/QuOYM2cOEydOrKSIpDZTkpOM4B7Kaw0aFC7S/u1vw+e77hpKcJ18MmRlVX0cu+yyCy+88ALffvttuYbPy8srluRSlcow5Uly+fn5Zeo/1SSXl5eXtJuSnFQWJTmp8caPh86d4dhjw4klN98ML7yQnljq1KnD8OHDufvuu4t1+/LLLznyyCPp2rUrRx55JMuWLQNCS+13v/sdOTk5nHnmmTz88MPcfffdZGdnM3XqVADefvtt+vXrx7777pu0VdeoUSMgtAQHDhzIaaedRseOHTnnnHNwd+677z5WrlxJTk4OOTk5AEyaNIlDDjmEHj16cPrpp7NhwwYA2rVrxy233MKhhx7Kc889l7S/a665hk6dOtG1a1dGjBjBe++9x4QJE/j9739PdnY2n3/++XYxxs7rH/7wB6ZPn06/fv3o3r07/fr1Y+HChWzdupUbb7yRZ599luzsbJ599lk2btzIBRdcQO/evenevTsvvfRSJXxbUiu4e7V79OzZ00VKsny5+/r14fWjj7p37+7+5JPuW7akN66GDRv6unXrvG3btv7DDz/4HXfc4TfddJO7uw8ePNhHjx7t7u7/+Mc/fMiQIe7uPnToUB80aJDn5eW5u/tNN93kd9xxR9E4hw4d6qeddprn5+f7vHnzfL/99ks6bXf3yZMne5MmTXz58uWen5/vffv29alTp7q7e9u2bX3NmjXu7r5mzRo/7LDDfMOGDe7uPmrUKL/55puL+rv99ttL7G/t2rV+wAEHeEFBgbu7f//990XxPvfccwljjJ/XdevWeW5urru7v/baa37KKae4u/sTTzzhv/nNb4qGu/baa/3pp58umk6HDh2K4pGMV6F8oksIpEaZNi2cJTluHPz1r3D55XD++XDhhdXnEoAmTZpw3nnncd9991G/fv2iz99//31eiJqY5557LldffXVRt9NPP52sEvannnzyyey000506tSJ1atXlxpDnz59aN26NQDZ2dksXbqUQw89dLt+pk2bxvz58+nfvz8AW7du5ZBDDinqfuaZZ5bYX5MmTahXrx4XXXQRgwYNYvDgwaXGFT+v69atY+jQoXz22WeYGbm5uQmHmTRpEhMmTODOO+8EYMuWLSxbtoyDDjoopWlK7aUkJ9WeO4wZEwolT58OTZqE5HbSSaH7jjjWVlZXXnklPXr04Pzzkxf/sZis3LBhwxLHt8suuxS99hQu+4ntPysrK+HxL3fn6KOP5plnnkk4jsKYSupv+vTpvPHGG4wdO5YHHniAN998s9TYYuf1hhtuICcnh/Hjx7N06VIGDhyYcBh35/nnn+dAVcWWMtIxOam21q0Lz2bw6KPwww9w332htuRf/xpuWFpd7brrrpxxxhn84x//KPqsX79+jB07FoAxY8YUa1kVaty4MevXr6+SuGLH3bdvX959910WL14MwKZNm1i0aFGxYZL1t2HDBtatW8cJJ5zAPffcw5w5c8oc/7p162jVKtyVa/To0QnjBDj22GO5//77ixL87NmzyzbjUmspyUm14g5vvw1nnAEtW8LXX4fPx40LNSUvuyxczF0TXHXVVdudZXnffffxxBNP0LVrV55++mnuvffehMOdeOKJjB8/frsTTyrL8OHDOf7448nJyaFFixaMHj2as88+m65du9K3b18+/fTTYsMk62/9+vUMHjyYrl27MmDAgKKTbc466yzuuOMOunfvXuzEk3hXX3011157Lf3799/uLM6cnBzmz59fdOLJDTfcQG5uLl27dqVz587ccMMNlbpcJHOp4olUC5s2hV2SDzwQCiU3bw4XXQQjRsAee6Q7OhFJI1U8kZqr8FDR6tXw//5f2DX52GNhl+Rf/lLz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\n", 230 | "text/plain": [ 231 | "
" 232 | ] 233 | }, 234 | "metadata": { 235 | "needs_background": "light" 236 | }, 237 | "output_type": "display_data" 238 | } 239 | ], 240 | "source": [ 241 | "caption = '''\n", 242 | " Figure 6.14 Evolution of interest rates, following an increase in the South\n", 243 | " propensity to import, with monetary rules based on changes in gold reserves'''\n", 244 | "rndata = [s['RN'] for s in muS.solutions[14:24]]\n", 245 | "rsdata = [s['RS'] for s in muS.solutions[14:24]]\n", 246 | "\n", 247 | "fig = plt.figure()\n", 248 | "axes = fig.add_axes([0.1, 0.1, 0.9, 1.1])\n", 249 | "axes.tick_params(top='off', right='off')\n", 250 | "axes.spines['top'].set_visible(False)\n", 251 | "axes.spines['right'].set_visible(False)\n", 252 | "axes.set_ylim(0, 0.15)\n", 253 | "\n", 254 | "axes.plot(rndata, linestyle='-', color='r')\n", 255 | "axes.plot(rsdata, linestyle='--', color='b')\n", 256 | "\n", 257 | "# add labels\n", 258 | "plt.text(4, .09, 'South interest rate')\n", 259 | "plt.text(4, .084, '(deficit country)')\n", 260 | "plt.text(4, .032, 'North interest rate')\n", 261 | "plt.text(4, .028, '(surplus country)')\n", 262 | "#plt.text(25, 114, 'North country GDP')\n", 263 | "#plt.text(25, 106, 'South country GDP')\n", 264 | "fig.text(0.1, -.1, caption);" 265 | ] 266 | }, 267 | { 268 | "cell_type": "markdown", 269 | "metadata": {}, 270 | "source": [ 271 | "###### Figure 6.15" 272 | ] 273 | }, 274 | { 275 | "cell_type": "code", 276 | "execution_count": 5, 277 | "metadata": {}, 278 | "outputs": [ 279 | { 280 | "data": { 281 | "image/png": "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\n", 282 | "text/plain": [ 283 | "
" 284 | ] 285 | }, 286 | "metadata": { 287 | "needs_background": "light" 288 | }, 289 | "output_type": "display_data" 290 | } 291 | ], 292 | "source": [ 293 | "caption = '''\n", 294 | " Figure 6.15 Evolution of trade accounts and government balances of both\n", 295 | " countries, following an increase in the South propensity to import, with\n", 296 | " moneary rules based on changes in gold reserves'''\n", 297 | "tradeNdata = list()\n", 298 | "tradeSdata = list()\n", 299 | "govtNdata = list()\n", 300 | "govtSdata = list()\n", 301 | "\n", 302 | "for i in range(14, 20):\n", 303 | " s = muS.solutions[i]\n", 304 | " s_1 = muS.solutions[i-1]\n", 305 | " tradeNdata.append(s['XN'] - s['IMN'])\n", 306 | " tradeSdata.append(s['XS'] - s['IMS'])\n", 307 | " govtNdata.append(s['TN'] - (s['GN'] + s['RN']*s_1['BsN']))\n", 308 | " govtSdata.append(s['TS'] - (s['GS'] + s['RS']*s_1['BsS']))\n", 309 | "\n", 310 | "fig = plt.figure()\n", 311 | "axes = fig.add_axes([0.1, 0.1, 0.9, 1.1])\n", 312 | "axes.tick_params(top='off', right='off')\n", 313 | "axes.spines['top'].set_visible(False)\n", 314 | "axes.spines['right'].set_visible(False)\n", 315 | "axes.set_ylim(-4, 3)\n", 316 | "\n", 317 | "axes.plot(tradeNdata, linestyle='-', color='k')\n", 318 | "axes.plot(govtNdata, linestyle=':', color='r', linewidth=3)\n", 319 | "axes.plot(tradeSdata, linestyle='--', color='g')\n", 320 | "axes.plot(govtSdata, linestyle='-.', color='b', linewidth=2)\n", 321 | "\n", 322 | "# add labels\n", 323 | "plt.text(3, 1.7, 'North trade balance')\n", 324 | "plt.text(3.5, 0.1, 'North government balance')\n", 325 | "plt.text(4, -1, 'South trade balance')\n", 326 | "plt.text(2.5, -2.1, 'South government')\n", 327 | "plt.text(2.5, -2.4, 'balance')\n", 328 | "fig.text(0.1, -.1, caption);" 329 | ] 330 | }, 331 | { 332 | "cell_type": "code", 333 | "execution_count": null, 334 | "metadata": {}, 335 | "outputs": [], 336 | "source": [] 337 | } 338 | ], 339 | "metadata": { 340 | "kernelspec": { 341 | "display_name": "Python 3 (ipykernel)", 342 | "language": "python", 343 | "name": "python3" 344 | }, 345 | "language_info": { 346 | "codemirror_mode": { 347 | "name": "ipython", 348 | "version": 3 349 | }, 350 | "file_extension": ".py", 351 | "mimetype": "text/x-python", 352 | "name": "python", 353 | "nbconvert_exporter": "python", 354 | "pygments_lexer": "ipython3", 355 | "version": "3.8.13" 356 | } 357 | }, 358 | "nbformat": 4, 359 | "nbformat_minor": 1 360 | } 361 | -------------------------------------------------------------------------------- /Chapter 9 Model DISINF1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Monetary Economics: Chapter 9" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "### Preliminaries" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 1, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "# This line configures matplotlib to show figures embedded in the notebook, \n", 24 | "# instead of opening a new window for each figure. More about that later. \n", 25 | "# If you are using an old version of IPython, try using '%pylab inline' instead.\n", 26 | "%matplotlib inline\n", 27 | "\n", 28 | "from pysolve.model import Model\n", 29 | "from pysolve.utils import is_close,round_solution\n", 30 | "\n", 31 | "import matplotlib.pyplot as plt" 32 | ] 33 | }, 34 | { 35 | "cell_type": "markdown", 36 | "metadata": {}, 37 | "source": [ 38 | "### Model DISINF1" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 2, 44 | "metadata": {}, 45 | "outputs": [], 46 | "source": [ 47 | "def create_disinf1_model():\n", 48 | " model = Model()\n", 49 | "\n", 50 | " model.set_var_default(0)\n", 51 | " model.var('Ck', desc='Real consumption')\n", 52 | " model.var('C', desc='Consumption at current prices')\n", 53 | " model.var('F', desc='Realized firm profits')\n", 54 | " model.var('Fb', desc='Realized bank profits')\n", 55 | " model.var('IN', desc='Stock of inventories at current costs')\n", 56 | " model.var('INk', desc='Real inventories')\n", 57 | " model.var('INke', desc='Expected real inventories')\n", 58 | " model.var('INkt', desc='Target level of real inventories')\n", 59 | " model.var('Ld', desc='Demand for loans')\n", 60 | " model.var('Ls', desc='Supply of loans')\n", 61 | " model.var('Mh', desc='Deposits held by households')\n", 62 | " model.var('Mhk', desc='Real alue of deposits held by households')\n", 63 | " model.var('Ms', desc='Supply of deposits')\n", 64 | " model.var('N', desc='Employment level')\n", 65 | " model.var('omegat', desc='Target real wage rate')\n", 66 | " model.var('P', desc='Price level')\n", 67 | " model.var('PIC', desc='Inflation rate of unit costs')\n", 68 | " model.var('Rl', desc='Interest rate on loans')\n", 69 | " model.var('Rm', desc='Interest rate on deposits')\n", 70 | " model.var('RRc', desc='Real interest rate on bank loans')\n", 71 | " model.var('S', desc='Sales at current prices')\n", 72 | " model.var('Sk', desc='Real sales')\n", 73 | " model.var('Ske', desc='Expected real sales')\n", 74 | " model.var('UC', desc='Unit costs')\n", 75 | " model.var('WB', desc='The wage bill')\n", 76 | " model.var('Yk', desc='Real output')\n", 77 | " model.var('YD', desc='Disposable income')\n", 78 | " model.var('YDk', desc='Real disposable income')\n", 79 | " model.var('YDkhs', desc='Haig-Simons measure of real disposable income')\n", 80 | " model.var('YDkhse', desc='Expected HS real disposable income')\n", 81 | " model.var('W', desc='Wage rate')\n", 82 | "\n", 83 | " model.set_param_default(0)\n", 84 | " model.param('alpha0', desc='Autonomous consumption')\n", 85 | " model.param('alpha1', desc='Propensity to consume out of income')\n", 86 | " model.param('alpha2', desc='Propensity to consume out of wealth')\n", 87 | " model.param('beta', desc='Parameter in expectation formations on real sales')\n", 88 | " model.param('eps', desc='Parameter in expectation formations on real disposable income')\n", 89 | " model.param('gamma', desc='Speed of adjustment of inventories to the target level')\n", 90 | " model.param('phi', desc='Mark-up on unit costs')\n", 91 | " model.param('sigmat', desc='Target inventories to sales ratio')\n", 92 | " model.param('omega0', desc='Exogenous component of the target real wage rate')\n", 93 | " model.param('omega1', desc='Relation between the target real wage rate and productivity')\n", 94 | " model.param('omega2', desc='Relation between the target real rate and the unemploment gap')\n", 95 | " model.param('omega3', desc='Speed of adjustment of the wage rate')\n", 96 | "\n", 97 | " model.param('ADD', desc='Spread of loans rate over the deposit rate')\n", 98 | " model.param('Nfe', desc='Full employment level')\n", 99 | " model.param('PR', desc='Labor productivity')\n", 100 | " model.param('Rlbar', desc='Rate of interest on bank loans, set exogenously')\n", 101 | " model.param('RRcbar', desc='Real interest rate on bank loans, set exogenously')\n", 102 | "\n", 103 | "\n", 104 | " # The production decision\n", 105 | " model.add('Yk = Ske + INke - INk(-1)')\n", 106 | " model.add('INkt = sigmat*Ske')\n", 107 | " model.add('INke = INk(-1) + gamma*(INkt - INk(-1))')\n", 108 | " model.add('INk - INk(-1) = Yk - Sk')\n", 109 | " model.add('Ske = beta*Sk(-1) + (1-beta)*Ske(-1)')\n", 110 | " model.add('Sk = Ck')\n", 111 | " model.add('N = Yk / PR')\n", 112 | " model.add('WB = N*W')\n", 113 | " model.add('UC = WB/Yk')\n", 114 | " model.add('IN = INk*UC')\n", 115 | " \n", 116 | " # The pricing decision\n", 117 | " model.add('S = P*Sk')\n", 118 | " model.add('F = S - WB + IN - IN(-1) - Rl(-1)*IN(-1)')\n", 119 | " model.add('P = (1 + phi)*(1+RRc*sigmat)*UC')\n", 120 | " \n", 121 | " # The banking system\n", 122 | " model.add('Ld = IN')\n", 123 | " model.add('Ls = Ld')\n", 124 | " model.add('Ms = Ls')\n", 125 | " model.add('Rm = Rl - ADD')\n", 126 | " model.add('Fb = Rl(-1)*Ld(-1) - Rm(-1)*Mh(-1)')\n", 127 | " model.add('PIC = (UC/UC(-1)) - 1')\n", 128 | " model.add('RRc = RRcbar')\n", 129 | " model.add('Rl = (1 + RRc)*(1 + PIC) - 1')\n", 130 | " \n", 131 | " # The consumption decision\n", 132 | " model.add('YD = WB + F + Fb + Rm(-1)*Mh(-1)')\n", 133 | " model.add('Mh - Mh(-1) = YD - C')\n", 134 | " model.add('YDkhs = Ck + (Mhk - Mhk(-1))')\n", 135 | " model.add('YDk = YD/P')\n", 136 | " model.add('C = Ck*P')\n", 137 | " model.add('Mhk = Mh/P')\n", 138 | " model.add('Ck = alpha0 + alpha1*YDkhse + alpha2*Mhk(-1)')\n", 139 | " model.add('YDkhse = eps*YDkhs(-1) + (1 - eps)*YDkhse(-1)')\n", 140 | " \n", 141 | " # The inflation process\n", 142 | " model.add('omegat = omega0 + omega1*PR + omega2*(N/Nfe)')\n", 143 | " model.add('W = W(-1)*(1 + omega3*(omegat(-1)-(W(-1)/P(-1))))')\n", 144 | "\n", 145 | " return model\n", 146 | "\n", 147 | "disinf1_parameters = [('alpha0', 15),\n", 148 | " ('alpha1', 0.8),\n", 149 | " ('alpha2', 0.1),\n", 150 | " ('beta', 0.9),\n", 151 | " ('eps', 0.8),\n", 152 | " ('gamma', 0.25),\n", 153 | " ('phi', 0.24),\n", 154 | " ('sigmat', 0.2),\n", 155 | " ('omega1', 1),\n", 156 | " ('omega2', 1.2),\n", 157 | " ('omega0', '0.8 - omega1*PR - omega2'),\n", 158 | " ('omega3', 0.3)]\n", 159 | "disinf1_exogenous = [('ADD', 0.02),\n", 160 | " ('PR', 1),\n", 161 | " ('RRcbar', 0.04)]\n", 162 | "disinf1_variables = [('W', 1),\n", 163 | " ('UC', 'W/PR'),\n", 164 | " ('P', '(1+phi)*(1+RRcbar*sigmat)*UC'),\n", 165 | " ('YDkhs', 'alpha0/(1-alpha1-alpha2*sigmat*UC/P)'),\n", 166 | " ('Ck', 'YDkhs'),\n", 167 | " ('Sk', 'Ck'),\n", 168 | " ('INk', 'sigmat*Sk'),\n", 169 | " ('IN', 'INk*UC'),\n", 170 | " ('Ld', 'IN'),\n", 171 | " ('Mh', 'Ld'),\n", 172 | " ('Mhk', 'Mh/P'),\n", 173 | " ('Ms', 'Mh'),\n", 174 | " ('Ls', 'Ld'),\n", 175 | " ('Ske', 'Sk'),\n", 176 | " ('YDkhse', 'YDkhs'),\n", 177 | " ('omegat', 'W/P'),\n", 178 | " ('Rl', '(1 + RRcbar) - 1'),\n", 179 | " ('Rm', 'Rl - ADD'),\n", 180 | " ('Nfe', 'Sk/PR')]\n" 181 | ] 182 | }, 183 | { 184 | "cell_type": "markdown", 185 | "metadata": {}, 186 | "source": [ 187 | "### Scenario: Model DISINF1, increase in target wage rate" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 3, 193 | "metadata": {}, 194 | "outputs": [], 195 | "source": [ 196 | "omega0 = create_disinf1_model()\n", 197 | "omega0.set_values(disinf1_parameters)\n", 198 | "omega0.set_values(disinf1_exogenous)\n", 199 | "omega0.set_values(disinf1_variables)\n", 200 | "\n", 201 | "# run to convergence\n", 202 | "# Give the system more time to reach a steady state\n", 203 | "for _ in range(15):\n", 204 | " omega0.solve(iterations=1000, threshold=1e-6)\n", 205 | "\n", 206 | "# shock the system\n", 207 | "omega0.set_values({'omega0': -1.35})\n", 208 | "\n", 209 | "for _ in range(40):\n", 210 | " omega0.solve(iterations=100, threshold=1e-6)" 211 | ] 212 | }, 213 | { 214 | "cell_type": "markdown", 215 | "metadata": {}, 216 | "source": [ 217 | "###### Figure 9.4a" 218 | ] 219 | }, 220 | { 221 | "cell_type": "code", 222 | "execution_count": 4, 223 | "metadata": {}, 224 | "outputs": [ 225 | { 226 | "data": { 227 | "image/png": "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Au68807WrVtX9LxXXXVV+dmDlA4dOnD22WczceJEmjVrxsKFC6vM16JFCwCaNGlC8+bNMbPy9xs2bMDd8643NX/Tpk3ZsGEDAFdeeSV33303a9eupXfv3uWn/UVEpCoF/YRavXo1u+22GwD33Xdf1ml69+7NY489BsBDDz1UPvw3v/lN+dkDgL/97W/l1+T/9a9/8emnn5Yvuzr2228/li5dyjvvvAPAAw88wKGHHpp3niVLllBSUsIVV1xBWVmZgr6ISB4K+gk1cuRIhgwZQt++fWnfvn3WaW6++WZ+97vf0atXL1asWEGbNm2yTjdp0iS6dOlCt27dOProoxk1ahS77LJLtcu07bbbcu+99zJkyBBKSkpo0qQJP/nJT/LOc/PNN5evu2XLlhxzzDHVXq+ISFJYoVOqdamsrMxnzZq12dYntfPll1/SsmVLzIyHHnqI8ePHM3HixIYuloiI5Ge5RuiuJ8np9ddf54ILLsDdadu2Lffcc09DF0lERGpBR/oiIiJbl5xH+rqmLzl17NiRTz75JO806cl87rjjDu6///7NUbSscpV35MiR5c/1i4gkmU7vJ4C74+40aVK/v/EK3XQnIiINS0f6W6mlS5fy3e9+l/PPP58DDjiA5cuXM2rUKHr27EnXrl255ppryqcdPHgwPXr0oHPnzowZM6bgsu+991722WcfDj30UF555ZXy4elH1Lfccgv7778/Xbt25ZRTTikff8YZZ3DYYYex9957c9dddwHhR8lll11Gly5dKCkpYcKECUBI79uvXz9KS0vp0qULL730EgDnnXceZWVldO7cudJ2AIwaNYpevXrRq1ev8kf/0i1ZsoSBAwfSo0cP+vbtq0f8RCRRdKS/FXvzzTe59957uf3225k0aRJvv/02M2bMwN054YQTmDp1Kv369eOee+5hp512Yu3atfTs2ZOTTjqJdu3aZV3mihUruOaaa3j99ddp06YNAwYMoHv37lWmu+GGG3j33Xdp0aJFpbS88+fPZ/r06fznP/+he/fuHHvssUybNo25c+cyb948PvnkE3r27Em/fv3405/+xNFHH81VV13Fxo0b+fLLL4GQJ2CnnXZi48aNHH744cyfP5+uXbsCsMMOOzBjxgzuv/9+LrnkEp5++ulK5Ro+fDh33HEHe++9N6+99hrnn38+L7zwQh3VuIjIlq2ooG9mI4AfAQ4sAM4CrgeOB74GlgBnufuq+imm1MRee+1F7969gfAs/aRJk8oD9Jo1a3j77bfp168ft9xyC0888QQAy5cv5+23384Z9F977TX69+/PzjvvDMDQoUN56623qkzXtWtXTjvtNAYPHszgwYPLhw8aNIiWLVvSsmVLBgwYwIwZM3j55Zc59dRTadq0Kd/85jc59NBDmTlzJj179uTss89m/fr1DB48uDwD4MMPP8yYMWPYsGEDK1as4B//+Ed50D/11FPL/48YMaJSmdasWcOrr75anloYyJouWERka1Uw6JvZbsBFwP7uvtbMHgZOAZ4FfuHuG8zsRuAXwBX1Wlqplu222678tbvzi1/8gnPPPbfSNFOmTOG5555j2rRptGrViv79+xdMyZtKn5vPM888w9SpU3nyySe5/vrry3P7Z85rZjnT7/br14+pU6fyzDPPcMYZZ3DZZZfRt29fRo8ezcyZM9lxxx0ZNmxYpfKmLz9zXZs2baJt27blmQRFRJKm2Gv6zYCWZtYMaAV86O6T3H1DHD8d2D3n3NLgjj76aO655x7WrFkDwAcffMDHH3/M6tWr2XHHHWnVqhVvvPEG06dPz7ucAw88kClTpvDpp5+yfv16HnnkkSrTbNq0ieXLlzNgwABuuukmVq1aVb7eiRMnsm7dOj799FOmTJlSfip/woQJbNy4kZUrVzJ16lR69erFe++9xze+8Q1+/OMfc8455zB79mz+/e9/s91229GmTRs++ugj/vrXv1Zad+p+gAkTJnDQQQdVGrfDDjvQqVOn8jK7O/PmzatZhYqINEIFj/Td/QMzGw0sA9YCk9x9UsZkZwMT6qF8UkeOOuooFi9eXB4IW7duzYMPPsjAgQO544476Nq1K/vuu2/55YBcdt11V0aOHMlBBx3ErrvuygEHHMDGjRsrTbNx40ZOP/10Vq9ejbszYsQI2rZtC0CvXr049thjWbZsGb/61a/o0KED3//+95k2bRrdunXDzLjpppvYZZdduO+++xg1ahTNmzendevW3H///XTq1Inu3bvTuXNnvvWtb9GnT59K6/7qq6848MAD2bRpE+PHj69S/nHjxnHeeefx61//mvXr13PKKafQrVu3WtSsiEjjUTA5j5ntCDwGDAVWAY8Aj7r7g3H8VUAZcKJnWZiZDQeGA+y555493nvvvbosvzQiI0eO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v/76a587d65369atfP5ddtnFP/nkE//yyy+9c+fOPnPmTH/33Xe9c+fO5ctNfz969GgfNmyYu7svXrzY99hjD1+7dq3fe++93qlTJ1+1apWvXbvW99xzT1+2bFnR+0FEGlzOOFzUkb6ZjTCzRWa20MzGm9m2ZjYkDttkZmX1+9NEpLC1a9dSWlpKu3bt+OyzzzjyyCNZs2YNr776KkOGDKG0tJRzzz2XFStWAPD+++9z9NFHU1JSwqhRo1i0aFHe5T/33HP89Kc/LX+/4447MnPmTPr378/OO+9Ms2bNOO2005g6dSoA22yzDccddxwAPXr0YOnSpQD06dOHYcOGcdddd7Fx48aC27XNNtswcOBAAEpKSjj00ENp3rw5JSUl5csEOPLII2nXrh0tW7bkxBNP5OWXX8673JdffpkzzjgDgP3224+99tqLt956C4DDDz+cNm3asO2227L//vvz3nvvFSyniGz5CgZ9M9sNuAgoc/cuQFPgFGAhcCIwtV5LKFKk1DX99957j6+//prbbruNTZs20bZtW+bOnVv+t3jxYgAuvPBCLrjgAhYsWMCdd97JunXr8i7f3TGzKsNyad68efn0TZs2ZcOGDQDccccd/PrXv2b58uWUlpby6aef0qxZMzZt2lQ+b3pZ0pfTpEkTWrRoUf46tUygStky32fbnlxS68gsu4g0bsVe028GtDSzZkAr4EN3X+zub9Zf0URqpk2bNtxyyy2MHj2ali1b0qlTJx555BEgBLp58+YBsHr1anbbbTcA7rvvvoLLPeqoo7j11lvL33/++ecceOCBvPjii3zyySds3LiR8ePHc+ihh+ZdzpIlSzjwwAO57rrraN++PcuXL6djx47MnTuXTZs2sXz5cmbMmFHt7X722Wf57LPPWLt2LX/+85/p06cP22+/PV988UXW6fv168e4ceMAeOutt1i2bBn77rtvtdcrIo1HwaDv7h8Ao4FlwApgtbtPKnYFZjbczGaZ2ayVK1fWvKQi1dC9e3e6devGQw89xLhx4/jjH/9It27d6Ny5MxMnTgRg5MiRDBkyhL59+9K+ffuCy/zlL3/J559/Xn4T3uTJk9l111357W9/y4ABA+jWrRsHHHAAgwYNyrucyy67rPzGv379+tGtWzf69OlDp06dKCkp4dJLL+WAAw6o9jYfcsghnHHGGZSWlnLSSSdR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\n", 228 | "text/plain": [ 229 | "
" 230 | ] 231 | }, 232 | "metadata": { 233 | "needs_background": "light" 234 | }, 235 | "output_type": "display_data" 236 | } 237 | ], 238 | "source": [ 239 | "caption = '''\n", 240 | " Figure 9.4a Evolution of (Haig-Simons) real disposable income and of real\n", 241 | " consumption following an increase in the rate of inflation, in a variant\n", 242 | " where households take capital gains and losses from inflation into account\n", 243 | " in their expenditure decisions and inflation has no real effects.'''\n", 244 | "ydkhsdata = [s['YDkhs'] for s in omega0.solutions[5:]]\n", 245 | "ckdata = [s['Ck'] for s in omega0.solutions[5:]]\n", 246 | "\n", 247 | "fig = plt.figure()\n", 248 | "axes = fig.add_axes([0.1, 0.1, 1.1, 1.1])\n", 249 | "axes.tick_params(top='off', right='off')\n", 250 | "axes.spines['top'].set_visible(False)\n", 251 | "axes.spines['right'].set_visible(False)\n", 252 | "axes.set_ylim(79.3, 85)\n", 253 | "\n", 254 | "axes.plot(ydkhsdata, linestyle='-', color='r')\n", 255 | "axes.plot(ckdata, linestyle='--', color='b')\n", 256 | "\n", 257 | "# add labels\n", 258 | "plt.text(15, 81, 'Real consumption')\n", 259 | "plt.text(8, 82.2, 'Haig-Simons')\n", 260 | "plt.text(8, 82, 'real disposable')\n", 261 | "plt.text(8, 81.8, 'income')\n", 262 | "fig.text(0.1, -.15, caption);" 263 | ] 264 | }, 265 | { 266 | "cell_type": "markdown", 267 | "metadata": {}, 268 | "source": [ 269 | "###### Figure 9.5a" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 5, 275 | "metadata": {}, 276 | "outputs": [ 277 | { 278 | "data": { 279 | "image/png": "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\n", 280 | "text/plain": [ 281 | "
" 282 | ] 283 | }, 284 | "metadata": { 285 | "needs_background": "light" 286 | }, 287 | "output_type": "display_data" 288 | } 289 | ], 290 | "source": [ 291 | "caption = '''\n", 292 | " Figure 9.5a Evolution of real wealth, following an increase in the rate\n", 293 | " of inflation, in a variant where households take capital gains and losses\n", 294 | " from inflation into account in their expenditure decisions and inflation\n", 295 | " has no real effects.'''\n", 296 | "data = [s['Mhk'] for s in omega0.solutions[5:]]\n", 297 | "\n", 298 | "fig = plt.figure()\n", 299 | "axes = fig.add_axes([0.1, 0.1, 1.1, 1.1])\n", 300 | "axes.tick_params(top='off', right='off')\n", 301 | "axes.spines['top'].set_visible(False)\n", 302 | "axes.spines['right'].set_visible(False)\n", 303 | "axes.set_ylim(11, 15)\n", 304 | "\n", 305 | "axes.plot(data, linestyle='--', color='b')\n", 306 | "\n", 307 | "# add labels\n", 308 | "plt.text(15, 12.8, 'Real wealth')\n", 309 | "fig.text(0.1, -.15, caption);" 310 | ] 311 | }, 312 | { 313 | "cell_type": "markdown", 314 | "metadata": {}, 315 | "source": [ 316 | "###### Figure 9.6a" 317 | ] 318 | }, 319 | { 320 | "cell_type": "code", 321 | "execution_count": 6, 322 | "metadata": {}, 323 | "outputs": [ 324 | { 325 | "data": { 326 | "image/png": "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JPj61+Fv/qbTNeleF198MR/72MeYPXs26623XsvxawOD3t5ezj777NVerxUrVjQsc2BgZkUODMaQzTeHf/5n2GGHTtdkdLvhhhs49NBDeetb38rOO+/MiSeeSERw/vnn86Mf/YizzjqLE088ccA0Cxcu5KCDDmKPPfZgjz324NbcxeUZZ5zBTTfdxJQpU/jGN77BDTfcwDHHHAPAU089xXHHHcduu+3Gvvvuy5w5cwCYPn06733vezn00EN59atf3TCQmDhxImeeeSb77LMPt912G2eddRZ77bUXu+66K9OmTSMiuPzyy+nr6+PEE09kypQpvPDCC9x1110ccsgh7LnnnrzpTW/i8ccfH8ataWYjTkSMuNeee+4ZtvqtWBHxwAMRf/xjp2syOvX09ERExPXXXx8bbrhhPProo7FixYrYd99946abboqIiJNOOil+/OMfR0TEI488ErvssktERDz33HPxwgsvRETEww8/HJVj/Prrr4+jjz66uozi59NOOy2mT58eERHXXXdd7L777hER8ZnPfCb222+/ePHFF2Pp0qWxySabxLJlywbVF4jLLrus+vnJJ5+svn/Xu94VM2fOjIiIQw45JGbNmhUREcuWLYv99tsvlixZEhERl156aZx88slD3mZmNqLV/Q0u9biidYeXXoLJk+ELX4BPfrLTtRnd9t57b7beemsApkyZwsKFCznwwAMbjv/yyy9z2mmnMXv2bMaPH8/DDz/cchk333wzV1xxBQCvf/3refLJJ3nmmWcAOProo1lnnXVYZ511eOUrX8kf//jHan0qxo8fz/HHH1/9fP311/OVr3yF559/nqeeeopddtmFv/3bvx0wzbx587j//vs5PKfIXLFiBVtu6f7QzMYSBwZjyLrrguSbD1eHddZZp/p+/PjxLG+RTvIb3/gGW2yxBffeey8rV65k3XXXbbmMiMFdhkgqvfx1112X8ePHA/Diiy9y6qmn0tfXxzbbbMP06dN58cUX6y5zl1124bbbbmtZPzPrTr7HYAyR3MNipzzzzDNsueWWjBs3jh/84AfVmwE32GAD/vKXv9Sd5uCDD+biiy8G0n0Nm222GRtuuOGQll8JAjbbbDOeffZZLr/88mpZsQ5//dd/zdKlS6uBwcsvv8zcuXOHtEwzG53cYjDG9PQ4MOiEU089leOPP54f//jHHHbYYfTk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\n", 327 | "text/plain": [ 328 | "
" 329 | ] 330 | }, 331 | "metadata": { 332 | "needs_background": "light" 333 | }, 334 | "output_type": "display_data" 335 | } 336 | ], 337 | "source": [ 338 | "caption = '''\n", 339 | " Figure 9.6a Evolution of the rate of price inflation, following an increase\n", 340 | " in the target real-wage of workers in a variant where households take capital \n", 341 | " gains and losses from inflation into account in their expenditure decisions \n", 342 | " and inflation has no real effects.'''\n", 343 | "data = list()\n", 344 | "\n", 345 | "for i in range(10, len(omega0.solutions)):\n", 346 | " s = omega0.solutions[i]\n", 347 | " s_1 = omega0.solutions[i-1]\n", 348 | " \n", 349 | " data.append((s['P']/s_1['P'])-1)\n", 350 | "\n", 351 | "fig = plt.figure()\n", 352 | "axes = fig.add_axes([0.1, 0.1, 1.1, 1.1])\n", 353 | "axes.tick_params(top='off', right='off')\n", 354 | "axes.spines['top'].set_visible(False)\n", 355 | "axes.spines['right'].set_visible(False)\n", 356 | "axes.set_ylim(-0.01, .4)\n", 357 | "\n", 358 | "axes.plot(data, linestyle='--', color='b')\n", 359 | "\n", 360 | "# add labels\n", 361 | "plt.text(15, .03, 'Inflation rate')\n", 362 | "fig.text(0.1, -.15, caption);" 363 | ] 364 | }, 365 | { 366 | "cell_type": "code", 367 | "execution_count": null, 368 | "metadata": {}, 369 | "outputs": [], 370 | "source": [] 371 | } 372 | ], 373 | "metadata": { 374 | "kernelspec": { 375 | "display_name": "Python 3 (ipykernel)", 376 | "language": "python", 377 | "name": "python3" 378 | }, 379 | "language_info": { 380 | "codemirror_mode": { 381 | "name": "ipython", 382 | "version": 3 383 | }, 384 | "file_extension": ".py", 385 | "mimetype": "text/x-python", 386 | "name": "python", 387 | "nbconvert_exporter": "python", 388 | "pygments_lexer": "ipython3", 389 | "version": "3.8.13" 390 | } 391 | }, 392 | "nbformat": 4, 393 | "nbformat_minor": 1 394 | } 395 | --------------------------------------------------------------------------------