From 6648b7e40d12f4c6dc2dd6f5ce6cc7b35330ca46 Mon Sep 17 00:00:00 2001 From: alanlujan91 Date: Mon, 7 Mar 2022 20:21:29 -0500 Subject: [PATCH 1/5] Linear approximation to portfolio share --- HARK/ConsumptionSaving/ConsPortfolioModel.py | 68 ++++++- .../example_ConsPortfolioModel - Approx.ipynb | 182 ++++++++++++++++++ 2 files changed, 245 insertions(+), 5 deletions(-) create mode 100644 examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb diff --git a/HARK/ConsumptionSaving/ConsPortfolioModel.py b/HARK/ConsumptionSaving/ConsPortfolioModel.py index 575652e2f..bde6a1e28 100644 --- a/HARK/ConsumptionSaving/ConsPortfolioModel.py +++ b/HARK/ConsumptionSaving/ConsPortfolioModel.py @@ -213,7 +213,7 @@ def update_solution_terminal(self): None """ # Consume all market resources: c_T = m_T - cFuncAdj_terminal = IdentityFunction() + cFuncAdj_terminal = cFuncAdj_terminal = LinearInterp([0.0, 1.0], [0.0, 1.0]) cFuncFxd_terminal = IdentityFunction(i_dim=0, n_dims=2) # Risky share is irrelevant-- no end-of-period assets; set to zero @@ -244,6 +244,8 @@ def update_solution_terminal(self): dvdsFuncFxd=dvdsFuncFxd_terminal, ) + self.solution_terminal.EndOfPrdShareFunc = ShareFuncAdj_terminal + def update_ShareGrid(self): """ Creates the attribute ShareGrid as an evenly spaced grid on [0.,1.], using @@ -822,6 +824,62 @@ def make_ShareFuncAdj(self): Construct the risky share function when the agent can adjust """ + # Share function for aGrid + + if self.zero_bound: + aNrm_temp = np.append(0.0, self.aNrmGrid) + share_temp = np.append(self.ShareLimit, self.Share_now) + else: + aNrm_temp = self.aNrmGrid + share_temp = self.Share_now + + self.EndOfPrdShareFunc = LinearInterp( + aNrm_temp, share_temp, intercept_limit=self.ShareLimit, slope_limit=0.0 + ) + + # alternative share functions from linearization + + cFunc_next = self.solution_next.cFuncAdj + sFunc_next = self.solution_next.EndOfPrdShareFunc + + def premium(shock): + r_diff = shock - self.Rfree + + return r_diff, r_diff ** 2 + + prem_mean, prem_var = calc_expectation(self.RiskyDstn, premium) + + def c_nrm_and_deriv(shocks, a_nrm): + p_shk = shocks[0] * self.PermGroFac + share = sFunc_next(a_nrm) + r_diff = shocks[2] - self.Rfree + r_port = self.Rfree + r_diff * share + m_nrm_next = a_nrm * r_port / p_shk + shocks[1] + + c_next, cP_next = cFunc_next.eval_with_derivative(m_nrm_next) + + return c_next, cP_next + + c_vals = calc_expectation(self.ShockDstn, c_nrm_and_deriv, self.aNrmGrid) + + c_vals = c_vals[:, :, 0] + c_next = c_vals[0] + cP_next = c_vals[1] + + MPC = cP_next * self.aNrmGrid / c_next + + approx_share = prem_mean / (self.CRRA * MPC * prem_var) + approx_share = np.clip(approx_share, 0, 1) + + self.ApproxShareFunc = LinearInterp( + self.aNrmGrid, + approx_share, + intercept_limit=self.ShareLimit, + slope_limit=0.0, + ) + + # Share function for mGrid + if self.zero_bound: Share_lower_bound = self.ShareLimit else: @@ -978,6 +1036,9 @@ def make_porfolio_solution(self): AdjPrb=self.AdjustPrb, ) + self.solution.EndOfPrdShareFunc = self.EndOfPrdShareFunc + self.solution.ApproxShareFunc = self.ApproxShareFunc + def solve(self): """ Solve the one period problem for a portfolio-choice consumer. @@ -1319,10 +1380,7 @@ def add_SequentialShareFuncAdj(self, solution): Share_now = self.Share_now self.SequentialShareFuncAdj_now = LinearInterp( - aNrm_temp, - Share_now, - intercept_limit=self.ShareLimit, - slope_limit=0.0, + aNrm_temp, Share_now, intercept_limit=self.ShareLimit, slope_limit=0.0, ) solution.SequentialShareFuncAdj = self.SequentialShareFuncAdj_now diff --git a/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb b/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb new file mode 100644 index 000000000..da342c27f --- /dev/null +++ b/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb @@ -0,0 +1,182 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"\n", + "Example implementations of HARK.ConsumptionSaving.ConsPortfolioModel\n", + "\"\"\"\n", + "from copy import copy\n", + "from time import time\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "from HARK.ConsumptionSaving.ConsIndShockModel import init_lifecycle\n", + "from HARK.ConsumptionSaving.ConsPortfolioModel import (\n", + " PortfolioConsumerType,\n", + " init_portfolio,\n", + ")\n", + "from HARK.utilities import plot_funcs" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Now solving an example portfolio choice problem; this might take a moment...\n", + "Solving an infinite horizon portfolio choice problem took 8.292998790740967 seconds.\n" + ] + } + ], + "source": [ + "# Make and solve an example portfolio choice consumer type\n", + "print(\"Now solving an example portfolio choice problem; this might take a moment...\")\n", + "MyType = PortfolioConsumerType()\n", + "MyType.cycles = 0\n", + "t0 = time()\n", + "MyType.solve()\n", + "t1 = time()\n", + "MyType.cFunc = [MyType.solution[t].cFuncAdj for t in range(MyType.T_cycle)]\n", + "MyType.ShareFunc = [MyType.solution[t].ShareFuncAdj for t in range(MyType.T_cycle)]\n", + "MyType.EndOfPrdShareFunc = [MyType.solution[t].EndOfPrdShareFunc for t in range(MyType.T_cycle)]\n", + "MyType.ApproxShareFunc = [MyType.solution[t].ApproxShareFunc for t in range(MyType.T_cycle)]\n", + "print(\n", + " \"Solving an infinite horizon portfolio choice problem took \"\n", + " + str(t1 - t0)\n", + " + \" seconds.\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Consumption function over market resources:\n" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Risky asset share as a function of market resources:\n", + "Optimal (blue) versus Theoretical Limit (orange)\n" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot the consumption and risky-share functions\n", + "print(\"Consumption function over market resources:\")\n", + "plot_funcs(MyType.cFunc[0], 0.0, 20.0)\n", + "print(\"Risky asset share as a function of market resources:\")\n", + "print(\"Optimal (blue) versus Theoretical Limit (orange)\")\n", + "plt.xlabel(\"Normalized Market Resources\")\n", + "plt.ylabel(\"Portfolio Share\")\n", + "plt.ylim(0.0, 1.0)\n", + "# Since we are using a discretization of the lognormal distribution,\n", + "# the limit is numerically computed and slightly different from\n", + "# the analytical limit obtained by Merton and Samuelson for infinite wealth\n", + "plot_funcs(\n", + " [\n", + " MyType.ShareFunc[0],\n", + " lambda m: MyType.ShareLimit * np.ones_like(m),\n", + " ],\n", + " 0.0,\n", + " 200.0,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_funcs(\n", + " [\n", + " MyType.EndOfPrdShareFunc[0],\n", + " MyType.ApproxShareFunc[0],\n", + " ],\n", + " 0.0,\n", + " 200.0,\n", + ")" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + } + ], + "metadata": { + "jupytext": { + "cell_metadata_filter": "title,-all", + "formats": "ipynb,auto:percent", + "main_language": "python", + "notebook_metadata_filter": "-all" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file From 671b395e2cb8b1e4094ff84545a6c62c05374eb6 Mon Sep 17 00:00:00 2001 From: alanlujan91 Date: Mon, 7 Mar 2022 20:27:07 -0500 Subject: [PATCH 2/5] Update ConsPortfolioModel.py a few more comments --- HARK/ConsumptionSaving/ConsPortfolioModel.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/HARK/ConsumptionSaving/ConsPortfolioModel.py b/HARK/ConsumptionSaving/ConsPortfolioModel.py index bde6a1e28..eaf4458a9 100644 --- a/HARK/ConsumptionSaving/ConsPortfolioModel.py +++ b/HARK/ConsumptionSaving/ConsPortfolioModel.py @@ -824,7 +824,7 @@ def make_ShareFuncAdj(self): Construct the risky share function when the agent can adjust """ - # Share function for aGrid + # Share function on aGrid if self.zero_bound: aNrm_temp = np.append(0.0, self.aNrmGrid) @@ -837,12 +837,16 @@ def make_ShareFuncAdj(self): aNrm_temp, share_temp, intercept_limit=self.ShareLimit, slope_limit=0.0 ) - # alternative share functions from linearization + # alternative share functions from linear approximation + # get next period's consumption and share function cFunc_next = self.solution_next.cFuncAdj sFunc_next = self.solution_next.EndOfPrdShareFunc def premium(shock): + """ + Used to evaluate mean and variance of equity premium. + """ r_diff = shock - self.Rfree return r_diff, r_diff ** 2 @@ -850,6 +854,11 @@ def premium(shock): prem_mean, prem_var = calc_expectation(self.RiskyDstn, premium) def c_nrm_and_deriv(shocks, a_nrm): + """ + Used to calculate expected consumption and MPC given today's savings, + assuming that today's risky share is the same as it would be tomorrow + with that same level of savings. + """ p_shk = shocks[0] * self.PermGroFac share = sFunc_next(a_nrm) r_diff = shocks[2] - self.Rfree @@ -869,6 +878,9 @@ def c_nrm_and_deriv(shocks, a_nrm): MPC = cP_next * self.aNrmGrid / c_next approx_share = prem_mean / (self.CRRA * MPC * prem_var) + + # clip at 0 and 1, although we know the Share limit we + # want to see what the approximation would give us approx_share = np.clip(approx_share, 0, 1) self.ApproxShareFunc = LinearInterp( From 79f5a915b00153c40eae9d72ff0823392f88f1d6 Mon Sep 17 00:00:00 2001 From: alanlujan91 Date: Mon, 7 Mar 2022 20:38:41 -0500 Subject: [PATCH 3/5] fix typo --- HARK/ConsumptionSaving/ConsPortfolioModel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HARK/ConsumptionSaving/ConsPortfolioModel.py b/HARK/ConsumptionSaving/ConsPortfolioModel.py index eaf4458a9..e43757e1a 100644 --- a/HARK/ConsumptionSaving/ConsPortfolioModel.py +++ b/HARK/ConsumptionSaving/ConsPortfolioModel.py @@ -213,7 +213,7 @@ def update_solution_terminal(self): None """ # Consume all market resources: c_T = m_T - cFuncAdj_terminal = cFuncAdj_terminal = LinearInterp([0.0, 1.0], [0.0, 1.0]) + cFuncAdj_terminal = LinearInterp([0.0, 1.0], [0.0, 1.0]) cFuncFxd_terminal = IdentityFunction(i_dim=0, n_dims=2) # Risky share is irrelevant-- no end-of-period assets; set to zero From 9c6f220cd892390473532ef1e8cc39664cfe0fde Mon Sep 17 00:00:00 2001 From: alanlujan91 Date: Fri, 25 Mar 2022 14:30:35 -0400 Subject: [PATCH 4/5] second order approximation --- HARK/ConsumptionSaving/ConsPortfolioModel.py | 27 ++++++++++-- .../example_ConsPortfolioModel - Approx.ipynb | 41 ++++++++++++------- 2 files changed, 50 insertions(+), 18 deletions(-) diff --git a/HARK/ConsumptionSaving/ConsPortfolioModel.py b/HARK/ConsumptionSaving/ConsPortfolioModel.py index e43757e1a..c71693e71 100644 --- a/HARK/ConsumptionSaving/ConsPortfolioModel.py +++ b/HARK/ConsumptionSaving/ConsPortfolioModel.py @@ -849,9 +849,9 @@ def premium(shock): """ r_diff = shock - self.Rfree - return r_diff, r_diff ** 2 + return r_diff, r_diff ** 2, r_diff ** 3 - prem_mean, prem_var = calc_expectation(self.RiskyDstn, premium) + prem_mean, prem_sqrd, prem_cube = calc_expectation(self.RiskyDstn, premium) def c_nrm_and_deriv(shocks, a_nrm): """ @@ -877,7 +877,8 @@ def c_nrm_and_deriv(shocks, a_nrm): MPC = cP_next * self.aNrmGrid / c_next - approx_share = prem_mean / (self.CRRA * MPC * prem_var) + # first order approximation + approx_share = prem_mean / (self.CRRA * MPC * prem_sqrd) # clip at 0 and 1, although we know the Share limit we # want to see what the approximation would give us @@ -890,6 +891,25 @@ def c_nrm_and_deriv(shocks, a_nrm): slope_limit=0.0, ) + # second order approximation + + a = -self.CRRA * prem_cube * MPC ** 2 * (-self.CRRA - 1) / 2 + b = -self.CRRA * MPC * prem_sqrd + c = prem_mean + + temp = np.sqrt(b ** 2 - 4 * a * c) + + roots = np.array([(-b + temp) / (2 * a), (-b - temp) / (2 * a)]) + roots[:, 0] = 1.0 + roots = np.where( + np.logical_and(roots[0] >= 0, roots[0] <= 1), roots[0], roots[1] + ) + roots = np.clip(roots, 0, 1) + + self.ApproxSecondOrderShareFunc = LinearInterp( + self.aNrmGrid, roots, intercept_limit=self.ShareLimit, slope_limit=0.0, + ) + # Share function for mGrid if self.zero_bound: @@ -1050,6 +1070,7 @@ def make_porfolio_solution(self): self.solution.EndOfPrdShareFunc = self.EndOfPrdShareFunc self.solution.ApproxShareFunc = self.ApproxShareFunc + self.solution.ApproxSecondOrderShareFunc = self.ApproxSecondOrderShareFunc def solve(self): """ diff --git a/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb b/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb index da342c27f..131e5215a 100644 --- a/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb +++ b/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb @@ -2,30 +2,27 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "\"\"\"\n", "Example implementations of HARK.ConsumptionSaving.ConsPortfolioModel\n", "\"\"\"\n", - "from copy import copy\n", "from time import time\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", - "from HARK.ConsumptionSaving.ConsIndShockModel import init_lifecycle\n", "from HARK.ConsumptionSaving.ConsPortfolioModel import (\n", " PortfolioConsumerType,\n", - " init_portfolio,\n", ")\n", "from HARK.utilities import plot_funcs" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -33,7 +30,7 @@ "output_type": "stream", "text": [ "Now solving an example portfolio choice problem; this might take a moment...\n", - "Solving an infinite horizon portfolio choice problem took 8.292998790740967 seconds.\n" + "Solving an infinite horizon portfolio choice problem took 8.267216920852661 seconds.\n" ] } ], @@ -49,6 +46,7 @@ "MyType.ShareFunc = [MyType.solution[t].ShareFuncAdj for t in range(MyType.T_cycle)]\n", "MyType.EndOfPrdShareFunc = [MyType.solution[t].EndOfPrdShareFunc for t in range(MyType.T_cycle)]\n", "MyType.ApproxShareFunc = [MyType.solution[t].ApproxShareFunc for t in range(MyType.T_cycle)]\n", + "MyType.ApproxSecondOrderShareFunc = [MyType.solution[t].ApproxSecondOrderShareFunc for t in range(MyType.T_cycle)]\n", "print(\n", " \"Solving an infinite horizon portfolio choice problem took \"\n", " + str(t1 - t0)\n", @@ -58,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -89,7 +87,7 @@ { "data": { "text/plain": "
", - "image/png": "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\n" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEKCAYAAAAFJbKyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAjG0lEQVR4nO3deZhcdZ3v8fenqrekk86+kJCEBCIQdmgWBQcUUUDHuIwKCCijMjyXuM3jDDoqF8a5PjqOXPSiQEYBV3BDCYiDqAgKIklYQsIiIQQSQsgGCdnT6e/945xOKp1e6nS6qrq6P6/Heurs53d+kf7U7yy/o4jAzMysWLlKF8DMzKqLg8PMzDJxcJiZWSYODjMzy8TBYWZmmTg4zMwsk5IFh6QbJK2StLCT+ZL0TUmLJS2QdGypymJmZr2nlC2Om4Azu5h/FjA9/VwMXFvCspiZWS8pWXBExH3Aui4WmQl8PxIPAsMl7Veq8piZWe+oqeC+JwLLCsaXp9Near+gpItJWiXkBjUdVzNsLAAHjGpkaEMlD8HMrDrMnz9/TUSM6Y1tVfKvrjqY1mH/JxExG5gNcNQxx8a1P/st533nr1x13rG8/Ug3UszMuiPp+d7aViXvqloOTCoY3x9Y0d1KtfkcE0cMAmDrjp2lKZmZmXWqksExB7gwvbvqJGB9ROx1mqoj9TV5ALa1tJaweGZm1pGSnaqSdDNwGjBa0nLgfwO1ABFxHXAncDawGNgMXFTsthtqk7zb1uIWh5lZuZUsOCLi3G7mB3BpT7bd1uLYusMtDjOzcqvKJ8fra9ziMDOrlKoMjlxO1OVzvsZhZlYBVRkckLQ6fFeVmVn5VW9w1LrFYWZWCdUbHDV5tvniuJlZ2VVvcNTm2OqL42ZmZVe9weEWh5lZRVRtcDTU5nw7rplZBVRtcNTX5NziMDOrgCoOjrxbHGZmFVC1wdHg23HNzCqiaoOjvibvBwDNzCqgioPDLQ4zs0qo3uDwqSozs4qo2uBo8KkqM7OKqNrgcIvDzKwyqjc4avLsbA1adjo8zMzKqWqDo+31sVvd6jAzK6uqDY6218du83UOM7OyquLgaHt9rFscZmblVLXB0VCbtDh8Z5WZWXlVbXC4xWFmVhnVGxy1Dg4zs0qo2uBoqPGpKjOzSqja4HCLw8ysMqo3OHw7rplZRVRtcPgBQDOzyqja4HCLw8ysMqo4OHyNw8ysEqo3OPwAoJlZRVRvcLjFYWZWEQ4OMzPLpGqDQ1Ly3nGfqjIzK6uqDQ5IWh1ucZiZlVd1B0dtnm0tbnGYmZVTSYND0pmSnpa0WNJnO5g/TNLtkh6TtEjSRVm231CbY8t2B4eZWTmVLDgk5YFvAWcBM4BzJc1ot9ilwBMRcRRwGvB1SXXF7qOxrobNDg4zs7IqZYvjBGBxRCyJiO3ALcDMdssEMFSSgCHAOqCl2B001tewaXvRi5uZWS8oZXBMBJYVjC9PpxW6BjgUWAE8DnwyIva62i3pYknzJM1bvXr1rumD6/Js3OYWh5lZOZUyONTBtGg3/jbgUWACcDRwjaSmvVaKmB0RzRHRPGbMmF3Th9TXsHmbWxxmZuVUyuBYDkwqGN+fpGVR6CLg1kgsBp4DDil2B431NWxycJiZlVUpg2MuMF3S1PSC9znAnHbLvACcDiBpHHAwsKTYHTTW5dno4DAzK6uaUm04IlokzQLuAvLADRGxSNIl6fzrgC8BN0l6nOTU1mURsabYfTTWJ3dVRQTJ9XUzMyu1kgUHQETcCdzZbtp1BcMrgLf2dPuN9TW0tAbbWlppSHvLNTOz0qrqJ8eH1Ce55+scZmblU9XBMbguaWX4IUAzs/Kp6uBoa3H4ArmZWflUdXA0+lSVmVnZVXlwJKeqNvlUlZlZ2VR1cAxtqAXgta07KlwSM7OBo6qDoykNjvVbHBxmZuVS1cExbFASHBu2+BqHmVm5VHVwNNTmqMvn3OIwMyujqg4OSTQNqnFwmJmVUVUHB0DToFo2+OK4mVnZVH1wDBtUywa3OMzMyqbqg6OpodanqszMyqjqg2PYIAeHmVk59Yvg8KkqM7Py6RfBsX7LDlpb27/O3MzMSqHqg2PUkDpaA151q8PMrCz6QXDUA7B247YKl8TMbGCo+uAY3VgHwJqN2ytcEjOzgaH6g2No0uJY4xaHmVlZVH1wjEpbHD5VZWZWHlUfHMMH15ETrN3kU1VmZuVQ9cGRz4mRjXW+xmFmViZVHxwAoxrrfY3DzKxMigoOSVMkvSUdHiRpaGmLlc2oIXW+xmFmVibdBoekjwE/B65PJ+0P/KqEZcps9JB6X+MwMyuTYloclwInAxsAIuIZYGwpC5XVqCF1rHnNLQ4zs3IoJji2RcSun/OSaoA+1THUuKYGNm3fyWt+oZOZWckVExz3Svo3YJCkM4CfAbeXtljZTBg+CICX1m+tcEnMzPq/YoLjMmA18DjwT8CdwBdKWaisJg5vAODFV7dUuCRmZv1fTVczJeWABRFxOPDf5SlSdm0tjhUODjOzkuuyxRERrcBjkiaXqTw9MnZoA/mcHBxmZmXQZYsjtR+wSNJDwKa2iRHxzpKVKqN8ToxvamDFq77GYWZWasUEx5UlL0UvmDhikK9xmJmVQbfBERH39nTjks4EvgHkge9ExFc6WOY04GqgFlgTEaf2ZF8Thw9i7tJ1PS2qmZkVqZgnx0+SNFfSRknbJe2UtKGI9fLAt4CzgBnAuZJmtFtmOPBt4J0RcRjwvp4cBMCE4Q2sXL+Vlp2tPd2EmZkVoZjbca8BzgWeAQYBH02ndecEYHFELEkfILwFmNlumfOAWyPiBYCIWFVswds7YFQjLa3Bsld8usrMrJSK6uQwIhYD+YjYGRE3AqcVsdpEYFnB+PJ0WqHXASMk/VHSfEkXdrQhSRdLmidp3urVqzvc2bQxQwBYsnpjEUUzM7OeKiY4NkuqAx6V9J+SPg00FrGeOpjWvquSGuA44O3A24AvSnrdXitFzI6I5ohoHjNmTIc7O3BMUqQlqzd1ON/MzHpHMcFxQbrcLJLbcScB7y1iveXpsm32B1Z0sMz/RMSmiFgD3AccVcS29zJ8cB0jG+tYssYtDjOzUirmrqrn08GtZLs1dy4wXdJU4EXgHJJrGoVuA65JO06sA04E/m+Gfexh2uhGnnWLw8yspLoNDkknA1cAUwqXj4hpXa0XES2SZgF3kdyOe0NELJJ0STr/uoh4UtL/AAuAVpJbdhf29GCmjm7knqc7vgZiZma9o5gHAL8LfBqYD+zMsvGIuJOkU8TCade1G/8a8LUs2+3M9HFD+Nn85azduI1RQ+p7Y5NmZtZOMdc41kfEbyJiVUSsbfuUvGQ9cNiEYQA88VK3j5mYmVkPddrikHRsOniPpK8BtwK7XrMXEQ+XuGyZzdivCYBFKzbwxukd331lZmb7pqtTVV9vN95cMBzAm3u/OPtmRGMdE4Y1sGiFWxxmZqXSaXBExJvKWZDeMmPCMBatWF/pYpiZ9VudXuOQ9PeSphSMXy7pMUlzJB1QltL1wBETh/Hcmk1s8PvHzcxKoquL4/+H5JWxSHoHcD7wj8Ac4PrSF61njpsyggh45IVXK10UM7N+qavgiIjYnA6/B/huRMyPiO8AffbK89GTh5PPifnuYt3MrCS6Cg5JGpK+d/x04PcF8xpKW6yeG1Jfw6H7DWXu0lcqXRQzs36pq+C4GngUmAc8GRHzACQdA7xU8pLtg+YpI3lk2Stsa8n0vKKZmRWh0+CIiBuAU4GPAGcXzFoJXFTicu2TUw4azdYdrcxzq8PMrNd1+eR4RLwYEY9ERGvBtJfaXrzUV73hoFHU5XPc81SP3wtlZmadKOpFTtVmcF0NJ04byT1POzjMzHpbvwwOgNMOHsuzqzexbN3m7hc2M7OiFRUcko6SNCv99OhFS+X25kPGAnDXopUVLomZWf/SbXBI+iTwI2Bs+vmhpI+XumD7auroRo6YOIzbHm3/0kEzM9sXxbQ4PgKcGBGXR8TlwEnAx0pbrN4x8+gJPP7iehav8utkzcx6SzHBIfZ8gdPOdFqf986jJpAT3Pboi5UuiplZv1FMcNwI/FXSFZKuAB4keStgnze2qYE3Th/DT+YuY3tLa/crmJlZt7oNjoi4iuSBv3XAK8BFEXF1icvVaz588gGsem0bv1nYpx92NzOrGl11q96Ufo8ElgI/BH4APJ9OqwqnTh/DtNGN3Hj/UiKi0sUxM6t6XbU4fpx+zyfpr6rt0zZeFXI5cdHJB/Dosld54Nk++ap0M7Oq0lVfVe9Iv6dGxLSCz9SImFa+Iu679zVPYr9hDXz9t0+71WFmto86fXWspGO7WjEiHu794pRGQ22eWW8+iM//ciG/e3IVZ8wYV+kimZlVrU6DA/h6F/MCeHMvl6Wk3t88iRvvX8q/37GIN04fTUNtvtJFMjOrSp0GR0S8qZwFKbXafI4vzTycc//7Qb59z2L++a0HV7pIZmZVqZguR2olfULSz9PPLEm15Shcb3v9gaN49zETue7eJSx8cX2li2NmVpWKeQDwWuA44Nvp57h0WlX64jtmMKKxlk/c/AibtrVUujhmZlWnmOA4PiI+FBF/SD8XAceXumClMrKxjqs/cAzPrd3Ev/3ycd9lZWaWUTHBsVPSgW0jkqaxZ99VVef1B47iM289mNseXcHVv3um0sUxM6sqXd1V1eZfgHskLSHp3HAKffyd48X4X6cdyNI1m/jG759h4ohBvL95UqWLZGZWFbp6juN9EfEzYAkwHTiYJDieiohtZSpfyUjiy+85gpUbtnLZLxYgkgcFzcysa12dqvpc+v2LiNgWEQsi4rH+EBptavM5Zl/QzCkHjeZffr6AH/xlaaWLZGbW53V1qmqtpHuAqZLmtJ8ZEe8sXbHKZ1Bdnv++sJlLf/QwX7xtEUvWbOLzZx9KTb7fvo7dzGyfdBUcbweOJekRt6unyKteQ22e6y84ji/f+RQ33P8cz7y8kavefxRjmxoqXTQzsz6nq04Ot0fEg8DnI+Lewg/Ju8f7lZp8jsv/fgZffe8RzHt+HWd+40/c/cTLlS6WmVmfU8z5mM92MO1zHUzbi6QzJT0tabGkjrbTttzxknZK+oditltKHzh+Mnd8/BTGNzXwse/P49IfP8zLG7ZWulhmZn1GV3dVnQWcDUyU9M2CWU1At49cS8oD3wLOAJYDcyXNiYgnOljuq8Bd2YtfGgeNHcovL30D19+7hGvuWcy9T6/m02e8jgtOmkJdja99mNnA1tVfwRUkL2zaSvLyprbPHOBtRWz7BGBxRCyJiO3ALcDMDpb7OPALYFWGcpdcfU2eT5w+nbs//Xc0HzCCL93xBKdf9UdufXg5O1v9tLmZDVxd9Y77mKSFwFsj4ns92PZEYFnB+HLgxMIFJE0E3k3SRXun3ZhIuhi4GGDy5Mk9KErPTRnVyI0fPp57/7aar931NP/808e4/t4lzHrzQZx1+HjffWVmA06Xf/UiYicwSlJdD7atjjbZbvxq4LJ0P12VY3ZENEdE85gxY3pQlH0jidMOHsvts07hmvOOYUdrKx+/+RFO+68/cuP9z7mzRDMbUIrpcuR54P70WY5NbRMj4qpu1lsOFD6KvT/J6a9CzcAtkgBGA2dLaomIXxVRrrLL5cQ7jpzA2Yfvx91Pvszs+5Zw5e1PcPXvnuG8Eydz3gmTmTRycKWLaWZWUsUEx4r0kwOGZtj2XGC6pKnAi8A5wHmFC0TE1LZhSTcBd/TV0CiUy4m3HTaetx02nvnPr2P2fUu4/t5nue7eZ/m76WM478TJnH7IWJ/GMrN+qdvgiIgrASQNTUZjYzEbjogWSbNI7pbKAzdExCJJl6Tzr+t5sfuO46aM5PoLRrLi1S3cMncZP5n7Av/0g/mMb2rg3cdO5F1HT+Tg8Vny1sysb1N376OQdDjJ0+Mj00lrgAsjYlGJy9ah5ubmmDdvXiV2XZSWna384alV3PzQC9z3zBp2tgaHjB/Ku46ZyDuPmsCE4YMqXUQzG4AkzY+I5l7ZVhHB8QDJ0+P3pOOnAV+OiDf0RgGy6uvBUWjNxm38esFL/OrRF3nkhVeR4NjJIzhjxjjOmDGOA8cMqXQRzWyAKHdwPBYRR3U3rVyqKTgKPb92E3MeXcFdT6xk4YsbAJg2ppEzZozjLYeO4+hJw6n1NREzK5FyB8cvgYdJTlcBnA80R8S7eqMAWVVrcBR68dUt/O6Jl7n7iZd5cMlaWlqDIfU1nDRtJCcfNJo3Th/NgWOGkN5tZma2z8odHCOAK4FT0kn3AVdGxCu9UYCs+kNwFFq/ZQcPLF7Dn9PP82s3AzC+qYETp42kecoIjp0ygkPGN5HPOUjMrGfKEhySGoBLgIOAx0nuitrRGzvdF/0tONpbtm7zrhCZ+9w6Vr2WvDersS7PMZNHcNyUERw9aTiHTWhyt+9mVrRyBcdPgB3An4CzgKUR8ane2Om+6O/BUSgiWP7KFh5+4RXmLX2F+c+/wlMrN9DWVdaYofUcNqEp/QzjsAlNTBoxmJxbJmbWTm8GR1fPccyIiCPSHX4XeKg3dmjFk8SkkYOZNHIwM4+eCMDGbS08sWIDC19cz6IVG1i0Yj1/Sm/7BWiozXHgmCEcNHYIB6Xf08cNYcqoRl98N7Ne0VVw7DotlT7MV4biWHeG1NdwwtSRnDB15K5pW3fs5OmVr/HESxt45uWNLF69kXlLX+G2R3f38FKTExOGD2JyGkSTRibDk0cOZtKIwQwfXOuL8WZWlK6C4yhJG9JhAYPScZE8Qd5U8tJZURpq8xw1aThHTRq+x/RN21pYsnoTi1e/xuJVG3lh3RZeWLeZ3y5aydpN2/dYdmh9DeOHNTB+WAPjmhoY39TAuGHJdzJcz+jGep8GM7Muu1XPl7Mg1vsa62s4Yv9hHLH/sL3mbdzWwrJ1m3lh3WaWpZ+X1m/l5Q1b+dvLr7H6tW20f+1IPidGDK5jVGMdIxvrGDlk93DyXc+IxlpGNdbTNKiGpoZaBtfl3ZIx62eK6eTQ+qEh9TUcul8Th+7XccOxZWcrazdtZ+X6razckATKyxu2sm7TdtZu3M66Tdt5csUG1m7azvotnd9sl8+JpoYamgbV0tRQy9CGJFDagmVoQy2N9Xka62sYXJdncF3b997DDbU5h5BZH+DgsA7V5HOMa0pOW3XXRcCOna28sjkJk3Ubt7N203Ze29rChq072LBlBxu27kjGt+xgw9YWnl29cde0zdu7fBXLHiQYXJtncH0Ng2rz1NfkqK/NUZfPUV+T3z3cNq8mR11NOm/XcDo/n6MmL/I5UZvPUZN+53OiJr97Wk0ul44nw7uWz4vaXI58XrvWzQkHmw0I1Rcca56BG99e6VJYgVpgbPrpVkP6SbUStLYGOyNobYWdrUFrRLvvvae3tgatOyC2J/NbW4NWINLlWyOISLefDmexM/1sy7YakL7BTG1vMtMe48mwdr3lrC1nlC6gjtZX++1qj/G99r3HttXxfHUwbY/yd7Jeu3Lvvcyugnf4Jrdi7bVuL+WxerKhTo+19xW13T7w26T6gsP6lRwil1Pyf8QSXlUL0iCJgm8gInlepqPh1nSdzuZ3NEw63rbP9H/JvEin7bFMMrLnMm3biYJl2rYTe+yLPbbT/og7WGaPJfYe2GuZDgI39hrpYL29V+tmRqZFilqr2+30bEc9Xa1fqb7gGD0dLvp1pUthVabtl7yfZLG+qv3D2N2GdtZtf6n3fplVX3CYmfVD7a+P9e7lst49v+UfYGZmlomDw8zMMnFwmJlZJg4OMzPLxMFhZmaZODjMzCwTB4eZmWXi4DAzs0wcHGZmlomDw8zMMnFwmJlZJg4OMzPLxMFhZmaZODjMzCwTB4eZmWXi4DAzs0wcHGZmlomDw8zMMilpcEg6U9LTkhZL+mwH8z8oaUH6eUDSUaUsj5mZ7buSBYekPPAt4CxgBnCupBntFnsOODUijgS+BMwuVXnMzKx3lLLFcQKwOCKWRMR24BZgZuECEfFARLySjj4I7F/C8piZWS8oZXBMBJYVjC9Pp3XmI8BvOpoh6WJJ8yTNW716dS8W0czMsiplcKiDadHhgtKbSILjso7mR8TsiGiOiOYxY8b0YhHNzCyrmhJuezkwqWB8f2BF+4UkHQl8BzgrItaWsDxmZtYLStnimAtMlzRVUh1wDjCncAFJk4FbgQsi4m8lLIuZmfWSkrU4IqJF0izgLiAP3BARiyRdks6/DrgcGAV8WxJAS0Q0l6pMZma27xTR4WWHPqu5uTnmzZtX6WKYmVUVSfN764e5nxw3M7NMHBxmZpaJg8PMzDJxcJiZWSYODjMzy8TBYWZmmTg4zMwsEweHmZll4uAwM7NMHBxmZpaJg8PMzDJxcJiZWSYODjMzy8TBYWZmmTg4zMwsEweHmZll4uAwM7NMHBxmZpaJg8PMzDJxcJiZWSYODjMzy8TBYWZmmTg4zMwsEweHmZll4uAwM7NMHBxmZpaJg8PMzDJxcJiZWSYODjMzy8TBYWZmmTg4zMwsEweHmZll4uAwM7NMHBxmZpaJg8PMzDIpaXBIOlPS05IWS/psB/Ml6Zvp/AWSji1leczMbN+VLDgk5YFvAWcBM4BzJc1ot9hZwPT0czFwbanKY2ZmvaOULY4TgMURsSQitgO3ADPbLTMT+H4kHgSGS9qvhGUyM7N9VFPCbU8ElhWMLwdOLGKZicBLhQtJupikRQKwTdLC3i1q1RoNrKl0IfoI18VurovdXBe7HdxbGyplcKiDadGDZYiI2cBsAEnzIqJ534tX/VwXu7kudnNd7Oa62E3SvN7aVilPVS0HJhWM7w+s6MEyZmbWh5QyOOYC0yVNlVQHnAPMabfMHODC9O6qk4D1EfFS+w2ZmVnfUbJTVRHRImkWcBeQB26IiEWSLknnXwfcCZwNLAY2AxcVsenZJSpyNXJd7Oa62M11sZvrYrdeqwtF7HVJwczMrFN+ctzMzDJxcJiZWSZVFRzddWHSn0iaJOkeSU9KWiTpk+n0kZLulvRM+j2iYJ3PpXXztKS3Va70pSEpL+kRSXek4wOyLiQNl/RzSU+l//94/QCui0+n/30slHSzpIaBUheSbpC0qvC5tp4cu6TjJD2ezvumpI4ek9hTRFTFh+QC+7PANKAOeAyYUelylfB49wOOTYeHAn8j6brlP4HPptM/C3w1HZ6R1kk9MDWtq3ylj6OX6+SfgR8Dd6TjA7IugO8BH02H64DhA7EuSB4Wfg4YlI7/FPjwQKkL4O+AY4GFBdMyHzvwEPB6kufqfgOc1d2+q6nFUUwXJv1GRLwUEQ+nw68BT5L8hzKT5A8H6fe70uGZwC0RsS0iniO5U+2Esha6hCTtD7wd+E7B5AFXF5KaSP5gfBcgIrZHxKsMwLpI1QCDJNUAg0meAxsQdRER9wHr2k3OdOxpF09NEfGXSFLk+wXrdKqagqOz7kn6PUkHAMcAfwXGRfqsS/o9Nl2sv9fP1cC/Aq0F0wZiXUwDVgM3pqftviOpkQFYFxHxIvBfwAsk3RStj4jfMgDrokDWY5+YDref3qVqCo6iuifpbyQNAX4BfCoiNnS1aAfT+kX9SHoHsCoi5he7SgfT+kVdkPzCPha4NiKOATaRnJLoTL+ti/T8/UySUy8TgEZJ53e1SgfT+kVdFKGzY+9RnVRTcAy47kkk1ZKExo8i4tZ08sttPQin36vS6f25fk4G3ilpKckpyjdL+iEDsy6WA8sj4q/p+M9JgmQg1sVbgOciYnVE7ABuBd7AwKyLNlmPfXk63H56l6opOIrpwqTfSO9s+C7wZERcVTBrDvChdPhDwG0F08+RVC9pKsk7Th4qV3lLKSI+FxH7R8QBJP/uf4iI8xmYdbESWCaprafT04EnGIB1QXKK6iRJg9P/Xk4nuRY4EOuiTaZjT09nvSbppLQOLyxYp3OVvjMg410EZ5PcXfQs8PlKl6fEx3oKSZNxAfBo+jkbGAX8Hngm/R5ZsM7n07p5miLujKjGD3Aau++qGpB1ARwNzEv/v/ErYMQArosrgaeAhcAPSO4aGhB1AdxMcm1nB0nL4SM9OXagOa2/Z4FrSHsU6erjLkfMzCyTajpVZWZmfYCDw8zMMnFwmJlZJg4OMzPLxMFhZmaZODisaJJC0tcLxj8j6Yoyl+GPkprT4TslDd/H7Z3W1ttuB9ND0kcKph2TTvtMxn1ckWUdSf/WxbylaU+mCyTdK2lKlrKY9QYHh2WxDXiPpNE9WTntiK7XRMTZkXTwVyqPAx8oGD+HpIfRovXwmDsNjtSbIuJI4I/AF3qw/X0iKV/ufVrf4uCwLFpI3lv86fYzJE2R9Pv0l/DvJU1Op98k6SpJ9wBfTcevVfKukSWSTk3fK/CkpJsKtnetpHnpuxau7Kgw6a/v0ZIukfRo+nku3ReS3irpL5IelvSztN+vtve6PCXpz8B7ujjeF4AGSePSp2rPJOl2um3/H5M0V9Jjkn4haXBHx9yuzB+T9BtJgySdL+mhtNzXK3nfyFdIent9VNKPuvn3+Atph3SSxqRlmJt+Tk6nn1pQN49IGqrE15S8w+JxSR9Il92j9SXpGkkfLqjry9M6e19ahw+nx/77dJnG9N9ybrqvmen0wwqOc4Gk6d0cl/V1lX760Z/q+QAbgSZgKTAM+AxwRTrvduBD6fA/Ar9Kh28C7mB33/83kfQ3JZIO6jYAR5D8iJkPHJ0uNzL9zpP8sj4yHf8j0JwOLwVGF5SvFvgT8PfAaOA+oDGddxlwOdBA0kvo9LQMPyV9Er3dsZ6WlvsTwCyS/rJuBK4APpMuM6pg+f8APt7JMV+R1tUskq4f6oFD0zqrTZf5NnBhWz138W+w65hJegy+OB3+MXBKOjyZpKuatn+Xk9PhISSdJL4XuDut23EkAbkfBU/lp8tfA3y4YL//mg6PSetwart/qy8D56fDw0l6eWgE/h/wwXR6Hen7M/yp3k+vnjqw/i8iNkj6Pskf1C0Fs17P7l/vPyB5oUybn0XEzoLx2yMiJD0OvBwRjwNIWgQcQNK9yvslXUzyh24/khfRLOimeN8g6cfqdiU96s4A7k8aC9SR/EI/hKRjvGfSff4QuLiLbf4U+Em63s0knei1OVzSf5D8kRwC3NXFMV9A0i3EuyJih6TTgeOAuWn5BrG7Q7ru3CNpXLp826mqtwAztPvlbU2ShgL3A1elrZdbI2K5pFOAm9PyvSzpXuB4khDvyk/S75OA+yJ5rwMR0fZOiLeSdEbZdj2ngSTE/gJ8Xsk7VW5tq3urXg4O64mrgYdJfoF3prAvm03t5m1Lv1sLhtvGa5R0wvYZ4PiIeCU9hdXQVYHSUypTSH7VQ9KauDsizm233NFk6Eo7IlZK2gGcAXySPYPjJpIgeCzd/2kF89of80KSPqb2J3lrnYDvRcTnii1LgTel278J+HeSNyPmgNdHxJZ2y35F0q9J+jl7UNJb6LgrbUhORRaevm5f523HJDquQwHvjYin201/UtJfSV7EdZekj0bEHzo7OOv7fI3DMkt/Yf6UpFO1Ng+QXDwG+CDw533YRRPJH6n16S/rs7paWNJxJEFzfkS0vejpQeBkSQelywyW9DqSDvGmSjowXe7cvTa4t8uBy9q1ICB5pe9LSrq//2A323gE+CdgjqQJJB3Q/YOksWn5Rmr3HVI70m12Kg2ITwEXShoJ/JbdodkWkEg6MCIej4ivknSMeAjJKbwPpNdUxpC8UfAh4HmSVku9pGEkvc125C/AqWnAk+4fkhbXx9PrQUg6Jv2eBiyJiG+SnKo7spu6sj7OLQ7rqa9T8IeK5NTVDZL+heQNdRf1dMPpL/hHgEXAEpLTLV2ZBYwkOYUDMC8iPpq2Am6WVJ8u94WI+Ft6CuzXktaQBNzh3ZTngU5mfZHkrYzPk9yBNbSb7fw5PY3za5IWzBeA30rKkfRwemm6rdnAAkkPR0SngRQRL0m6OV3vE8C3JC0g+e/6PuAS4FOS3gTsJOl+/TfAdpJTi4+RtBz+NZLu2pH0U5JTgs+QhF1H+12d1uGtadlXpcfzJZLW6II0PJYC7yC5M+38tOW2kqSVZFXMveOamVkmPlVlZmaZODjMzCwTB4eZmWXi4DAzs0wcHGZmlomDw8zMMnFwmJlZJv8fcdluBTkh5iUAAAAASUVORK5CYII=\n" }, "metadata": { "needs_background": "light" @@ -115,18 +113,18 @@ " lambda m: MyType.ShareLimit * np.ones_like(m),\n", " ],\n", " 0.0,\n", - " 200.0,\n", + " 1000.0,\n", ")" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 29, "outputs": [ { "data": { "text/plain": "
", - "image/png": "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\n" + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -137,12 +135,13 @@ "source": [ "plot_funcs(\n", " [\n", - " MyType.EndOfPrdShareFunc[0],\n", - " MyType.ApproxShareFunc[0],\n", + " MyType.EndOfPrdShareFunc[0], # blue\n", + " MyType.ApproxShareFunc[0], # orange\n", + " MyType.ApproxSecondOrderShareFunc[0] # green\n", + "\n", " ],\n", " 0.0,\n", - " 200.0,\n", - ")" + " 100.0, legend_kwds={\"labels\": [\"true\", \"first order\", \"second order\"]})" ], "metadata": { "collapsed": false, @@ -150,6 +149,18 @@ "name": "#%%\n" } } + }, + { + "cell_type": "code", + "execution_count": 28, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } } ], "metadata": { From 5aabd030e404a6d269f3a42f75b033a6fb8f97bc Mon Sep 17 00:00:00 2001 From: alanlujan91 Date: Tue, 12 Apr 2022 19:18:02 -0400 Subject: [PATCH 5/5] fix test fail --- HARK/ConsumptionSaving/ConsPortfolioModel.py | 70 +++++++++++-------- .../example_ConsPortfolioModel - Approx.ipynb | 26 +++---- 2 files changed, 54 insertions(+), 42 deletions(-) diff --git a/HARK/ConsumptionSaving/ConsPortfolioModel.py b/HARK/ConsumptionSaving/ConsPortfolioModel.py index c71693e71..ada6026f0 100644 --- a/HARK/ConsumptionSaving/ConsPortfolioModel.py +++ b/HARK/ConsumptionSaving/ConsPortfolioModel.py @@ -166,7 +166,7 @@ class PortfolioConsumerType(RiskyAssetConsumerType): """ time_inv_ = deepcopy(RiskyAssetConsumerType.time_inv_) - time_inv_ = time_inv_ + ["AdjustPrb", "DiscreteShareBool"] + time_inv_ = time_inv_ + ["AdjustPrb", "DiscreteShareBool", "ApproxShareBool"] def __init__(self, verbose=False, quiet=False, **kwds): params = init_portfolio.copy() @@ -244,7 +244,7 @@ def update_solution_terminal(self): dvdsFuncFxd=dvdsFuncFxd_terminal, ) - self.solution_terminal.EndOfPrdShareFunc = ShareFuncAdj_terminal + self.solution_terminal.ShareEndOfPrdFunc = ShareFuncAdj_terminal def update_ShareGrid(self): """ @@ -494,6 +494,7 @@ def __init__( DiscreteShareBool, ShareLimit, IndepDstnBool, + ApproxShareBool, ): """ Constructor for portfolio choice problem solver. @@ -516,6 +517,7 @@ def __init__( self.DiscreteShareBool = DiscreteShareBool self.ShareLimit = ShareLimit self.IndepDstnBool = IndepDstnBool + self.ApproxShareBool = ApproxShareBool # Make sure the individual is liquidity constrained. Allowing a consumer to # borrow *and* invest in an asset with unbounded (negative) returns is a bad mix. @@ -824,6 +826,20 @@ def make_ShareFuncAdj(self): Construct the risky share function when the agent can adjust """ + # Share function for mGrid + + if self.zero_bound: + Share_lower_bound = self.ShareLimit + else: + Share_lower_bound = 1.0 + Share_now = np.insert(self.Share_now, 0, Share_lower_bound) + self.ShareFuncAdj_now = LinearInterp( + np.insert(self.mNrmAdj_now, 0, 0.0), + Share_now, + intercept_limit=self.ShareLimit, + slope_limit=0.0, + ) + # Share function on aGrid if self.zero_bound: @@ -833,15 +849,18 @@ def make_ShareFuncAdj(self): aNrm_temp = self.aNrmGrid share_temp = self.Share_now - self.EndOfPrdShareFunc = LinearInterp( + self.ShareEndOfPrdFunc = LinearInterp( aNrm_temp, share_temp, intercept_limit=self.ShareLimit, slope_limit=0.0 ) - # alternative share functions from linear approximation + def make_share_func_approx(self): + """ + Alternative share functions from linear approximation. + """ # get next period's consumption and share function cFunc_next = self.solution_next.cFuncAdj - sFunc_next = self.solution_next.EndOfPrdShareFunc + sFunc_next = self.solution_next.ShareEndOfPrdFunc def premium(shock): """ @@ -860,22 +879,23 @@ def c_nrm_and_deriv(shocks, a_nrm): with that same level of savings. """ p_shk = shocks[0] * self.PermGroFac + t_shk = shocks[1] share = sFunc_next(a_nrm) r_diff = shocks[2] - self.Rfree r_port = self.Rfree + r_diff * share - m_nrm_next = a_nrm * r_port / p_shk + shocks[1] + m_nrm_next = a_nrm * r_port / p_shk + t_shk c_next, cP_next = cFunc_next.eval_with_derivative(m_nrm_next) return c_next, cP_next - c_vals = calc_expectation(self.ShockDstn, c_nrm_and_deriv, self.aNrmGrid) + exp_c_values = calc_expectation(self.ShockDstn, c_nrm_and_deriv, self.aNrmGrid) - c_vals = c_vals[:, :, 0] - c_next = c_vals[0] - cP_next = c_vals[1] + exp_c_values = exp_c_values[:, :, 0] + exp_c_next = exp_c_values[0] + exp_cP_next = exp_c_values[1] - MPC = cP_next * self.aNrmGrid / c_next + MPC = exp_cP_next * self.aNrmGrid / exp_c_next # first order approximation approx_share = prem_mean / (self.CRRA * MPC * prem_sqrd) @@ -884,7 +904,7 @@ def c_nrm_and_deriv(shocks, a_nrm): # want to see what the approximation would give us approx_share = np.clip(approx_share, 0, 1) - self.ApproxShareFunc = LinearInterp( + self.ApproxFirstOrderShareFunc = LinearInterp( self.aNrmGrid, approx_share, intercept_limit=self.ShareLimit, @@ -910,20 +930,6 @@ def c_nrm_and_deriv(shocks, a_nrm): self.aNrmGrid, roots, intercept_limit=self.ShareLimit, slope_limit=0.0, ) - # Share function for mGrid - - if self.zero_bound: - Share_lower_bound = self.ShareLimit - else: - Share_lower_bound = 1.0 - Share_now = np.insert(self.Share_now, 0, Share_lower_bound) - self.ShareFuncAdj_now = LinearInterp( - np.insert(self.mNrmAdj_now, 0, 0.0), - Share_now, - intercept_limit=self.ShareLimit, - slope_limit=0.0, - ) - def add_save_points(self): # This is a point at which (a,c,share) have consistent length. Take the # snapshot for storing the grid and values in the solution. @@ -1068,9 +1074,10 @@ def make_porfolio_solution(self): AdjPrb=self.AdjustPrb, ) - self.solution.EndOfPrdShareFunc = self.EndOfPrdShareFunc - self.solution.ApproxShareFunc = self.ApproxShareFunc - self.solution.ApproxSecondOrderShareFunc = self.ApproxSecondOrderShareFunc + if self.ApproxShareBool: + self.solution.ShareEndOfPrdFunc = self.ShareEndOfPrdFunc + self.solution.ApproxFirstOrderShareFunc = self.ApproxFirstOrderShareFunc + self.solution.ApproxSecondOrderShareFunc = self.ApproxSecondOrderShareFunc def solve(self): """ @@ -1093,6 +1100,9 @@ def solve(self): self.make_basic_solution() self.make_ShareFuncAdj() + if self.ApproxShareBool: + self.make_share_func_approx() + self.add_save_points() # Add the value function if requested @@ -1440,6 +1450,8 @@ def solve(self): init_portfolio["AdjustPrb"] = 1.0 # Flag for whether to optimize risky share on a discrete grid only init_portfolio["DiscreteShareBool"] = False +# Flat for wether to approximate risky share +init_portfolio["ApproxShareBool"] = False # Adjust some of the existing parameters in the dictionary init_portfolio["aXtraMax"] = 100 # Make the grid of assets go much higher... diff --git a/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb b/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb index 131e5215a..b3d34147c 100644 --- a/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb +++ b/examples/ConsPortfolioModel/example_ConsPortfolioModel - Approx.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 25, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -30,22 +30,22 @@ "output_type": "stream", "text": [ "Now solving an example portfolio choice problem; this might take a moment...\n", - "Solving an infinite horizon portfolio choice problem took 8.267216920852661 seconds.\n" + "Solving an infinite horizon portfolio choice problem took 8.5339994430542 seconds.\n" ] } ], "source": [ "# Make and solve an example portfolio choice consumer type\n", "print(\"Now solving an example portfolio choice problem; this might take a moment...\")\n", - "MyType = PortfolioConsumerType()\n", + "MyType = PortfolioConsumerType(ApproxShareBool=True)\n", "MyType.cycles = 0\n", "t0 = time()\n", "MyType.solve()\n", "t1 = time()\n", "MyType.cFunc = [MyType.solution[t].cFuncAdj for t in range(MyType.T_cycle)]\n", "MyType.ShareFunc = [MyType.solution[t].ShareFuncAdj for t in range(MyType.T_cycle)]\n", - "MyType.EndOfPrdShareFunc = [MyType.solution[t].EndOfPrdShareFunc for t in range(MyType.T_cycle)]\n", - "MyType.ApproxShareFunc = [MyType.solution[t].ApproxShareFunc for t in range(MyType.T_cycle)]\n", + "MyType.ShareEndOfPrdFunc = [MyType.solution[t].ShareEndOfPrdFunc for t in range(MyType.T_cycle)]\n", + "MyType.ApproxFirstOrderShareFunc = [MyType.solution[t].ApproxFirstOrderShareFunc for t in range(MyType.T_cycle)]\n", "MyType.ApproxSecondOrderShareFunc = [MyType.solution[t].ApproxSecondOrderShareFunc for t in range(MyType.T_cycle)]\n", "print(\n", " \"Solving an infinite horizon portfolio choice problem took \"\n", @@ -56,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -87,7 +87,7 @@ { "data": { "text/plain": "
", - "image/png": "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\n" + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -113,13 +113,13 @@ " lambda m: MyType.ShareLimit * np.ones_like(m),\n", " ],\n", " 0.0,\n", - " 1000.0,\n", + " 100.0,\n", ")" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 4, "outputs": [ { "data": { @@ -135,8 +135,8 @@ "source": [ "plot_funcs(\n", " [\n", - " MyType.EndOfPrdShareFunc[0], # blue\n", - " MyType.ApproxShareFunc[0], # orange\n", + " MyType.ShareEndOfPrdFunc[0], # blue\n", + " MyType.ApproxFirstOrderShareFunc[0], # orange\n", " MyType.ApproxSecondOrderShareFunc[0] # green\n", "\n", " ],\n", @@ -152,7 +152,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 4, "outputs": [], "source": [], "metadata": {