From 86035fe1ea9c47c0d156388da33ec91c524c945b Mon Sep 17 00:00:00 2001 From: jdebacker Date: Sat, 21 Jan 2023 17:31:31 -0500 Subject: [PATCH 01/55] bump version --- ogcore/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ogcore/__init__.py b/ogcore/__init__.py index c7a0d5187..2891215bb 100644 --- a/ogcore/__init__.py +++ b/ogcore/__init__.py @@ -19,4 +19,4 @@ from ogcore.txfunc import * from ogcore.utils import * -__version__ = "0.10.2" +__version__ = "0.10.3" diff --git a/setup.py b/setup.py index e2a67b86e..44d957457 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="ogcore", - version="0.10.2", + version="0.10.3", author="Jason DeBacker and Richard W. Evans", license="CC0 1.0 Universal (CC0 1.0) Public Domain Dedication", description="A general equilibribum overlapping generations model for fiscal policy analysis", From aed185c0ea96cbba05f27ded0102e9507aba311e Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Thu, 26 Jan 2023 16:37:49 -0700 Subject: [PATCH 02/55] Updated _toc.yml to include calibration section --- docs/book/_toc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/book/_toc.yml b/docs/book/_toc.yml index f501558ce..90817bac1 100644 --- a/docs/book/_toc.yml +++ b/docs/book/_toc.yml @@ -19,6 +19,7 @@ parts: - file: content/theory/market_clearing - file: content/theory/stationarization - file: content/theory/equilibrium + - file: content/theory/calibration - caption: Appendix chapters: - file: content/theory/derivations From deb73bef66009b0a597250afe6d019d87bb7ba40 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Thu, 26 Jan 2023 16:39:30 -0700 Subject: [PATCH 03/55] Added calibration chapter calibration.md --- docs/book/content/theory/calibration.md | 414 ++++++++++++++++++++++++ 1 file changed, 414 insertions(+) create mode 100644 docs/book/content/theory/calibration.md diff --git a/docs/book/content/theory/calibration.md b/docs/book/content/theory/calibration.md new file mode 100644 index 000000000..a67bc4828 --- /dev/null +++ b/docs/book/content/theory/calibration.md @@ -0,0 +1,414 @@ +(Chap_Calib)= +# Equilibrium + +The equilibrium for the `OG-Core` model is broadly characterized as the solution to the model for all possible periods from the current period $t=1$ to infinity $t=\infty$. However, the solution algorithm for the equilibrium makes it useful to divide the equilibrium definition into two sub-definitions. + +The first equilibrium definition we characterize is the {ref}`SecSSeqlb`. This is really a long-run equilibrium concept. It is where the economy settles down after a large number of periods into the future. The distributions in the economy (e.g., population, wealth, labor supply) have settled down and remain constant from some future period $t=\bar{T}$ for the rest of time $t=\infty$. + +The second equilibrium definition we characterize is the {ref}`SecNSSeqlb`. This equilibrium concept is "non-steady-state" because it characterizes equilibrium in all time periods from the current period $t=1$ to the period in which the economy has reached the steady-state $t=\bar{T}$. It is "non-steady-state" because the distributions in the economy (e.g., population, wealth, labor supply) are changing across time periods. + +(SecSSeqlb)= +## Stationary Steady-State Equilibirum + +In this section, we define the stationary steady-state equilibrium of the `OG-Core` model. Chapters {ref}`Chap_House` through {ref}`Chap_MarkClr` derive the equations that characterize the equilibrium of the model. However, we cannot solve for any equilibrium of the model in the presence of nonstationarity in the variables. Nonstationarity in `OG-Core` comes from productivity growth $g_y$ in the production function {eq}`EqFirmsCESprodfun`, population growth $\tilde{g}_{n,t}$ as described in {eq}`EqPopGrowthTil` the {ref}`Chap_Demog` chapter, and the potential for unbounded growth in government debt as described in Chapter {ref}`Chap_UnbalGBC`. + +We implemented an automatic government budget closure rule using government spending $G_t$ as the instrument that stabilizes the debt-to-GDP ratio at a long-term rate in {eq}`EqUnbalGBCclosure_Gt`. And we showed in Chapter {ref}`Chap_Stnrz` how to stationarize all the other characterizing equations. + +We first give a general definition of the steady-state (long-run) equilibrium of the model. We then detail the computational algorithm for solving for the equilibrium in each distinct case of the model. There are three distinct cases or parameterization permutations of the model that have to do with the following specification choices. + +* Baseline or reform +* Balanced budget or allow for government deficits/surpluses +* Small open economy or partially/closed economy +* Fixed baseline spending level or not (relevant only for a reform specification) + +In all of the specifications of `OG-Core`, we use a two-stage fixed point algorithm to solve for the equilibrium solution. The solution is mathematically characterized by $2JS$ nonlinear equations and $2JS$ unknowns. The most straightforward and simple way to solve these equations would be a multidimensional root finder. However, because each of the equations is highly nonlinear and depends on all of the $2JS$ variables (low sparsity) and because the dimensionality $2JS$ is high, standard root finding methods are not reliable or tractable. + +Our approach is to choose the minimum number of macroeconomic variables in an outer loop in order to be able to solve the household's $2JS$ Euler equations in terms of only the $\bar{n}_{j,s}$ and $\bar{b}_{j,s+1}$ variables directly, holding all other variables constant. The household system of Euler equations has a provable root solution and is orders of magnitude more tractable (less nonlinear) to solve holding these outer loop variables constant. + +The steady-state solution method for each of the cases above is associated with a solution method that has a subset of the following outer-loop variables $\{\bar{r}_p, \bar{r}, \bar{w}, \boldsymbol{\bar{p}}, \bar{Y}, \overline{TR}, \overline{BQ}, factor\}$. + + +(SecEqlbSSdef)= +### Stationary Steady-State Equilibrium Definition + +With the stationarized model, we can now define the stationary steady-state equilibrium. This equilibrium will be long-run values of the endogenous variables that are constant over time. In a perfect foresight model, the steady-state equilibrium is the state of the economy at which the model settles after a finite amount of time, regardless of the initial condition of the model. Once the model arrives at the steady-state, it stays there indefinitely unless it receives some type of shock or stimulus. + +These stationary values have all the components of growth, from productivity growth and population growth, removed as defined in {numref}`TabStnrzStatVars`. This is possible because the productivity growth rate $g_y$ and population growth rate series $\tilde{g}_{n,t}$ are exogenous. We can transform the stationary equilibrium values of the variables back to their nonstationary values by reversing the identities in {numref}`TabStnrzStatVars`. + +We define a stationary steady-state equilibrium as the following. + +```{admonition} **Definition: Stationary steady-state equilibrium** +:class: note +A non-autarkic stationary steady-state equilibrium in the `OG-Core` model is defined as constant allocations of stationary household labor supply $n_{j,s,t}=\bar{n}_{j,s}$ and savings $\hat{b}_{j,s+1,t+1}=\bar{b}_{j,s+1}$ for all $j$, $t$, and $E+1\leq s\leq E+S$, and constant prices $\hat{w}_t=\bar{w}$, $r_t=\bar{r}$, $r_{p,t}=\bar{r}_p$, and $\boldsymbol{p_t}=\boldsymbol{\bar{p}}$ for all $t$ such that the following conditions hold: +1. The population has reached its stationary steady-state distribution $\hat{\omega}_{s,t} = \bar{\omega}_s$ for all $s$ and $t$ as characterized in Section {ref}`SecDemogPopSSTP`, +2. households optimize according to {eq}`EqStnrz_eul_n`, {eq}`EqStnrz_eul_b`, {eq}`EqStnrz_eul_bS`, and {eq}`EqStnrz_cmDem2`, +3. firms in each industry optimize according to {eq}`EqStnrzFOC_L` and {eq}`EqStnrzFOC_K`, +4. government activity behaves according to {eq}`EqUnbalGBC_rate_wedge`, {eq}`EqStnrzGovBC`, {eq}`EqStnrz_rate_p`, and {eq}`EqStnrzClosureRule_Gt`, and +5. markets clear according to {eq}`EqStnrzMarkClrLab`, {eq}`EqStnrz_DtDdDf`, {eq}`EqStnrz_KtKdKf`, {eq}`EqStnrzMarkClrGoods_Mm1`, {eq}`EqStnrzMarkClrGoods_M`, and {eq}`EqStnrzMarkClrBQ`. + +``` + + +(SecEqlbSSsoln)= +### Steady-state solution method + +The default specification of the model is the baseline specification (`baseline = True`) in which the government can run deficits and surpluses (`budget_balance = False`), in which the economy is a large partially open economy [$\zeta_D,\zeta_K\in(0,1)$], and in which baseline government spending $G$ and transfers $TR$ are not held at baseline levels (`baseline_spending = False`). We describe the algorithm for this model configuration below and follow that with a description of how it is modified for alternative configurations. + +The computational algorithm for solving for the steady-state follows the steps below. + +1. Use the techniques from Section {ref}`SecDemogPopSSTP` to solve for the steady-state population distribution vector $\boldsymbol{\bar{\omega}}$ and steady-state growth rate $\bar{g}_n$ of the exogenous population process. + +2. Choose an initial guess for the values of the steady-state interest rate (the after-tax marginal product of capital) $\bar{r}^i$, wage rate $\bar{w}^i$, portfolio rate of return $\bar{r}_p^i$, output prices $\boldsymbol{\bar{p}}^i$ (note that $\bar{p}_M =1$ since it's the numeraire good), total bequests $\overline{BQ}^{\,i}$, total household transfers $\overline{TR}^{\,i}$, and income multiplier $factor^i$, where superscript $i$ is the index of the iteration number of the guess. + + 1. Given $\boldsymbol{\bar{p}}^i$ find the price of consumption goods using {eq}`EqHH_pi2` + 2. From price of consumption goods, determine the price of the composite consmpution good, $\bar{p}$ using equation {eq}`EqCompPnorm2` + 3. Using {eq}`Eq_tr` with $\overline{TR}^{\,i}$, find transfers to each household, $\overline{tr}_{j,s}^i$ + 4. Using the bequest transfer process, {eq}`Eq_bq` and aggregate bequests, $\overline{BQ}^{\,i}$, find $bq_{j,s}^i$ + 5. Given values $\bar{p}$, $\bar{r}_{p}^i$, $\bar{w}^i$ $\overline{bq}_{j,s}^i$, $\overline{tr}_{j,s}^i$, and $factor^i$, solve for the steady-state household labor supply $\bar{n}_{j,s}$ and savings $\bar{b}_{j,s+1}$ decisions for all $j$ and $E+1\leq s\leq E+S$. + + 1. Each of the $j\in 1,2,...J$ sets of $2S$ steady-state Euler equations can be solved separately. `OG-Core` parallelizes this process using the maximum number of processors possible (up to $J$ processors). Solve each system of Euler equations using a multivariate root-finder to solve the $2S$ necessary conditions of the household given by the following steady-state versions of stationarized household Euler equations {eq}`EqStnrz_eul_n`, {eq}`EqStnrz_eul_b`, and {eq}`EqStnrz_eul_bS` simultaneously for each $j$. + + ```{math} + :label: EqSS_HHBC + \bar{c}_{j,s} &= (1 + \bar{r}_{p,a})\bar{b}_{j,s} + \bar{w}_a e_{j,s}\bar{n}_{j,s} - e^{g_y}\bar{b}_{j,s+1} + \overline{bq}_{j,s}^i + \overline{tr}_{j,s}^i + \hat{ubi}_{j,s} - \bar{T}_{j,s} \\ + &\qquad\qquad\forall j\quad\text{and}\quad E+1\leq s\leq E+S \quad\text{where}\quad \bar{b}_{j,E+1}=0 + ``` + + ```{math} + :label: EqSS_HHeul_n + \bar{w}_a e_{j,s}\bigl(1 - \tau^{mtrx}_{s}\bigr)(\bar{c}_{j,s})^{-\sigma} = \chi^n_{s}\biggl(\frac{b}{\tilde{l}}\biggr)\biggl(\frac{\bar{n}_{j,s}}{\tilde{l}}\biggr)^{\upsilon-1}\Biggl[1 - \biggl(\frac{\bar{n}_{j,s}}{\tilde{l}}\biggr)^\upsilon\Biggr]^{\frac{1-\upsilon}{\upsilon}} \\ + \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\forall j \quad\text{and}\quad E+1\leq s\leq E+S \\ + ``` + + ```{math} + :label: EqSS_HHeul_b + (\bar{c}_{j,s})^{-\sigma} = e^{-\sigma g_y}\biggl[\chi^b_j\rho_s(\bar{b}_{j,s+1})^{-\sigma} + \beta_j\bigl(1 - \rho_s\bigr)\Bigl(1 + \bar{r}_{p,a}\bigl[1 - \tau^{mtry}_{s+1}\bigr]\Bigr)(\bar{c}_{j,s+1})^{-\sigma}\biggr] \\ + \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\forall j \quad\text{and}\quad E+1\leq s\leq E+S-1 \\ + ``` + + ```{math} + :label: EqSS_HHeul_bS + (\bar{c}_{j,E+S})^{-\sigma} = e^{-\sigma g_y}\chi^b_j(\bar{b}_{j,E+S+1})^{-\sigma} \quad\forall j + ``` + 6. Determine from the quantity of the composite consumption good consumed by each household, $\bar{c}_{j,s}$, use equation {eq}`EqHH_cmDem` to determine consumption of each output good, $\bar{c}_{m,j,s}$ + 7. Using $\bar{c}_{m,j,s}$ in {eq}`EqCmt`, solve for aggregate consumption of each output good, $\bar{C}_{m}$ + 8. Given values for $\bar{n}_{j,s}$ and $\bar{b}_{j,s+1}$ for all $j$ and $s$, solve for steady-state labor supply, $\bar{L}$, savings, $\bar{B}$ + 1. Use $\bar{n}_{j,s}$ and the steady-state version of the stationarized labor market clearing equation {eq}`EqStnrzMarkClrLab` to get a value for $\bar{L}^{i}$. + + ```{math} + :label: EqSS_MarkClrLab + \bar{L} = \sum_{s=E+1}^{E+S}\sum_{j=1}^{J} \bar{\omega}_{s}\lambda_j e_{j,s}\bar{n}_{j,s} + ``` + 2. Use $\bar{b}_{j,s+1}$ and the steady-state version of the stationarized expression for total savings by domestic households {eq}`EqStnrz_Bt`to solve for $\bar{B}$. + + ```{math} + :label: EqSS_Bt + \bar{B} \equiv \frac{1}{1 + \bar{g}_{n}}\sum_{s=E+2}^{E+S+1}\sum_{j=1}^{J}\Bigl(\bar{\omega}_{s-1}\lambda_j\bar{b}_{j,s} + i_s\bar{\omega}_{s}\lambda_j\bar{b}_{j,s}\Bigr) + ``` + 9. Solve for the exogenous government interest rate $\bar{r}_{gov}^{i}$ using equation {eq}`EqUnbalGBC_rate_wedge`. + 10. Use {eq}`EqStnrzTfer` to find $\bar{Y}^i$ from the guess of $\overline{TR}^i$ + 11. Use {eq}`EqStnrz_DY` to find $\bar{D}^i$ from $\bar{Y}^i$ + 12. Using $\bar{D}^i$, we can find foreign investor holdings of debt, $\bar{D}^{f,i}$ from {eq}`EqMarkClr_zetaD2` and then solve for domestic debt holdings through the debt market clearing condition: $\bar{D}^{d,i} = \bar{D}^i - \bar{D}^{f,i}$ + 13. Using $\bar{Y}^i$, find government infrastructure investment, $\bar{I}_{g}$ from {eq}`EqStnrz_Igt` + 14. Using the law of motion of the stock of infrastructure, {eq}`EqStnrz_Kgmt`, and $\bar{I}_{g}$, solve for $\bar{K}_{g}^{i}$ + 15. Find output and factor demands for M-1 industries: + 1. By {eq}`EqMarkClrGoods_Mm1`, $\hat{Y}_{m,t}=\hat{C}_{m,t}$, where $\hat{C}_{m,t}$ is determined by {eq}`EqStnrzEqCmt` + 2. The capital-output ratio can be determined from the FOC for the firms' choice of capital: $\frac{\bar{K}_m}{\bar{Y}_m} = \gamma_m\left[\frac{\bar{r} +\bar{\delta}_M - \bar{\tau}^{corp}_m\bar{\delta}^{\tau}_m - \bar{\tau}^{inv}_m\bar{\delta}_M}{\left(1 - \bar{\tau}^{corp}_m\right)\bar{p}_m(\bar{Z}_m)^\frac{\varepsilon_m-1}{\varepsilon_m}}\right]^{-\varepsilon_m}$ + 3. Capital demand can thus be found: $\bar{K}_{m} = \frac{\bar{K}_m}{\bar{Y}_m} * \bar{Y}_m$ + 4. Labor demand can be found by inverting the production function: + ```{math} + :label: EqSS_solveL + \bar{L}_{m} = \left(\frac{\left(\frac{\bar{Y}_m}{\bar{Z}_m}\right)^{\frac{\varepsilon_m-1}{\varepsilon_m}} - \gamma_{m}^{\frac{1}{\varepsilon_m}}\bar{K}_m^{\frac{\varepsilon_m-1}{\varepsilon_m}} - \gamma_{g,m}^{\frac{1}{\varepsilon_m}}\bar{K}_{g,m}^{\frac{\varepsilon_m-1}{\varepsilon_m}}}{(1-\gamma_m-\gamma_{g,m})^{\frac{1}{\varepsilon_m}}}\right)^{\frac{\varepsilon_m}{\varepsilon_m-1}} + ``` + 5. Use the steady-state world interest rate $\bar{r}^*$ and labor demand $\bar{L}_m$ to solve for private capital demand at the world interest rate $\bar{K}_m^{r^*}$ using the steady-state version of {eq}`EqFirmsMPKg_opt` + + ```{math} + :label: EqSS_MPKg + \bar{K}_m^{r^*} = \bar{L}_m\left(\frac{\bar{w}}{\frac{\bar{r} + \bar{\delta}_M - \bar{\tau}^{corp}_m\bar{\delta}^{\tau}_m - \bar{\tau}^{inv}_m\bar{\delta}_M}{1 - \bar{\tau}^{corp}_m}}\right)^{\varepsilon_m} \frac{\gamma_m}{(1 - \gamma_m - \gamma_{g,m})} + ``` + + 16. Determine factor demands and output for industry $M$: + 1. $\bar{L}_M = \bar{L} - \sum_{m=1}^{M-1}\bar{L}_{m}$ + 2. Find $\bar{K}_m^{r^*}$ using the steady-state version of {eq}`EqFirmsMPKg_opt` + 3. Find total capital supply, and the split between that from domestic and foreign households: $\bar{K}^{i'}$, $\bar{K}^d$, $\bar{K}^f$: + 1. We then use this to find foreign demand for domestic capital from {eq}`eq_foreign_cap_demand`: $\bar{K}^{f} = \bar{\zeta}_{K}\sum_{m=1}^{M}\bar{K}_m^{r^*}$ + 2. Using $\bar{D}^{d,i}$ we can then find domestic investors' holdings of private capital as the residual from their total asset holdings: , $\bar{K}^{d,i} = \bar{B}^i - \bar{D}^{d,i}$ + 3. Aggregate capital supply is then determined as $\bar{K}^{i'} = \bar{K}^{d,i} + \bar{K}^{f,i}$. + 4. $\bar{K}_M = \bar{K}^{i'} - \sum_{m=1}^{M-1}\bar{K}_{m}$ + 5. Use the factor demands and $\bar{K}_g$ in the production function for industry $M$ to find $\bar{Y}_M$. + 17. Find an updated value for GDP, $\bar{Y}^{i'} = \sum_{m=1}^{M} \bar{p}_m \bar{Y}_m$. + 18. Find a updated values for $\bar{I}_{g}$ and $\bar{K}_g$ using $\bar{Y}^{i'}$, equations {eq}`EqStnrz_Igt` and {eq}`EqStnrz_Kgmt` +3. Given updated inner-loop values based on initial guesses for outer-loop variables $\{\bar{r}_p^i, \bar{r}^i, \bar{w}^i, \boldsymbol{\bar{p}}, \overline{BQ}^i, \overline{TR}^i, factor^i\}$, solve for updated values of outer-loop variables $\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\}$ using the remaining equations: + + 1. Use $\bar{Y}_M^{i'}$ and $\bar{K}_M^{i'}$ in {eq}`EqStnrzFOC_K` to solve for updated value of the rental rate on private capital $\bar{r}^{i'}$. + 2. Use $\bar{Y}_M^{i'}$ and $\bar{L}_M^{i}$ in {eq}`EqStnrzFOC_L` to solve for updated value of the wage rate $\bar{w}^{i'}$. + 3. Use $\bar{r}^{i'}$ in equations {eq}`EqUnbalGBC_rate_wedge` to get $\bar{r}_{gov}^{i'}$ + 4. Use $\bar{K}_g^{i'}$ and $\bar{Y}^{i''}$ in {eq}`EqFirmsMPKg_opt` for each industry $m$ to solve for the value of the marginal product of government capital in each industry, $\overline{MPK}_{g,m}^{i'}$ + 5. Use $\boldsymbol{\overline{MPK}}_g^{i'}$, $\bar{r}^{i'}$, $\bar{r}_{gov}^{i'}$, $\bar{D}^{i'}$, and $\bar{K}^{i'}$ to find the return on the households' investment portfolio, $\bar{r}_{p}^{i'}$ + 6. Use $\bar{Y}_m$, $\bar{L}_m$ in {eq}`EqStnrzFOC_L` to solve for the updates vector of prices, $\boldsymbol{\bar{p}}^{i'}$ + 7. Use $\bar{r}_{p}^{i'}$ and $\bar{b}_{j,s}$ in {eq}`EqStnrzMarkClrBQ` to solve for updated aggregate bequests $\overline{BQ}^{i'}$. + 8. Use $\bar{Y}^{i'}$ in the long-run aggregate transfers assumption {eq}`EqStnrzTfer` to get an updated value for total transfers to households $\overline{TR}^{i'}$. + 9. Use $\bar{r}^{i'}$, $\bar{r}_{p}^{i}$, $\bar{w}^{i'}$, $\bar{n}_{j,s}$, and $\bar{b}_{j,s+1}$ in equation {eq}`EqSS_factor` to get an updated value for the income factor $factor^{i'}$. + + ```{math} + :label: EqSS_factor + factor^{i'} = \frac{\text{Avg. household income in data}}{\text{Avg. household income in model}} = \frac{\text{Avg. household income in data}}{\sum_{s=E+1}^{E+S}\sum_{j=1}^J \lambda_j\bar{\omega}_s\left(\bar{r}_{p}^{i'}\bar{b}_{j,s} + \bar{w}^{i'} e_{j,s}\bar{n}_{j,s}\right)} \quad\forall t + ``` + +4. If the updated values of the outer-loop variables $\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\}$ are close enough to the initial guess for the outer-loop variables $\{\bar{r}_p^i, \bar{r}^i, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^i, \overline{TR}^i, factor^i\}$ then the fixed point is found and the steady-state equilibrium is the fixed point solution. If the outer-loop variables are not close enough to the initial guess for the outer-loop variables, then update the initial guess of the outer-loop variables $\{\bar{r}_p^{i+1}, \bar{r}^{i+1}, \bar{w}^{i+1}, \boldsymbol{\bar{p}}^{i+1}, \overline{BQ}^{i+1}, \overline{TR}^{i+1}, factor^{i+1}\}$ as a convex combination of the first initial guess $\{\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\}$ and the updated values $\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\}$ and repeat steps (2) through (4). + + 1. Define a tolerance $toler_{ss,out}$ and a distance metric $\left\lVert\,\cdot\,\right\rVert$ on the space of 5-tuples of outer-loop variables $\{\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\}$. If the distance between the original guess for the outer-loop variables and the updated values for the outer-loop variables is less-than-or-equal-to the tolerance value, then the steady-state equilibrium has been found and it is the fixed point values of the variables at this point in the iteration. + + ```{math} + :label: EqSS_toldistdone + & \left\lVert\left(\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\right) - \left(\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\right)\right\rVert \\ + &\qquad \leq toler_{ss,out} + ``` + + 1. Make sure that steady-state government spending is nonnegative $\bar{G}\geq 0$. If steady-state government spending is negative, that means the government is getting resources to supply the debt from outside the economy each period to stabilize the debt-to-GDP ratio. $\bar{G}<0$ is a good indicator of unsustainable policies. + 1. Make sure that the resource constraint (goods market clearing) {eq}`EqStnrzMarkClrGoods_M` is satisfied. It is redundant, but this is a good check as to whether everything worked correctly. + 2. Make sure that the government budget constraint {eq}`EqStnrzGovBC` binds. + 3. Make sure that all the $2JS$ household Euler equations are solved to a satisfactory tolerance. + + 2. If the distance metric of the original value of the outer-loop variables and the updated values is greater than the tolerance $toler_{ss,out}$, then an updated initial guess for the outer-loop variables is made as a convex combination of the first guess and the updated guess and steps (2) through (4) are repeated. + + 1. The distance metric not being satisfied is the following condition. + + ```{math} + :label: EqSS_toldistrepeat + &\left\lVert\left(\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\right) - \left(\bar{r}_p^{i}, (\bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\right)\right\rVert \\ + &\qquad > toler_{ss,out} + ``` + + 2. If the distance metric is not satisfied {eq}`EqSS_toldistrepeat`, then an updated initial guess for the outer-loop variables $\{\bar{r}_p^{i+1}, \bar{r}^{i+1}, \bar{w}^{i+1}, \boldsymbol{\bar{p}}^{i+1}, \overline{BQ}^{i+1}, \overline{TR}^{i+1}, factor^{i+1}\}$ is made as a convex combination of the previous initial guess $\{\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\}$ and the updated values based on the previous initial guess $\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\}$ and repeats steps (2) through (4) with this new initial guess. The parameter $\xi_{ss}\in(0,1]$ governs the degree to which the new guess $i+1$ is close to the updated guess $i'$. + + ```{math} + :label: EqSS_updateguess + & \left(\bar{r}_p^{i+1}, \bar{r}^{i+1}, \bar{w}^{i+1}, \boldsymbol{\bar{p}}^{i+1}, \overline{BQ}^{i+1}, \overline{TR}^{i+1}, factor^{i+1}\right) = ... \\ + &\qquad \xi_{ss}\left(\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\right) + ... \\ + &\qquad(1-\xi_{ss})\left(\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\right) + ``` + + 3. Because the outer loop of the steady-state solution has $M-1+6$ variables, there are $M+5$ functions to minimize or set to zero. We use a root-finder and its corresponding Newton method for the updating the guesses of the outer-loop variables because it works well and is faster than the bisection method described in the previous step. The `OG-Core` code has the option to use either the bisection method or the root fining method to updated the outer-loop variables. The root finding algorithm is generally faster but is less robust than the bisection method in the previous step. + +Under alternative model configurations, the solution algorithm changes slightly. For example, when `baseline = False`, one need not solve for the $factor$, as it is determined in the baseline model solution. When `budget_balance = True`, the guess of $\overline{TR}$ in the outer loop is replaced by the guess of $\bar{Y}$ and transfers are determined a residual from the government budget constraint given revenues and other spending policy. When `baseline_spending = True`, $\overline{TR}$ is determined from the baseline model solution and not updated in the outer loop described above. In this case, $\bar{Y}$ becomes an outer loop variable. + +(SecSSeqlbResults)= +### Steady-state results: default specification + + [TODO: Update the results in this section.] In this section, we use the baseline calibration described in Chapter {ref}`Chap_Calibr`, which includes the baseline tax law from `Tax-Calculator`, to show some steady-state results from `OG-Core`. Figures {numref}`FigSSeqlbHHcons`, {numref}`FigSSeqlbHHlab`, and {numref}`FigSSeqlbHHsave` show the household steady-state variables by age $s$ and lifetime income group $j$. + + ```{figure} ./images/HHcons_SS.png + --- + height: 500px + name: FigSSeqlbHHcons + --- + Consumption $c_{j,s}$ by age $s$ and lifetime income group $j$ + ``` + + ```{figure} ./images/HHlab_SS.png + --- + height: 500px + name: FigSSeqlbHHlab + --- + Labor supply $n_{j,s}$ by age $s$ and lifetime income group $j$ + ``` + + ```{figure} ./images/HHsav_SS.png + --- + height: 500px + name: FigSSeqlbHHsave + --- + Savings $b_{j,s}$ by age $s$ and lifetime income group $j$ + ``` + + {numref}`TabSSeqlbAggrVars` lists the steady-state prices and aggregate variable values along with some of the maximum error values from the characterizing equations. + + ```{list-table} **Steady-state prices, aggregate variables, and maximum errors** + :header-rows: 1 + :name: TabSSeqlbAggrVars + * - Variable + - Value + - Variable + - Value + * - $\bar{r}$ + - 0.630 + - $\bar{w}$ + - 1.148 + * - $\bar{Y}$ + - 0.630 + - $\bar{C}$ + - 0.462 + * - $\bar{I}$ + - 0.144 + - $\bar{K}$ + - 1.810 + * - $\bar{L}$ + - 0.357 + - $\bar{B}$ + - 2.440 + * - $\overline{BQ}$ + - 0.106 + - $factor$ + - 141,580 + * - $\overline{Rev}$ + - 0.096 + - $\overline{TR}$ + - 0.057 + * - $\bar{G}$ + - 0.023 + - $\bar{D}$ + - 0.630 + * - Max. abs. labor supply Euler error + - 4.57e-13 + - Max. abs. savings Euler error + - 8.52e-13 + * - Resource constraint error + - -4.39e-15 + - Serial computation time + - 1 hr. 25.9 sec. + ``` + + The steady-state computation time does not include any of the exogenous parameter computation processes, the longest of which is the estimation of the baseline tax functions which computation takes 1 hour and 15 minutes. + + +(SecNSSeqlb)= +## Stationary Non-Steady-State Equilibrium + + In this section, we define the stationary non-steady-state equilibrium of the `OG-Core` model. Chapters {ref}`Chap_House` through {ref}`Chap_MarkClr` derive the equations that characterize the equilibrium of the model in their non-stationarized form. And chapter {ref}`Chap_Stnrz` derives the stationarized versions of the characterizing equations. The steady-state equilibrium definition in Section {ref}`SecEqlbSSdef` defines the long-run equilibrium where the economy settles down after many periods. The non-steady-state equilibrium in this section describes the equilibrium in all periods from the current period to the steady-state. We will need the steady-state solution from Section {ref}`SecSSeqlb` to solve for the non-steady-state equilibrium transition path. + + +(SecEqlbNSSdef)= +### Stationary Non-Steady-State Equilibrium Definition + + We define a stationary non-steady-state equilibrium as the following. + + ```{admonition} **Definition: Stationary Non-steady-state functional equilibrium** + :class: note + A non-autarkic non-steady-state functional equilibrium in the `OG-Core` model is defined as stationary allocation functions of the state $\bigl\{n_{j,s,t} = \phi_{j,s}\bigl(\boldsymbol{\hat{\Gamma}}_t\bigr)\bigr\}_{s=E+1}^{E+S}$ and $\bigl\{\hat{b}_{j,s+1,t+1}=\psi_{j,s}\bigl(\boldsymbol{\hat{\Gamma}}_t\bigr)\bigr\}_{s=E+1}^{E+S}$ for all $j$ and $t$ and stationary price functions $\hat{w}(\boldsymbol{\hat{\Gamma}}_t)$, $r(\boldsymbol{\hat{\Gamma}}_t)$, and $\boldsymbol{p}(\boldsymbol{\hat{\Gamma}}_t)$ for all $t$ such that: + + 1. Households have symmetric beliefs $\Omega(\cdot)$ about the evolution of the distribution of savings as characterized in {eq}`EqBeliefs`, and those beliefs about the future distribution of savings equal the realized outcome (rational expectations), + + $$ + \boldsymbol{\hat{\Gamma}}_{t+u} = \boldsymbol{\hat{\Gamma}}^e_{t+u} = \Omega^u\left(\boldsymbol{\hat{\Gamma}}_t\right) \quad\forall t,\quad u\geq 1 + $$ + + 2. Households optimize according to {eq}`EqStnrz_eul_n`, {eq}`EqStnrz_eul_b`, and {eq}`EqStnrz_eul_bS`, + 3. Firms optimize according to {eq}`EqStnrzFOC_L` and {eq}`EqStnrzFOC_K`, + 4. Government activity behaves according to {eq}`EqUnbalGBC_rate_wedge`, {eq}`EqStnrzGovBC`, {eq}`EqStnrz_rate_p`, and {eq}`EqStnrzClosureRule_Gt`, and + 5. Markets clear according to {eq}`EqStnrzMarkClrGoods_Mm1`, {eq}`EqStnrzMarkClrLab`, {eq}`EqStnrz_DtDdDf`, {eq}`EqStnrz_KtKdKf`, and {eq}`EqStnrzMarkClrBQ`. + + ``` + + +(SecEqlbNSSsoln)= +### Stationary non-steady-state solution method + +This section describes the computational algorithm for the solution method for the stationary non-steady-state equilibrium described in the {ref}`SecEqlbNSSdef`. The default specification of the model is the baseline specification (`baseline = True`) in which the government can run deficits and surpluses (`budget_balance = False`), in which the economy is a large partially open economy [$\zeta_D,\zeta_K\in(0,1)$], and in which baseline government spending $G_t$ and transfers $TR_t$ are not held constant until the closure rule (`baseline_spending = False`). We describe the algorithm for this model configuration below and follow that with a description of how it is modified for alternative configurations. + +The computational algorithm for the non-steady-state solution follows similar steps to the steady-state solution described in Section {ref}`SecEqlbSSsoln`. There is an outer-loop of guessed values of macroeconomic variables $\{r_{p,t}, r_t, w_t, \boldsymbol{p}_t, BQ_t, TR_t\}$, but in this case, we guess the entire transition path of those variables. Then we solve the inner loop of mostly microeconomic variables for the whole transition path (many generations of households), given the outer-loop guesses. We iterate between these steps until we find a fixed point. + +We call this solution algorithm the time path iteration (TPI) method or transition path iteration. This method was originally outlined in a series of papers between 1981 and 1985 [^citation_note] and in the seminal book {cite}`AuerbachKotlikoff:1987` [Chapter 4] for the perfect foresight case and in {cite}`NishiyamaSmetters:2007` Appendix II and {cite}`EvansPhillips:2014`[Sec. 3.1] for the stochastic case. The intuition for the TPI solution method is that the economy is infinitely lived, even though the agents that make up the economy are not. Rather than recursively solving for equilibrium policy functions by iterating on individual value functions, one must recursively solve for the policy functions by iterating on the entire transition path of the endogenous objects in the economy (see {cite}`StokeyLucas1989` [Chapter 17]). + +The key assumption is that the economy will reach the steady-state equilibrium $\boldsymbol{\bar{\Gamma}}$ described in {ref}`SecEqlbSSdef` in a finite number of periods $T<\infty$ regardless of the initial state $\boldsymbol{\hat{\Gamma}}_1$. The first step in solving for the non-steady-state equilibrium transition path is to solve for the steady-state using the method described in Section {ref}`SecEqlbSSsoln`. After solving for the steady-state, one must then find a fixed point over the entire time path or transition path of endogenous objects that satisfies the characterizing equilibrium equations in every period. + +The stationary non-steady state (transition path) solution algorithm has following steps. + +1. Use the techniques from Section {ref}`SecDemogPopSSTP` to solve for the transition path of the stationarized population distribution matrix $\{\hat{\omega}_{s,t}\}_{s,t=E+1,1}^{E+S,T}$ and population growth rate vector $\{\tilde{g}_{n,t}\}_{t=1}^T$ of the exogenous population process. + +2. Compute the steady-state solution $\{\bar{n}_{j,s},\bar{b}_{j,s+1}\}_{s=E+1}^{E+S}$ corresponding to {ref}`SecEqlbSSdef` with the {ref}`SecEqlbSSsoln`. + +3. Given initial state of the economy $\boldsymbol{\hat{\Gamma}}_1$ and steady-state solutions $\{\bar{n}_{j,s},\bar{b}_{j,s+1}\}_{s=E+1}^{E+S}$, guess transition paths of outer-loop macroeconomic variables $\{\boldsymbol{r}_p^i, \boldsymbol{r}^i, \boldsymbol{\hat{w}}^i, \boldsymbol{p}^i, \boldsymbol{\hat{BQ}}^i,\boldsymbol{\hat{TR}}^i\}$ such that $\hat{BQ}_1^i$ is consistent with $\boldsymbol{\hat{\Gamma}}_1$ and $\{r_{p,t}^i, r_t^i, \hat{w}_t^i, \boldsymbol{p}_t^i, \hat{BQ}_t^i, \hat{TR}_t^i\} = \{\bar{r}_p, \bar{r}, \bar{w}, \boldsymbol{\bar{p}}_t, \overline{BQ}, \overline{TR}\}$ for all $t\geq T$. We also make an initial guess regarding the amount of government debt in each period, $\boldsymbol{\hat{D}}^i$. This will not enter the ``outer loop'' variables, but is helpful in the first pass through the time path iteration algorithm. + + 1. If the economy is assumed to reach the steady state by period $T$, then we must be able to solve for every cohort's decisions in period $T$ including the decisions of agents in their first period of economically relevant life $s=E+S$. This means we need to guess time paths for the outer-loop variables that extend to period $t=T+S$. However, the values of the time path of outer-loop variables for every period $t\geq T$ are simply equal to the steady-state values. +4. Using {eq}`Eq_tr` with $\boldsymbol{\hat{TR}}^{\,i}$, find transfers to each household, $\boldsymbol{\hat{tr}}_{j,s}^i$ +5. Using the bequest transfer process, {eq}`Eq_bq` and aggregate bequests, $\boldsymbol{\hat{BQ}}^{\,i}$, find $\boldsymbol{\hat{bq}}_{j,s}^i$ +6. Given time path guesses $\{\boldsymbol{r}_p^i, \boldsymbol{\hat{w}}^i, \boldsymbol{p}^i, \boldsymbol{\hat{bq}}^i, \boldsymbol{\hat{tr}}^i\}$, we can solve for each household's lifetime decisions $\{n_{j,s,t},\hat{b}_{j,s+1,t+1}\}_{s=E+1}^{E+S}$ for all $j$, $E+1\leq s \leq E+S$, and $1\leq t\leq T_2+S-1$. + 1. Given $\boldsymbol{p}^i$ find the price of consumption goods using {eq}`EqHH_pi2` + 2. From price of consumption goods, determine the price of the composite consmpution good, $\bar{p}$ using equation {eq}`EqCompPnorm2` + 3. The household problem can be solved with a multivariate root finder solving the $2S$ equations and unknowns at once for each $j$ and $1\leq t\leq T+S-1$. The root finder uses $2S$ household Euler equations {eq}`EqStnrz_eul_n`, {eq}`EqStnrz_eul_b`, and {eq}`EqStnrz_eul_bS` to solve for each household's $2S$ lifetime decisions. The household decision rules for each type and birth cohort are solved separately. + 4. After solving the first iteration of time path iteration, subsequent initial values for the $J$, $2S$ root finding problems are based on the solution in the prior iteration. This speeds up computation further and makes the initial guess for the highly nonlinear system of equations start closer to the solution value. +7. Determine from the quantity of the composite consumption good consumed by each household, $\hat{c}_{j,s,t}$, use equation {eq}`EqHH_cmDem` to determine consumption of each output good, $\hat{c}_{m,j,s,t}$ +8. Using $\hat{c}_{m,j,s,t}$ in {eq}`EqCmt`, solve for aggregate consumption of each output good, $\hat{C}_{m,t}$ +9. Given values for $n_{j,s,t}$ and $\hat{b}_{j,s+1,t+1}$ for all $j$, $s$, and $t$, solve for aggregate labor supply, $\hat{L}_t$, and savings, $B_t$ in each period + 1. Use $n_{j,s,t}$ and the stationarized labor market clearing equation {eq}`EqStnrzMarkClrLab` to get a value for $\hat{L}_t^{i}$. + 2. Use $\hat{b}_{j,s+1,t+1}$ and the stationarized expression for total savings by domestic households {eq}`EqStnrz_Bt`to solve for $\hat{B}_t^i$. +10. Solve for the exogenous government interest rate $r_{gov,t}^{i}$ using equation {eq}`EqUnbalGBC_rate_wedge`. +11. Use {eq}`EqStnrzTfer` to find $\hat{Y}_t^i$ from the guess of $\hat{TR}_t^i$ +12. Using the path of output from each industry, $\hat{Y}_{m,t}$, and the household savings and labor supply decisions, $\{n_{j,s,t},\hat{b}_{j,s+1,t+1}\}_{s=E+1}^{E+S}$, compute the path of stationarizaed total tax revenue, $\hat{Revenue}_{t}^{i}$. +13. Using the long-run debt-to-GDP ratio, the path of GDP, $\hat{Y}_t^i$, the path of total tax revenue, $\hat{Revenue}_{t}^{i}$, government transfers, $\hat{TR}_t^i$, infrastructure investment, $\hat{I}_{g,t}^i$, and Equation {eq}`EqUnbalGBCclosure_Gt`, find the path of stationarized government debt, $\hat{D}_{t}^{i'}$ for all $t$. +14. Using $\hat{D}_t^i$, we can find foreign investor holdings of debt, $\hat{D}_t^{f,i}$ from {eq}`EqMarkClr_zetaD2` and then solve for domestic debt holdings through the debt market clearing condition: $\hat{D}_t^{d,i} = \bar{D}_t^i - \bar{D}_t^{f,i}$ +15. Using $\hat{Y}_t^i$, find government infrastructure investment, $\hat{I}_{g,t}$ from {eq}`EqStnrz_Igt` +16. Using the law of motion of the stock of infrastructure, {eq}`EqStnrz_Kgmt`, and $\hat{I}_{g,t}$, solve for $\hat{K}_{g,t}^{i}$ +17. Find output and factor demands for M-1 industries: + 1. By {eq}`EqMarkClrGoods_Mm1`, $\hat{Y}_{m,t}=\hat{C}_{m,t}$, where $\hat{C}_{m,t}$ is determined by {eq}`EqStnrzEqCmt` + 2. The capital-output ratio can be determined from the FOC for the firms' choice of capital: $\frac{\hat{K}_{m,t}}{\hat{Y}_{m,t}} = \gamma_m\left[\frac{r_t + \delta_{M,t} - \tau^{corp}_{m,t}\delta^{\tau}_{m,t} - \tau^{inv}_{m,t}\delta_{M,t}}{(1-\tau^{corp}_{m,t})p_{m,t}({Z}_{m,t})^\frac{\varepsilon_m -1}{\varepsilon_m}}\right]^{-\varepsilon_m}$ + 3. Capital demand can thus be found: $\hat{K}_{m,t} = \frac{\hat{K}_{m,t}}{\hat{Y}_{m,t}} * \hat{Y}_{m,t}$ + 4. Labor demand can be found by inverting the production function: + ```{math} + :label: EqTPI_solveL + \hat{L}_{m,t} = \left(\frac{\left(\frac{\hat{Y}_{m,t}}{Z_{m,t}}\right)^{\frac{\varepsilon_m-1}{\varepsilon_m}} - \gamma_{m}^{\frac{1}{\varepsilon_m}}\hat{K}_{m,t}^{\frac{\varepsilon_m-1}{\varepsilon_m}} - \gamma_{g,m}^{\frac{1}{\varepsilon_m}}\hat{K}_{g,m,t}^{\frac{\varepsilon_m-1}{\varepsilon_m}}}{(1-\gamma_m-\gamma_{g,m})^{\frac{1}{\varepsilon_m}}}\right)^{\frac{\varepsilon_m}{\varepsilon_m-1}} + ``` + 5. Use the interest rate $r_t^*$ and labor demand $\hat{L}_{m,t}$ to solve for private capital demand at the world interest rate $\hat{K}_{m,t}^{r^*}$ using {eq}`EqFirmsMPKg_opt` + ```{math} + :label: EqTP_MPKg + \hat{K}_{m,t}^{r^*} = \hat{L}_{m,t}\left(\frac{\hat{w}_t}{\frac{r_t + \delta_{M,t} - \tau^{corp}_{m,t}\delta^{\tau}_{m,t} - \tau^{inv}_{m,t}\delta_{M,t}}{1 - \bar{\tau}_{m,t}^b}}\right)^{\varepsilon_m} \frac{\gamma_m}{(1 - \gamma_m - \gamma_{g,m})} + ``` + +18. Determine factor demands and output for industry $M$: + 1. $\hat{L}_{M,t} = \hat{L}_t - \sum_{m=1}^{M-1}\hat{L}_{m,t}$ + 2. Find $\hat{K}_{m,t}^{r^*}$ using {eq}`EqFirmsMPKg_opt` + 3. Find total capital supply, and the split between that from domestic and foreign households: $\hat{K}_t^{i'}$, $\hat{K}_t^d$, $\hat{K}_t^f$: + 4. We then use this to find foreign demand for domestic capital from {eq}`eq_foreign_cap_demand`: $\hat{K}_t^{f} = \zeta_{K,t}\sum_{m=1}^{M}\hat{K}_{m,t}^{r^*}$ + 5. Using $\hat{D}_t^{d,i}$ we can then find domestic investors' holdings of private capital as the residual from their total asset holdings: , $\hat{K}_t^{d,i} = \hat{B}_t^i - \hat{D}_t^{d,i}$ + 6. Aggregate capital supply is then determined as $\hat{K}_t^{i'} = \hat{K}_t^{d,i} + \hat{K}_t^{f,i}$. + 7. $\hat{K}_{M,t} = \hat{K}_t^{i'} - \sum_{m=1}^{M-1}\hat{K}_{m,t}$ + 8. Use the factor demands and $\hat{K}_{g,t}$ in the production function for industry $M$ to find $\hat{Y}_{M,t}$ +19. Find an updated path for GDP, $\hat{Y}_t^{i'} = \sum_{m=1}^{M} p_{m,t} \hat{Y}_{m,t}$ +20. Find a updated path for $\hat{I}_{g,t}$ and $\hat{K}_{g,t}$ using $\hat{Y}_t^{i'}$, equations {eq}`EqStnrz_Igt` and {eq}`EqStnrz_Kgmt` +21. Given updated inner-loop values based on initial guesses for outer-loop variables $\{r_{p,t}^i, r_t^i, \hat{w}_t^i, \boldsymbol{p}_t, \hat{BQ}_t^i, \hat{TR}_t^i\}$, solve for updated values of outer-loop variables $\{r_{p,t}^{i'}, r_t^{i'}, \hat{w}_t^{i'}, \boldsymbol{p}_t^{i'}, \hat{BQ}_t^{i'}, \hat{TR}_t^{i'}\}$ using the remaining equations (for all periods $t$ in the transition path): + + 1. Use $\hat{Y}_{M,t}^{i'}$ and $\hat{K}_{M,t}^{i'}$ in {eq}`EqStnrzFOC_K` to solve for updated value of the rental rate on private capital $r_t^{i'}$. + 2. Use $\hat{Y}_{M,t}^{i'}$ and $\hat{L}_{M,t}^{i}$ in {eq}`EqStnrzFOC_L` to solve for updated value of the wage rate $\hat{w}_t^{i'}$. + 3. Use $r_t^{i'}$ in equations {eq}`EqUnbalGBC_rate_wedge` to get $r_{gov,t}^{i'}$ + 4. Use $\hat{K}_{g,t}^{i'}$ and $\hat{Y}_t^{i''}$ in in {eq}`EqFirmsMPKg_opt` for each industry $m$ to solve for the value of the marginal product of government capital in each industry, $MPK_{g,m,t}^{i'}$ + 5. Use $\boldsymbol{MPK}_{g,t}^{i'}$, $r_t^{i'}$, $r_{gov,t}^{i'}$, $\hat{D}_t^{i'}$, and $\hat{K}_t^{i'}$ to find the return on the households' investment portfolio, $r_{p,t}^{i'}$ + 6. Use $\hat{Y}_{m,t}$, $\hat{L}_{m,t}$ in {eq}`EqStnrzFOC_L` to solve for the updates vector of prices, $\boldsymbol{p}_t^{i'}$ + 7. Use $r_{p,t}^{i'}$ and $\hat{b}_{j,s,t}$ in {eq}`EqStnrzMarkClrBQ` to solve for updated aggregate bequests $\hat{BQ}_t^{i'}$. + 8. Use $\hat{Y}_t^{i'}$ in the aggregate transfers assumption {eq}`EqStnrzTfer` to get an updated value for total transfers to households $\hat{TR}_t^{i'}$. + +22. The updated values for the outer loop variables are then used to compute the percentage differences between the initial and implied values: + 1. $error_{r_p} = max\left\{\frac{r_{p,t}^{i'} - r_{p,t}^i}{r_{p,t}^i}\right\}_{t=0}^{T}$ + 2. $error_r = max\left\{\frac{r_{t}^{i'} - r_{t}^i}{r_{t}^i}\right\}_{t=0}^{T}$ + 3. $error_w = max\left\{\frac{\hat{w}_{t}^{i'} - \hat{w}_{t}^i}{\hat{w}_{t}^i}\right\}_{t=0}^{T}$ + 4. $error_p = max\left\{\frac{\boldsymbol{p}_{t}^{i'} - \boldsymbol{p}_{t}^i}{\boldsymbol{p}_{t}^i}\right\}_{t=0}^{T}$ + 5. $error_{bq} = max\left\{\frac{\hat{BQ}_{t}^{\,i'} - \hat{BQ}_{t}^{\,i}}{\hat{BQ}_{t}^{\,i}}\right\}_{t=0}^{T}$ + 6. $error_{tr} = \left\{\frac{\hat{TR}_{t}^{\,i'} - \hat{TR}_{t}^{\,i}}{\hat{TR}_{t}^{\,i}}\right\}_{t=0}^{T}$ + +23. If the maximum absolute error among the four outer loop error terms is greater than some small positive tolerance $toler_{tpi,out}$, $\max\big|\left(error_{r_p}, error_r, error_w, error_p, error_{bq},error_{tr}\right)\bigr| > toler_{tpi,out}$, then update the guesses for the outer loop variables as a convex combination governed by $\xi_{tpi}\in(0,1]$ of the respective initial guesses and the new implied values and repeat steps (3) through (5). + + $$ + &[\boldsymbol{r}_p^{i+1}, \boldsymbol{r}^{i+1}, \boldsymbol{\hat{w}}^{i+1}, \boldsymbol{p}^{i+1}, \boldsymbol{\hat{BQ}}^{i+1},\boldsymbol{\hat{TR}}^{i+1} ] = \\ + &\qquad \xi_{tpi}[\boldsymbol{r}_p^{i'}, \boldsymbol{r}^{i'}, \boldsymbol{\hat{w}}^{i'}, \boldsymbol{p}^{i'}, \boldsymbol{\hat{BQ}}^{i'},\boldsymbol{\hat{TR}}^{i'}] + ... \\ + &\qquad (1-\xi_{tpi})[\boldsymbol{r}_p^{i}, \boldsymbol{r}^{i}, \boldsymbol{\hat{w}}^{i}, \boldsymbol{p}^{i}, \boldsymbol{\hat{BQ}}^{i},\boldsymbol{\hat{TR}}^{i}] + $$ + +24. If the maximum absolute error among the M-1+5 outer loop error terms is less-than-or-equal-to some small positive tolerance $toler_{tpi,out}$ in each period along the transition path, $\max\big|\left(error_{r_p}, error_r, error_w, error_p, error_{bq},error_{tr}\right)\bigr| \leq toler_{tpi,out}$ then the non-steady-state equilibrium has been found. + + 1. Make sure that the resource constraint for industry $M$ (goods market clearing) {eq}`EqStnrzMarkClrGoods_M` is satisfied in each period along the time path. It is redundant, but this is a good check as to whether everything worked correctly. + 2. Make sure that the government budget constraint {eq}`EqStnrzGovBC` binds. + 3. Make sure that all the $(T+S)\times2JS$ household Euler equations are solved to a satisfactory tolerance. + +Under alternative model configurations, the solution algorithm changes slightly. When `budget_balance = True`, the guess of $\boldsymbol{\hat{TR}}$ in the outer loop is replaced by the guess of $\boldsymbol{\hat{Y}}$ and transfers are determined a residual from the government budget constraint given revenues and other spending policy. When `baseline_spending = True`, $\boldsymbol{\hat{TR}}$ is determined from the baseline model solution and not updated in the outer loop described above. In this case $\boldsymbol{\hat{Y}}$ becomes variable that is updates in the outer loop. + + +(SecNSSeqlbResults)= +### Baseline Non-steady-state Results + +[TODO: Add baseline non-steady-state results here.] + + +(SecEqlbFootnotes)= +## Footnotes + +[^citation_note]: See {cite}`AuerbachEtAl:1981,AuerbachEtAl:1983`, {cite}`AuerbachKotlikoff:1983a,AuerbachKotlikoff:1983b,AuerbachKotlikoff:1983c`, and {cite}`AuerbachKotlikoff:1985`. From 05b18e0274cddd8ef7070183d80a2762b80862ee Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Thu, 26 Jan 2023 17:35:08 -0700 Subject: [PATCH 04/55] Updated calibration.md --- docs/book/content/theory/calibration.md | 453 +++--------------------- 1 file changed, 50 insertions(+), 403 deletions(-) diff --git a/docs/book/content/theory/calibration.md b/docs/book/content/theory/calibration.md index a67bc4828..c7f0e081d 100644 --- a/docs/book/content/theory/calibration.md +++ b/docs/book/content/theory/calibration.md @@ -1,414 +1,61 @@ (Chap_Calib)= -# Equilibrium - -The equilibrium for the `OG-Core` model is broadly characterized as the solution to the model for all possible periods from the current period $t=1$ to infinity $t=\infty$. However, the solution algorithm for the equilibrium makes it useful to divide the equilibrium definition into two sub-definitions. - -The first equilibrium definition we characterize is the {ref}`SecSSeqlb`. This is really a long-run equilibrium concept. It is where the economy settles down after a large number of periods into the future. The distributions in the economy (e.g., population, wealth, labor supply) have settled down and remain constant from some future period $t=\bar{T}$ for the rest of time $t=\infty$. - -The second equilibrium definition we characterize is the {ref}`SecNSSeqlb`. This equilibrium concept is "non-steady-state" because it characterizes equilibrium in all time periods from the current period $t=1$ to the period in which the economy has reached the steady-state $t=\bar{T}$. It is "non-steady-state" because the distributions in the economy (e.g., population, wealth, labor supply) are changing across time periods. - -(SecSSeqlb)= -## Stationary Steady-State Equilibirum - -In this section, we define the stationary steady-state equilibrium of the `OG-Core` model. Chapters {ref}`Chap_House` through {ref}`Chap_MarkClr` derive the equations that characterize the equilibrium of the model. However, we cannot solve for any equilibrium of the model in the presence of nonstationarity in the variables. Nonstationarity in `OG-Core` comes from productivity growth $g_y$ in the production function {eq}`EqFirmsCESprodfun`, population growth $\tilde{g}_{n,t}$ as described in {eq}`EqPopGrowthTil` the {ref}`Chap_Demog` chapter, and the potential for unbounded growth in government debt as described in Chapter {ref}`Chap_UnbalGBC`. - -We implemented an automatic government budget closure rule using government spending $G_t$ as the instrument that stabilizes the debt-to-GDP ratio at a long-term rate in {eq}`EqUnbalGBCclosure_Gt`. And we showed in Chapter {ref}`Chap_Stnrz` how to stationarize all the other characterizing equations. - -We first give a general definition of the steady-state (long-run) equilibrium of the model. We then detail the computational algorithm for solving for the equilibrium in each distinct case of the model. There are three distinct cases or parameterization permutations of the model that have to do with the following specification choices. - -* Baseline or reform -* Balanced budget or allow for government deficits/surpluses -* Small open economy or partially/closed economy -* Fixed baseline spending level or not (relevant only for a reform specification) - -In all of the specifications of `OG-Core`, we use a two-stage fixed point algorithm to solve for the equilibrium solution. The solution is mathematically characterized by $2JS$ nonlinear equations and $2JS$ unknowns. The most straightforward and simple way to solve these equations would be a multidimensional root finder. However, because each of the equations is highly nonlinear and depends on all of the $2JS$ variables (low sparsity) and because the dimensionality $2JS$ is high, standard root finding methods are not reliable or tractable. - -Our approach is to choose the minimum number of macroeconomic variables in an outer loop in order to be able to solve the household's $2JS$ Euler equations in terms of only the $\bar{n}_{j,s}$ and $\bar{b}_{j,s+1}$ variables directly, holding all other variables constant. The household system of Euler equations has a provable root solution and is orders of magnitude more tractable (less nonlinear) to solve holding these outer loop variables constant. - -The steady-state solution method for each of the cases above is associated with a solution method that has a subset of the following outer-loop variables $\{\bar{r}_p, \bar{r}, \bar{w}, \boldsymbol{\bar{p}}, \bar{Y}, \overline{TR}, \overline{BQ}, factor\}$. - - -(SecEqlbSSdef)= -### Stationary Steady-State Equilibrium Definition - -With the stationarized model, we can now define the stationary steady-state equilibrium. This equilibrium will be long-run values of the endogenous variables that are constant over time. In a perfect foresight model, the steady-state equilibrium is the state of the economy at which the model settles after a finite amount of time, regardless of the initial condition of the model. Once the model arrives at the steady-state, it stays there indefinitely unless it receives some type of shock or stimulus. - -These stationary values have all the components of growth, from productivity growth and population growth, removed as defined in {numref}`TabStnrzStatVars`. This is possible because the productivity growth rate $g_y$ and population growth rate series $\tilde{g}_{n,t}$ are exogenous. We can transform the stationary equilibrium values of the variables back to their nonstationary values by reversing the identities in {numref}`TabStnrzStatVars`. - -We define a stationary steady-state equilibrium as the following. - -```{admonition} **Definition: Stationary steady-state equilibrium** -:class: note -A non-autarkic stationary steady-state equilibrium in the `OG-Core` model is defined as constant allocations of stationary household labor supply $n_{j,s,t}=\bar{n}_{j,s}$ and savings $\hat{b}_{j,s+1,t+1}=\bar{b}_{j,s+1}$ for all $j$, $t$, and $E+1\leq s\leq E+S$, and constant prices $\hat{w}_t=\bar{w}$, $r_t=\bar{r}$, $r_{p,t}=\bar{r}_p$, and $\boldsymbol{p_t}=\boldsymbol{\bar{p}}$ for all $t$ such that the following conditions hold: -1. The population has reached its stationary steady-state distribution $\hat{\omega}_{s,t} = \bar{\omega}_s$ for all $s$ and $t$ as characterized in Section {ref}`SecDemogPopSSTP`, -2. households optimize according to {eq}`EqStnrz_eul_n`, {eq}`EqStnrz_eul_b`, {eq}`EqStnrz_eul_bS`, and {eq}`EqStnrz_cmDem2`, -3. firms in each industry optimize according to {eq}`EqStnrzFOC_L` and {eq}`EqStnrzFOC_K`, -4. government activity behaves according to {eq}`EqUnbalGBC_rate_wedge`, {eq}`EqStnrzGovBC`, {eq}`EqStnrz_rate_p`, and {eq}`EqStnrzClosureRule_Gt`, and -5. markets clear according to {eq}`EqStnrzMarkClrLab`, {eq}`EqStnrz_DtDdDf`, {eq}`EqStnrz_KtKdKf`, {eq}`EqStnrzMarkClrGoods_Mm1`, {eq}`EqStnrzMarkClrGoods_M`, and {eq}`EqStnrzMarkClrBQ`. - +# Calibrating OG-Core to a Country or Region + +The `OG-Core` model represents all the general model solution code for any overlapping generations model of a country or region. Although `OG-Core` has a `default_parameters.json` file that allows it to run independently, the preferred method for using `OG-Core` is as a dependency to a country calibration repository. We recommend that another repository is made, such as [`OG-USA`](https://github.com/PSLmodels/OG-USA) or [`OG-ZAF`](https://github.com/EAPD-DRB/OG-ZAF/) that uses `OG-Core` as its main computational foundation and engine and calibrates country-specific variables and functions in its own respective source code. This approach results in a working overlapping generations model consisting of a country-specific calibration repository plus a dependency on the general `OG-Core` model logic and options. + +{numref}`TabCountryModels` is a list of country-specific calibrations of overlapping generations models that use `OG-Core` as a dependency from oldest to newest. Note that these models are in varying stages of completeness and maturity. It is true that a model is never really fully calibrated. The modeler is always updating calibrated values as new data become available. And the modeler can always search for better fit and better targeting strategies. As such, the only measures of model maturity of the country calibrations below is the data the repository was created and whether or not the example run script runs completely through baseline and reform steady-state and transition-path equilibrium computation. + +```{list-table} **Country-specific calibrated OG models based on OG-Core.** +:header-rows: 1 +:name: TabCountryModels +* - **Country** + - **Model name** + - **GitHub repo** + - **Documentation** + - **Date created** + - **Example script runs** +* - United States + - `OG-USA` + - https://github.com/PSLmodels/OG-USA + - https://pslmodels.github.io/OG-USA + - 2014-May-25 + - Yes +* - United Kingdom + - `OG-UK` + - https://github.com/PSLmodels/OG-UK + - https://pslmodels.github.io/OG-UK + - 2021-Feb-14 + - No +* - India + - `OG-IND` + - https://github.com/Revenue-Academy/OG-IND + - https://revenue-academy.github.io/OG-IND + - 2022-Jul-17 + - Yes +* - Malaysia + - `OG-MYS` + - https://github.com/Revenue-Academy/OG-MYS + - + - 2022-Jul-17 + - Yes +* - South Africa + - `OG-ZAF` + - https://github.com/EAPD-DRB/OG-ZAF + - https://eapd-drb.github.io/OG-ZAF + - 2022-Oct-09 + - Yes ``` +In the following section, we detail a list of items to calibrate for a country and what types of data and approaches might be available for those calibrations. Each of the country-specific models listed in {numref}`TabCountryModels` will have varying degrees of calibration maturity and futher varying degrees of documentation of their calibration. But the following section details all the areas where each of these models should be calibrated. -(SecEqlbSSsoln)= -### Steady-state solution method - -The default specification of the model is the baseline specification (`baseline = True`) in which the government can run deficits and surpluses (`budget_balance = False`), in which the economy is a large partially open economy [$\zeta_D,\zeta_K\in(0,1)$], and in which baseline government spending $G$ and transfers $TR$ are not held at baseline levels (`baseline_spending = False`). We describe the algorithm for this model configuration below and follow that with a description of how it is modified for alternative configurations. - -The computational algorithm for solving for the steady-state follows the steps below. - -1. Use the techniques from Section {ref}`SecDemogPopSSTP` to solve for the steady-state population distribution vector $\boldsymbol{\bar{\omega}}$ and steady-state growth rate $\bar{g}_n$ of the exogenous population process. - -2. Choose an initial guess for the values of the steady-state interest rate (the after-tax marginal product of capital) $\bar{r}^i$, wage rate $\bar{w}^i$, portfolio rate of return $\bar{r}_p^i$, output prices $\boldsymbol{\bar{p}}^i$ (note that $\bar{p}_M =1$ since it's the numeraire good), total bequests $\overline{BQ}^{\,i}$, total household transfers $\overline{TR}^{\,i}$, and income multiplier $factor^i$, where superscript $i$ is the index of the iteration number of the guess. - - 1. Given $\boldsymbol{\bar{p}}^i$ find the price of consumption goods using {eq}`EqHH_pi2` - 2. From price of consumption goods, determine the price of the composite consmpution good, $\bar{p}$ using equation {eq}`EqCompPnorm2` - 3. Using {eq}`Eq_tr` with $\overline{TR}^{\,i}$, find transfers to each household, $\overline{tr}_{j,s}^i$ - 4. Using the bequest transfer process, {eq}`Eq_bq` and aggregate bequests, $\overline{BQ}^{\,i}$, find $bq_{j,s}^i$ - 5. Given values $\bar{p}$, $\bar{r}_{p}^i$, $\bar{w}^i$ $\overline{bq}_{j,s}^i$, $\overline{tr}_{j,s}^i$, and $factor^i$, solve for the steady-state household labor supply $\bar{n}_{j,s}$ and savings $\bar{b}_{j,s+1}$ decisions for all $j$ and $E+1\leq s\leq E+S$. - - 1. Each of the $j\in 1,2,...J$ sets of $2S$ steady-state Euler equations can be solved separately. `OG-Core` parallelizes this process using the maximum number of processors possible (up to $J$ processors). Solve each system of Euler equations using a multivariate root-finder to solve the $2S$ necessary conditions of the household given by the following steady-state versions of stationarized household Euler equations {eq}`EqStnrz_eul_n`, {eq}`EqStnrz_eul_b`, and {eq}`EqStnrz_eul_bS` simultaneously for each $j$. - - ```{math} - :label: EqSS_HHBC - \bar{c}_{j,s} &= (1 + \bar{r}_{p,a})\bar{b}_{j,s} + \bar{w}_a e_{j,s}\bar{n}_{j,s} - e^{g_y}\bar{b}_{j,s+1} + \overline{bq}_{j,s}^i + \overline{tr}_{j,s}^i + \hat{ubi}_{j,s} - \bar{T}_{j,s} \\ - &\qquad\qquad\forall j\quad\text{and}\quad E+1\leq s\leq E+S \quad\text{where}\quad \bar{b}_{j,E+1}=0 - ``` - - ```{math} - :label: EqSS_HHeul_n - \bar{w}_a e_{j,s}\bigl(1 - \tau^{mtrx}_{s}\bigr)(\bar{c}_{j,s})^{-\sigma} = \chi^n_{s}\biggl(\frac{b}{\tilde{l}}\biggr)\biggl(\frac{\bar{n}_{j,s}}{\tilde{l}}\biggr)^{\upsilon-1}\Biggl[1 - \biggl(\frac{\bar{n}_{j,s}}{\tilde{l}}\biggr)^\upsilon\Biggr]^{\frac{1-\upsilon}{\upsilon}} \\ - \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\forall j \quad\text{and}\quad E+1\leq s\leq E+S \\ - ``` - - ```{math} - :label: EqSS_HHeul_b - (\bar{c}_{j,s})^{-\sigma} = e^{-\sigma g_y}\biggl[\chi^b_j\rho_s(\bar{b}_{j,s+1})^{-\sigma} + \beta_j\bigl(1 - \rho_s\bigr)\Bigl(1 + \bar{r}_{p,a}\bigl[1 - \tau^{mtry}_{s+1}\bigr]\Bigr)(\bar{c}_{j,s+1})^{-\sigma}\biggr] \\ - \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\forall j \quad\text{and}\quad E+1\leq s\leq E+S-1 \\ - ``` - - ```{math} - :label: EqSS_HHeul_bS - (\bar{c}_{j,E+S})^{-\sigma} = e^{-\sigma g_y}\chi^b_j(\bar{b}_{j,E+S+1})^{-\sigma} \quad\forall j - ``` - 6. Determine from the quantity of the composite consumption good consumed by each household, $\bar{c}_{j,s}$, use equation {eq}`EqHH_cmDem` to determine consumption of each output good, $\bar{c}_{m,j,s}$ - 7. Using $\bar{c}_{m,j,s}$ in {eq}`EqCmt`, solve for aggregate consumption of each output good, $\bar{C}_{m}$ - 8. Given values for $\bar{n}_{j,s}$ and $\bar{b}_{j,s+1}$ for all $j$ and $s$, solve for steady-state labor supply, $\bar{L}$, savings, $\bar{B}$ - 1. Use $\bar{n}_{j,s}$ and the steady-state version of the stationarized labor market clearing equation {eq}`EqStnrzMarkClrLab` to get a value for $\bar{L}^{i}$. - - ```{math} - :label: EqSS_MarkClrLab - \bar{L} = \sum_{s=E+1}^{E+S}\sum_{j=1}^{J} \bar{\omega}_{s}\lambda_j e_{j,s}\bar{n}_{j,s} - ``` - 2. Use $\bar{b}_{j,s+1}$ and the steady-state version of the stationarized expression for total savings by domestic households {eq}`EqStnrz_Bt`to solve for $\bar{B}$. - - ```{math} - :label: EqSS_Bt - \bar{B} \equiv \frac{1}{1 + \bar{g}_{n}}\sum_{s=E+2}^{E+S+1}\sum_{j=1}^{J}\Bigl(\bar{\omega}_{s-1}\lambda_j\bar{b}_{j,s} + i_s\bar{\omega}_{s}\lambda_j\bar{b}_{j,s}\Bigr) - ``` - 9. Solve for the exogenous government interest rate $\bar{r}_{gov}^{i}$ using equation {eq}`EqUnbalGBC_rate_wedge`. - 10. Use {eq}`EqStnrzTfer` to find $\bar{Y}^i$ from the guess of $\overline{TR}^i$ - 11. Use {eq}`EqStnrz_DY` to find $\bar{D}^i$ from $\bar{Y}^i$ - 12. Using $\bar{D}^i$, we can find foreign investor holdings of debt, $\bar{D}^{f,i}$ from {eq}`EqMarkClr_zetaD2` and then solve for domestic debt holdings through the debt market clearing condition: $\bar{D}^{d,i} = \bar{D}^i - \bar{D}^{f,i}$ - 13. Using $\bar{Y}^i$, find government infrastructure investment, $\bar{I}_{g}$ from {eq}`EqStnrz_Igt` - 14. Using the law of motion of the stock of infrastructure, {eq}`EqStnrz_Kgmt`, and $\bar{I}_{g}$, solve for $\bar{K}_{g}^{i}$ - 15. Find output and factor demands for M-1 industries: - 1. By {eq}`EqMarkClrGoods_Mm1`, $\hat{Y}_{m,t}=\hat{C}_{m,t}$, where $\hat{C}_{m,t}$ is determined by {eq}`EqStnrzEqCmt` - 2. The capital-output ratio can be determined from the FOC for the firms' choice of capital: $\frac{\bar{K}_m}{\bar{Y}_m} = \gamma_m\left[\frac{\bar{r} +\bar{\delta}_M - \bar{\tau}^{corp}_m\bar{\delta}^{\tau}_m - \bar{\tau}^{inv}_m\bar{\delta}_M}{\left(1 - \bar{\tau}^{corp}_m\right)\bar{p}_m(\bar{Z}_m)^\frac{\varepsilon_m-1}{\varepsilon_m}}\right]^{-\varepsilon_m}$ - 3. Capital demand can thus be found: $\bar{K}_{m} = \frac{\bar{K}_m}{\bar{Y}_m} * \bar{Y}_m$ - 4. Labor demand can be found by inverting the production function: - ```{math} - :label: EqSS_solveL - \bar{L}_{m} = \left(\frac{\left(\frac{\bar{Y}_m}{\bar{Z}_m}\right)^{\frac{\varepsilon_m-1}{\varepsilon_m}} - \gamma_{m}^{\frac{1}{\varepsilon_m}}\bar{K}_m^{\frac{\varepsilon_m-1}{\varepsilon_m}} - \gamma_{g,m}^{\frac{1}{\varepsilon_m}}\bar{K}_{g,m}^{\frac{\varepsilon_m-1}{\varepsilon_m}}}{(1-\gamma_m-\gamma_{g,m})^{\frac{1}{\varepsilon_m}}}\right)^{\frac{\varepsilon_m}{\varepsilon_m-1}} - ``` - 5. Use the steady-state world interest rate $\bar{r}^*$ and labor demand $\bar{L}_m$ to solve for private capital demand at the world interest rate $\bar{K}_m^{r^*}$ using the steady-state version of {eq}`EqFirmsMPKg_opt` - - ```{math} - :label: EqSS_MPKg - \bar{K}_m^{r^*} = \bar{L}_m\left(\frac{\bar{w}}{\frac{\bar{r} + \bar{\delta}_M - \bar{\tau}^{corp}_m\bar{\delta}^{\tau}_m - \bar{\tau}^{inv}_m\bar{\delta}_M}{1 - \bar{\tau}^{corp}_m}}\right)^{\varepsilon_m} \frac{\gamma_m}{(1 - \gamma_m - \gamma_{g,m})} - ``` - - 16. Determine factor demands and output for industry $M$: - 1. $\bar{L}_M = \bar{L} - \sum_{m=1}^{M-1}\bar{L}_{m}$ - 2. Find $\bar{K}_m^{r^*}$ using the steady-state version of {eq}`EqFirmsMPKg_opt` - 3. Find total capital supply, and the split between that from domestic and foreign households: $\bar{K}^{i'}$, $\bar{K}^d$, $\bar{K}^f$: - 1. We then use this to find foreign demand for domestic capital from {eq}`eq_foreign_cap_demand`: $\bar{K}^{f} = \bar{\zeta}_{K}\sum_{m=1}^{M}\bar{K}_m^{r^*}$ - 2. Using $\bar{D}^{d,i}$ we can then find domestic investors' holdings of private capital as the residual from their total asset holdings: , $\bar{K}^{d,i} = \bar{B}^i - \bar{D}^{d,i}$ - 3. Aggregate capital supply is then determined as $\bar{K}^{i'} = \bar{K}^{d,i} + \bar{K}^{f,i}$. - 4. $\bar{K}_M = \bar{K}^{i'} - \sum_{m=1}^{M-1}\bar{K}_{m}$ - 5. Use the factor demands and $\bar{K}_g$ in the production function for industry $M$ to find $\bar{Y}_M$. - 17. Find an updated value for GDP, $\bar{Y}^{i'} = \sum_{m=1}^{M} \bar{p}_m \bar{Y}_m$. - 18. Find a updated values for $\bar{I}_{g}$ and $\bar{K}_g$ using $\bar{Y}^{i'}$, equations {eq}`EqStnrz_Igt` and {eq}`EqStnrz_Kgmt` -3. Given updated inner-loop values based on initial guesses for outer-loop variables $\{\bar{r}_p^i, \bar{r}^i, \bar{w}^i, \boldsymbol{\bar{p}}, \overline{BQ}^i, \overline{TR}^i, factor^i\}$, solve for updated values of outer-loop variables $\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\}$ using the remaining equations: - - 1. Use $\bar{Y}_M^{i'}$ and $\bar{K}_M^{i'}$ in {eq}`EqStnrzFOC_K` to solve for updated value of the rental rate on private capital $\bar{r}^{i'}$. - 2. Use $\bar{Y}_M^{i'}$ and $\bar{L}_M^{i}$ in {eq}`EqStnrzFOC_L` to solve for updated value of the wage rate $\bar{w}^{i'}$. - 3. Use $\bar{r}^{i'}$ in equations {eq}`EqUnbalGBC_rate_wedge` to get $\bar{r}_{gov}^{i'}$ - 4. Use $\bar{K}_g^{i'}$ and $\bar{Y}^{i''}$ in {eq}`EqFirmsMPKg_opt` for each industry $m$ to solve for the value of the marginal product of government capital in each industry, $\overline{MPK}_{g,m}^{i'}$ - 5. Use $\boldsymbol{\overline{MPK}}_g^{i'}$, $\bar{r}^{i'}$, $\bar{r}_{gov}^{i'}$, $\bar{D}^{i'}$, and $\bar{K}^{i'}$ to find the return on the households' investment portfolio, $\bar{r}_{p}^{i'}$ - 6. Use $\bar{Y}_m$, $\bar{L}_m$ in {eq}`EqStnrzFOC_L` to solve for the updates vector of prices, $\boldsymbol{\bar{p}}^{i'}$ - 7. Use $\bar{r}_{p}^{i'}$ and $\bar{b}_{j,s}$ in {eq}`EqStnrzMarkClrBQ` to solve for updated aggregate bequests $\overline{BQ}^{i'}$. - 8. Use $\bar{Y}^{i'}$ in the long-run aggregate transfers assumption {eq}`EqStnrzTfer` to get an updated value for total transfers to households $\overline{TR}^{i'}$. - 9. Use $\bar{r}^{i'}$, $\bar{r}_{p}^{i}$, $\bar{w}^{i'}$, $\bar{n}_{j,s}$, and $\bar{b}_{j,s+1}$ in equation {eq}`EqSS_factor` to get an updated value for the income factor $factor^{i'}$. - - ```{math} - :label: EqSS_factor - factor^{i'} = \frac{\text{Avg. household income in data}}{\text{Avg. household income in model}} = \frac{\text{Avg. household income in data}}{\sum_{s=E+1}^{E+S}\sum_{j=1}^J \lambda_j\bar{\omega}_s\left(\bar{r}_{p}^{i'}\bar{b}_{j,s} + \bar{w}^{i'} e_{j,s}\bar{n}_{j,s}\right)} \quad\forall t - ``` - -4. If the updated values of the outer-loop variables $\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\}$ are close enough to the initial guess for the outer-loop variables $\{\bar{r}_p^i, \bar{r}^i, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^i, \overline{TR}^i, factor^i\}$ then the fixed point is found and the steady-state equilibrium is the fixed point solution. If the outer-loop variables are not close enough to the initial guess for the outer-loop variables, then update the initial guess of the outer-loop variables $\{\bar{r}_p^{i+1}, \bar{r}^{i+1}, \bar{w}^{i+1}, \boldsymbol{\bar{p}}^{i+1}, \overline{BQ}^{i+1}, \overline{TR}^{i+1}, factor^{i+1}\}$ as a convex combination of the first initial guess $\{\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\}$ and the updated values $\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\}$ and repeat steps (2) through (4). - - 1. Define a tolerance $toler_{ss,out}$ and a distance metric $\left\lVert\,\cdot\,\right\rVert$ on the space of 5-tuples of outer-loop variables $\{\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\}$. If the distance between the original guess for the outer-loop variables and the updated values for the outer-loop variables is less-than-or-equal-to the tolerance value, then the steady-state equilibrium has been found and it is the fixed point values of the variables at this point in the iteration. - - ```{math} - :label: EqSS_toldistdone - & \left\lVert\left(\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\right) - \left(\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\right)\right\rVert \\ - &\qquad \leq toler_{ss,out} - ``` - - 1. Make sure that steady-state government spending is nonnegative $\bar{G}\geq 0$. If steady-state government spending is negative, that means the government is getting resources to supply the debt from outside the economy each period to stabilize the debt-to-GDP ratio. $\bar{G}<0$ is a good indicator of unsustainable policies. - 1. Make sure that the resource constraint (goods market clearing) {eq}`EqStnrzMarkClrGoods_M` is satisfied. It is redundant, but this is a good check as to whether everything worked correctly. - 2. Make sure that the government budget constraint {eq}`EqStnrzGovBC` binds. - 3. Make sure that all the $2JS$ household Euler equations are solved to a satisfactory tolerance. - - 2. If the distance metric of the original value of the outer-loop variables and the updated values is greater than the tolerance $toler_{ss,out}$, then an updated initial guess for the outer-loop variables is made as a convex combination of the first guess and the updated guess and steps (2) through (4) are repeated. - - 1. The distance metric not being satisfied is the following condition. - - ```{math} - :label: EqSS_toldistrepeat - &\left\lVert\left(\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\right) - \left(\bar{r}_p^{i}, (\bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\right)\right\rVert \\ - &\qquad > toler_{ss,out} - ``` - - 2. If the distance metric is not satisfied {eq}`EqSS_toldistrepeat`, then an updated initial guess for the outer-loop variables $\{\bar{r}_p^{i+1}, \bar{r}^{i+1}, \bar{w}^{i+1}, \boldsymbol{\bar{p}}^{i+1}, \overline{BQ}^{i+1}, \overline{TR}^{i+1}, factor^{i+1}\}$ is made as a convex combination of the previous initial guess $\{\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\}$ and the updated values based on the previous initial guess $\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\}$ and repeats steps (2) through (4) with this new initial guess. The parameter $\xi_{ss}\in(0,1]$ governs the degree to which the new guess $i+1$ is close to the updated guess $i'$. - - ```{math} - :label: EqSS_updateguess - & \left(\bar{r}_p^{i+1}, \bar{r}^{i+1}, \bar{w}^{i+1}, \boldsymbol{\bar{p}}^{i+1}, \overline{BQ}^{i+1}, \overline{TR}^{i+1}, factor^{i+1}\right) = ... \\ - &\qquad \xi_{ss}\left(\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \boldsymbol{\bar{p}}^{i'}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\right) + ... \\ - &\qquad(1-\xi_{ss})\left(\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \boldsymbol{\bar{p}}^{i}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\right) - ``` - - 3. Because the outer loop of the steady-state solution has $M-1+6$ variables, there are $M+5$ functions to minimize or set to zero. We use a root-finder and its corresponding Newton method for the updating the guesses of the outer-loop variables because it works well and is faster than the bisection method described in the previous step. The `OG-Core` code has the option to use either the bisection method or the root fining method to updated the outer-loop variables. The root finding algorithm is generally faster but is less robust than the bisection method in the previous step. - -Under alternative model configurations, the solution algorithm changes slightly. For example, when `baseline = False`, one need not solve for the $factor$, as it is determined in the baseline model solution. When `budget_balance = True`, the guess of $\overline{TR}$ in the outer loop is replaced by the guess of $\bar{Y}$ and transfers are determined a residual from the government budget constraint given revenues and other spending policy. When `baseline_spending = True`, $\overline{TR}$ is determined from the baseline model solution and not updated in the outer loop described above. In this case, $\bar{Y}$ becomes an outer loop variable. - -(SecSSeqlbResults)= -### Steady-state results: default specification - - [TODO: Update the results in this section.] In this section, we use the baseline calibration described in Chapter {ref}`Chap_Calibr`, which includes the baseline tax law from `Tax-Calculator`, to show some steady-state results from `OG-Core`. Figures {numref}`FigSSeqlbHHcons`, {numref}`FigSSeqlbHHlab`, and {numref}`FigSSeqlbHHsave` show the household steady-state variables by age $s$ and lifetime income group $j$. - - ```{figure} ./images/HHcons_SS.png - --- - height: 500px - name: FigSSeqlbHHcons - --- - Consumption $c_{j,s}$ by age $s$ and lifetime income group $j$ - ``` - - ```{figure} ./images/HHlab_SS.png - --- - height: 500px - name: FigSSeqlbHHlab - --- - Labor supply $n_{j,s}$ by age $s$ and lifetime income group $j$ - ``` - - ```{figure} ./images/HHsav_SS.png - --- - height: 500px - name: FigSSeqlbHHsave - --- - Savings $b_{j,s}$ by age $s$ and lifetime income group $j$ - ``` - - {numref}`TabSSeqlbAggrVars` lists the steady-state prices and aggregate variable values along with some of the maximum error values from the characterizing equations. - - ```{list-table} **Steady-state prices, aggregate variables, and maximum errors** - :header-rows: 1 - :name: TabSSeqlbAggrVars - * - Variable - - Value - - Variable - - Value - * - $\bar{r}$ - - 0.630 - - $\bar{w}$ - - 1.148 - * - $\bar{Y}$ - - 0.630 - - $\bar{C}$ - - 0.462 - * - $\bar{I}$ - - 0.144 - - $\bar{K}$ - - 1.810 - * - $\bar{L}$ - - 0.357 - - $\bar{B}$ - - 2.440 - * - $\overline{BQ}$ - - 0.106 - - $factor$ - - 141,580 - * - $\overline{Rev}$ - - 0.096 - - $\overline{TR}$ - - 0.057 - * - $\bar{G}$ - - 0.023 - - $\bar{D}$ - - 0.630 - * - Max. abs. labor supply Euler error - - 4.57e-13 - - Max. abs. savings Euler error - - 8.52e-13 - * - Resource constraint error - - -4.39e-15 - - Serial computation time - - 1 hr. 25.9 sec. - ``` - - The steady-state computation time does not include any of the exogenous parameter computation processes, the longest of which is the estimation of the baseline tax functions which computation takes 1 hour and 15 minutes. - - -(SecNSSeqlb)= -## Stationary Non-Steady-State Equilibrium - - In this section, we define the stationary non-steady-state equilibrium of the `OG-Core` model. Chapters {ref}`Chap_House` through {ref}`Chap_MarkClr` derive the equations that characterize the equilibrium of the model in their non-stationarized form. And chapter {ref}`Chap_Stnrz` derives the stationarized versions of the characterizing equations. The steady-state equilibrium definition in Section {ref}`SecEqlbSSdef` defines the long-run equilibrium where the economy settles down after many periods. The non-steady-state equilibrium in this section describes the equilibrium in all periods from the current period to the steady-state. We will need the steady-state solution from Section {ref}`SecSSeqlb` to solve for the non-steady-state equilibrium transition path. - - -(SecEqlbNSSdef)= -### Stationary Non-Steady-State Equilibrium Definition - - We define a stationary non-steady-state equilibrium as the following. - - ```{admonition} **Definition: Stationary Non-steady-state functional equilibrium** - :class: note - A non-autarkic non-steady-state functional equilibrium in the `OG-Core` model is defined as stationary allocation functions of the state $\bigl\{n_{j,s,t} = \phi_{j,s}\bigl(\boldsymbol{\hat{\Gamma}}_t\bigr)\bigr\}_{s=E+1}^{E+S}$ and $\bigl\{\hat{b}_{j,s+1,t+1}=\psi_{j,s}\bigl(\boldsymbol{\hat{\Gamma}}_t\bigr)\bigr\}_{s=E+1}^{E+S}$ for all $j$ and $t$ and stationary price functions $\hat{w}(\boldsymbol{\hat{\Gamma}}_t)$, $r(\boldsymbol{\hat{\Gamma}}_t)$, and $\boldsymbol{p}(\boldsymbol{\hat{\Gamma}}_t)$ for all $t$ such that: - - 1. Households have symmetric beliefs $\Omega(\cdot)$ about the evolution of the distribution of savings as characterized in {eq}`EqBeliefs`, and those beliefs about the future distribution of savings equal the realized outcome (rational expectations), - - $$ - \boldsymbol{\hat{\Gamma}}_{t+u} = \boldsymbol{\hat{\Gamma}}^e_{t+u} = \Omega^u\left(\boldsymbol{\hat{\Gamma}}_t\right) \quad\forall t,\quad u\geq 1 - $$ - - 2. Households optimize according to {eq}`EqStnrz_eul_n`, {eq}`EqStnrz_eul_b`, and {eq}`EqStnrz_eul_bS`, - 3. Firms optimize according to {eq}`EqStnrzFOC_L` and {eq}`EqStnrzFOC_K`, - 4. Government activity behaves according to {eq}`EqUnbalGBC_rate_wedge`, {eq}`EqStnrzGovBC`, {eq}`EqStnrz_rate_p`, and {eq}`EqStnrzClosureRule_Gt`, and - 5. Markets clear according to {eq}`EqStnrzMarkClrGoods_Mm1`, {eq}`EqStnrzMarkClrLab`, {eq}`EqStnrz_DtDdDf`, {eq}`EqStnrz_KtKdKf`, and {eq}`EqStnrzMarkClrBQ`. - - ``` - - -(SecEqlbNSSsoln)= -### Stationary non-steady-state solution method - -This section describes the computational algorithm for the solution method for the stationary non-steady-state equilibrium described in the {ref}`SecEqlbNSSdef`. The default specification of the model is the baseline specification (`baseline = True`) in which the government can run deficits and surpluses (`budget_balance = False`), in which the economy is a large partially open economy [$\zeta_D,\zeta_K\in(0,1)$], and in which baseline government spending $G_t$ and transfers $TR_t$ are not held constant until the closure rule (`baseline_spending = False`). We describe the algorithm for this model configuration below and follow that with a description of how it is modified for alternative configurations. - -The computational algorithm for the non-steady-state solution follows similar steps to the steady-state solution described in Section {ref}`SecEqlbSSsoln`. There is an outer-loop of guessed values of macroeconomic variables $\{r_{p,t}, r_t, w_t, \boldsymbol{p}_t, BQ_t, TR_t\}$, but in this case, we guess the entire transition path of those variables. Then we solve the inner loop of mostly microeconomic variables for the whole transition path (many generations of households), given the outer-loop guesses. We iterate between these steps until we find a fixed point. - -We call this solution algorithm the time path iteration (TPI) method or transition path iteration. This method was originally outlined in a series of papers between 1981 and 1985 [^citation_note] and in the seminal book {cite}`AuerbachKotlikoff:1987` [Chapter 4] for the perfect foresight case and in {cite}`NishiyamaSmetters:2007` Appendix II and {cite}`EvansPhillips:2014`[Sec. 3.1] for the stochastic case. The intuition for the TPI solution method is that the economy is infinitely lived, even though the agents that make up the economy are not. Rather than recursively solving for equilibrium policy functions by iterating on individual value functions, one must recursively solve for the policy functions by iterating on the entire transition path of the endogenous objects in the economy (see {cite}`StokeyLucas1989` [Chapter 17]). - -The key assumption is that the economy will reach the steady-state equilibrium $\boldsymbol{\bar{\Gamma}}$ described in {ref}`SecEqlbSSdef` in a finite number of periods $T<\infty$ regardless of the initial state $\boldsymbol{\hat{\Gamma}}_1$. The first step in solving for the non-steady-state equilibrium transition path is to solve for the steady-state using the method described in Section {ref}`SecEqlbSSsoln`. After solving for the steady-state, one must then find a fixed point over the entire time path or transition path of endogenous objects that satisfies the characterizing equilibrium equations in every period. - -The stationary non-steady state (transition path) solution algorithm has following steps. - -1. Use the techniques from Section {ref}`SecDemogPopSSTP` to solve for the transition path of the stationarized population distribution matrix $\{\hat{\omega}_{s,t}\}_{s,t=E+1,1}^{E+S,T}$ and population growth rate vector $\{\tilde{g}_{n,t}\}_{t=1}^T$ of the exogenous population process. - -2. Compute the steady-state solution $\{\bar{n}_{j,s},\bar{b}_{j,s+1}\}_{s=E+1}^{E+S}$ corresponding to {ref}`SecEqlbSSdef` with the {ref}`SecEqlbSSsoln`. - -3. Given initial state of the economy $\boldsymbol{\hat{\Gamma}}_1$ and steady-state solutions $\{\bar{n}_{j,s},\bar{b}_{j,s+1}\}_{s=E+1}^{E+S}$, guess transition paths of outer-loop macroeconomic variables $\{\boldsymbol{r}_p^i, \boldsymbol{r}^i, \boldsymbol{\hat{w}}^i, \boldsymbol{p}^i, \boldsymbol{\hat{BQ}}^i,\boldsymbol{\hat{TR}}^i\}$ such that $\hat{BQ}_1^i$ is consistent with $\boldsymbol{\hat{\Gamma}}_1$ and $\{r_{p,t}^i, r_t^i, \hat{w}_t^i, \boldsymbol{p}_t^i, \hat{BQ}_t^i, \hat{TR}_t^i\} = \{\bar{r}_p, \bar{r}, \bar{w}, \boldsymbol{\bar{p}}_t, \overline{BQ}, \overline{TR}\}$ for all $t\geq T$. We also make an initial guess regarding the amount of government debt in each period, $\boldsymbol{\hat{D}}^i$. This will not enter the ``outer loop'' variables, but is helpful in the first pass through the time path iteration algorithm. - - 1. If the economy is assumed to reach the steady state by period $T$, then we must be able to solve for every cohort's decisions in period $T$ including the decisions of agents in their first period of economically relevant life $s=E+S$. This means we need to guess time paths for the outer-loop variables that extend to period $t=T+S$. However, the values of the time path of outer-loop variables for every period $t\geq T$ are simply equal to the steady-state values. -4. Using {eq}`Eq_tr` with $\boldsymbol{\hat{TR}}^{\,i}$, find transfers to each household, $\boldsymbol{\hat{tr}}_{j,s}^i$ -5. Using the bequest transfer process, {eq}`Eq_bq` and aggregate bequests, $\boldsymbol{\hat{BQ}}^{\,i}$, find $\boldsymbol{\hat{bq}}_{j,s}^i$ -6. Given time path guesses $\{\boldsymbol{r}_p^i, \boldsymbol{\hat{w}}^i, \boldsymbol{p}^i, \boldsymbol{\hat{bq}}^i, \boldsymbol{\hat{tr}}^i\}$, we can solve for each household's lifetime decisions $\{n_{j,s,t},\hat{b}_{j,s+1,t+1}\}_{s=E+1}^{E+S}$ for all $j$, $E+1\leq s \leq E+S$, and $1\leq t\leq T_2+S-1$. - 1. Given $\boldsymbol{p}^i$ find the price of consumption goods using {eq}`EqHH_pi2` - 2. From price of consumption goods, determine the price of the composite consmpution good, $\bar{p}$ using equation {eq}`EqCompPnorm2` - 3. The household problem can be solved with a multivariate root finder solving the $2S$ equations and unknowns at once for each $j$ and $1\leq t\leq T+S-1$. The root finder uses $2S$ household Euler equations {eq}`EqStnrz_eul_n`, {eq}`EqStnrz_eul_b`, and {eq}`EqStnrz_eul_bS` to solve for each household's $2S$ lifetime decisions. The household decision rules for each type and birth cohort are solved separately. - 4. After solving the first iteration of time path iteration, subsequent initial values for the $J$, $2S$ root finding problems are based on the solution in the prior iteration. This speeds up computation further and makes the initial guess for the highly nonlinear system of equations start closer to the solution value. -7. Determine from the quantity of the composite consumption good consumed by each household, $\hat{c}_{j,s,t}$, use equation {eq}`EqHH_cmDem` to determine consumption of each output good, $\hat{c}_{m,j,s,t}$ -8. Using $\hat{c}_{m,j,s,t}$ in {eq}`EqCmt`, solve for aggregate consumption of each output good, $\hat{C}_{m,t}$ -9. Given values for $n_{j,s,t}$ and $\hat{b}_{j,s+1,t+1}$ for all $j$, $s$, and $t$, solve for aggregate labor supply, $\hat{L}_t$, and savings, $B_t$ in each period - 1. Use $n_{j,s,t}$ and the stationarized labor market clearing equation {eq}`EqStnrzMarkClrLab` to get a value for $\hat{L}_t^{i}$. - 2. Use $\hat{b}_{j,s+1,t+1}$ and the stationarized expression for total savings by domestic households {eq}`EqStnrz_Bt`to solve for $\hat{B}_t^i$. -10. Solve for the exogenous government interest rate $r_{gov,t}^{i}$ using equation {eq}`EqUnbalGBC_rate_wedge`. -11. Use {eq}`EqStnrzTfer` to find $\hat{Y}_t^i$ from the guess of $\hat{TR}_t^i$ -12. Using the path of output from each industry, $\hat{Y}_{m,t}$, and the household savings and labor supply decisions, $\{n_{j,s,t},\hat{b}_{j,s+1,t+1}\}_{s=E+1}^{E+S}$, compute the path of stationarizaed total tax revenue, $\hat{Revenue}_{t}^{i}$. -13. Using the long-run debt-to-GDP ratio, the path of GDP, $\hat{Y}_t^i$, the path of total tax revenue, $\hat{Revenue}_{t}^{i}$, government transfers, $\hat{TR}_t^i$, infrastructure investment, $\hat{I}_{g,t}^i$, and Equation {eq}`EqUnbalGBCclosure_Gt`, find the path of stationarized government debt, $\hat{D}_{t}^{i'}$ for all $t$. -14. Using $\hat{D}_t^i$, we can find foreign investor holdings of debt, $\hat{D}_t^{f,i}$ from {eq}`EqMarkClr_zetaD2` and then solve for domestic debt holdings through the debt market clearing condition: $\hat{D}_t^{d,i} = \bar{D}_t^i - \bar{D}_t^{f,i}$ -15. Using $\hat{Y}_t^i$, find government infrastructure investment, $\hat{I}_{g,t}$ from {eq}`EqStnrz_Igt` -16. Using the law of motion of the stock of infrastructure, {eq}`EqStnrz_Kgmt`, and $\hat{I}_{g,t}$, solve for $\hat{K}_{g,t}^{i}$ -17. Find output and factor demands for M-1 industries: - 1. By {eq}`EqMarkClrGoods_Mm1`, $\hat{Y}_{m,t}=\hat{C}_{m,t}$, where $\hat{C}_{m,t}$ is determined by {eq}`EqStnrzEqCmt` - 2. The capital-output ratio can be determined from the FOC for the firms' choice of capital: $\frac{\hat{K}_{m,t}}{\hat{Y}_{m,t}} = \gamma_m\left[\frac{r_t + \delta_{M,t} - \tau^{corp}_{m,t}\delta^{\tau}_{m,t} - \tau^{inv}_{m,t}\delta_{M,t}}{(1-\tau^{corp}_{m,t})p_{m,t}({Z}_{m,t})^\frac{\varepsilon_m -1}{\varepsilon_m}}\right]^{-\varepsilon_m}$ - 3. Capital demand can thus be found: $\hat{K}_{m,t} = \frac{\hat{K}_{m,t}}{\hat{Y}_{m,t}} * \hat{Y}_{m,t}$ - 4. Labor demand can be found by inverting the production function: - ```{math} - :label: EqTPI_solveL - \hat{L}_{m,t} = \left(\frac{\left(\frac{\hat{Y}_{m,t}}{Z_{m,t}}\right)^{\frac{\varepsilon_m-1}{\varepsilon_m}} - \gamma_{m}^{\frac{1}{\varepsilon_m}}\hat{K}_{m,t}^{\frac{\varepsilon_m-1}{\varepsilon_m}} - \gamma_{g,m}^{\frac{1}{\varepsilon_m}}\hat{K}_{g,m,t}^{\frac{\varepsilon_m-1}{\varepsilon_m}}}{(1-\gamma_m-\gamma_{g,m})^{\frac{1}{\varepsilon_m}}}\right)^{\frac{\varepsilon_m}{\varepsilon_m-1}} - ``` - 5. Use the interest rate $r_t^*$ and labor demand $\hat{L}_{m,t}$ to solve for private capital demand at the world interest rate $\hat{K}_{m,t}^{r^*}$ using {eq}`EqFirmsMPKg_opt` - ```{math} - :label: EqTP_MPKg - \hat{K}_{m,t}^{r^*} = \hat{L}_{m,t}\left(\frac{\hat{w}_t}{\frac{r_t + \delta_{M,t} - \tau^{corp}_{m,t}\delta^{\tau}_{m,t} - \tau^{inv}_{m,t}\delta_{M,t}}{1 - \bar{\tau}_{m,t}^b}}\right)^{\varepsilon_m} \frac{\gamma_m}{(1 - \gamma_m - \gamma_{g,m})} - ``` - -18. Determine factor demands and output for industry $M$: - 1. $\hat{L}_{M,t} = \hat{L}_t - \sum_{m=1}^{M-1}\hat{L}_{m,t}$ - 2. Find $\hat{K}_{m,t}^{r^*}$ using {eq}`EqFirmsMPKg_opt` - 3. Find total capital supply, and the split between that from domestic and foreign households: $\hat{K}_t^{i'}$, $\hat{K}_t^d$, $\hat{K}_t^f$: - 4. We then use this to find foreign demand for domestic capital from {eq}`eq_foreign_cap_demand`: $\hat{K}_t^{f} = \zeta_{K,t}\sum_{m=1}^{M}\hat{K}_{m,t}^{r^*}$ - 5. Using $\hat{D}_t^{d,i}$ we can then find domestic investors' holdings of private capital as the residual from their total asset holdings: , $\hat{K}_t^{d,i} = \hat{B}_t^i - \hat{D}_t^{d,i}$ - 6. Aggregate capital supply is then determined as $\hat{K}_t^{i'} = \hat{K}_t^{d,i} + \hat{K}_t^{f,i}$. - 7. $\hat{K}_{M,t} = \hat{K}_t^{i'} - \sum_{m=1}^{M-1}\hat{K}_{m,t}$ - 8. Use the factor demands and $\hat{K}_{g,t}$ in the production function for industry $M$ to find $\hat{Y}_{M,t}$ -19. Find an updated path for GDP, $\hat{Y}_t^{i'} = \sum_{m=1}^{M} p_{m,t} \hat{Y}_{m,t}$ -20. Find a updated path for $\hat{I}_{g,t}$ and $\hat{K}_{g,t}$ using $\hat{Y}_t^{i'}$, equations {eq}`EqStnrz_Igt` and {eq}`EqStnrz_Kgmt` -21. Given updated inner-loop values based on initial guesses for outer-loop variables $\{r_{p,t}^i, r_t^i, \hat{w}_t^i, \boldsymbol{p}_t, \hat{BQ}_t^i, \hat{TR}_t^i\}$, solve for updated values of outer-loop variables $\{r_{p,t}^{i'}, r_t^{i'}, \hat{w}_t^{i'}, \boldsymbol{p}_t^{i'}, \hat{BQ}_t^{i'}, \hat{TR}_t^{i'}\}$ using the remaining equations (for all periods $t$ in the transition path): - - 1. Use $\hat{Y}_{M,t}^{i'}$ and $\hat{K}_{M,t}^{i'}$ in {eq}`EqStnrzFOC_K` to solve for updated value of the rental rate on private capital $r_t^{i'}$. - 2. Use $\hat{Y}_{M,t}^{i'}$ and $\hat{L}_{M,t}^{i}$ in {eq}`EqStnrzFOC_L` to solve for updated value of the wage rate $\hat{w}_t^{i'}$. - 3. Use $r_t^{i'}$ in equations {eq}`EqUnbalGBC_rate_wedge` to get $r_{gov,t}^{i'}$ - 4. Use $\hat{K}_{g,t}^{i'}$ and $\hat{Y}_t^{i''}$ in in {eq}`EqFirmsMPKg_opt` for each industry $m$ to solve for the value of the marginal product of government capital in each industry, $MPK_{g,m,t}^{i'}$ - 5. Use $\boldsymbol{MPK}_{g,t}^{i'}$, $r_t^{i'}$, $r_{gov,t}^{i'}$, $\hat{D}_t^{i'}$, and $\hat{K}_t^{i'}$ to find the return on the households' investment portfolio, $r_{p,t}^{i'}$ - 6. Use $\hat{Y}_{m,t}$, $\hat{L}_{m,t}$ in {eq}`EqStnrzFOC_L` to solve for the updates vector of prices, $\boldsymbol{p}_t^{i'}$ - 7. Use $r_{p,t}^{i'}$ and $\hat{b}_{j,s,t}$ in {eq}`EqStnrzMarkClrBQ` to solve for updated aggregate bequests $\hat{BQ}_t^{i'}$. - 8. Use $\hat{Y}_t^{i'}$ in the aggregate transfers assumption {eq}`EqStnrzTfer` to get an updated value for total transfers to households $\hat{TR}_t^{i'}$. - -22. The updated values for the outer loop variables are then used to compute the percentage differences between the initial and implied values: - 1. $error_{r_p} = max\left\{\frac{r_{p,t}^{i'} - r_{p,t}^i}{r_{p,t}^i}\right\}_{t=0}^{T}$ - 2. $error_r = max\left\{\frac{r_{t}^{i'} - r_{t}^i}{r_{t}^i}\right\}_{t=0}^{T}$ - 3. $error_w = max\left\{\frac{\hat{w}_{t}^{i'} - \hat{w}_{t}^i}{\hat{w}_{t}^i}\right\}_{t=0}^{T}$ - 4. $error_p = max\left\{\frac{\boldsymbol{p}_{t}^{i'} - \boldsymbol{p}_{t}^i}{\boldsymbol{p}_{t}^i}\right\}_{t=0}^{T}$ - 5. $error_{bq} = max\left\{\frac{\hat{BQ}_{t}^{\,i'} - \hat{BQ}_{t}^{\,i}}{\hat{BQ}_{t}^{\,i}}\right\}_{t=0}^{T}$ - 6. $error_{tr} = \left\{\frac{\hat{TR}_{t}^{\,i'} - \hat{TR}_{t}^{\,i}}{\hat{TR}_{t}^{\,i}}\right\}_{t=0}^{T}$ - -23. If the maximum absolute error among the four outer loop error terms is greater than some small positive tolerance $toler_{tpi,out}$, $\max\big|\left(error_{r_p}, error_r, error_w, error_p, error_{bq},error_{tr}\right)\bigr| > toler_{tpi,out}$, then update the guesses for the outer loop variables as a convex combination governed by $\xi_{tpi}\in(0,1]$ of the respective initial guesses and the new implied values and repeat steps (3) through (5). - - $$ - &[\boldsymbol{r}_p^{i+1}, \boldsymbol{r}^{i+1}, \boldsymbol{\hat{w}}^{i+1}, \boldsymbol{p}^{i+1}, \boldsymbol{\hat{BQ}}^{i+1},\boldsymbol{\hat{TR}}^{i+1} ] = \\ - &\qquad \xi_{tpi}[\boldsymbol{r}_p^{i'}, \boldsymbol{r}^{i'}, \boldsymbol{\hat{w}}^{i'}, \boldsymbol{p}^{i'}, \boldsymbol{\hat{BQ}}^{i'},\boldsymbol{\hat{TR}}^{i'}] + ... \\ - &\qquad (1-\xi_{tpi})[\boldsymbol{r}_p^{i}, \boldsymbol{r}^{i}, \boldsymbol{\hat{w}}^{i}, \boldsymbol{p}^{i}, \boldsymbol{\hat{BQ}}^{i},\boldsymbol{\hat{TR}}^{i}] - $$ - -24. If the maximum absolute error among the M-1+5 outer loop error terms is less-than-or-equal-to some small positive tolerance $toler_{tpi,out}$ in each period along the transition path, $\max\big|\left(error_{r_p}, error_r, error_w, error_p, error_{bq},error_{tr}\right)\bigr| \leq toler_{tpi,out}$ then the non-steady-state equilibrium has been found. - - 1. Make sure that the resource constraint for industry $M$ (goods market clearing) {eq}`EqStnrzMarkClrGoods_M` is satisfied in each period along the time path. It is redundant, but this is a good check as to whether everything worked correctly. - 2. Make sure that the government budget constraint {eq}`EqStnrzGovBC` binds. - 3. Make sure that all the $(T+S)\times2JS$ household Euler equations are solved to a satisfactory tolerance. - -Under alternative model configurations, the solution algorithm changes slightly. When `budget_balance = True`, the guess of $\boldsymbol{\hat{TR}}$ in the outer loop is replaced by the guess of $\boldsymbol{\hat{Y}}$ and transfers are determined a residual from the government budget constraint given revenues and other spending policy. When `baseline_spending = True`, $\boldsymbol{\hat{TR}}$ is determined from the baseline model solution and not updated in the outer loop described above. In this case $\boldsymbol{\hat{Y}}$ becomes variable that is updates in the outer loop. +(SecCalibList)= +## Detail of parameters, data, and approaches for calibration -(SecNSSeqlbResults)= -### Baseline Non-steady-state Results -[TODO: Add baseline non-steady-state results here.] -(SecEqlbFootnotes)= +(SecCalibFootnotes)= ## Footnotes -[^citation_note]: See {cite}`AuerbachEtAl:1981,AuerbachEtAl:1983`, {cite}`AuerbachKotlikoff:1983a,AuerbachKotlikoff:1983b,AuerbachKotlikoff:1983c`, and {cite}`AuerbachKotlikoff:1985`. + From ba1f4d1fb5affb353c0ea8933ea5a6a362956fc6 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Thu, 26 Jan 2023 18:01:09 -0700 Subject: [PATCH 05/55] Updated _config.yml --- docs/book/_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/book/_config.yml b/docs/book/_config.yml index bda8f9386..638fb6b71 100644 --- a/docs/book/_config.yml +++ b/docs/book/_config.yml @@ -8,7 +8,7 @@ logo : '..//OG-Core_logo.png' #################################################### # Execution settings execute: - execute_notebooks : cache + execute_notebooks : force #################################################### # HTML-specific settings From 1e77a504ac2002c09d673fc375c8a6ece2501a44 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Fri, 27 Jan 2023 00:57:27 -0700 Subject: [PATCH 06/55] Updated _config.yml --- docs/book/_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/book/_config.yml b/docs/book/_config.yml index 638fb6b71..dd200c9d4 100644 --- a/docs/book/_config.yml +++ b/docs/book/_config.yml @@ -41,7 +41,7 @@ launch_buttons: # Information about where the book exists on the web repository: url : https://github.com/PSLmodels/OG-Core - path_to_book : 'book' + path_to_book : 'docs/book' ####################################################################################### # Advanced and power-user settings From 73c715c2f9758084344040f8c7736aa1c2fe71f7 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Sun, 29 Jan 2023 17:54:04 -0700 Subject: [PATCH 07/55] Updated calibration.md --- docs/book/content/theory/calibration.md | 100 +++++++++++++++++++++--- 1 file changed, 87 insertions(+), 13 deletions(-) diff --git a/docs/book/content/theory/calibration.md b/docs/book/content/theory/calibration.md index c7f0e081d..c69910f03 100644 --- a/docs/book/content/theory/calibration.md +++ b/docs/book/content/theory/calibration.md @@ -1,9 +1,9 @@ (Chap_Calib)= -# Calibrating OG-Core to a Country or Region +# Calibrating OG-Core The `OG-Core` model represents all the general model solution code for any overlapping generations model of a country or region. Although `OG-Core` has a `default_parameters.json` file that allows it to run independently, the preferred method for using `OG-Core` is as a dependency to a country calibration repository. We recommend that another repository is made, such as [`OG-USA`](https://github.com/PSLmodels/OG-USA) or [`OG-ZAF`](https://github.com/EAPD-DRB/OG-ZAF/) that uses `OG-Core` as its main computational foundation and engine and calibrates country-specific variables and functions in its own respective source code. This approach results in a working overlapping generations model consisting of a country-specific calibration repository plus a dependency on the general `OG-Core` model logic and options. -{numref}`TabCountryModels` is a list of country-specific calibrations of overlapping generations models that use `OG-Core` as a dependency from oldest to newest. Note that these models are in varying stages of completeness and maturity. It is true that a model is never really fully calibrated. The modeler is always updating calibrated values as new data become available. And the modeler can always search for better fit and better targeting strategies. As such, the only measures of model maturity of the country calibrations below is the data the repository was created and whether or not the example run script runs completely through baseline and reform steady-state and transition-path equilibrium computation. +{numref}`TabCountryModels` is a list of country-specific calibrations of overlapping generations models that use `OG-Core` as a dependency from oldest to newest. Note that these models are in varying stages of completeness and maturity. It is true that a model is never really fully calibrated. The model maintainer is always updating calibrated values as new data become available. And the modele maintainer can always search for better fit and better targeting strategies. As such, the only measures of model maturity of the country calibrations below is the date the repository was created. ```{list-table} **Country-specific calibrated OG models based on OG-Core.** :header-rows: 1 @@ -13,37 +13,31 @@ The `OG-Core` model represents all the general model solution code for any overl - **GitHub repo** - **Documentation** - **Date created** - - **Example script runs** * - United States - `OG-USA` - https://github.com/PSLmodels/OG-USA - https://pslmodels.github.io/OG-USA - - 2014-May-25 - - Yes + - May 25, 2014 * - United Kingdom - `OG-UK` - https://github.com/PSLmodels/OG-UK - https://pslmodels.github.io/OG-UK - - 2021-Feb-14 - - No + - Feb. 14, 2021 * - India - `OG-IND` - https://github.com/Revenue-Academy/OG-IND - https://revenue-academy.github.io/OG-IND - - 2022-Jul-17 - - Yes + - Jul. 17, 2022 * - Malaysia - `OG-MYS` - https://github.com/Revenue-Academy/OG-MYS - - - 2022-Jul-17 - - Yes + - Jul. 17, 2022 * - South Africa - `OG-ZAF` - https://github.com/EAPD-DRB/OG-ZAF - https://eapd-drb.github.io/OG-ZAF - - 2022-Oct-09 - - Yes + - Oct. 9, 2022 ``` In the following section, we detail a list of items to calibrate for a country and what types of data and approaches might be available for those calibrations. Each of the country-specific models listed in {numref}`TabCountryModels` will have varying degrees of calibration maturity and futher varying degrees of documentation of their calibration. But the following section details all the areas where each of these models should be calibrated. @@ -52,7 +46,87 @@ In the following section, we detail a list of items to calibrate for a country a (SecCalibList)= ## Detail of parameters, data, and approaches for calibration +{numref}`TabCalibStrategy` shows the data and calibration strategies for each parameter and parameter area of the model. +```{list-table} **Areas, parameters, and data strategies for calibrating country- or region-specific OG model based on OG-Core.** +:header-rows: 1 +:name: TabCalibStrategy +* - **General item description** + - **Specific item description** + - **Data source** +* - Demographics + - Using UN population data + - Access to country demographics in UN Population Data Portal +* - Demographics + - Other data source + - Custom interface between OG model and other data source. Data source must have the number of people by age, fertility rates by age, mortality rates by age (age bins are suitable and interpolation can be used). +* - Macroeconomic parameters + - Capital share of income, private/sovereign interest rate spread, long-run growth rate, debt-to-GDP ratios, transfer spending to GDP, government spending on goods and services to GDP, foreign purchases of government debt + - Capital and Labor cost data by industry. Average private borrowing rate/corporate bond yields, GDP time series, publicly held government debt time series, government transfer program spending, government spending (total non-transfer and infrastructure spending separately) +* - Lifetime income profiles + - Approximate US profiles rescaled by Gini coefficient + - Gini coefficient for the country +* - Lifetime income profiles + - Estimate from micro data + - Individual panel data with earnings (wage, salaries, self-employment income before taxes), labor hours, and age (can impute labor hours if necessary) +* - Labor supply elasticities + - Constant + - Use existing estimates from the research literature. Or cross sectional or panel data with hours and wages. +* - Labor supply elasticities + - Age varying + - Use existing estimates from the research literature. Or cross sectional or panel data with hours and wages and age. +* - Bequest motive + - Bequest motive + - Data on bequests given and/or bequests received similar to the US Survey of Consumer Finances. Other forms of information could allow us to rescale the US bequest distribution to match some moment from the target country. +* - Rate of time preference + - Constant + - Research empiritcal literature +* - Rate of time preference + - Heterogeneous (match to MPCs and wealth distribution) + - Data on country marginal propensity to consume (e.g., US Consumer Expenditure Survey or PSID) and data on the distribution of wealth in the country +* - Composite consumption share parameters + - Stone-Geary sub-utility function + - Consumption by category data within the country (e.g., similar to the US Consumer Expenditure Survey) +* - Hand-to-mouth consumers + - Calibrated separately from savers + - Cross-sectional or panel data with measures of income, wealth, consumption +* - Link PIT microsimulation model, produces effective tax rates and marginal tax rates by total income (even better is has both labor income and capital income breakdown) + - PIT model has Python API + - Microsimulation model with Python API +* - Link PIT microsimulation model, produces effective tax rates and marginal tax rates by total income (even better is has both labor income and capital income breakdown) + - PIT model has command line interface + - Microsimulation model that can be executed from a terminal command line +* - Link PIT microsimulation model, produces effective tax rates and marginal tax rates by total income (even better is has both labor income and capital income breakdown) + - PIT model has another way to interact with it + - Microsimulation model is in another program like Excel that can be run with an executable or with other software +* - Consumption tax rates + - Single rate + - Average consumption tax rates (e.g., time series with total revenue from consumption taxes and time series on GDP/national income) +* - Consumption tax rates + - Product-specific rates + - Consumption tax rates by product or industry category +* - Public Pension system (exogenous retirement age) + - If one of [notional defined contribution, defined benefits, points system, US Social Security] + - Pension rules based on age, payout, retirement rules, spouse benefits +* - Public Pension system (exogenous retirement age) + - If pension system not mentioned above + - Pension rules based on age, payout, retirement rules, spouse benefits +* - Production functions by industry + - More than one industry + - Time series of capital and labor demand by industry, output by industry +* - Calibrate METRs, capital cost recovery by industry with Cost of Capital Calculator + - Gather data on cost recovery policies and business tax system by country + - Tax code treatment of business income, depreciation +* - Calibrate METRs, capital cost recovery by industry with Cost of Capital Calculator + - Gather data on value of different types of assets by industry + - Time series or recent snapshot of investment or asset holdings by asset type, tax treatment (e.g., corporation, partnership), and industry +* - Calibrate METRs, capital cost recovery by industry with Cost of Capital Calculator + - Link [`Cost-of-Capital-Calculator`](https://ccc.pslmodels.org/) to OG macro model + - No additional data requirements +* - Infrastructure + - As share of gov’t spending and as share of firm production + - Current government infrastructure spending data plus time series of capital and labor demand by industry, output by industry +``` (SecCalibFootnotes)= From 93894fba5588a902efcbf0f3b917076f165e4bef Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Sun, 29 Jan 2023 18:55:02 -0700 Subject: [PATCH 08/55] Updated docs_check.yml --- .github/workflows/docs_check.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs_check.yml b/.github/workflows/docs_check.yml index 295f19b46..b786ffb98 100644 --- a/.github/workflows/docs_check.yml +++ b/.github/workflows/docs_check.yml @@ -24,5 +24,6 @@ jobs: pip install -e . pip install jupyter-book>=0.11.3 pip install sphinxcontrib-bibtex>=2.0.0 + python -m ipykernel install --user --name=ogcore-dev cd docs jb build ./book From 1c7c3a051e04ff2a6c609902214420a94a9a3f2d Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Sun, 29 Jan 2023 18:57:23 -0700 Subject: [PATCH 09/55] Updated docs_check.yml --- .github/workflows/docs_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs_check.yml b/.github/workflows/docs_check.yml index b786ffb98..519a85979 100644 --- a/.github/workflows/docs_check.yml +++ b/.github/workflows/docs_check.yml @@ -26,4 +26,4 @@ jobs: pip install sphinxcontrib-bibtex>=2.0.0 python -m ipykernel install --user --name=ogcore-dev cd docs - jb build ./book + jb build ./docs/book From 207ea3655f760d23faf6123f0e79101b70026e8e Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Sun, 29 Jan 2023 19:35:19 -0700 Subject: [PATCH 10/55] Fixed path in docs_check.yml --- .github/workflows/docs_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs_check.yml b/.github/workflows/docs_check.yml index 519a85979..b786ffb98 100644 --- a/.github/workflows/docs_check.yml +++ b/.github/workflows/docs_check.yml @@ -26,4 +26,4 @@ jobs: pip install sphinxcontrib-bibtex>=2.0.0 python -m ipykernel install --user --name=ogcore-dev cd docs - jb build ./docs/book + jb build ./book From 297de650be957cce49ab35e38560d366df99ad30 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Sun, 29 Jan 2023 19:50:10 -0700 Subject: [PATCH 11/55] Updated deploy_docs.yml --- .github/workflows/deploy_docs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy_docs.yml b/.github/workflows/deploy_docs.yml index 12dbdc784..e5c03aeb2 100644 --- a/.github/workflows/deploy_docs.yml +++ b/.github/workflows/deploy_docs.yml @@ -27,6 +27,7 @@ jobs: pip install -e . pip install jupyter-book>=0.11.3 pip install sphinxcontrib-bibtex>=2.0.0 + python -m ipykernel install --user --name=ogcore-dev cd docs jb build ./book @@ -35,4 +36,4 @@ jobs: with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages # The branch the action should deploy to. - FOLDER: docs/book/_build/html # The folder the action should deploy. \ No newline at end of file + FOLDER: docs/book/_build/html # The folder the action should deploy. From 161ff89f497c38969b12b5bc743de99122596b52 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Mon, 30 Jan 2023 07:52:12 -0700 Subject: [PATCH 12/55] Fixed typos in calibration.md --- docs/book/content/theory/calibration.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/book/content/theory/calibration.md b/docs/book/content/theory/calibration.md index c69910f03..7e3addc77 100644 --- a/docs/book/content/theory/calibration.md +++ b/docs/book/content/theory/calibration.md @@ -3,7 +3,7 @@ The `OG-Core` model represents all the general model solution code for any overlapping generations model of a country or region. Although `OG-Core` has a `default_parameters.json` file that allows it to run independently, the preferred method for using `OG-Core` is as a dependency to a country calibration repository. We recommend that another repository is made, such as [`OG-USA`](https://github.com/PSLmodels/OG-USA) or [`OG-ZAF`](https://github.com/EAPD-DRB/OG-ZAF/) that uses `OG-Core` as its main computational foundation and engine and calibrates country-specific variables and functions in its own respective source code. This approach results in a working overlapping generations model consisting of a country-specific calibration repository plus a dependency on the general `OG-Core` model logic and options. -{numref}`TabCountryModels` is a list of country-specific calibrations of overlapping generations models that use `OG-Core` as a dependency from oldest to newest. Note that these models are in varying stages of completeness and maturity. It is true that a model is never really fully calibrated. The model maintainer is always updating calibrated values as new data become available. And the modele maintainer can always search for better fit and better targeting strategies. As such, the only measures of model maturity of the country calibrations below is the date the repository was created. +{numref}`TabCountryModels` is a list of country-specific calibrations of overlapping generations models that use `OG-Core` as a dependency from oldest to newest. Note that these models are in varying stages of completeness and maturity. It is true that a model is never really fully calibrated. The model maintainer is always updating calibrated values as new data become available. And the model maintainer can always search for better fit and better targeting strategies. As such, the only measures of model maturity of the country calibrations below is the date the repository was created. ```{list-table} **Country-specific calibrated OG models based on OG-Core.** :header-rows: 1 @@ -40,7 +40,7 @@ The `OG-Core` model represents all the general model solution code for any overl - Oct. 9, 2022 ``` -In the following section, we detail a list of items to calibrate for a country and what types of data and approaches might be available for those calibrations. Each of the country-specific models listed in {numref}`TabCountryModels` will have varying degrees of calibration maturity and futher varying degrees of documentation of their calibration. But the following section details all the areas where each of these models should be calibrated. +In the following section, we detail a list of items to calibrate for a country and what types of data and approaches might be available for those calibrations. Each of the country-specific models listed in {numref}`TabCountryModels` will have varying degrees of calibration maturity and further varying degrees of documentation of their calibration. But the following section details all the areas where each of these models should be calibrated. (SecCalibList)= @@ -80,7 +80,7 @@ In the following section, we detail a list of items to calibrate for a country a - Data on bequests given and/or bequests received similar to the US Survey of Consumer Finances. Other forms of information could allow us to rescale the US bequest distribution to match some moment from the target country. * - Rate of time preference - Constant - - Research empiritcal literature + - Research empirical literature * - Rate of time preference - Heterogeneous (match to MPCs and wealth distribution) - Data on country marginal propensity to consume (e.g., US Consumer Expenditure Survey or PSID) and data on the distribution of wealth in the country From e5a4962a575d17e8fc74d44425c7dbf97471841b Mon Sep 17 00:00:00 2001 From: jdebacker Date: Mon, 6 Feb 2023 09:28:39 -0500 Subject: [PATCH 13/55] allow r_gov_scale and shift to vary over TP --- ogcore/SS.py | 6 +++--- ogcore/TPI.py | 4 ++-- ogcore/default_parameters.json | 6 ++++-- ogcore/fiscal.py | 7 +++++-- ogcore/parameters.py | 2 ++ tests/test_fiscal.py | 25 ++++++++++++++----------- 6 files changed, 30 insertions(+), 20 deletions(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index 7b15daf05..4aeb88a08 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -310,7 +310,7 @@ def inner_loop(outer_loop_vars, p, client): B = aggr.get_B(bssmat, p, "SS", False) # Find gov't debt - r_gov = fiscal.get_r_gov(r, p) + r_gov = fiscal.get_r_gov(r, p, "SS") D, D_d, D_f, new_borrowing, _, new_borrowing_f = fiscal.get_D_ss( r_gov, Y, p ) @@ -361,7 +361,7 @@ def inner_loop(outer_loop_vars, p, client): new_r = firm.get_r(Y_vec[-1], K_vec[-1], p_m, p, "SS", -1) new_w = firm.get_w(Y_vec[-1], L_vec[-1], p_m, p, "SS") - new_r_gov = fiscal.get_r_gov(new_r, p) + new_r_gov = fiscal.get_r_gov(new_r, p, "SS") # now get accurate measure of debt service cost ( D, @@ -658,7 +658,7 @@ def SS_solver( K_vec_ss = new_K_vec L_vec_ss = new_L_vec Y_vec_ss = new_Y_vec - r_gov_ss = fiscal.get_r_gov(rss, p) + r_gov_ss = fiscal.get_r_gov(rss, p, "SS") p_m_ss = new_p_m p_i_ss = np.dot(p.io_matrix, p_m_ss) p_tilde_ss = aggr.get_ptilde(p_i_ss, p.tau_c[-1, :], p.alpha_c) diff --git a/ogcore/TPI.py b/ogcore/TPI.py index edb7e7793..e5dc168e1 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -662,7 +662,7 @@ def run_TPI(p, client=None): total_tax_revenue = np.ones(p.T + p.S) * ss_vars["total_tax_revenue"] # Compute other interest rates - r_gov = fiscal.get_r_gov(r, p) + r_gov = fiscal.get_r_gov(r, p, "TPI") r_p = np.ones_like(r) * ss_vars["r_p_ss"] MPKg = np.zeros((p.T, p.M)) for m in range(p.M): @@ -936,7 +936,7 @@ def run_TPI(p, client=None): ) # For case where economy is small open econ rnew[p.zeta_K == 1] = p.world_int_rate[p.zeta_K == 1] - r_gov_new = fiscal.get_r_gov(rnew, p) + r_gov_new = fiscal.get_r_gov(rnew, p, "TPI") MPKg_vec = np.zeros((p.T, p.M)) for m in range(p.M): MPKg_vec[:, m] = np.squeeze( diff --git a/ogcore/default_parameters.json b/ogcore/default_parameters.json index 61af73915..c543e75ae 100644 --- a/ogcore/default_parameters.json +++ b/ogcore/default_parameters.json @@ -829,9 +829,10 @@ "section_1": "Fiscal Policy Parameters", "notes": "", "type": "float", + "number_dims": 1, "value": [ { - "value": 1.0 + "value": [1.0] } ], "validators": { @@ -847,9 +848,10 @@ "description": "Parameter to shift the market interest rate to find interest rate on government debt.", "notes": "", "type": "float", + "number_dims": 1, "value": [ { - "value": 0.02 + "value": [0.02] } ], "validators": { diff --git a/ogcore/fiscal.py b/ogcore/fiscal.py index 43948b44f..8483dcf87 100644 --- a/ogcore/fiscal.py +++ b/ogcore/fiscal.py @@ -350,7 +350,7 @@ def get_TR( return new_TR -def get_r_gov(r, p): +def get_r_gov(r, p, method): r""" Determine the interest rate on government debt @@ -367,7 +367,10 @@ def get_r_gov(r, p): time path or in the steady-state """ - r_gov = np.maximum(p.r_gov_scale * r - p.r_gov_shift, 0.00) + if method == "SS": + r_gov = np.maximum(p.r_gov_scale[-1] * r - p.r_gov_shift[-1], 0.00) + else: + r_gov = np.maximum(p.r_gov_scale * r - p.r_gov_shift, 0.00) return r_gov diff --git a/ogcore/parameters.py b/ogcore/parameters.py index 3354d336e..b0a456660 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -143,6 +143,8 @@ def compute_default_params(self): "replacement_rate_adjust", "zeta_D", "zeta_K", + "r_gov_scale", + "r_gov_shift" ] for item in tp_param_list: this_attr = getattr(self, item) diff --git a/tests/test_fiscal.py b/tests/test_fiscal.py index e1c4c43f6..e75c9bc8f 100644 --- a/tests/test_fiscal.py +++ b/tests/test_fiscal.py @@ -244,27 +244,30 @@ def test_get_TR( p1 = Specifications() -p1.r_gov_scale = 0.5 -p1.r_gov_shift = 0.0 +p1.r_gov_scale = [0.5] +p1.r_gov_shift = [0.0] p2 = Specifications() -p2.r_gov_scale = 0.5 -p2.r_gov_shift = 0.01 +p2.r_gov_scale = [0.5] +p2.r_gov_shift = [0.01] p3 = Specifications() -p3.r_gov_scale = 0.5 -p3.r_gov_shift = 0.03 +p3.r_gov_scale = [0.5] +p3.r_gov_shift = [0.03] r = 0.04 r_gov1 = 0.02 r_gov2 = 0.01 r_gov3 = 0.0 +r_tpi = np.ones(320) * r +r_gov_tpi = np.ones(320) * r_gov3 +p4 = p3.update_specifications({"r_gov_scale": [0.5], "r_gov_shift": [0.03]}) @pytest.mark.parametrize( - "r,p,r_gov_expected", - [(r, p1, r_gov1), (r, p2, r_gov2), (r, p3, r_gov3)], - ids=["Scale only", "Scale and shift", "r_gov < 0"], + "r,p,method,r_gov_expected", + [(r, p1, "SS", r_gov1), (r, p2, "SS", r_gov2), (r, p3, "SS", r_gov3), (r, p3, "TPI", r_gov3)], + ids=["Scale only", "Scale and shift", "r_gov < 0", "TPI"], ) -def test_get_r_gov(r, p, r_gov_expected): - r_gov = fiscal.get_r_gov(r, p) +def test_get_r_gov(r, p, method, r_gov_expected): + r_gov = fiscal.get_r_gov(r, p, method) assert np.allclose(r_gov, r_gov_expected) From e748609071a2856b83bc2aeaf63669360a76f925 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Mon, 6 Feb 2023 09:29:23 -0500 Subject: [PATCH 14/55] black format --- ogcore/parameters.py | 2 +- tests/test_fiscal.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ogcore/parameters.py b/ogcore/parameters.py index b0a456660..56c43d46f 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -144,7 +144,7 @@ def compute_default_params(self): "zeta_D", "zeta_K", "r_gov_scale", - "r_gov_shift" + "r_gov_shift", ] for item in tp_param_list: this_attr = getattr(self, item) diff --git a/tests/test_fiscal.py b/tests/test_fiscal.py index e75c9bc8f..8e203250e 100644 --- a/tests/test_fiscal.py +++ b/tests/test_fiscal.py @@ -263,7 +263,12 @@ def test_get_TR( @pytest.mark.parametrize( "r,p,method,r_gov_expected", - [(r, p1, "SS", r_gov1), (r, p2, "SS", r_gov2), (r, p3, "SS", r_gov3), (r, p3, "TPI", r_gov3)], + [ + (r, p1, "SS", r_gov1), + (r, p2, "SS", r_gov2), + (r, p3, "SS", r_gov3), + (r, p3, "TPI", r_gov3), + ], ids=["Scale only", "Scale and shift", "r_gov < 0", "TPI"], ) def test_get_r_gov(r, p, method, r_gov_expected): From e4c22754810dd72b106242ee6d96a3fbafb76454 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Mon, 6 Feb 2023 11:45:12 -0500 Subject: [PATCH 15/55] black format w updated black --- ogcore/TPI.py | 1 - ogcore/utils.py | 1 - tests/test_household.py | 2 -- tests/test_utils.py | 1 - 4 files changed, 5 deletions(-) diff --git a/ogcore/TPI.py b/ogcore/TPI.py index e5dc168e1..755ac791c 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -707,7 +707,6 @@ def run_TPI(p, client=None): # TPI loop while (TPIiter < p.maxiter) and (TPIdist >= p.mindist_TPI): - outer_loop_vars = (r_p, r, w, p_m, BQ, TR, theta) # compute composite good price p_i = ( diff --git a/ogcore/utils.py b/ogcore/utils.py index 7be02a64e..85fe21147 100644 --- a/ogcore/utils.py +++ b/ogcore/utils.py @@ -158,7 +158,6 @@ def comp_array(name, a, b, tol, unequal, exceptions={}, relative=False): return False else: - if np.all(a < EPSILON) and np.all(b < EPSILON): return True diff --git a/tests/test_household.py b/tests/test_household.py index f237b79c9..4256c038d 100644 --- a/tests/test_household.py +++ b/tests/test_household.py @@ -994,7 +994,6 @@ def test_get_y(): "bssmat,nssmat,cssmat,ltilde", test_data, ids=["passing", "failing"] ) def test_constraint_checker_SS(bssmat, nssmat, cssmat, ltilde): - household.constraint_checker_SS(bssmat, nssmat, cssmat, ltilde) assert True @@ -1003,7 +1002,6 @@ def test_constraint_checker_SS(bssmat, nssmat, cssmat, ltilde): "bssmat,nssmat,cssmat,ltilde", test_data, ids=["passing", "failing"] ) def test_constraint_checker_TPI(bssmat, nssmat, cssmat, ltilde): - household.constraint_checker_TPI(bssmat, nssmat, cssmat, 10, ltilde) assert True diff --git a/tests/test_utils.py b/tests/test_utils.py index 4bbf61f0d..354385c5b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -702,7 +702,6 @@ def test_not_connected_true(): "df,output_type,precision", test_data, ids=["tex", "json", "html"] ) def test_save_return_table(df, output_type, precision): - test_str = utils.save_return_table(df, output_type, None, precision) assert isinstance(test_str, str) From fa4296a83c4f7c87455ce7ca0de923f063986dce Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Mon, 6 Feb 2023 11:45:52 -0700 Subject: [PATCH 16/55] Updated version number in setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 44d957457..6dce77059 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="ogcore", - version="0.10.3", + version="0.10.4", author="Jason DeBacker and Richard W. Evans", license="CC0 1.0 Universal (CC0 1.0) Public Domain Dedication", description="A general equilibribum overlapping generations model for fiscal policy analysis", From 286581a8029500382cd6a59dcc6b0bfa6d08719e Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Mon, 6 Feb 2023 11:47:34 -0700 Subject: [PATCH 17/55] Updated version in __init__.py --- ogcore/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ogcore/__init__.py b/ogcore/__init__.py index 2891215bb..180021b22 100644 --- a/ogcore/__init__.py +++ b/ogcore/__init__.py @@ -19,4 +19,4 @@ from ogcore.txfunc import * from ogcore.utils import * -__version__ = "0.10.3" +__version__ = "0.10.4" From 3beface7d1b0d18380bb6b7e987f30da29a66228 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 7 Feb 2023 08:59:49 -0500 Subject: [PATCH 18/55] fix to param dim in test_basic --- tests/test_basic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_basic.py b/tests/test_basic.py index b419d4b57..838f2c166 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -68,7 +68,7 @@ def test_constant_demographics_TPI(tmpdir, dask_client): "budget_balance": True, "zero_taxes": True, "maxiter": 2, - "r_gov_shift": 0.0, + "r_gov_shift": [0.0], "zeta_D": [0.0, 0.0], "zeta_K": [0.0, 0.0], "debt_ratio_ss": 1.0, @@ -125,7 +125,7 @@ def test_constant_demographics_TPI_small_open(tmpdir, dask_client): "budget_balance": True, "zero_taxes": True, "maxiter": 2, - "r_gov_shift": 0.0, + "r_gov_shift": [0.0], "zeta_D": [0.0, 0.0], "zeta_K": [1.0], "debt_ratio_ss": 1.0, From 784e02e84a779b00299aee9f0293f261b69e08a1 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 14 Feb 2023 09:21:56 -0500 Subject: [PATCH 19/55] fix dim comparison for use of baseline solutions --- ogcore/SS.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index 4aeb88a08..45bc46603 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -1237,10 +1237,17 @@ def run_SS(p, client=None): if p.reform_use_baseline_solution: # use baseline solution as starting values if dimensions match try: + print( + "Shape HH = ", + ss_solutions["bssmat_splus1"].shape, + p.S, + p.J, + ) + print("Shape firm = ", ss_solutions["Y_vec_ss"].shape, p.M) if ss_solutions["bssmat_splus1"].shape == ( p.S, p.J, - ) and ss_solutions["Y_vec_ss"].shape == (p.M): + ) and np.squeeze(ss_solutions["Y_vec_ss"].shape) == (p.M): print("Using previous solutions for SS") ( b_guess, @@ -1269,10 +1276,15 @@ def run_SS(p, client=None): ) use_new_guesses = False else: + print( + "Dimensions of previous solutions for SS do not match" + ) use_new_guesses = True except KeyError: + print("KeyError: previous solutions for SS not found") use_new_guesses = True else: + print("Using new guesses for SS") use_new_guesses = True if use_new_guesses: if p.use_zeta: From 1e8f8d696bd9497ec03667f13afbc428d1513c7f Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 14 Feb 2023 13:34:57 -0700 Subject: [PATCH 20/55] Updated version to 0.10.5 --- ogcore/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ogcore/__init__.py b/ogcore/__init__.py index 180021b22..ffaf880ad 100644 --- a/ogcore/__init__.py +++ b/ogcore/__init__.py @@ -19,4 +19,4 @@ from ogcore.txfunc import * from ogcore.utils import * -__version__ = "0.10.4" +__version__ = "0.10.5" diff --git a/setup.py b/setup.py index 6dce77059..f6425dded 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="ogcore", - version="0.10.4", + version="0.10.5", author="Jason DeBacker and Richard W. Evans", license="CC0 1.0 Universal (CC0 1.0) Public Domain Dedication", description="A general equilibribum overlapping generations model for fiscal policy analysis", From 1542b71f605bdf20f068ea2c276d138a3dbfee1f Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 15 Feb 2023 17:26:07 -0500 Subject: [PATCH 21/55] change labels for industry Y --- ogcore/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ogcore/constants.py b/ogcore/constants.py index 68c8eb79b..533051873 100644 --- a/ogcore/constants.py +++ b/ogcore/constants.py @@ -16,7 +16,7 @@ "B": "Wealth ($B_t$)", "I_total": "Investment ($I_t$)", "K": "Capital Stock ($K_t$)", - "Y_vec": "GDP ($Y_t$)", + "Y_vec": "Output ($Y_t$)", "C_vec": "Consumption ($C_t$)", "L_vec": "Labor ($L_t$)", "K_vec": "Capital Stock ($K_t$)", From c91cadcffee76624aae806190c51d880d812cf69 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 15 Feb 2023 17:26:24 -0500 Subject: [PATCH 22/55] increase res of saved plots --- ogcore/parameter_plots.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/ogcore/parameter_plots.py b/ogcore/parameter_plots.py index 86e61d7e6..1253070da 100644 --- a/ogcore/parameter_plots.py +++ b/ogcore/parameter_plots.py @@ -37,7 +37,7 @@ def plot_imm_rates(p, year=DEFAULT_START_YEAR, include_title=False, path=None): return fig else: fig_path = os.path.join(path, "imm_rates_orig") - plt.savefig(fig_path) + plt.savefig(fig_path, dpi=300) def plot_mort_rates(p, include_title=False, path=None): @@ -66,7 +66,7 @@ def plot_mort_rates(p, include_title=False, path=None): return fig else: fig_path = os.path.join(path, "mortality_rates") - plt.savefig(fig_path) + plt.savefig(fig_path, dpi=300) def plot_pop_growth( @@ -106,7 +106,7 @@ def plot_pop_growth( return fig else: fig_path = os.path.join(path, "pop_growth_rates") - plt.savefig(fig_path) + plt.savefig(fig_path, dpi=300) def plot_population(p, years_to_plot=["SS"], include_title=False, path=None): @@ -145,7 +145,7 @@ def plot_population(p, years_to_plot=["SS"], include_title=False, path=None): return fig else: fig_path = os.path.join(path, "pop_distribution") - plt.savefig(fig_path) + plt.savefig(fig_path, dpi=300) def plot_ability_profiles(p, include_title=False, path=None): @@ -233,7 +233,7 @@ def plot_elliptical_u(p, plot_MU=True, include_title=False, path=None): return fig else: fig_path = os.path.join(path, "ellipse_v_CFE") - plt.savefig(fig_path) + plt.savefig(fig_path, dpi=300) def plot_chi_n(p, include_title=False, path=None): @@ -259,7 +259,7 @@ def plot_chi_n(p, include_title=False, path=None): return fig else: fig_path = os.path.join(path, "chi_n_values") - plt.savefig(fig_path) + plt.savefig(fig_path, dpi=300) def plot_fert_rates( @@ -332,7 +332,7 @@ def plot_fert_rates( # Save or return figure if output_dir: output_path = os.path.join(output_dir, "fert_rates") - plt.savefig(output_path) + plt.savefig(output_path, dpi=300) plt.close() else: return fig @@ -411,7 +411,7 @@ def plot_mort_rates_data( # Save or return figure if output_dir: output_path = os.path.join(output_dir, "mort_rates") - plt.savefig(output_path) + plt.savefig(output_path, dpi=300) plt.close() else: return fig @@ -455,7 +455,7 @@ def plot_omega_fixed( # Save or return figure if output_dir: output_path = os.path.join(output_dir, "OrigVsFixSSpop") - plt.savefig(output_path) + plt.savefig(output_path, dpi=300) plt.close() else: return fig @@ -496,7 +496,7 @@ def plot_imm_fixed( # Save or return figure if output_dir: output_path = os.path.join(output_dir, "OrigVsAdjImm") - plt.savefig(output_path) + plt.savefig(output_path, dpi=300) plt.close() else: return fig @@ -562,7 +562,7 @@ def plot_population_path( # Save or return figure if output_dir: output_path = os.path.join(output_dir, "PopDistPath") - plt.savefig(output_path) + plt.savefig(output_path, dpi=300) plt.close() else: return fig @@ -853,7 +853,7 @@ def txfunc_sse_plot(age_vec, sse_mat, start_year, varstr, output_dir, round): plt.ylabel(r"SSE") graphname = "SSE_" + varstr + "_Round" + str(round) output_path = os.path.join(output_dir, graphname) - plt.savefig(output_path, bbox_inches="tight") + plt.savefig(output_path, bbox_inches="tight", dpi=300) plt.close() @@ -889,7 +889,7 @@ def plot_income_data( plt.plot(ages, emat) filename = "ability_2D_lev" + filesuffix fullpath = os.path.join(output_dir, filename) - plt.savefig(fullpath) + plt.savefig(fullpath, dpi=300) plt.close() # Plot of 2D, J=1 in logs @@ -897,7 +897,7 @@ def plot_income_data( plt.plot(ages, np.log(emat)) filename = "ability_2D_log" + filesuffix fullpath = os.path.join(output_dir, filename) - plt.savefig(fullpath) + plt.savefig(fullpath, dpi=300) plt.close() else: # Plot of 3D, J>1 in levels @@ -910,7 +910,7 @@ def plot_income_data( ax10.set_zlabel(r"ability $e_{j,s}$") filename = "ability_3D_lev" + filesuffix fullpath = os.path.join(output_dir, filename) - plt.savefig(fullpath) + plt.savefig(fullpath, dpi=300) plt.close() # Plot of 3D, J>1 in logs @@ -928,7 +928,7 @@ def plot_income_data( ax11.set_zlabel(r"log ability $log(e_{j,s})$") filename = "ability_3D_log" + filesuffix fullpath = os.path.join(output_dir, filename) - plt.savefig(fullpath) + plt.savefig(fullpath, dpi=300) plt.close() if J <= 10: # Restricted because of line and marker types @@ -976,7 +976,7 @@ def plot_income_data( ax.set_ylabel(r"log ability $log(e_{j,s})$") filename = "ability_2D_log" + filesuffix fullpath = os.path.join(output_dir, filename) - plt.savefig(fullpath) + plt.savefig(fullpath, dpi=300) plt.close() else: if J <= 10: # Restricted because of line and marker types @@ -1189,4 +1189,4 @@ def wm(x): if path is None: return fig else: - plt.savefig(path) + plt.savefig(path, dpi=300) From d7f6d620d5bf5fff78d628e3e27cf1af75c59701 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 15 Feb 2023 17:26:43 -0500 Subject: [PATCH 23/55] better labels for multi ind plots --- ogcore/output_plots.py | 54 +++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/ogcore/output_plots.py b/ogcore/output_plots.py index c275c5e52..59c05776e 100644 --- a/ogcore/output_plots.py +++ b/ogcore/output_plots.py @@ -151,7 +151,7 @@ def plot_aggregates( plt.legend(loc=9, bbox_to_anchor=(0.5, -0.15), ncol=2) if path: fig_path1 = os.path.join(path) - plt.savefig(fig_path1, bbox_inches="tight") + plt.savefig(fig_path1, bbox_inches="tight", dpi=300) else: return fig1 plt.close() @@ -163,6 +163,7 @@ def plot_industry_aggregates( reform_tpi=None, reform_params=None, var_list=["Y_vec"], + ind_names_list = None, plot_type="pct_diff", num_years_to_plot=50, start_year=DEFAULT_START_YEAR, @@ -207,6 +208,11 @@ def plot_industry_aggregates( """ assert isinstance(start_year, (int, np.integer)) assert isinstance(num_years_to_plot, int) + dims = base_tpi[var_list[0]].shape[1] + if ind_names_list: + assert len(ind_names_list) == dims + else: + ind_names_list = [str(i) for i in range(dims)] # Make sure both runs cover same time period if reform_tpi: assert base_params.start_year == reform_params.start_year @@ -217,7 +223,11 @@ def plot_industry_aggregates( assert reform_tpi is not None fig1, ax1 = plt.subplots() for i, v in enumerate(var_list): - for m in range(base_params.M): + if len(var_list) == 1: + var_label = "" + else: + var_label = VAR_LABELS[v] + for m in range(dims): if plot_type == "pct_diff": plot_var = ( reform_tpi[v][:, m] - base_tpi[v][:, m] @@ -226,7 +236,7 @@ def plot_industry_aggregates( plt.plot( year_vec, plot_var[start_index : start_index + num_years_to_plot], - label=VAR_LABELS[v] + "for industry " + str(m), + label=var_label + " " + ind_names_list[m], ) elif plot_type == "diff": plot_var = reform_tpi[v][:, m] - base_tpi[v][:, m] @@ -234,7 +244,7 @@ def plot_industry_aggregates( plt.plot( year_vec, plot_var[start_index : start_index + num_years_to_plot], - label=VAR_LABELS[v] + "for industry " + str(m), + label=var_label + " " + ind_names_list[m], ) elif plot_type == "levels": plt.plot( @@ -243,9 +253,9 @@ def plot_industry_aggregates( start_index : start_index + num_years_to_plot, m ], label="Baseline " - + VAR_LABELS[v] - + "for industry " - + str(m), + + var_label + + " " + + ind_names_list[m], ) if reform_tpi: plt.plot( @@ -254,9 +264,9 @@ def plot_industry_aggregates( start_index : start_index + num_years_to_plot, m ], label="Reform " - + VAR_LABELS[v] - + "for industry " - + str(m), + + var_label + + " " + + ind_names_list[m], ) ylabel = r"Model Units" elif plot_type == "forecast": @@ -268,9 +278,9 @@ def plot_industry_aggregates( year_vec, plot_var_base, label="Baseline " - + VAR_LABELS[v] - + "for industry " - + str(m), + + var_label + + " " + + ind_names_list[m], ) # Plot change from baseline forecast pct_change = ( @@ -287,7 +297,7 @@ def plot_industry_aggregates( plt.plot( year_vec, plot_var_reform, - label="Reform " + VAR_LABELS[v] + "for industry " + str(m), + label="Reform " + var_label + " " + ind_names_list[m], ) # making units labels will not work if multiple variables # and they are in different units @@ -316,7 +326,7 @@ def plot_industry_aggregates( plt.legend(loc=9, bbox_to_anchor=(0.5, -0.15), ncol=2) if path: fig_path1 = os.path.join(path) - plt.savefig(fig_path1, bbox_inches="tight") + plt.savefig(fig_path1, bbox_inches="tight", dpi=300) else: return fig1 plt.close() @@ -380,7 +390,7 @@ def ss_3Dplot( if plot_title: plt.title(plot_title) if path: - plt.savefig(path) + plt.savefig(path, dpi=300) else: return plt @@ -502,7 +512,7 @@ def plot_gdp_ratio( plt.legend(loc=9, bbox_to_anchor=(0.5, -0.15), ncol=2) if path: fig_path1 = os.path.join(path) - plt.savefig(fig_path1, bbox_inches="tight") + plt.savefig(fig_path1, bbox_inches="tight", dpi=300) else: return fig1 plt.close() @@ -576,7 +586,7 @@ def ability_bar( plt.title(plot_title, fontsize=15) if path: fig_path1 = os.path.join(path) - plt.savefig(fig_path1, bbox_inches="tight") + plt.savefig(fig_path1, bbox_inches="tight", dpi=300) else: return fig plt.close() @@ -630,7 +640,7 @@ def ability_bar_ss( plt.legend(loc=9, bbox_to_anchor=(0.5, -0.15), ncol=2) if path: fig_path1 = os.path.join(path) - plt.savefig(fig_path1, bbox_inches="tight") + plt.savefig(fig_path1, bbox_inches="tight", dpi=300) else: return fig plt.close() @@ -717,7 +727,7 @@ def tpi_profiles( plt.title(plot_title, fontsize=15) if path: fig_path1 = os.path.join(path) - plt.savefig(fig_path1, bbox_inches="tight") + plt.savefig(fig_path1, bbox_inches="tight", dpi=300) else: return fig1 plt.close() @@ -797,7 +807,7 @@ def ss_profiles( plt.title(plot_title, fontsize=15) if path: fig_path1 = os.path.join(path) - plt.savefig(fig_path1, bbox_inches="tight") + plt.savefig(fig_path1, bbox_inches="tight", dpi=300) else: return fig1 plt.close() @@ -1166,7 +1176,7 @@ def inequality_plot( plt.legend(loc=9, bbox_to_anchor=(0.5, -0.15), ncol=2) if path: fig_path1 = os.path.join(path) - plt.savefig(fig_path1, bbox_inches="tight") + plt.savefig(fig_path1, bbox_inches="tight", dpi=300) else: return fig1 plt.close() From dde9d4dfff959cc0bbad3b57d3baec30688d6685 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 15 Feb 2023 17:27:15 -0500 Subject: [PATCH 24/55] format --- ogcore/output_plots.py | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/ogcore/output_plots.py b/ogcore/output_plots.py index 59c05776e..bf7af7fc5 100644 --- a/ogcore/output_plots.py +++ b/ogcore/output_plots.py @@ -163,7 +163,7 @@ def plot_industry_aggregates( reform_tpi=None, reform_params=None, var_list=["Y_vec"], - ind_names_list = None, + ind_names_list=None, plot_type="pct_diff", num_years_to_plot=50, start_year=DEFAULT_START_YEAR, @@ -236,7 +236,7 @@ def plot_industry_aggregates( plt.plot( year_vec, plot_var[start_index : start_index + num_years_to_plot], - label=var_label + " " + ind_names_list[m], + label=var_label + " " + ind_names_list[m], ) elif plot_type == "diff": plot_var = reform_tpi[v][:, m] - base_tpi[v][:, m] @@ -244,7 +244,7 @@ def plot_industry_aggregates( plt.plot( year_vec, plot_var[start_index : start_index + num_years_to_plot], - label=var_label + " " + ind_names_list[m], + label=var_label + " " + ind_names_list[m], ) elif plot_type == "levels": plt.plot( @@ -252,10 +252,7 @@ def plot_industry_aggregates( base_tpi[v][ start_index : start_index + num_years_to_plot, m ], - label="Baseline " - + var_label - + " " - + ind_names_list[m], + label="Baseline " + var_label + " " + ind_names_list[m], ) if reform_tpi: plt.plot( @@ -263,10 +260,7 @@ def plot_industry_aggregates( reform_tpi[v][ start_index : start_index + num_years_to_plot, m ], - label="Reform " - + var_label - + " " - + ind_names_list[m], + label="Reform " + var_label + " " + ind_names_list[m], ) ylabel = r"Model Units" elif plot_type == "forecast": @@ -277,10 +271,7 @@ def plot_industry_aggregates( plt.plot( year_vec, plot_var_base, - label="Baseline " - + var_label - + " " - + ind_names_list[m], + label="Baseline " + var_label + " " + ind_names_list[m], ) # Plot change from baseline forecast pct_change = ( @@ -297,7 +288,7 @@ def plot_industry_aggregates( plt.plot( year_vec, plot_var_reform, - label="Reform " + var_label + " " + ind_names_list[m], + label="Reform " + var_label + " " + ind_names_list[m], ) # making units labels will not work if multiple variables # and they are in different units From be52d629085c6c4a875323dfecc1ba0fcd60219a Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 15 Feb 2023 20:04:12 -0500 Subject: [PATCH 25/55] update arg for new matplotlib --- ogcore/parameter_plots.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ogcore/parameter_plots.py b/ogcore/parameter_plots.py index 1253070da..8b43eb12d 100644 --- a/ogcore/parameter_plots.py +++ b/ogcore/parameter_plots.py @@ -394,7 +394,7 @@ def plot_mort_rates_data( np.hstack([infmort_rate, mort_rates_all[min_yr - 1 : max_yr]]), ) plt.axvline(x=max_yr, color="red", linestyle="-", linewidth=1) - plt.grid(b=True, which="major", color="0.65", linestyle="-") + plt.grid(visible=True, which="major", color="0.65", linestyle="-") # plt.title('Fitted mortality rate function by age ($rho_{s}$)', # fontsize=20) plt.xlabel(r"Age $s$") From f017057af159244d84c96665992ee33b751d20d8 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Wed, 15 Feb 2023 23:10:39 -0700 Subject: [PATCH 26/55] Updated version to 0.10.6 --- ogcore/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ogcore/__init__.py b/ogcore/__init__.py index ffaf880ad..708f50720 100644 --- a/ogcore/__init__.py +++ b/ogcore/__init__.py @@ -19,4 +19,4 @@ from ogcore.txfunc import * from ogcore.utils import * -__version__ = "0.10.5" +__version__ = "0.10.6" diff --git a/setup.py b/setup.py index f6425dded..bb5ec512a 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="ogcore", - version="0.10.5", + version="0.10.6", author="Jason DeBacker and Richard W. Evans", license="CC0 1.0 Universal (CC0 1.0) Public Domain Dedication", description="A general equilibribum overlapping generations model for fiscal policy analysis", From bc475efe73a2dc221e2b405aff1dd18ecb339352 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Fri, 24 Mar 2023 22:18:46 -0400 Subject: [PATCH 27/55] start moving to lists --- ogcore/SS.py | 60 ++++++++++++++++++++++++----------------- ogcore/TPI.py | 70 ++++++++++++++++++++++++++++-------------------- ogcore/txfunc.py | 2 ++ 3 files changed, 78 insertions(+), 54 deletions(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index 45bc46603..279758f90 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -80,8 +80,8 @@ def euler_equation_solver(guesses, *args): theta, p.e[:, j], p.rho, - p.etr_params[-1, :, :], - p.mtry_params[-1, :, :], + p.etr_params[-1], + p.mtry_params[-1], None, j, p, @@ -101,8 +101,8 @@ def euler_equation_solver(guesses, *args): theta, p.chi_n, p.e[:, j], - p.etr_params[-1, :, :], - p.mtrx_params[-1, :, :], + p.etr_params[-1], + p.mtrx_params[-1], None, j, p, @@ -139,7 +139,7 @@ def euler_equation_solver(guesses, *args): False, "SS", p.e[:, j], - p.etr_params[-1, :, :], + p.etr_params[-1], p, ) cons = household.get_cons( @@ -270,10 +270,12 @@ def inner_loop(outer_loop_vars, p, client): theta = tax.replacement_rate_vals(nssmat, w, factor, None, p) - etr_params_3D = np.tile( - np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), - (1, p.J, 1), - ) + # TODO: return to this to see how want to tile list and if need to + # etr_params_3D = np.tile( + # np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), + # (1, p.J, 1), + # ) + etr_params_3D = [[[p.etr_params[-1][i][j] for k in range(p.etr_params.shape[2])] for j in range(p.J)] for i in range(p.S)] net_tax = tax.net_taxes( r_p, @@ -398,10 +400,13 @@ def inner_loop(outer_loop_vars, p, client): new_p_i = np.dot(p.io_matrix, new_p_m) new_p_tilde = aggr.get_ptilde(new_p_i, p.tau_c[-1, :], p.alpha_c) - etr_params_3D = np.tile( - np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), - (1, p.J, 1), - ) + # TODO: return to this and tile lists if need to + # etr_params_3D = np.tile( + # np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), + # (1, p.J, 1), + # ) + etr_params_3D = [[[p.etr_params[-1][i][j] for k in range(p.etr_params.shape[2])] for j in range(p.J)] for i in range(p.S)] + taxss = tax.net_taxes( new_r_p, new_w, @@ -710,18 +715,23 @@ def SS_solver( theta = tax.replacement_rate_vals(nssmat, wss, factor_ss, None, p) # Compute effective and marginal tax rates for all agents - etr_params_3D = np.tile( - np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), - (1, p.J, 1), - ) - mtrx_params_3D = np.tile( - np.reshape(p.mtrx_params[-1, :, :], (p.S, 1, p.mtrx_params.shape[2])), - (1, p.J, 1), - ) - mtry_params_3D = np.tile( - np.reshape(p.mtry_params[-1, :, :], (p.S, 1, p.mtry_params.shape[2])), - (1, p.J, 1), - ) + + # etr_params_3D = np.tile( + # np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), + # (1, p.J, 1), + # ) + # mtrx_params_3D = np.tile( + # np.reshape(p.mtrx_params[-1, :, :], (p.S, 1, p.mtrx_params.shape[2])), + # (1, p.J, 1), + # ) + # mtry_params_3D = np.tile( + # np.reshape(p.mtry_params[-1, :, :], (p.S, 1, p.mtry_params.shape[2])), + # (1, p.J, 1), + # ) + etr_params_3D = [[[p.etr_params[-1][i][j] for k in range(len(p.etr_params[0][0]))] for j in range(p.J)] for i in range(p.S)] + mtrx_params_3D = [[[p.mtrx_params[-1][i][j] for k in range(len(p.mtrx_params[0][0]))] for j in range(p.J)] for i in range(p.S)] + mtry_params_3D = [[[p.mtry_params[-1][i][j] for k in range(len(p.mtry_params[0][0]))] for j in range(p.J)] for i in range(p.S)] + labor_noncompliance_rate_2D = np.tile( np.reshape(p.labor_income_tax_noncompliance_rate[-1, :], (1, p.J)), (p.S, 1), diff --git a/ogcore/TPI.py b/ogcore/TPI.py index 755ac791c..a12fd0794 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -156,8 +156,8 @@ def firstdoughnutring( theta[j], p.e[-1, j], p.rho[-1], - p.etr_params[0, -1, :], - p.mtry_params[0, -1, :], + p.etr_params[0][-1], + p.mtry_params[0][-1], None, j, p, @@ -178,8 +178,8 @@ def firstdoughnutring( theta[j], p.chi_n[-1], p.e[-1, j], - p.etr_params[0, -1, :], - p.mtrx_params[0, -1, :], + p.etr_params[0][-1], + p.mtry_params[0][-1], None, j, p, @@ -411,19 +411,29 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): length_diag = np.diag(p.etr_params[: p.S, :, 0], p.S - (s + 2)).shape[ 0 ] - etr_params_to_use = np.zeros((length_diag, p.etr_params.shape[2])) - mtrx_params_to_use = np.zeros((length_diag, p.mtrx_params.shape[2])) - mtry_params_to_use = np.zeros((length_diag, p.mtry_params.shape[2])) - for i in range(p.etr_params.shape[2]): - etr_params_to_use[:, i] = np.diag( - p.etr_params[: p.S, :, i], p.S - (s + 2) - ) - mtrx_params_to_use[:, i] = np.diag( - p.mtrx_params[: p.S, :, i], p.S - (s + 2) - ) - mtry_params_to_use[:, i] = np.diag( - p.mtry_params[: p.S, :, i], p.S - (s + 2) - ) + # etr_params_to_use = np.zeros((length_diag, p.etr_params.shape[2])) + # mtrx_params_to_use = np.zeros((length_diag, p.mtrx_params.shape[2])) + # mtry_params_to_use = np.zeros((length_diag, p.mtry_params.shape[2])) + etr_params_to_use = [] + mtrx_params_to_use = [] + mtry_params_to_use = [] + # for i in range(p.etr_params.shape[2]): + # etr_params_to_use[:, i] = np.diag( + # p.etr_params[: p.S, :, i], p.S - (s + 2) + # ) + # mtrx_params_to_use[:, i] = np.diag( + # p.mtrx_params[: p.S, :, i], p.S - (s + 2) + # ) + # mtry_params_to_use[:, i] = np.diag( + # p.mtry_params[: p.S, :, i], p.S - (s + 2) + # ) + for i in range(len(p.etr_params[0][0])): # where num_columns is the number of columns in the resulting array + diagonal = [p.etr_params[s][j][i] for j, s in enumerate(range(p.S-1, -1, -1))] + etr_params_to_use.append(diagonal) + diagonal = [p.mtrx_params[s][j][i] for j, s in enumerate(range(p.S-1, -1, -1))] + mtrx_params_to_use.append(diagonal) + diagonal = [p.mtry_params[s][j][i] for j, s in enumerate(range(p.S-1, -1, -1))] + mtry_params_to_use.append(diagonal) solutions = opt.root( twist_doughnut, list(b_guesses_to_use) + list(n_guesses_to_use), @@ -1087,18 +1097,20 @@ def run_TPI(p, client=None): print("\tDistance:", TPIdist) # Compute effective and marginal tax rates for all agents - mtrx_params_4D = np.tile( - p.mtrx_params[: p.T, :, :].reshape( - p.T, p.S, 1, p.mtrx_params.shape[2] - ), - (1, 1, p.J, 1), - ) - mtry_params_4D = np.tile( - p.mtry_params[: p.T, :, :].reshape( - p.T, p.S, 1, p.mtry_params.shape[2] - ), - (1, 1, p.J, 1), - ) + # mtrx_params_4D = np.tile( + # p.mtrx_params[: p.T, :, :].reshape( + # p.T, p.S, 1, p.mtrx_params.shape[2] + # ), + # (1, 1, p.J, 1), + # ) + # mtry_params_4D = np.tile( + # p.mtry_params[: p.T, :, :].reshape( + # p.T, p.S, 1, p.mtry_params.shape[2] + # ), + # (1, 1, p.J, 1), + # ) + mtrx_params_4D = [[[p.mtrx_params[:p.T][s][j] for j in range(len(p.mtry_params[0][0]))] * p.J for s in range(p.S)]] + mtry_params_4D = [[[p.mtry_params[:p.T][s][j] for j in range(len(p.mtry_params[0][0]))] * p.J for s in range(p.S)]] labor_noncompliance_rate_3D = np.tile( np.reshape( p.labor_income_tax_noncompliance_rate[: p.T, :], (p.T, 1, p.J) diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index e43ebf12f..ac608fb4a 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -79,6 +79,8 @@ def get_tax_rates( X2 = X**2 Y2 = Y**2 income = X + Y + if tax_func_type != "mono": + params = np.array(params) # easier to use arrays for calculations below, except when can't (bc lists of functions) if tax_func_type == "GS": phi0, phi1, phi2 = ( np.squeeze(params[..., 0]), From b027ee9e7660b5be3cc07c7711298be411364421 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Sat, 25 Mar 2023 15:15:09 -0400 Subject: [PATCH 28/55] replace comprehensions with loops --- ogcore/SS.py | 8 +++-- ogcore/TPI.py | 83 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 55 insertions(+), 36 deletions(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index 279758f90..b2dfc7096 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -728,9 +728,11 @@ def SS_solver( # np.reshape(p.mtry_params[-1, :, :], (p.S, 1, p.mtry_params.shape[2])), # (1, p.J, 1), # ) - etr_params_3D = [[[p.etr_params[-1][i][j] for k in range(len(p.etr_params[0][0]))] for j in range(p.J)] for i in range(p.S)] - mtrx_params_3D = [[[p.mtrx_params[-1][i][j] for k in range(len(p.mtrx_params[0][0]))] for j in range(p.J)] for i in range(p.S)] - mtry_params_3D = [[[p.mtry_params[-1][i][j] for k in range(len(p.mtry_params[0][0]))] for j in range(p.J)] for i in range(p.S)] + etr_params_3D = [[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] + for s in range(p.S): + for j in range(p.J): + for i in range(len(p.etr_params[-1][0])): + etr_params_3D[s][j][i] = p.etr_params[-1][s][i] labor_noncompliance_rate_2D = np.tile( np.reshape(p.labor_income_tax_noncompliance_rate[-1, :], (1, p.J)), diff --git a/ogcore/TPI.py b/ogcore/TPI.py index a12fd0794..5ff422127 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -400,7 +400,7 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): b_mat[0, -1], n_mat[0, -1] = solutions.x[0], solutions.x[1] for s in range(p.S - 2): # Upper triangle - ind2 = np.arange(s + 2) + # ind2 = np.arange(s + 2) b_guesses_to_use = np.diag(guesses_b[: p.S, :], p.S - (s + 2)) n_guesses_to_use = np.diag(guesses_n[: p.S, :], p.S - (s + 2)) theta_to_use = theta[j] * p.replacement_rate_adjust[: p.S] @@ -408,15 +408,12 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): tr_to_use = np.diag(tr[: p.S, :, j], p.S - (s + 2)) ubi_to_use = np.diag(ubi[: p.S, :, j], p.S - (s + 2)) - length_diag = np.diag(p.etr_params[: p.S, :, 0], p.S - (s + 2)).shape[ - 0 - ] + # length_diag = np.diag(p.etr_params[: p.S, :, 0], p.S - (s + 2)).shape[ + # 0 + # ] # etr_params_to_use = np.zeros((length_diag, p.etr_params.shape[2])) # mtrx_params_to_use = np.zeros((length_diag, p.mtrx_params.shape[2])) # mtry_params_to_use = np.zeros((length_diag, p.mtry_params.shape[2])) - etr_params_to_use = [] - mtrx_params_to_use = [] - mtry_params_to_use = [] # for i in range(p.etr_params.shape[2]): # etr_params_to_use[:, i] = np.diag( # p.etr_params[: p.S, :, i], p.S - (s + 2) @@ -427,13 +424,17 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): # mtry_params_to_use[:, i] = np.diag( # p.mtry_params[: p.S, :, i], p.S - (s + 2) # ) - for i in range(len(p.etr_params[0][0])): # where num_columns is the number of columns in the resulting array - diagonal = [p.etr_params[s][j][i] for j, s in enumerate(range(p.S-1, -1, -1))] - etr_params_to_use.append(diagonal) - diagonal = [p.mtrx_params[s][j][i] for j, s in enumerate(range(p.S-1, -1, -1))] - mtrx_params_to_use.append(diagonal) - diagonal = [p.mtry_params[s][j][i] for j, s in enumerate(range(p.S-1, -1, -1))] - mtry_params_to_use.append(diagonal) + for s in range(p.S - 2): # Upper triangle + num_params = len(p.etr_params[0][0]) + etr_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + mtry_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + for i in range(num_params): + for t in range(s + 2): + etr_params_to_use[t][i] = p.etr_params[t][p.S - s - 2 + t][i] + mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - s - 2 + t][i] + mtry_params_to_use[t][i] = p.mtry_params[t][p.S - s - 2 + t][i] + solutions = opt.root( twist_doughnut, list(b_guesses_to_use) + list(n_guesses_to_use), @@ -473,19 +474,28 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): ubi_to_use = np.diag(ubi[t : t + p.S, :, j]) # initialize array of diagonal elements - length_diag = np.diag(p.etr_params[t : t + p.S, :, 0]).shape[0] - etr_params_to_use = np.zeros((length_diag, p.etr_params.shape[2])) - mtrx_params_to_use = np.zeros((length_diag, p.mtrx_params.shape[2])) - mtry_params_to_use = np.zeros((length_diag, p.mtry_params.shape[2])) - - for i in range(p.etr_params.shape[2]): - etr_params_to_use[:, i] = np.diag(p.etr_params[t : t + p.S, :, i]) - mtrx_params_to_use[:, i] = np.diag( - p.mtrx_params[t : t + p.S, :, i] - ) - mtry_params_to_use[:, i] = np.diag( - p.mtry_params[t : t + p.S, :, i] - ) + # length_diag = np.diag(p.etr_params[t : t + p.S, :, 0]).shape[0] + # etr_params_to_use = np.zeros((length_diag, p.etr_params.shape[2])) + # mtrx_params_to_use = np.zeros((length_diag, p.mtrx_params.shape[2])) + # mtry_params_to_use = np.zeros((length_diag, p.mtry_params.shape[2])) + + # for i in range(p.etr_params.shape[2]): + # etr_params_to_use[:, i] = np.diag(p.etr_params[t : t + p.S, :, i]) + # mtrx_params_to_use[:, i] = np.diag( + # p.mtrx_params[t : t + p.S, :, i] + # ) + # mtry_params_to_use[:, i] = np.diag( + # p.mtry_params[t : t + p.S, :, i] + # ) + num_params = len(p.etr_params[t][0]) + etr_params_to_use = [[0 for j in range(num_params)] for i in range(p.S)] + mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(p.S)] + mtry_params_to_use = [[0 for j in range(num_params)] for i in range(p.S)] + for i in range(num_params): + for s in range(p.S): + etr_params_to_use[s][i] = p.etr_params[t+s][s][i] + mtrx_params_to_use[s][i] = p.mtrx_params[t+s][s][i] + mtry_params_to_use[s][i] = p.mtry_params[t+s][s][i] solutions = opt.root( twist_doughnut, @@ -763,12 +773,19 @@ def run_TPI(p, client=None): bmat_splus1 = np.zeros((p.T, p.S, p.J)) bmat_splus1[:, :, :] = b_mat[: p.T, :, :] - etr_params_4D = np.tile( - p.etr_params[: p.T, :, :].reshape( - p.T, p.S, 1, p.etr_params.shape[2] - ), - (1, 1, p.J, 1), - ) + # etr_params_4D = np.tile( + # p.etr_params[: p.T, :, :].reshape( + # p.T, p.S, 1, p.etr_params.shape[2] + # ), + # (1, 1, p.J, 1), + # ) + etr_params_4D = [[[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] for t in range(p.T)] + for t in range(p.T): + for s in range(p.S): + for j in range(p.J): + for i in range(len(p.etr_params[-1][0])): + etr_params_4D[t][s][j][i] = p.etr_params[t][s][i] + bqmat = household.get_bq(BQ, None, p, "TPI") trmat = household.get_tr(TR, None, p, "TPI") tax_mat = tax.net_taxes( From c9180cbd23cb80661a8612a9a2363818d567bfb7 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Sat, 25 Mar 2023 16:06:54 -0400 Subject: [PATCH 29/55] use lists in parameters.py --- ogcore/SS.py | 1 + ogcore/TPI.py | 1 + ogcore/parameters.py | 35 ++++++++++++++--------------------- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index b2dfc7096..9146cee17 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -728,6 +728,7 @@ def SS_solver( # np.reshape(p.mtry_params[-1, :, :], (p.S, 1, p.mtry_params.shape[2])), # (1, p.J, 1), # ) + num_params = len(p.etr_params[-1][0]) etr_params_3D = [[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] for s in range(p.S): for j in range(p.J): diff --git a/ogcore/TPI.py b/ogcore/TPI.py index 5ff422127..f41ef6f6e 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -779,6 +779,7 @@ def run_TPI(p, client=None): # ), # (1, 1, p.J, 1), # ) + num_params = len(p.etr_params[0][0]) etr_params_4D = [[[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] for t in range(p.T)] for t in range(p.T): for s in range(p.S): diff --git a/ogcore/parameters.py b/ogcore/parameters.py index 56c43d46f..2cf62049f 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -91,7 +91,7 @@ def compute_default_params(self): ) # determine length of budget window from individual income tax # parameters passed in - self.BW = self.etr_params.shape[0] + self.BW = len(self.etr_params.shape) # Find number of economically active periods of life self.E = int( self.starting_age @@ -355,35 +355,28 @@ def compute_default_params(self): ] for item in tax_params_to_TP: tax_to_set = getattr(self, item) - if tax_to_set.size == 1: + if len(tax_to_set.size) == 1 and isinstance(tax_to_set[0], float): setattr( self, item, - np.ones((self.T + self.S, self.S, self.J)) * tax_to_set, + [[[tax_to_set] for i in range(self.S)] for t in range(self.T)], ) - elif tax_to_set.ndim == 3: - if tax_to_set.shape[0] > self.T + self.S: - tax_to_set = tax_to_set[: self.T + self.S, :, :] - if tax_to_set.shape[0] < self.T + self.S: - tax_to_set = np.append( - tax_to_set[:, :, :], - np.tile( - tax_to_set[-1, :, :], - (self.T + self.S - tax_to_set.shape[0], 1, 1), - ), - axis=0, - ) - if tax_to_set.shape[1] > self.S: - tax_to_set = tax_to_set[:, : self.S, :] - if item == "tau_c": - if tax_to_set.shape[2] > self.J: - tax_to_set = tax_to_set[:, :, : self.J] + elif any([isinstance(tax_to_set[i][j], list) for i, v in enumerate(tax_to_set) for j, vv in enumerate(tax_to_set[i])]): + if len(tax_to_set) > self.T + self.S: + tax_to_set = tax_to_set[: self.T + self.S] + if len(tax_to_set) < self.T + self.S: + tax_params_to_add = [tax_to_set[-1]] * (self.T + self.S - len(tax_to_set)) + tax_to_set.extend(tax_params_to_add) + if len(tax_to_set[0]) > self.S: + for t, v in enumerate(tax_to_set): + tax_to_set[t] = tax_to_set[t][:self.S] setattr(self, item, tax_to_set) else: print( "please give a " + item - + " that is a single element or 3-D array" + + " that is a single element or nested lists of" + + " lists that is three lists deep" ) assert False From 28bd875a9362ac81fa97ed81cff30df84fcfabeb Mon Sep 17 00:00:00 2001 From: jdebacker Date: Sat, 25 Mar 2023 16:17:19 -0400 Subject: [PATCH 30/55] fix for lists --- ogcore/parameters.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ogcore/parameters.py b/ogcore/parameters.py index 2cf62049f..14bf8fdb2 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -355,7 +355,9 @@ def compute_default_params(self): ] for item in tax_params_to_TP: tax_to_set = getattr(self, item) - if len(tax_to_set.size) == 1 and isinstance(tax_to_set[0], float): + # TODO: avoid ParamTools conversion to array and remove the line below + tax_to_set = tax_to_set.tolist() + if len(tax_to_set) == 1 and isinstance(tax_to_set[0], float): setattr( self, item, From f3c42391c5b43945c06d68f40b539fa7f0b5c14f Mon Sep 17 00:00:00 2001 From: jdebacker Date: Sun, 26 Mar 2023 11:25:18 -0400 Subject: [PATCH 31/55] have paramtools keep mtrx, mtry, etr params as lists --- ogcore/default_parameters.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ogcore/default_parameters.json b/ogcore/default_parameters.json index c543e75ae..1686224f9 100644 --- a/ogcore/default_parameters.json +++ b/ogcore/default_parameters.json @@ -3,7 +3,8 @@ "labels": {}, "additional_members": { "section_1": {"type": "str"}, - "section_2": {"type": "str"} + "section_2": {"type": "str"}, + "array_first": {"type": "bool"} } }, "frisch": { @@ -3584,6 +3585,7 @@ "notes": "", "type": "float", "number_dims": 3, + "array_first": false, "value": [ { "value": [ @@ -3605,6 +3607,7 @@ "notes": "", "type": "float", "number_dims": 3, + "array_first": false, "value": [ { "value": [ @@ -3626,6 +3629,7 @@ "notes": "", "type": "float", "number_dims": 3, + "array_first": false, "value": [ { "value": [ From 90db6db189f32a556f2c735d8c76e9e5133445a8 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Sun, 26 Mar 2023 15:54:38 -0400 Subject: [PATCH 32/55] bypass params --- ogcore/parameters.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/ogcore/parameters.py b/ogcore/parameters.py index 14bf8fdb2..81141580d 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -3,6 +3,7 @@ import scipy.interpolate as si import pkg_resources import paramtools +from itertools import chain # import ogcore from ogcore import elliptical_u_est @@ -91,7 +92,7 @@ def compute_default_params(self): ) # determine length of budget window from individual income tax # parameters passed in - self.BW = len(self.etr_params.shape) + self.BW = len(self.etr_params) # Find number of economically active periods of life self.E = int( self.starting_age @@ -355,9 +356,11 @@ def compute_default_params(self): ] for item in tax_params_to_TP: tax_to_set = getattr(self, item) - # TODO: avoid ParamTools conversion to array and remove the line below - tax_to_set = tax_to_set.tolist() - if len(tax_to_set) == 1 and isinstance(tax_to_set[0], float): + try: + tax_to_set = tax_to_set.tolist() + except AttributeError: + pass + if len(tax_to_set) == 1 and isinstance(tax_to_set[0], float): setattr( self, item, @@ -374,6 +377,7 @@ def compute_default_params(self): tax_to_set[t] = tax_to_set[t][:self.S] setattr(self, item, tax_to_set) else: + print("length = ", len(tax_to_set), type(tax_to_set)) print( "please give a " + item @@ -616,7 +620,23 @@ def update_specifications(self, revision, raise_errors=True): """ if not (isinstance(revision, dict) or isinstance(revision, str)): raise ValueError("ERROR: revision is not a dictionary or string") + # Skip over the adjust method if the tax paraemeters passed in + # are fucntions (e.g., in the case of tax_func_type = mono) + tax_update_dict = {} + try: + if revision["tax_func_type"] in ["mono", "mono2D"]: + for item in ["etr_params", "mtrx_params", "mtry_params"]: + if item in revision.keys(): + tax_update_dict[item] = revision[item] + del revision[item] + except KeyError: + pass self.adjust(revision, raise_errors=raise_errors) + # put tax values skipped over in the adjust method back in so + # they are in the parameters class. + if tax_update_dict != {}: + for key, value in tax_update_dict.items(): + setattr(self, key, value) self.compute_default_params() From 0203f13da7b16dfa886121428b3614080194b868 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Sun, 26 Mar 2023 16:05:44 -0400 Subject: [PATCH 33/55] add to except --- ogcore/parameters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ogcore/parameters.py b/ogcore/parameters.py index 81141580d..b0f1086b9 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -629,7 +629,7 @@ def update_specifications(self, revision, raise_errors=True): if item in revision.keys(): tax_update_dict[item] = revision[item] del revision[item] - except KeyError: + except (KeyError, TypeError): pass self.adjust(revision, raise_errors=raise_errors) # put tax values skipped over in the adjust method back in so From 79c449fa510da65c90d45815124a83ae47facb5f Mon Sep 17 00:00:00 2001 From: jdebacker Date: Sun, 26 Mar 2023 22:20:46 -0400 Subject: [PATCH 34/55] fixes after testing --- ogcore/SS.py | 28 +++++++++++++++++++++++----- ogcore/TPI.py | 23 +++++++++++------------ tests/test_TPI.py | 3 +++ 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index 9146cee17..5b00399e0 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -275,7 +275,12 @@ def inner_loop(outer_loop_vars, p, client): # np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), # (1, p.J, 1), # ) - etr_params_3D = [[[p.etr_params[-1][i][j] for k in range(p.etr_params.shape[2])] for j in range(p.J)] for i in range(p.S)] + num_params = len(p.etr_params[-1][0]) + etr_params_3D = [[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] + for s in range(p.S): + for j in range(p.J): + for i in range(len(p.etr_params[-1][0])): + etr_params_3D[s][j][i] = p.etr_params[-1][s][i] net_tax = tax.net_taxes( r_p, @@ -405,7 +410,12 @@ def inner_loop(outer_loop_vars, p, client): # np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), # (1, p.J, 1), # ) - etr_params_3D = [[[p.etr_params[-1][i][j] for k in range(p.etr_params.shape[2])] for j in range(p.J)] for i in range(p.S)] + num_params = len(p.etr_params[-1][0]) + etr_params_3D = [[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] + for s in range(p.S): + for j in range(p.J): + for i in range(len(p.etr_params[-1][0])): + etr_params_3D[s][j][i] = p.etr_params[-1][s][i] taxss = tax.net_taxes( new_r_p, @@ -728,12 +738,20 @@ def SS_solver( # np.reshape(p.mtry_params[-1, :, :], (p.S, 1, p.mtry_params.shape[2])), # (1, p.J, 1), # ) - num_params = len(p.etr_params[-1][0]) - etr_params_3D = [[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] + num_etr_params = len(p.etr_params[-1][0]) + num_mtrx_params = len(p.mtrx_params[-1][0]) + num_mtry_params = len(p.mtry_params[-1][0]) + etr_params_3D = [[[0 for i in range(num_etr_params)] for j in range(p.J)] for i in range(p.S)] + mtrx_params_3D = [[[0 for i in range(num_mtrx_params)] for j in range(p.J)] for i in range(p.S)] + mtry_params_3D = [[[0 for i in range(num_mtry_params)] for j in range(p.J)] for i in range(p.S)] for s in range(p.S): for j in range(p.J): - for i in range(len(p.etr_params[-1][0])): + for i in range(num_etr_params): etr_params_3D[s][j][i] = p.etr_params[-1][s][i] + for i in range(num_mtrx_params): + mtrx_params_3D[s][j][i] = p.mtrx_params[-1][s][i] + for i in range(num_mtry_params): + mtry_params_3D[s][j][i] = p.mtry_params[-1][s][i] labor_noncompliance_rate_2D = np.tile( np.reshape(p.labor_income_tax_noncompliance_rate[-1, :], (1, p.J)), diff --git a/ogcore/TPI.py b/ogcore/TPI.py index f41ef6f6e..8cf9f060b 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -179,7 +179,7 @@ def firstdoughnutring( p.chi_n[-1], p.e[-1, j], p.etr_params[0][-1], - p.mtry_params[0][-1], + p.mtrx_params[0][-1], None, j, p, @@ -400,7 +400,7 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): b_mat[0, -1], n_mat[0, -1] = solutions.x[0], solutions.x[1] for s in range(p.S - 2): # Upper triangle - # ind2 = np.arange(s + 2) + ind2 = np.arange(s + 2) b_guesses_to_use = np.diag(guesses_b[: p.S, :], p.S - (s + 2)) n_guesses_to_use = np.diag(guesses_n[: p.S, :], p.S - (s + 2)) theta_to_use = theta[j] * p.replacement_rate_adjust[: p.S] @@ -424,16 +424,15 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): # mtry_params_to_use[:, i] = np.diag( # p.mtry_params[: p.S, :, i], p.S - (s + 2) # ) - for s in range(p.S - 2): # Upper triangle - num_params = len(p.etr_params[0][0]) - etr_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] - mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] - mtry_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] - for i in range(num_params): - for t in range(s + 2): - etr_params_to_use[t][i] = p.etr_params[t][p.S - s - 2 + t][i] - mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - s - 2 + t][i] - mtry_params_to_use[t][i] = p.mtry_params[t][p.S - s - 2 + t][i] + num_params = len(p.etr_params[0][0]) + etr_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + mtry_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + for i in range(num_params): + for t in range(s + 2): + etr_params_to_use[t][i] = p.etr_params[t][p.S - t - 2][i] + mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - t - 2][i] + mtry_params_to_use[t][i] = p.mtry_params[t][p.S - t - 2][i] solutions = opt.root( twist_doughnut, diff --git a/tests/test_TPI.py b/tests/test_TPI.py index 19adba0a9..6b05cbeb4 100644 --- a/tests/test_TPI.py +++ b/tests/test_TPI.py @@ -212,6 +212,9 @@ def test_inner_loop(): ) for i, v in enumerate(expected_tuple): + print('Test tuple: ', test_tuple[i]) + print('Expected tuple: ', v) + print('index = ', i) assert np.allclose(test_tuple[i], v) From bd4500893c0d301c2bbb4ca6e312c7e98105a4fa Mon Sep 17 00:00:00 2001 From: jdebacker Date: Mon, 27 Mar 2023 10:46:11 -0400 Subject: [PATCH 35/55] fix index and typos in TPI --- ogcore/TPI.py | 37 +++++++++++++++++++++++++++++++------ tests/test_TPI.py | 3 --- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/ogcore/TPI.py b/ogcore/TPI.py index 8cf9f060b..cc893d95f 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -424,15 +424,31 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): # mtry_params_to_use[:, i] = np.diag( # p.mtry_params[: p.S, :, i], p.S - (s + 2) # ) + + + + + num_params = len(p.etr_params[0][0]) + # etr_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + # mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + # mtry_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + # for i in range(num_params): + # for t in range(s + 2): + # etr_params_to_use[t][i] = p.etr_params[t][p.S - t - 2][i] + # mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - t - 2][i] + # mtry_params_to_use[t][i] = p.mtry_params[t][p.S - t - 2][i] + + + etr_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] mtry_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] for i in range(num_params): for t in range(s + 2): - etr_params_to_use[t][i] = p.etr_params[t][p.S - t - 2][i] - mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - t - 2][i] - mtry_params_to_use[t][i] = p.mtry_params[t][p.S - t - 2][i] + etr_params_to_use[t][i] = p.etr_params[t][p.S - s - 2 + t][i] + mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - s - 2 + t][i] + mtry_params_to_use[t][i] = p.mtry_params[t][p.S - s - 2 + t][i] solutions = opt.root( twist_doughnut, @@ -783,7 +799,7 @@ def run_TPI(p, client=None): for t in range(p.T): for s in range(p.S): for j in range(p.J): - for i in range(len(p.etr_params[-1][0])): + for i in range(num_params): etr_params_4D[t][s][j][i] = p.etr_params[t][s][i] bqmat = household.get_bq(BQ, None, p, "TPI") @@ -1126,8 +1142,17 @@ def run_TPI(p, client=None): # ), # (1, 1, p.J, 1), # ) - mtrx_params_4D = [[[p.mtrx_params[:p.T][s][j] for j in range(len(p.mtry_params[0][0]))] * p.J for s in range(p.S)]] - mtry_params_4D = [[[p.mtry_params[:p.T][s][j] for j in range(len(p.mtry_params[0][0]))] * p.J for s in range(p.S)]] + # mtrx_params_4D = [[[p.mtrx_params[:p.T][s][j] for j in range(len(p.mtrx_params[0][0]))] * p.J for s in range(p.S)]] + # mtry_params_4D = [[[p.mtry_params[:p.T][s][j] for j in range(len(p.mtry_params[0][0]))] * p.J for s in range(p.S)]] + num_params = len(p.mtrx_params[0][0]) + mtrx_params_4D = [[[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] for t in range(p.T)] + mtry_params_4D = [[[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] for t in range(p.T)] + for t in range(p.T): + for s in range(p.S): + for j in range(p.J): + for i in range(num_params): + mtrx_params_4D[t][s][j][i] = p.mtrx_params[t][s][i] + mtry_params_4D[t][s][j][i] = p.mtry_params[t][s][i] labor_noncompliance_rate_3D = np.tile( np.reshape( p.labor_income_tax_noncompliance_rate[: p.T, :], (p.T, 1, p.J) diff --git a/tests/test_TPI.py b/tests/test_TPI.py index 6b05cbeb4..19adba0a9 100644 --- a/tests/test_TPI.py +++ b/tests/test_TPI.py @@ -212,9 +212,6 @@ def test_inner_loop(): ) for i, v in enumerate(expected_tuple): - print('Test tuple: ', test_tuple[i]) - print('Expected tuple: ', v) - print('index = ', i) assert np.allclose(test_tuple[i], v) From 07efa13fa1557f0c27436dbd7e34c8652496c6ce Mon Sep 17 00:00:00 2001 From: jdebacker Date: Mon, 27 Mar 2023 10:46:32 -0400 Subject: [PATCH 36/55] black format --- ogcore/SS.py | 25 ++++++++++++++---- ogcore/TPI.py | 60 +++++++++++++++++++++++++++++++------------- ogcore/parameters.py | 19 +++++++++++--- ogcore/txfunc.py | 4 ++- 4 files changed, 80 insertions(+), 28 deletions(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index 5b00399e0..706e92d09 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -276,7 +276,10 @@ def inner_loop(outer_loop_vars, p, client): # (1, p.J, 1), # ) num_params = len(p.etr_params[-1][0]) - etr_params_3D = [[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] + etr_params_3D = [ + [[0 for i in range(num_params)] for j in range(p.J)] + for i in range(p.S) + ] for s in range(p.S): for j in range(p.J): for i in range(len(p.etr_params[-1][0])): @@ -411,7 +414,10 @@ def inner_loop(outer_loop_vars, p, client): # (1, p.J, 1), # ) num_params = len(p.etr_params[-1][0]) - etr_params_3D = [[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] + etr_params_3D = [ + [[0 for i in range(num_params)] for j in range(p.J)] + for i in range(p.S) + ] for s in range(p.S): for j in range(p.J): for i in range(len(p.etr_params[-1][0])): @@ -741,9 +747,18 @@ def SS_solver( num_etr_params = len(p.etr_params[-1][0]) num_mtrx_params = len(p.mtrx_params[-1][0]) num_mtry_params = len(p.mtry_params[-1][0]) - etr_params_3D = [[[0 for i in range(num_etr_params)] for j in range(p.J)] for i in range(p.S)] - mtrx_params_3D = [[[0 for i in range(num_mtrx_params)] for j in range(p.J)] for i in range(p.S)] - mtry_params_3D = [[[0 for i in range(num_mtry_params)] for j in range(p.J)] for i in range(p.S)] + etr_params_3D = [ + [[0 for i in range(num_etr_params)] for j in range(p.J)] + for i in range(p.S) + ] + mtrx_params_3D = [ + [[0 for i in range(num_mtrx_params)] for j in range(p.J)] + for i in range(p.S) + ] + mtry_params_3D = [ + [[0 for i in range(num_mtry_params)] for j in range(p.J)] + for i in range(p.S) + ] for s in range(p.S): for j in range(p.J): for i in range(num_etr_params): diff --git a/ogcore/TPI.py b/ogcore/TPI.py index cc893d95f..3f397a2dd 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -425,10 +425,6 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): # p.mtry_params[: p.S, :, i], p.S - (s + 2) # ) - - - - num_params = len(p.etr_params[0][0]) # etr_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] # mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] @@ -439,11 +435,15 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): # mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - t - 2][i] # mtry_params_to_use[t][i] = p.mtry_params[t][p.S - t - 2][i] - - - etr_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] - mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] - mtry_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] + etr_params_to_use = [ + [0 for j in range(num_params)] for i in range(s + 2) + ] + mtrx_params_to_use = [ + [0 for j in range(num_params)] for i in range(s + 2) + ] + mtry_params_to_use = [ + [0 for j in range(num_params)] for i in range(s + 2) + ] for i in range(num_params): for t in range(s + 2): etr_params_to_use[t][i] = p.etr_params[t][p.S - s - 2 + t][i] @@ -503,14 +503,20 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): # p.mtry_params[t : t + p.S, :, i] # ) num_params = len(p.etr_params[t][0]) - etr_params_to_use = [[0 for j in range(num_params)] for i in range(p.S)] - mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(p.S)] - mtry_params_to_use = [[0 for j in range(num_params)] for i in range(p.S)] + etr_params_to_use = [ + [0 for j in range(num_params)] for i in range(p.S) + ] + mtrx_params_to_use = [ + [0 for j in range(num_params)] for i in range(p.S) + ] + mtry_params_to_use = [ + [0 for j in range(num_params)] for i in range(p.S) + ] for i in range(num_params): for s in range(p.S): - etr_params_to_use[s][i] = p.etr_params[t+s][s][i] - mtrx_params_to_use[s][i] = p.mtrx_params[t+s][s][i] - mtry_params_to_use[s][i] = p.mtry_params[t+s][s][i] + etr_params_to_use[s][i] = p.etr_params[t + s][s][i] + mtrx_params_to_use[s][i] = p.mtrx_params[t + s][s][i] + mtry_params_to_use[s][i] = p.mtry_params[t + s][s][i] solutions = opt.root( twist_doughnut, @@ -795,7 +801,13 @@ def run_TPI(p, client=None): # (1, 1, p.J, 1), # ) num_params = len(p.etr_params[0][0]) - etr_params_4D = [[[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] for t in range(p.T)] + etr_params_4D = [ + [ + [[0 for i in range(num_params)] for j in range(p.J)] + for i in range(p.S) + ] + for t in range(p.T) + ] for t in range(p.T): for s in range(p.S): for j in range(p.J): @@ -1145,8 +1157,20 @@ def run_TPI(p, client=None): # mtrx_params_4D = [[[p.mtrx_params[:p.T][s][j] for j in range(len(p.mtrx_params[0][0]))] * p.J for s in range(p.S)]] # mtry_params_4D = [[[p.mtry_params[:p.T][s][j] for j in range(len(p.mtry_params[0][0]))] * p.J for s in range(p.S)]] num_params = len(p.mtrx_params[0][0]) - mtrx_params_4D = [[[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] for t in range(p.T)] - mtry_params_4D = [[[[0 for i in range(num_params)] for j in range(p.J)] for i in range(p.S)] for t in range(p.T)] + mtrx_params_4D = [ + [ + [[0 for i in range(num_params)] for j in range(p.J)] + for i in range(p.S) + ] + for t in range(p.T) + ] + mtry_params_4D = [ + [ + [[0 for i in range(num_params)] for j in range(p.J)] + for i in range(p.S) + ] + for t in range(p.T) + ] for t in range(p.T): for s in range(p.S): for j in range(p.J): diff --git a/ogcore/parameters.py b/ogcore/parameters.py index b0f1086b9..75ec04a48 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -364,17 +364,28 @@ def compute_default_params(self): setattr( self, item, - [[[tax_to_set] for i in range(self.S)] for t in range(self.T)], + [ + [[tax_to_set] for i in range(self.S)] + for t in range(self.T) + ], ) - elif any([isinstance(tax_to_set[i][j], list) for i, v in enumerate(tax_to_set) for j, vv in enumerate(tax_to_set[i])]): + elif any( + [ + isinstance(tax_to_set[i][j], list) + for i, v in enumerate(tax_to_set) + for j, vv in enumerate(tax_to_set[i]) + ] + ): if len(tax_to_set) > self.T + self.S: tax_to_set = tax_to_set[: self.T + self.S] if len(tax_to_set) < self.T + self.S: - tax_params_to_add = [tax_to_set[-1]] * (self.T + self.S - len(tax_to_set)) + tax_params_to_add = [tax_to_set[-1]] * ( + self.T + self.S - len(tax_to_set) + ) tax_to_set.extend(tax_params_to_add) if len(tax_to_set[0]) > self.S: for t, v in enumerate(tax_to_set): - tax_to_set[t] = tax_to_set[t][:self.S] + tax_to_set[t] = tax_to_set[t][: self.S] setattr(self, item, tax_to_set) else: print("length = ", len(tax_to_set), type(tax_to_set)) diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index ac608fb4a..0f70a8142 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -80,7 +80,9 @@ def get_tax_rates( Y2 = Y**2 income = X + Y if tax_func_type != "mono": - params = np.array(params) # easier to use arrays for calculations below, except when can't (bc lists of functions) + params = np.array( + params + ) # easier to use arrays for calculations below, except when can't (bc lists of functions) if tax_func_type == "GS": phi0, phi1, phi2 = ( np.squeeze(params[..., 0]), From dac25a3888efba4a9f697361a6c6d1c5358914f7 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Mon, 27 Mar 2023 11:29:04 -0400 Subject: [PATCH 37/55] code clean up --- ogcore/SS.py | 18 ----------------- ogcore/TPI.py | 53 --------------------------------------------------- 2 files changed, 71 deletions(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index 706e92d09..1bfdcf2cc 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -270,11 +270,6 @@ def inner_loop(outer_loop_vars, p, client): theta = tax.replacement_rate_vals(nssmat, w, factor, None, p) - # TODO: return to this to see how want to tile list and if need to - # etr_params_3D = np.tile( - # np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), - # (1, p.J, 1), - # ) num_params = len(p.etr_params[-1][0]) etr_params_3D = [ [[0 for i in range(num_params)] for j in range(p.J)] @@ -731,19 +726,6 @@ def SS_solver( theta = tax.replacement_rate_vals(nssmat, wss, factor_ss, None, p) # Compute effective and marginal tax rates for all agents - - # etr_params_3D = np.tile( - # np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), - # (1, p.J, 1), - # ) - # mtrx_params_3D = np.tile( - # np.reshape(p.mtrx_params[-1, :, :], (p.S, 1, p.mtrx_params.shape[2])), - # (1, p.J, 1), - # ) - # mtry_params_3D = np.tile( - # np.reshape(p.mtry_params[-1, :, :], (p.S, 1, p.mtry_params.shape[2])), - # (1, p.J, 1), - # ) num_etr_params = len(p.etr_params[-1][0]) num_mtrx_params = len(p.mtrx_params[-1][0]) num_mtry_params = len(p.mtry_params[-1][0]) diff --git a/ogcore/TPI.py b/ogcore/TPI.py index 3f397a2dd..e566dea24 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -408,33 +408,7 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): tr_to_use = np.diag(tr[: p.S, :, j], p.S - (s + 2)) ubi_to_use = np.diag(ubi[: p.S, :, j], p.S - (s + 2)) - # length_diag = np.diag(p.etr_params[: p.S, :, 0], p.S - (s + 2)).shape[ - # 0 - # ] - # etr_params_to_use = np.zeros((length_diag, p.etr_params.shape[2])) - # mtrx_params_to_use = np.zeros((length_diag, p.mtrx_params.shape[2])) - # mtry_params_to_use = np.zeros((length_diag, p.mtry_params.shape[2])) - # for i in range(p.etr_params.shape[2]): - # etr_params_to_use[:, i] = np.diag( - # p.etr_params[: p.S, :, i], p.S - (s + 2) - # ) - # mtrx_params_to_use[:, i] = np.diag( - # p.mtrx_params[: p.S, :, i], p.S - (s + 2) - # ) - # mtry_params_to_use[:, i] = np.diag( - # p.mtry_params[: p.S, :, i], p.S - (s + 2) - # ) - num_params = len(p.etr_params[0][0]) - # etr_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] - # mtrx_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] - # mtry_params_to_use = [[0 for j in range(num_params)] for i in range(s + 2)] - # for i in range(num_params): - # for t in range(s + 2): - # etr_params_to_use[t][i] = p.etr_params[t][p.S - t - 2][i] - # mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - t - 2][i] - # mtry_params_to_use[t][i] = p.mtry_params[t][p.S - t - 2][i] - etr_params_to_use = [ [0 for j in range(num_params)] for i in range(s + 2) ] @@ -489,19 +463,6 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): ubi_to_use = np.diag(ubi[t : t + p.S, :, j]) # initialize array of diagonal elements - # length_diag = np.diag(p.etr_params[t : t + p.S, :, 0]).shape[0] - # etr_params_to_use = np.zeros((length_diag, p.etr_params.shape[2])) - # mtrx_params_to_use = np.zeros((length_diag, p.mtrx_params.shape[2])) - # mtry_params_to_use = np.zeros((length_diag, p.mtry_params.shape[2])) - - # for i in range(p.etr_params.shape[2]): - # etr_params_to_use[:, i] = np.diag(p.etr_params[t : t + p.S, :, i]) - # mtrx_params_to_use[:, i] = np.diag( - # p.mtrx_params[t : t + p.S, :, i] - # ) - # mtry_params_to_use[:, i] = np.diag( - # p.mtry_params[t : t + p.S, :, i] - # ) num_params = len(p.etr_params[t][0]) etr_params_to_use = [ [0 for j in range(num_params)] for i in range(p.S) @@ -1142,20 +1103,6 @@ def run_TPI(p, client=None): print("\tDistance:", TPIdist) # Compute effective and marginal tax rates for all agents - # mtrx_params_4D = np.tile( - # p.mtrx_params[: p.T, :, :].reshape( - # p.T, p.S, 1, p.mtrx_params.shape[2] - # ), - # (1, 1, p.J, 1), - # ) - # mtry_params_4D = np.tile( - # p.mtry_params[: p.T, :, :].reshape( - # p.T, p.S, 1, p.mtry_params.shape[2] - # ), - # (1, 1, p.J, 1), - # ) - # mtrx_params_4D = [[[p.mtrx_params[:p.T][s][j] for j in range(len(p.mtrx_params[0][0]))] * p.J for s in range(p.S)]] - # mtry_params_4D = [[[p.mtry_params[:p.T][s][j] for j in range(len(p.mtry_params[0][0]))] * p.J for s in range(p.S)]] num_params = len(p.mtrx_params[0][0]) mtrx_params_4D = [ [ From 7529bf697b14bd191ac4896f6d94774031e31d0b Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 28 Mar 2023 09:12:51 -0400 Subject: [PATCH 38/55] update with lists, remove zer_taxes boolean --- tests/test_basic.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/tests/test_basic.py b/tests/test_basic.py index 838f2c166..e3a18227b 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -66,7 +66,6 @@ def test_constant_demographics_TPI(tmpdir, dask_client): og_spec = { "constant_demographics": True, "budget_balance": True, - "zero_taxes": True, "maxiter": 2, "r_gov_shift": [0.0], "zeta_D": [0.0, 0.0], @@ -84,14 +83,14 @@ def test_constant_demographics_TPI(tmpdir, dask_client): } spec.update_specifications(og_spec) spec.etr_params = np.zeros( - (spec.T + spec.S, spec.S, spec.etr_params.shape[2]) - ) + (spec.T + spec.S, spec.S, len(spec.etr_params[0][0])) + ).tolist() spec.mtrx_params = np.zeros( - (spec.T + spec.S, spec.S, spec.mtrx_params.shape[2]) - ) + (spec.T + spec.S, spec.S, len(spec.mtrx_params[0][0])) + ).tolist() spec.mtry_params = np.zeros( - (spec.T + spec.S, spec.S, spec.mtry_params.shape[2]) - ) + (spec.T + spec.S, spec.S, len(spec.mtry_params[0][0])) + ).tolist() # Run SS ss_outputs = SS.run_SS(spec, client=dask_client) # save SS results @@ -123,7 +122,6 @@ def test_constant_demographics_TPI_small_open(tmpdir, dask_client): og_spec = { "constant_demographics": True, "budget_balance": True, - "zero_taxes": True, "maxiter": 2, "r_gov_shift": [0.0], "zeta_D": [0.0, 0.0], @@ -141,14 +139,14 @@ def test_constant_demographics_TPI_small_open(tmpdir, dask_client): } spec.update_specifications(og_spec) spec.etr_params = np.zeros( - (spec.T + spec.S, spec.S, spec.etr_params.shape[2]) - ) + (spec.T + spec.S, spec.S, len(spec.etr_params[0][0])) + ).tolist() spec.mtrx_params = np.zeros( - (spec.T + spec.S, spec.S, spec.mtrx_params.shape[2]) - ) + (spec.T + spec.S, spec.S, len(spec.mtrx_params[0][0])) + ).tolist() spec.mtry_params = np.zeros( - (spec.T + spec.S, spec.S, spec.mtry_params.shape[2]) - ) + (spec.T + spec.S, spec.S, len(spec.mtry_params[0][0])) + ).tolist() # Run SS ss_outputs = SS.run_SS(spec, client=dask_client) # save SS results From 5967bb03148506eb871dbfcbbec0456ac3afe5ef Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 28 Mar 2023 09:18:56 -0400 Subject: [PATCH 39/55] make sure bins are integers, use cloudpickle to same mono functions: --- ogcore/txfunc.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index 0f70a8142..0d1a6c7e5 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -16,6 +16,7 @@ from dask import delayed, compute import dask.multiprocessing import pickle +import cloudpickle from scipy.interpolate import interp1d as intp import matplotlib.pyplot as plt import ogcore.parameter_plots as pp @@ -1630,7 +1631,10 @@ def tax_func_estimate( if tax_func_path: with open(tax_func_path, "wb") as f: - pickle.dump(dict_params, f) + try: + pickle.dump(dict_params, f) + except AttributeError: + cloudpickle.dump(dict_params, f) return dict_params @@ -1650,9 +1654,9 @@ def monotone_spline( if not np.isscalar(bins): err_msg = "monotone_spline2 ERROR: bins value is not type scalar" raise ValueError(err_msg) - N = bins + N = int(bins) x_binned, y_binned, weights_binned = utils.avg_by_bin( - x, y, weights, bins + x, y, weights, N ) elif not bins: From d7844da507bf09e69e2bda61b013da79d5c5a5d3 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 28 Mar 2023 13:10:31 -0400 Subject: [PATCH 40/55] fix logic to catch revision to tax params --- ogcore/parameters.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/ogcore/parameters.py b/ogcore/parameters.py index 75ec04a48..0f952afb5 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -357,8 +357,8 @@ def compute_default_params(self): for item in tax_params_to_TP: tax_to_set = getattr(self, item) try: - tax_to_set = tax_to_set.tolist() - except AttributeError: + tax_to_set = tax_to_set.tolist() # in case parameters are numpy arrays + except AttributeError: # catches if they are lists already pass if len(tax_to_set) == 1 and isinstance(tax_to_set[0], float): setattr( @@ -388,7 +388,6 @@ def compute_default_params(self): tax_to_set[t] = tax_to_set[t][: self.S] setattr(self, item, tax_to_set) else: - print("length = ", len(tax_to_set), type(tax_to_set)) print( "please give a " + item @@ -634,18 +633,32 @@ def update_specifications(self, revision, raise_errors=True): # Skip over the adjust method if the tax paraemeters passed in # are fucntions (e.g., in the case of tax_func_type = mono) tax_update_dict = {} + print('REVSISION KEYS = ', revision.keys()) + print("TAX FUNC TYPE = ", self.tax_func_type) + tax_func_params_functions = False try: if revision["tax_func_type"] in ["mono", "mono2D"]: + tax_func_params_functions = True + except KeyError: + pass + if self.tax_func_type in ["mono", "mono2D"]: + tax_func_params_functions = True + if tax_func_params_functions: + try: + print('TO HERE') for item in ["etr_params", "mtrx_params", "mtry_params"]: + print('TO HERE1') if item in revision.keys(): + print('TO HERE2') tax_update_dict[item] = revision[item] del revision[item] - except (KeyError, TypeError): - pass + except (KeyError, TypeError): + pass self.adjust(revision, raise_errors=raise_errors) # put tax values skipped over in the adjust method back in so # they are in the parameters class. if tax_update_dict != {}: + print('TO HERE 4') for key, value in tax_update_dict.items(): setattr(self, key, value) self.compute_default_params() From f882dfcac6f930ba33925c4003db18439c139cce Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 28 Mar 2023 16:38:25 -0400 Subject: [PATCH 41/55] update txfunc.get_rates to work with lists of mono functions --- ogcore/txfunc.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index 0d1a6c7e5..f2e9d7cd8 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -253,8 +253,25 @@ def get_tax_rates( rate = np.squeeze(params[..., 0]) txrates = rate * np.ones_like(income) elif tax_func_type == "mono": - mono_interp = params[0] - txrates = mono_interp(income) + if for_estimation: + mono_interp = params[0] + txrates = mono_interp(income) + else: + txrates = np.zeros_like(income) + if np.isscalar(income): + txrates = params[0](income) + elif income.ndim == 1: # I think only calls here are for loops over S (or just a single age) + for s in range(income.shape[0]): + txrates[s] = params[s][0](income[s]) + elif income.ndim == 2: # I think only calls here are for loops over S and J + for s in range(income.shape[0]): + for j in range(income.shape[1]): + txrates[s, j] = params[s][j][0](income[s, j]) + else: # to catch 3D arrays, looping over T, S, J + for t in range(income.shape[0]): + for s in range(income.shape[1]): + for j in range(income.shape[2]): + txrates[t, s, j] = params[t][s][j][0](income[t, s, j]) return txrates @@ -691,7 +708,7 @@ def txfunc_est( income, txrates, wgts, bins=bin_num ) wsse = wsse_cstr - params = mono_interp + params = [mono_interp] params_to_plot = params else: raise RuntimeError( From 31ea2529fd84ff107ec1879b5623dff3fc31fc37 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 28 Mar 2023 19:27:32 -0400 Subject: [PATCH 42/55] black format --- ogcore/parameters.py | 16 +++++++++------- ogcore/txfunc.py | 16 ++++++++++------ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/ogcore/parameters.py b/ogcore/parameters.py index 0f952afb5..2b1d67a50 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -357,8 +357,10 @@ def compute_default_params(self): for item in tax_params_to_TP: tax_to_set = getattr(self, item) try: - tax_to_set = tax_to_set.tolist() # in case parameters are numpy arrays - except AttributeError: # catches if they are lists already + tax_to_set = ( + tax_to_set.tolist() + ) # in case parameters are numpy arrays + except AttributeError: # catches if they are lists already pass if len(tax_to_set) == 1 and isinstance(tax_to_set[0], float): setattr( @@ -633,7 +635,7 @@ def update_specifications(self, revision, raise_errors=True): # Skip over the adjust method if the tax paraemeters passed in # are fucntions (e.g., in the case of tax_func_type = mono) tax_update_dict = {} - print('REVSISION KEYS = ', revision.keys()) + print("REVSISION KEYS = ", revision.keys()) print("TAX FUNC TYPE = ", self.tax_func_type) tax_func_params_functions = False try: @@ -645,11 +647,11 @@ def update_specifications(self, revision, raise_errors=True): tax_func_params_functions = True if tax_func_params_functions: try: - print('TO HERE') + print("TO HERE") for item in ["etr_params", "mtrx_params", "mtry_params"]: - print('TO HERE1') + print("TO HERE1") if item in revision.keys(): - print('TO HERE2') + print("TO HERE2") tax_update_dict[item] = revision[item] del revision[item] except (KeyError, TypeError): @@ -658,7 +660,7 @@ def update_specifications(self, revision, raise_errors=True): # put tax values skipped over in the adjust method back in so # they are in the parameters class. if tax_update_dict != {}: - print('TO HERE 4') + print("TO HERE 4") for key, value in tax_update_dict.items(): setattr(self, key, value) self.compute_default_params() diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index f2e9d7cd8..1b25b1fac 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -260,10 +260,14 @@ def get_tax_rates( txrates = np.zeros_like(income) if np.isscalar(income): txrates = params[0](income) - elif income.ndim == 1: # I think only calls here are for loops over S (or just a single age) + elif ( + income.ndim == 1 + ): # I think only calls here are for loops over S (or just a single age) for s in range(income.shape[0]): txrates[s] = params[s][0](income[s]) - elif income.ndim == 2: # I think only calls here are for loops over S and J + elif ( + income.ndim == 2 + ): # I think only calls here are for loops over S and J for s in range(income.shape[0]): for j in range(income.shape[1]): txrates[s, j] = params[s][j][0](income[s, j]) @@ -271,7 +275,9 @@ def get_tax_rates( for t in range(income.shape[0]): for s in range(income.shape[1]): for j in range(income.shape[2]): - txrates[t, s, j] = params[t][s][j][0](income[t, s, j]) + txrates[t, s, j] = params[t][s][j][0]( + income[t, s, j] + ) return txrates @@ -1672,9 +1678,7 @@ def monotone_spline( err_msg = "monotone_spline2 ERROR: bins value is not type scalar" raise ValueError(err_msg) N = int(bins) - x_binned, y_binned, weights_binned = utils.avg_by_bin( - x, y, weights, N - ) + x_binned, y_binned, weights_binned = utils.avg_by_bin(x, y, weights, N) elif not bins: N = len(x) From 671cf5c7ac36e0038dccefafc8d787c72e9fb1f1 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 28 Mar 2023 19:59:41 -0400 Subject: [PATCH 43/55] replace loops with list comprehensions in TPI.py and SS.py --- ogcore/SS.py | 91 ++++++++++++++++++++++----------- ogcore/TPI.py | 139 ++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 168 insertions(+), 62 deletions(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index 1bfdcf2cc..7660ff6e4 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -271,14 +271,21 @@ def inner_loop(outer_loop_vars, p, client): theta = tax.replacement_rate_vals(nssmat, w, factor, None, p) num_params = len(p.etr_params[-1][0]) + # etr_params_3D = [ + # [[0 for i in range(num_params)] for j in range(p.J)] + # for i in range(p.S) + # ] + # for s in range(p.S): + # for j in range(p.J): + # for i in range(len(p.etr_params[-1][0])): + # etr_params_3D[s][j][i] = p.etr_params[-1][s][i] etr_params_3D = [ - [[0 for i in range(num_params)] for j in range(p.J)] - for i in range(p.S) + [ + [p.etr_params[-1][s][i] for i in range(num_params)] + for j in range(p.J) + ] + for s in range(p.S) ] - for s in range(p.S): - for j in range(p.J): - for i in range(len(p.etr_params[-1][0])): - etr_params_3D[s][j][i] = p.etr_params[-1][s][i] net_tax = tax.net_taxes( r_p, @@ -409,14 +416,21 @@ def inner_loop(outer_loop_vars, p, client): # (1, p.J, 1), # ) num_params = len(p.etr_params[-1][0]) + # etr_params_3D = [ + # [[0 for i in range(num_params)] for j in range(p.J)] + # for i in range(p.S) + # ] + # for s in range(p.S): + # for j in range(p.J): + # for i in range(len(p.etr_params[-1][0])): + # etr_params_3D[s][j][i] = p.etr_params[-1][s][i] etr_params_3D = [ - [[0 for i in range(num_params)] for j in range(p.J)] - for i in range(p.S) + [ + [p.etr_params[-1][s][i] for i in range(num_params)] + for j in range(p.J) + ] + for s in range(p.S) ] - for s in range(p.S): - for j in range(p.J): - for i in range(len(p.etr_params[-1][0])): - etr_params_3D[s][j][i] = p.etr_params[-1][s][i] taxss = tax.net_taxes( new_r_p, @@ -726,29 +740,48 @@ def SS_solver( theta = tax.replacement_rate_vals(nssmat, wss, factor_ss, None, p) # Compute effective and marginal tax rates for all agents - num_etr_params = len(p.etr_params[-1][0]) - num_mtrx_params = len(p.mtrx_params[-1][0]) - num_mtry_params = len(p.mtry_params[-1][0]) + num_params = len(p.etr_params[-1][0]) + # etr_params_3D = [ + # [[0 for i in range(num_etr_params)] for j in range(p.J)] + # for i in range(p.S) + # ] + # mtrx_params_3D = [ + # [[0 for i in range(num_mtrx_params)] for j in range(p.J)] + # for i in range(p.S) + # ] + # mtry_params_3D = [ + # [[0 for i in range(num_mtry_params)] for j in range(p.J)] + # for i in range(p.S) + # ] + # for s in range(p.S): + # for j in range(p.J): + # for i in range(num_etr_params): + # etr_params_3D[s][j][i] = p.etr_params[-1][s][i] + # for i in range(num_mtrx_params): + # mtrx_params_3D[s][j][i] = p.mtrx_params[-1][s][i] + # for i in range(num_mtry_params): + # mtry_params_3D[s][j][i] = p.mtry_params[-1][s][i] etr_params_3D = [ - [[0 for i in range(num_etr_params)] for j in range(p.J)] - for i in range(p.S) + [ + [p.etr_params[-1][s][i] for i in range(num_params)] + for j in range(p.J) + ] + for s in range(p.S) ] mtrx_params_3D = [ - [[0 for i in range(num_mtrx_params)] for j in range(p.J)] - for i in range(p.S) + [ + [p.mtrx_params[-1][s][i] for i in range(num_params)] + for j in range(p.J) + ] + for s in range(p.S) ] mtry_params_3D = [ - [[0 for i in range(num_mtry_params)] for j in range(p.J)] - for i in range(p.S) + [ + [p.mtry_params[-1][s][i] for i in range(num_params)] + for j in range(p.J) + ] + for s in range(p.S) ] - for s in range(p.S): - for j in range(p.J): - for i in range(num_etr_params): - etr_params_3D[s][j][i] = p.etr_params[-1][s][i] - for i in range(num_mtrx_params): - mtrx_params_3D[s][j][i] = p.mtrx_params[-1][s][i] - for i in range(num_mtry_params): - mtry_params_3D[s][j][i] = p.mtry_params[-1][s][i] labor_noncompliance_rate_2D = np.tile( np.reshape(p.labor_income_tax_noncompliance_rate[-1, :], (1, p.J)), diff --git a/ogcore/TPI.py b/ogcore/TPI.py index e566dea24..2385c9ae2 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -409,20 +409,41 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): ubi_to_use = np.diag(ubi[: p.S, :, j], p.S - (s + 2)) num_params = len(p.etr_params[0][0]) + # etr_params_to_use = [ + # [0 for j in range(num_params)] for i in range(s + 2) + # ] + # mtrx_params_to_use = [ + # [0 for j in range(num_params)] for i in range(s + 2) + # ] + # mtry_params_to_use = [ + # [0 for j in range(num_params)] for i in range(s + 2) + # ] + # for i in range(num_params): + # for t in range(s + 2): + # etr_params_to_use[t][i] = p.etr_params[t][p.S - s - 2 + t][i] + # mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - s - 2 + t][i] + # mtry_params_to_use[t][i] = p.mtry_params[t][p.S - s - 2 + t][i] + temp_etr = [ + [p.etr_params[t][p.S - s - 2 + t][i] for i in range(num_params)] + for t in range(s + 2) + ] etr_params_to_use = [ - [0 for j in range(num_params)] for i in range(s + 2) + [temp_etr[i][j] for j in range(num_params)] for i in range(s + 2) + ] + temp_mtrx = [ + [p.mtrx_params[t][p.S - s - 2 + t][i] for i in range(num_params)] + for t in range(s + 2) ] mtrx_params_to_use = [ - [0 for j in range(num_params)] for i in range(s + 2) + [temp_mtrx[i][j] for j in range(num_params)] for i in range(s + 2) + ] + temp_mtry = [ + [p.mtry_params[t][p.S - s - 2 + t][i] for i in range(num_params)] + for t in range(s + 2) ] mtry_params_to_use = [ - [0 for j in range(num_params)] for i in range(s + 2) + [temp_mtry[i][j] for j in range(num_params)] for i in range(s + 2) ] - for i in range(num_params): - for t in range(s + 2): - etr_params_to_use[t][i] = p.etr_params[t][p.S - s - 2 + t][i] - mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - s - 2 + t][i] - mtry_params_to_use[t][i] = p.mtry_params[t][p.S - s - 2 + t][i] solutions = opt.root( twist_doughnut, @@ -464,20 +485,32 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): # initialize array of diagonal elements num_params = len(p.etr_params[t][0]) + # etr_params_to_use = [ + # [0 for j in range(num_params)] for i in range(p.S) + # ] + # mtrx_params_to_use = [ + # [0 for j in range(num_params)] for i in range(p.S) + # ] + # mtry_params_to_use = [ + # [0 for j in range(num_params)] for i in range(p.S) + # ] + # for i in range(num_params): + # for s in range(p.S): + # etr_params_to_use[s][i] = p.etr_params[t + s][s][i] + # mtrx_params_to_use[s][i] = p.mtrx_params[t + s][s][i] + # mtry_params_to_use[s][i] = p.mtry_params[t + s][s][i] etr_params_to_use = [ - [0 for j in range(num_params)] for i in range(p.S) + [p.etr_params[t + s][s][i] for i in range(num_params)] + for s in range(p.S) ] mtrx_params_to_use = [ - [0 for j in range(num_params)] for i in range(p.S) + [p.mtrx_params[t + s][s][i] for i in range(num_params)] + for s in range(p.S) ] mtry_params_to_use = [ - [0 for j in range(num_params)] for i in range(p.S) + [p.mtry_params[t + s][s][i] for i in range(num_params)] + for s in range(p.S) ] - for i in range(num_params): - for s in range(p.S): - etr_params_to_use[s][i] = p.etr_params[t + s][s][i] - mtrx_params_to_use[s][i] = p.mtrx_params[t + s][s][i] - mtry_params_to_use[s][i] = p.mtry_params[t + s][s][i] solutions = opt.root( twist_doughnut, @@ -762,18 +795,28 @@ def run_TPI(p, client=None): # (1, 1, p.J, 1), # ) num_params = len(p.etr_params[0][0]) + # etr_params_4D = [ + # [ + # [[0 for i in range(num_params)] for j in range(p.J)] + # for i in range(p.S) + # ] + # for t in range(p.T) + # ] + # for t in range(p.T): + # for s in range(p.S): + # for j in range(p.J): + # for i in range(num_params): + # etr_params_4D[t][s][j][i] = p.etr_params[t][s][i] etr_params_4D = [ [ - [[0 for i in range(num_params)] for j in range(p.J)] - for i in range(p.S) + [ + [p.etr_params[t][s][i] for i in range(num_params)] + for j in range(p.J) + ] + for s in range(p.S) ] for t in range(p.T) ] - for t in range(p.T): - for s in range(p.S): - for j in range(p.J): - for i in range(num_params): - etr_params_4D[t][s][j][i] = p.etr_params[t][s][i] bqmat = household.get_bq(BQ, None, p, "TPI") trmat = household.get_tr(TR, None, p, "TPI") @@ -1104,26 +1147,56 @@ def run_TPI(p, client=None): # Compute effective and marginal tax rates for all agents num_params = len(p.mtrx_params[0][0]) + # mtrx_params_4D = [ + # [ + # [[0 for i in range(num_params)] for j in range(p.J)] + # for i in range(p.S) + # ] + # for t in range(p.T) + # ] + # mtry_params_4D = [ + # [ + # [[0 for i in range(num_params)] for j in range(p.J)] + # for i in range(p.S) + # ] + # for t in range(p.T) + # ] + # for t in range(p.T): + # for s in range(p.S): + # for j in range(p.J): + # for i in range(num_params): + # mtrx_params_4D[t][s][j][i] = p.mtrx_params[t][s][i] + # mtry_params_4D[t][s][j][i] = p.mtry_params[t][s][i] + etr_params_4D = [ + [ + [ + [p.etr_params[t][s][i] for i in range(num_params)] + for j in range(p.J) + ] + for s in range(p.S) + ] + for t in range(p.T) + ] mtrx_params_4D = [ [ - [[0 for i in range(num_params)] for j in range(p.J)] - for i in range(p.S) + [ + [p.mtrx_params[t][s][i] for i in range(num_params)] + for j in range(p.J) + ] + for s in range(p.S) ] for t in range(p.T) ] mtry_params_4D = [ [ - [[0 for i in range(num_params)] for j in range(p.J)] - for i in range(p.S) + [ + [p.mtry_params[t][s][i] for i in range(num_params)] + for j in range(p.J) + ] + for s in range(p.S) ] for t in range(p.T) ] - for t in range(p.T): - for s in range(p.S): - for j in range(p.J): - for i in range(num_params): - mtrx_params_4D[t][s][j][i] = p.mtrx_params[t][s][i] - mtry_params_4D[t][s][j][i] = p.mtry_params[t][s][i] labor_noncompliance_rate_3D = np.tile( np.reshape( p.labor_income_tax_noncompliance_rate[: p.T, :], (p.T, 1, p.J) From 79e27fdab4e752b4bd2183b5c85d31b48559a5b5 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 28 Mar 2023 20:34:13 -0400 Subject: [PATCH 44/55] change loops to list comprehensions in txfunc --- ogcore/txfunc.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index 1b25b1fac..35d756a32 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -257,28 +257,30 @@ def get_tax_rates( mono_interp = params[0] txrates = mono_interp(income) else: - txrates = np.zeros_like(income) if np.isscalar(income): txrates = params[0](income) elif ( income.ndim == 1 ): # I think only calls here are for loops over S (or just a single age) - for s in range(income.shape[0]): - txrates[s] = params[s][0](income[s]) + # for s in range(income.shape[0]): + # txrates[s] = params[s][0](income[s]) + txrates = [params[s][0](income[s]) for s in range(income.shape[0])] elif ( income.ndim == 2 ): # I think only calls here are for loops over S and J - for s in range(income.shape[0]): - for j in range(income.shape[1]): - txrates[s, j] = params[s][j][0](income[s, j]) + # for s in range(income.shape[0]): + # for j in range(income.shape[1]): + # txrates[s, j] = params[s][j][0](income[s, j]) + txrates = [[params[s][j][0](income[s, j]) for j in range(income.shape[1])] for s in range(income.shape[0])] else: # to catch 3D arrays, looping over T, S, J - for t in range(income.shape[0]): - for s in range(income.shape[1]): - for j in range(income.shape[2]): - txrates[t, s, j] = params[t][s][j][0]( - income[t, s, j] - ) - + # for t in range(income.shape[0]): + # for s in range(income.shape[1]): + # for j in range(income.shape[2]): + # txrates[t, s, j] = params[t][s][j][0]( + # income[t, s, j] + # ) + txrates = [[[params[t][s][j][0](income[t, s, j]) for j in range(income.shape[2])] for s in range(income.shape[1])] for t in range(income.shape[0])] + np.array(txrates) return txrates From 4657dda5af02371a4814278b5e42fbc578c863e0 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 28 Mar 2023 20:35:19 -0400 Subject: [PATCH 45/55] format --- ogcore/txfunc.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index 35d756a32..6ffefbd8c 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -264,14 +264,22 @@ def get_tax_rates( ): # I think only calls here are for loops over S (or just a single age) # for s in range(income.shape[0]): # txrates[s] = params[s][0](income[s]) - txrates = [params[s][0](income[s]) for s in range(income.shape[0])] + txrates = [ + params[s][0](income[s]) for s in range(income.shape[0]) + ] elif ( income.ndim == 2 ): # I think only calls here are for loops over S and J # for s in range(income.shape[0]): # for j in range(income.shape[1]): # txrates[s, j] = params[s][j][0](income[s, j]) - txrates = [[params[s][j][0](income[s, j]) for j in range(income.shape[1])] for s in range(income.shape[0])] + txrates = [ + [ + params[s][j][0](income[s, j]) + for j in range(income.shape[1]) + ] + for s in range(income.shape[0]) + ] else: # to catch 3D arrays, looping over T, S, J # for t in range(income.shape[0]): # for s in range(income.shape[1]): @@ -279,7 +287,16 @@ def get_tax_rates( # txrates[t, s, j] = params[t][s][j][0]( # income[t, s, j] # ) - txrates = [[[params[t][s][j][0](income[t, s, j]) for j in range(income.shape[2])] for s in range(income.shape[1])] for t in range(income.shape[0])] + txrates = [ + [ + [ + params[t][s][j][0](income[t, s, j]) + for j in range(income.shape[2]) + ] + for s in range(income.shape[1]) + ] + for t in range(income.shape[0]) + ] np.array(txrates) return txrates From 13c97625698c6602fbc660f73c18f08f1b2cda29 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Tue, 28 Mar 2023 21:22:45 -0400 Subject: [PATCH 46/55] allow plots of mono tax funcs in 2D and test --- ogcore/parameter_plots.py | 9 ++------- ogcore/txfunc.py | 13 +++++++++---- tests/test_parameter_plots.py | 5 +++++ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/ogcore/parameter_plots.py b/ogcore/parameter_plots.py index 8b43eb12d..a2b054bf0 100644 --- a/ogcore/parameter_plots.py +++ b/ogcore/parameter_plots.py @@ -1086,7 +1086,7 @@ def plot_2D_taxfunc( if len(tax_func_type) < len(tax_param_list): tax_func_type = [tax_func_type[0]] * len(tax_param_list) for i, v in enumerate(tax_func_type): - assert v in ["DEP", "DEP_totalinc", "GS", "linear"] + assert v in ["DEP", "DEP_totalinc", "GS", "linear", "mono"] assert rate_type in ["etr", "mtrx", "mtry"] assert len(tax_param_list) == len(labels) @@ -1118,13 +1118,8 @@ def plot_2D_taxfunc( # get tax rates for each point in the income support and plot fig, ax = plt.subplots() for i, tax_params in enumerate(tax_param_list): - if tax_func_type[i] == "mono": - tax_params = tax_params[rate_key][s][t][0] - else: - tax_param_array = np.array(tax_params[rate_key]) - tax_params = tax_param_array[s, t, :] + tax_params = tax_params[rate_key][s][t] rates = txfunc.get_tax_rates( - # tax_params[rate_key][s, t, :], tax_params, X, Y, diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index 6ffefbd8c..e03da28b1 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -261,12 +261,17 @@ def get_tax_rates( txrates = params[0](income) elif ( income.ndim == 1 - ): # I think only calls here are for loops over S (or just a single age) + ): # for s in range(income.shape[0]): # txrates[s] = params[s][0](income[s]) - txrates = [ - params[s][0](income[s]) for s in range(income.shape[0]) - ] + if income.shape[0] == len(params): # for case where loops over S + txrates = [ + params[s][0](income[s]) for s in range(income.shape[0]) + ] + else: + txrates = [ + params[0](income[i]) for i in range(income.shape[0]) + ] elif ( income.ndim == 2 ): # I think only calls here are for loops over S and J diff --git a/tests/test_parameter_plots.py b/tests/test_parameter_plots.py index 243a24aa5..a44082bd4 100644 --- a/tests/test_parameter_plots.py +++ b/tests/test_parameter_plots.py @@ -22,6 +22,9 @@ GS_nonage_spec_taxfunctions = utils.safe_read_pickle( os.path.join(CUR_PATH, "test_io_data", "TxFuncEst_GS_nonage.pkl") ) +mono_nonage_spec_taxfunctions = utils.safe_read_pickle( + os.path.join(CUR_PATH, "test_io_data", "TxFuncEst_mono_nonage.pkl") +) micro_data = utils.safe_read_pickle( os.path.join(CUR_PATH, "test_io_data", "micro_data_dict_for_tests.pkl") ) @@ -384,6 +387,7 @@ def test_plot_income_data_save_fig(tmpdir): (base_taxfunctions, 43, "DEP", "etr", True, [micro_data], None), (base_taxfunctions, 43, "DEP", "mtry", True, [micro_data], None), (base_taxfunctions, 43, "DEP", "mtrx", True, [micro_data], None), + (mono_nonage_spec_taxfunctions, None, "mono", "etr", True, None, None), ], ids=[ "over_labinc=True", @@ -392,6 +396,7 @@ def test_plot_income_data_save_fig(tmpdir): "with data", "MTR capital income", "MTR labor income", + "Mono functions" ], ) def test_plot_2D_taxfunc( From 366781c06fb6ec5622bf15365ad229cd10dd6d37 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 29 Mar 2023 08:40:47 -0400 Subject: [PATCH 47/55] add test of TPI with mono functions --- tests/test_TPI.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/test_TPI.py b/tests/test_TPI.py index 19adba0a9..3c5da65c5 100644 --- a/tests/test_TPI.py +++ b/tests/test_TPI.py @@ -568,6 +568,41 @@ def test_run_TPI(baseline, param_updates, filename, tmpdir, dask_client): filename8 = os.path.join( CUR_PATH, "test_io_data", "run_TPI_outputs_baseline_Kg_nonzero_2.pkl" ) +# read in mono tax funcs (not age specific) +dict_params = utils.safe_read_pickle( + os.path.join(CUR_PATH, "test_io_data", "TxFuncEst_mono_nonage.pkl") +) +p = Specifications() +etr_params = [[None] * p.S] * p.T +mtrx_params = [[None] * p.S] * p.T +mtry_params = [[None] * p.S] * p.T +for s in range(p.S): + for t in range(p.T): + if t < p.BW: + etr_params[t][s] = dict_params["tfunc_etr_params_S"][t][s] + mtrx_params[t][s] = dict_params["tfunc_mtrx_params_S"][t][ + s + ] + mtry_params[t][s] = dict_params["tfunc_mtry_params_S"][t][ + s + ] + else: + etr_params[t][s] = dict_params["tfunc_etr_params_S"][-1][s] + mtrx_params[t][s] = dict_params["tfunc_mtrx_params_S"][-1][ + s + ] + mtry_params[t][s] = dict_params["tfunc_mtry_params_S"][-1][ + s + ] +param_updates9 = { + "tax_func_type": "mono", + "etr_params": etr_params, + "mtrx_params": mtrx_params, + "mtry_params": mtry_params +} +filename9 = os.path.join( + CUR_PATH, "test_io_data", "run_TPI_outputs_mono_2.pkl" +) @pytest.mark.local @@ -581,6 +616,7 @@ def test_run_TPI(baseline, param_updates, filename, tmpdir, dask_client): (True, {}, filename1), (False, param_updates4, filename4), (True, param_updates8, filename8), + (True, param_updates9, filename9), ], ids=[ "Baseline, balanced budget", @@ -590,6 +626,7 @@ def test_run_TPI(baseline, param_updates, filename, tmpdir, dask_client): "Baseline", "Reform, baseline spending", "Baseline, Kg>0", + "mono tax functions" ], ) def test_run_TPI_extra(baseline, param_updates, filename, tmpdir, dask_client): From 446a8bbecc3cfa5bb957030016dcb73d597ead42 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 29 Mar 2023 08:41:55 -0400 Subject: [PATCH 48/55] add case to mono where vector of income, but functions just for one age --- ogcore/txfunc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index e03da28b1..b4b03d381 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -264,7 +264,7 @@ def get_tax_rates( ): # for s in range(income.shape[0]): # txrates[s] = params[s][0](income[s]) - if income.shape[0] == len(params): # for case where loops over S + if (income.shape[0] == len(params)) and (len(params) > 1): # for case where loops over S txrates = [ params[s][0](income[s]) for s in range(income.shape[0]) ] @@ -302,7 +302,7 @@ def get_tax_rates( ] for t in range(income.shape[0]) ] - np.array(txrates) + txrates = np.array(txrates) return txrates From 50de473d9b5cf7ae4fb537d2306ca2fa6d4c4e8b Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 29 Mar 2023 08:42:49 -0400 Subject: [PATCH 49/55] remove degu --- ogcore/parameters.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ogcore/parameters.py b/ogcore/parameters.py index 2b1d67a50..1e3c115ce 100644 --- a/ogcore/parameters.py +++ b/ogcore/parameters.py @@ -635,8 +635,6 @@ def update_specifications(self, revision, raise_errors=True): # Skip over the adjust method if the tax paraemeters passed in # are fucntions (e.g., in the case of tax_func_type = mono) tax_update_dict = {} - print("REVSISION KEYS = ", revision.keys()) - print("TAX FUNC TYPE = ", self.tax_func_type) tax_func_params_functions = False try: if revision["tax_func_type"] in ["mono", "mono2D"]: @@ -647,11 +645,8 @@ def update_specifications(self, revision, raise_errors=True): tax_func_params_functions = True if tax_func_params_functions: try: - print("TO HERE") for item in ["etr_params", "mtrx_params", "mtry_params"]: - print("TO HERE1") if item in revision.keys(): - print("TO HERE2") tax_update_dict[item] = revision[item] del revision[item] except (KeyError, TypeError): @@ -660,7 +655,6 @@ def update_specifications(self, revision, raise_errors=True): # put tax values skipped over in the adjust method back in so # they are in the parameters class. if tax_update_dict != {}: - print("TO HERE 4") for key, value in tax_update_dict.items(): setattr(self, key, value) self.compute_default_params() From 18cf4aac2e7974641925b694f1ee18a8f9698fbb Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 29 Mar 2023 08:54:51 -0400 Subject: [PATCH 50/55] update docstrings, delete commented out old code --- ogcore/SS.py | 41 ------------------ ogcore/TPI.py | 78 +++-------------------------------- ogcore/aggregates.py | 2 +- ogcore/household.py | 8 ++-- ogcore/tax.py | 10 ++--- ogcore/txfunc.py | 10 ++--- tests/test_TPI.py | 20 +++------ tests/test_parameter_plots.py | 2 +- 8 files changed, 28 insertions(+), 143 deletions(-) diff --git a/ogcore/SS.py b/ogcore/SS.py index 7660ff6e4..cb6d254ea 100644 --- a/ogcore/SS.py +++ b/ogcore/SS.py @@ -271,14 +271,6 @@ def inner_loop(outer_loop_vars, p, client): theta = tax.replacement_rate_vals(nssmat, w, factor, None, p) num_params = len(p.etr_params[-1][0]) - # etr_params_3D = [ - # [[0 for i in range(num_params)] for j in range(p.J)] - # for i in range(p.S) - # ] - # for s in range(p.S): - # for j in range(p.J): - # for i in range(len(p.etr_params[-1][0])): - # etr_params_3D[s][j][i] = p.etr_params[-1][s][i] etr_params_3D = [ [ [p.etr_params[-1][s][i] for i in range(num_params)] @@ -410,20 +402,7 @@ def inner_loop(outer_loop_vars, p, client): new_p_i = np.dot(p.io_matrix, new_p_m) new_p_tilde = aggr.get_ptilde(new_p_i, p.tau_c[-1, :], p.alpha_c) - # TODO: return to this and tile lists if need to - # etr_params_3D = np.tile( - # np.reshape(p.etr_params[-1, :, :], (p.S, 1, p.etr_params.shape[2])), - # (1, p.J, 1), - # ) num_params = len(p.etr_params[-1][0]) - # etr_params_3D = [ - # [[0 for i in range(num_params)] for j in range(p.J)] - # for i in range(p.S) - # ] - # for s in range(p.S): - # for j in range(p.J): - # for i in range(len(p.etr_params[-1][0])): - # etr_params_3D[s][j][i] = p.etr_params[-1][s][i] etr_params_3D = [ [ [p.etr_params[-1][s][i] for i in range(num_params)] @@ -741,26 +720,6 @@ def SS_solver( # Compute effective and marginal tax rates for all agents num_params = len(p.etr_params[-1][0]) - # etr_params_3D = [ - # [[0 for i in range(num_etr_params)] for j in range(p.J)] - # for i in range(p.S) - # ] - # mtrx_params_3D = [ - # [[0 for i in range(num_mtrx_params)] for j in range(p.J)] - # for i in range(p.S) - # ] - # mtry_params_3D = [ - # [[0 for i in range(num_mtry_params)] for j in range(p.J)] - # for i in range(p.S) - # ] - # for s in range(p.S): - # for j in range(p.J): - # for i in range(num_etr_params): - # etr_params_3D[s][j][i] = p.etr_params[-1][s][i] - # for i in range(num_mtrx_params): - # mtrx_params_3D[s][j][i] = p.mtrx_params[-1][s][i] - # for i in range(num_mtry_params): - # mtry_params_3D[s][j][i] = p.mtry_params[-1][s][i] etr_params_3D = [ [ [p.etr_params[-1][s][i] for i in range(num_params)] diff --git a/ogcore/TPI.py b/ogcore/TPI.py index 2385c9ae2..15d7b8bcb 100644 --- a/ogcore/TPI.py +++ b/ogcore/TPI.py @@ -231,12 +231,12 @@ def twist_doughnut( j (int): index of ability type s (int): years of life remaining t (int): model period - etr_params (Numpy array): ETR function parameters, - size = sxsxnum_params - mtrx_params (Numpy array): labor income MTR function parameters, - size = sxsxnum_params - mtry_params (Numpy array): capital income MTR function - parameters, size = sxsxnum_params + etr_params (list): ETR function parameters, + list of lists with size = sxsxnum_params + mtrx_params (list): labor income MTR function parameters, + list of lists with size = sxsxnum_params + mtry_params (list): capital income MTR function + parameters, lists of lists with size = sxsxnum_params initial_b (Numpy array): savings of agents alive at T=0, size = SxJ p (OG-Core Specifications object): model parameters @@ -409,20 +409,6 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): ubi_to_use = np.diag(ubi[: p.S, :, j], p.S - (s + 2)) num_params = len(p.etr_params[0][0]) - # etr_params_to_use = [ - # [0 for j in range(num_params)] for i in range(s + 2) - # ] - # mtrx_params_to_use = [ - # [0 for j in range(num_params)] for i in range(s + 2) - # ] - # mtry_params_to_use = [ - # [0 for j in range(num_params)] for i in range(s + 2) - # ] - # for i in range(num_params): - # for t in range(s + 2): - # etr_params_to_use[t][i] = p.etr_params[t][p.S - s - 2 + t][i] - # mtrx_params_to_use[t][i] = p.mtrx_params[t][p.S - s - 2 + t][i] - # mtry_params_to_use[t][i] = p.mtry_params[t][p.S - s - 2 + t][i] temp_etr = [ [p.etr_params[t][p.S - s - 2 + t][i] for i in range(num_params)] for t in range(s + 2) @@ -485,20 +471,6 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p): # initialize array of diagonal elements num_params = len(p.etr_params[t][0]) - # etr_params_to_use = [ - # [0 for j in range(num_params)] for i in range(p.S) - # ] - # mtrx_params_to_use = [ - # [0 for j in range(num_params)] for i in range(p.S) - # ] - # mtry_params_to_use = [ - # [0 for j in range(num_params)] for i in range(p.S) - # ] - # for i in range(num_params): - # for s in range(p.S): - # etr_params_to_use[s][i] = p.etr_params[t + s][s][i] - # mtrx_params_to_use[s][i] = p.mtrx_params[t + s][s][i] - # mtry_params_to_use[s][i] = p.mtry_params[t + s][s][i] etr_params_to_use = [ [p.etr_params[t + s][s][i] for i in range(num_params)] for s in range(p.S) @@ -788,25 +760,7 @@ def run_TPI(p, client=None): bmat_splus1 = np.zeros((p.T, p.S, p.J)) bmat_splus1[:, :, :] = b_mat[: p.T, :, :] - # etr_params_4D = np.tile( - # p.etr_params[: p.T, :, :].reshape( - # p.T, p.S, 1, p.etr_params.shape[2] - # ), - # (1, 1, p.J, 1), - # ) num_params = len(p.etr_params[0][0]) - # etr_params_4D = [ - # [ - # [[0 for i in range(num_params)] for j in range(p.J)] - # for i in range(p.S) - # ] - # for t in range(p.T) - # ] - # for t in range(p.T): - # for s in range(p.S): - # for j in range(p.J): - # for i in range(num_params): - # etr_params_4D[t][s][j][i] = p.etr_params[t][s][i] etr_params_4D = [ [ [ @@ -1147,26 +1101,6 @@ def run_TPI(p, client=None): # Compute effective and marginal tax rates for all agents num_params = len(p.mtrx_params[0][0]) - # mtrx_params_4D = [ - # [ - # [[0 for i in range(num_params)] for j in range(p.J)] - # for i in range(p.S) - # ] - # for t in range(p.T) - # ] - # mtry_params_4D = [ - # [ - # [[0 for i in range(num_params)] for j in range(p.J)] - # for i in range(p.S) - # ] - # for t in range(p.T) - # ] - # for t in range(p.T): - # for s in range(p.S): - # for j in range(p.J): - # for i in range(num_params): - # mtrx_params_4D[t][s][j][i] = p.mtrx_params[t][s][i] - # mtry_params_4D[t][s][j][i] = p.mtry_params[t][s][i] etr_params_4D = [ [ [ diff --git a/ogcore/aggregates.py b/ogcore/aggregates.py index 81a44c6cb..20299b7e6 100644 --- a/ogcore/aggregates.py +++ b/ogcore/aggregates.py @@ -309,7 +309,7 @@ def revenue( ubi (array_like): universal basic income household distributions theta (Numpy array): social security replacement rate for each lifetime income group - etr_params (Numpy array): parameters of the effective tax rate + etr_params (list): list of parameters of the effective tax rate functions p (OG-Core Specifications object): model parameters method (str): adjusts calculation dimensions based on 'SS' or diff --git a/ogcore/household.py b/ogcore/household.py index ef2b45f4d..3cc1ac67e 100644 --- a/ogcore/household.py +++ b/ogcore/household.py @@ -361,9 +361,9 @@ def FOC_savings( lifetime income group e (Numpy array): effective labor units rho (Numpy array): mortality rates - etr_params (Numpy array): parameters of the effective tax rate + etr_params (list): parameters of the effective tax rate functions - mtry_params (Numpy array): parameters of the marginal tax rate + mtry_params (list): parameters of the marginal tax rate on capital income functions t (int): model period j (int): index of ability type @@ -530,9 +530,9 @@ def FOC_labor( chi_n (Numpy array): utility weight on the disutility of labor supply e (Numpy array): effective labor units - etr_params (Numpy array): parameters of the effective tax rate + etr_params (list): parameters of the effective tax rate functions - mtrx_params (Numpy array): parameters of the marginal tax rate + mtrx_params (list): parameters of the marginal tax rate on labor income functions t (int): model period j (int): index of ability type diff --git a/ogcore/tax.py b/ogcore/tax.py index 35e748905..1f0c0ed08 100644 --- a/ogcore/tax.py +++ b/ogcore/tax.py @@ -143,7 +143,7 @@ def ETR_income( factor (scalar): scaling factor converting model units to dollars e (Numpy array): effective labor units - etr_params (array_like or function): effective tax rate function + etr_params (list): list of effective tax rate function parameters or nonparametric function labor_noncompliance_rate (Numpy array): income tax noncompliance rate for labor income capital_noncompliance_rate (Numpy array): income tax noncompliance rate for capital income @@ -192,9 +192,9 @@ def MTR_income( mtr_capital (bool): whether to compute the marginal tax rate on capital income or labor income e (Numpy array): effective labor units - etr_params (array_like or function): effective tax rate function + etr_params (list): list of effective tax rate function parameters or nonparametric function - mtr_params (array_like or function): marginal tax rate function + mtr_params (list): list of marginal tax rate function parameters or nonparametric function noncompliance_rate (Numpy array): income tax noncompliance rate p (OG-Core Specifications object): model parameters @@ -329,7 +329,7 @@ def net_taxes( method (str): adjusts calculation dimensions based on 'SS' or 'TPI' e (Numpy array): effective labor units - etr_params (Numpy array): effective tax rate function parameters + etr_params (list): list of effective tax rate function parameters p (OG-Core Specifications object): model parameters Returns: @@ -362,7 +362,7 @@ def income_tax_liab(r, w, b, n, factor, t, j, method, e, etr_params, p): method (str): adjusts calculation dimensions based on 'SS' or 'TPI' e (Numpy array): effective labor units - etr_params (Numpy array): effective tax rate function parameters + etr_params (list): effective tax rate function parameters p (OG-Core Specifications object): model parameters Returns: diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index b4b03d381..69441d401 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -59,7 +59,7 @@ def get_tax_rates( functions. Args: - params (array_like or function): parameters of the tax function, or + params (list): list of parameters of the tax function, or nonparametric function for tax function type "mono" X (array_like): labor income data Y (array_like): capital income data @@ -259,12 +259,12 @@ def get_tax_rates( else: if np.isscalar(income): txrates = params[0](income) - elif ( - income.ndim == 1 - ): + elif income.ndim == 1: # for s in range(income.shape[0]): # txrates[s] = params[s][0](income[s]) - if (income.shape[0] == len(params)) and (len(params) > 1): # for case where loops over S + if (income.shape[0] == len(params)) and ( + len(params) > 1 + ): # for case where loops over S txrates = [ params[s][0](income[s]) for s in range(income.shape[0]) ] diff --git a/tests/test_TPI.py b/tests/test_TPI.py index 3c5da65c5..2fdfee269 100644 --- a/tests/test_TPI.py +++ b/tests/test_TPI.py @@ -580,25 +580,17 @@ def test_run_TPI(baseline, param_updates, filename, tmpdir, dask_client): for t in range(p.T): if t < p.BW: etr_params[t][s] = dict_params["tfunc_etr_params_S"][t][s] - mtrx_params[t][s] = dict_params["tfunc_mtrx_params_S"][t][ - s - ] - mtry_params[t][s] = dict_params["tfunc_mtry_params_S"][t][ - s - ] + mtrx_params[t][s] = dict_params["tfunc_mtrx_params_S"][t][s] + mtry_params[t][s] = dict_params["tfunc_mtry_params_S"][t][s] else: etr_params[t][s] = dict_params["tfunc_etr_params_S"][-1][s] - mtrx_params[t][s] = dict_params["tfunc_mtrx_params_S"][-1][ - s - ] - mtry_params[t][s] = dict_params["tfunc_mtry_params_S"][-1][ - s - ] + mtrx_params[t][s] = dict_params["tfunc_mtrx_params_S"][-1][s] + mtry_params[t][s] = dict_params["tfunc_mtry_params_S"][-1][s] param_updates9 = { "tax_func_type": "mono", "etr_params": etr_params, "mtrx_params": mtrx_params, - "mtry_params": mtry_params + "mtry_params": mtry_params, } filename9 = os.path.join( CUR_PATH, "test_io_data", "run_TPI_outputs_mono_2.pkl" @@ -626,7 +618,7 @@ def test_run_TPI(baseline, param_updates, filename, tmpdir, dask_client): "Baseline", "Reform, baseline spending", "Baseline, Kg>0", - "mono tax functions" + "mono tax functions", ], ) def test_run_TPI_extra(baseline, param_updates, filename, tmpdir, dask_client): diff --git a/tests/test_parameter_plots.py b/tests/test_parameter_plots.py index a44082bd4..26a3c9d70 100644 --- a/tests/test_parameter_plots.py +++ b/tests/test_parameter_plots.py @@ -396,7 +396,7 @@ def test_plot_income_data_save_fig(tmpdir): "with data", "MTR capital income", "MTR labor income", - "Mono functions" + "Mono functions", ], ) def test_plot_2D_taxfunc( From 49cda8d21c2a4f1d057369c1209fb3b1f8886a74 Mon Sep 17 00:00:00 2001 From: jdebacker Date: Wed, 29 Mar 2023 09:18:55 -0400 Subject: [PATCH 51/55] add new files for testing: --- tests/test_io_data/TxFuncEst_mono_nonage.pkl | Bin 0 -> 345691 bytes tests/test_io_data/run_TPI_outputs_mono_2.pkl | Bin 0 -> 1201448 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/test_io_data/TxFuncEst_mono_nonage.pkl create mode 100644 tests/test_io_data/run_TPI_outputs_mono_2.pkl diff --git a/tests/test_io_data/TxFuncEst_mono_nonage.pkl b/tests/test_io_data/TxFuncEst_mono_nonage.pkl new file mode 100644 index 0000000000000000000000000000000000000000..321115143236856445181d0db8a591095c83e80e GIT binary patch literal 345691 zcmeFXbyQYO`1eb9cZVpVNMiuXHKPKGfRqXdB7LKT5`u)Hh=dp@1{jERNr%);-E`X` zDoBUYsMOg$&#&II)>-GQ_m8vAABWquzZ2KYo|!${wf1~JA@uh&vE{H0E>N#B^)mf@w`XH(x>gV)Cnl6~(zsmo+lp0Y5 zGX@duf*6IVLaBr3f*AMy$32KN!#`<;f9^`u3laS~{>@Q2{*x1>3T7h4L!^V4{w?Dp zVuG22n27%9|IR3gS&)k8hkh?{HKU4^Gt%E6{`6pmFJM6LB_ENHTdccny)ByF!Pnl^ zAvT)stgDA3v1Wf4%!hbPG#=+-qZ#bZopU0Jqv>2de26?tfRmS}x2>D&S*O@&T6b5E zzgIi|*uM?v{cSHe5gifg;p9ieUbJ=aCLZ!X8Fr$*lb7v3*K=+}#}{qSc{vdsGx^)P z`Plx`6OnWwl0HMh?_;LD;@K8^72+XW9RMZq3Gyj zZ|88<$xF%0>71vx(osEy1D;+^N}etbf5pfD@19XScQH1a)!oy>^FIa=YnaP$K!T1| zikfaiik5?hg_@1{2~l%Vv(ZS=@KN(o)6x7hJbPCUkG~@&hWvLvvDag_`4Btn?^b5D zCAP4`SvwaeTU#RF-y0H*Y;8U4-2W+K|F=x>-$DFSR(%Ki?!+hNoGiUjC=KnG0XdVw=_j4B&|2}9%BI)GycPq2nI(vD#+xt2@J9!b4 zl6&x+^Pm5Hs7N3AlUC;PksRalJ|@iuG)oE}-@dCI?ds@1bJw8RP~{-E9qNocl9I1d9{t^{(khkt>L7=sW0gL za8hF@+gEgn)wQ}L>MM#nFXW$_{}qKXFd4aUe?upmUMZI7e?#mgzNf|`zagKL_qp$z zzadTi4(T&%-_Tikp@SF((1=*RxzD8m6!R*y;{4MAl(b@;bEj?qB^oAv;QKg$v@Iq> zOnC>9qa4Ni@u5M~y-nLbCTI{%cpkm#n>UEI@zdKjycCiD4{Ei&P!81Up&0j^%EHVc zROqcV$2>lSrUtc23Z;e-aoyd4oKZ0I(iAm)%jiMIC9NVtbqiBpJb6vX%ZRb&JUH_PNM2l>B4^L zlc+B1sMVKNBA=rts?0fs9FoeEmiA7e%^4@kCfuh`%=eBplsbii6nr1FtWKe;8EH{# z+S5pZW$~+B=rr1|o7Fv&jQUYbK;GS@RGasJPKTT?4WHok1{;$S3^SQ(VJ&%`8H4IQ9s+h#f9p5G;vriSE*qhJ&Jw8 zaIAG6IUhx2{l0mWc1T|l$k)MXW%i%3eXXJMD(BAUJ`yOE^7h@M22wVrla zM2ih}rv~pVqQIm2_7BS!QBZK}HI=4Cl+kYFUpKIb=nv{8w9+gg+Ewpn58)*gpK)w& zC@i60_qSJEJWc57qx^B9OGqjgIy#p%=%axpplR^{R6d z^^(g-p!IoG`JrWG?)s7O{F!AGIYoV4Fk%@!f2%<1PFY4~Tiq}DRxBf47gRd(dKt-X zJUdpuv5cJG=Ks=G|AoG|$T=vV{)MhEm8U)N`h}L*KDc*3{DoLmnZh;lej&@qZiVEs zU+7q5_Al33A};;o5%q~*D5XD7lwIgI!g2bcHw}Ly&6>}L-?$OF0aH^Uzmb~fn3MDK z-$*}6@z7eam9+ocZxox;+^WFz2W2szz#!wc`GQPATF0&vx0_MItorqtRVj^Xys&IMJf}w3T+ft zkz{6^O4-3xwA0&e($;Pj(W>k$$-TUaJkA!}1P2 z691m$q5F9q`CHg9`S5I@T`6Jwv+5hDI*27B&S?WV^6n%x$8Vrd4d!W;FE`M^eMh(M zYurF@`lOs|XEqSqW2Uqs9x7}&`o+~>feN3l_R2QP~k%T8~H!&sIZW% zMUdr1Djeb){psc{D*V;1SpRYg6^^YvczaVV6;5{f(8tk9g@x5_75WWP;oSmxr#-2u zu~XVMhgX8sI9|O|zFUy z#0_Q{b{f1gaE|$%G!35gcq|&Yiw1xH_{4+Bhz55@?XO=rO@n0;4w+U4(cqH>mspza z&|rF5(_2mHG+4yAEHA&B2FG>tY%*)7!6tonTP}Q~!BdTep_`X!unYVClnNnQEUX{k zcWoyv7Gki_(lVsQsRco?LL^%3XDE6qA(R$>V_5!W9#4xm-SJmDRZ5FnrwzSY>uGUw zV=r84rNuOHyCNU-(qd7b%VUY(X|a-DaWOYF9rnv_79&a0;Y;r5)FRN~I4`ZOpN`Yv zApJW@dmZTTwVj(kbq3Pm@yfRu<2VZLI^JJ7^g2e#Zw2WdaO%`840loIMP9=Db7ZRm_0zHOd4At#Lna(<{;uq+2NSO0DC<0TiwW21oKAR_&xET5 zW-KQwnQ-Cn%lqLy6E1zJGLZb63Cng~>6Mme#w>DU^08LTcw8Ylti^{J2dOkSjNM_z zy%DeWOcgQXJujJ4Pkds=TtTOOX4jc<2%GN4t*tEB`DKhoks%8<$WW`Cc4NWWQHD>Y zuCZW_&^=D6*(_McUq`vWhXo&Ld_5>i%Zgu){JQ73gB6=RG&4N3j}v!g}<5O={OJDV}W52jPtsiJPaGlh}yMwzq@NZgo&sBR4d`_RXh&z%4)3C>G zOUdTI8hMgo*Sk6Jd$q10&2As(UcQkpaj2&kLJVyFEn~z6>;K& zTdwlYz30SU{MUrq=(%t-eTupo9~WLJj{H%yjSDwYy;`!<<-#X)Ufu7p;=;R5Ukt1E z;==mV7eaqr=fdYZTCH}(b78%KxskXsE`0fX=rTty7j}+rJNI;&3r~z+wtKGX@J?A7x?dN0 z@TZm+pTwhiFn_c}i(VoR-sc(_)KkHOUkj5TuDs{L0>@~2R>e`$+;Gk zr_75tT^2JX8S>)nnu=cj^St=jQG=Y+7+zdaz2#GRAuo=5dQYmog%_KCG*po6=f#8P zZ)G1|CG=EU`40&`tjXkeT2Ge`>l$JaS35rZ(4T!^&s9EbN-aA6Ae|3S_4&9xZRNw$ zuXB`-{oundE-o4wvGQZ@s%L!Lckp9#KfNIZBYy1CR=_;q!;ck(rI;Ka@#D6tm^i&! zer&V!-h}lhKjw3H)eGPdz=9=LGD>y|;N|5*N0ki)aR2ejO*gy*aMX$AW%0)X_;V$1 zZX;O$4~@L~d}KlZ(?5~DBFry{;~(D1Sp`8X%l{$dCP@&>SyjcXMhfDuO}XOyMS|Eu zgXip%Awj&5x_<4ZkPx<)p*1Mh5yFq}`XAoqD}-mOKNycE31OCut|OXcA^c=Bqqz8p z5dNYZbs<(r7^ga`3eunba%7I3VLaMsoS5fmBJTZrE&KDk-`rm!{a`yO5-N_ z=pRZB(zvJY^DFI#(%46Yi_5fA8gIndmtADug!g}?IpwLp3D>WZt}BFY!Zaqk>o-+x z!loiWKLE81zJFOIK|xmre+;6~md46pWs%hLK?5?FnUAKKPJ1&Je>NYR{bV!V7iP6` zYi%=r()?X=zsnYEeXK$$_01N1)!f}pKwB1R z1Z+y*Jj#=-;!fe-5<%o>kc!E>MTXMpGa7=iuY-sUPVu$>6`g z`a54F%Xz)+A-_tmWU1`xCV%eST%4KNMK+Gfc<$fcLAGAH?);vvot(AVZlJ)dmAuv@ z@pGcAne0w-&M{GMA|KKBIFw1Dkom;?PNusxkUMF&y!$CvPkt`dX~X}gmMm4r%$V@C zhRkASug_9ICSUfbz2V$eMUHvHdYy-*lALMbm0#voPCi&d|7>QqjJ)Y0-j5%ZlFvLo zVJ35`gnaRVTPf}SVseygynychBC>+^%K$x_Lh`S}@}s9?3dmVn54y%b=aciQ3eIS1 z=aaR|NVG2t^T_eafeI;Fd1S|+3-35Ha>;jAg8Xm)eo0n(s<6M_=_NTyQ)`eskwZ=n zU|c8-%OR6ywg96QdwxRk*<|URX-~U?v&lTmJ1y#5 zv&j-m6`a^Qn_QzKQq*OZP4-AT9WaEMLEC1#;gM6nj^>LR~26^z&m_^k}Iyt)i*u9(w>16SvlQ!k@>Eys! z&X0^0X=D>o5ub*GX=Lrq`ak4aQpsW5TuXk3Qpr(nfiKqTQplp_clVZfRD(mPCHSF!W7x>IE4Fr*74oydb|n#TckroJh_N7Ug3VOeDX! z?qi ze$wj4HL`Nu!Bo4qSIPdLXLjh`RWZu~D); zaGu=CKD?%O+x{i*V#JZr9ly6Lb=p;-Y z)xTa;?*w~`eBXbYb%&3h_MOH;-tes{v#%fdLFSg;NmK7YNH|8%cqs2OOdh=2Bf5G8 zY#GOUYqwm3Q6-5Ptz*~0OUjlfH7WwMN#f^u8>4{AZQIms#+#t6Rq88!^foNNyYkMl z^A7YZWTzka6$6Qh`_1LI+yfKDX(n_m7HE7VN9ZE%Lw?XFld-A?z^Zd{sCeli%$5n? zwpNXUwX=b&P3Pi48?hOG&VLLx8m(+0i%&o`dQZt+t!EHr6;eGLngA>>qviLyJO{(J zTIvw?Lv1wWFAWAx+R5oyr-NGlgM@a*3=laVOqMIm z0FLyMU;9pF!d5D|g&#~=&@oYLCRUgQQ&-MDOSaAi^Xce7NBSJN{dJIbcTNrrZ;($d znZ1M+^AqAhzh6Qs9eY{g(_CP8DmyDBl?S8eitFRf<-xp?$%*YXc@R=Is9VF458+%# zBK58F;f{(3$E);w@ct9pvpSy-YU30ZChY>SaNT~m^LhcCQ3;Aa*jWHJc@|N2e1$N6 zVpc=kvJmonMg7k|DTJGnaUU$d6v9KTcg3$Iis0s;(Vj0hMPRe>%qrk<5j+&l>dt&$ z1pSc%liobVu-R?JyYEOb{7_B4Fcw-2mMRw|lgf+Xfru+Qg?YOCTauz%K3u+#h%xOAsf9>4esd<#gLd!D_5 zlcz?qhw5IzUVj$kJo*YIe>4p@vX(>Z_(>lw<#GuAda203yc~RZ8c&7!mxHUP3|GUG za=2jYc$BBM9HLT`!Y&S%gQNo6I1Nh$u$DY{Mbs5&Ur`&YoV-9r=G zo>hR^$+EMb>MMZxw@bpO@e0tVdmpRBRS7y_@6G#nRl>aL{)!QsO3+}`)H4jLgnPeT zn7DH)p=DelO8IRiSX1S{NnfjkNk7>DU)d^%Vfl3b&e1B6ljQH6^REKI{&W8KUQ~ho z$+s^^?N#u7_d#!$r7GZmcEbFcR5grCjqfeguLiwo|Cv#rYA8Q*X1hQ_HC#BUS*Frb z4H>aonTqq(;Cg7_0<}098Z5NL6LiV2+vDc`HBT~x$)42Wi6cYcQzMDDwPd&!r_r@< zf($#R%CBrQzVGWpinnw;d)PUc;+l4moYM{QLt}%YJ20SjW zi$42R1LGZ6ceygxf(MIa^_p-k#B9EC!Df3c(Ek!vj?%1!v~aiDF#TFEsTHC&wW@_1 zE?M<6uC*|`klW*Mk%%jt9?g!Zg`KH9#T^f8p>&+*O;c(u#7^thJt?k*t>USl4I66V zJI}bo=iXW{%Zd*>JWvZ$1rN?X_*n~*a&L4S)@tF^@PgGF);hQneVw6MxDMV2#&ka4 zS_d*h0WPO^*1?el?NX)#b&!|wx&5(m9Sp8@_lusYgT1I(=f>GOC`t(mpYpGRuR7R# z|MfZ;KUf)c`yNrATCn5&^E!|^yl5o$vJRBilDX_F>Off`>sD5C9mug8d|P>22MxRB zd5(Xt1H+8hDJP+{g;QCqKrXycjlRjl<8Vc)vXTDTrM?C<~L*;)_mDpoQ>>h-{O zkWaREe?2f!4jlPvTo1R!rfb-3>tR#N>>XS8df0uaDgIqxJr2JECf9j=FwU(bq3i}f(CBDvd^ zz5%{o?y?WzZ-6Y9m6g^l4KR^@(0kvm2FRXs7=NqV0PEQqd+wfSfCGE({P83;!19N! zVQv>2An*H*;cHP1@KOE5=iANH|N9UEdvce zuO8q2aIOLRoz?|e=qT`nD)6=+KLr9_81L)4tlmmxENe{u}h>8sHd58EVebmJH2~b zpYLvj$&rhhDLRdi#F=d6YSsvJsg%me(~Y1h;ZdyM(FndLO|L2kHiDV^Y{6o9BV1yI z&6i^v!8y2cz4Lh^h=#J1jb=AO%=j8tds!pwpbh4^+|UR|Hc>OsbvMFDcA)#IzD96s zyYee$q!A=Xn6JE;Z3G!n50-_CK=6r3uPEIrP(e z5%vB*@_qz0LB(1y{0eV^nZx$Xa`&1bLP70%=(8p;7;X{f%4~w78V|PD#ZA!odnB@_ zwh1n)@;~S5Y=TdHZx7!8)C3%F!>t`hn?PSEv-avj6Fgf~Fj}N;h5$~wp&HI+P&(vv zWz)gnA{f8IG8&r1sV~1NYb0sv7T`!SmQDD%HtmIG&}osb-@Y zjMn6=M)+DFV$%X|+V&RM8gFxo4!1xXo7>37i57@Cy>l_%vjx^~Z*_ea-U3>bodpHY zTOew*tW&AH1>ElY>l(gkf$r`4TUdU!z{mY3e><|YLKm%V&q>)0@E&Q!DJwzMvxbrxko-I6L^tU$)CS=*8PYtA?a(9a zA^&4rJD8?i**9g-4!$}*s#NFNf%Di}s`$NjNV8Ft*i+ID!i!fG4}5F~x99KkRae^~ z=)ksu44jmvnqN=hH)&Xl8*OD942sH^=&}`{|2Hz9OCnh>T zbv2PegtZe!N_JUYk?(}USH53w9q9yr#?UdHvzNlFMDt#Hjz^ z*0V17Q&N7sqN)p6Q(qiC(ccC43zifvt#v^|mdIII&Tg=meV#BQ*$o%XrezdVx`D^L ziZZ#s8ww9!h~Imx8x$G@#*|3iP`gu#{as);OzaaS!JTd>{&5w8Qo3P^$}sCmMK^H2 zsK1og+YJ#};;Ky(-LN;_uKg!%4`}vTckGeqfzARAp*)QquoA2NYJa>3*urJ++xYar zbfwaVtb0B1d^p6_qNoRaau15Tzv}_z(5GE;;Wi9dr_Py$~@k-qiM^7f3JOaOnAn`2~PYu5Y7L!NCVq$L~mSpzN7d+|2UvS~?_xttOXu-d>|9_G|w%)$>|MCIe z1S&-M`?fA_p7sQMKrjJ+aRnX%3}7Z=T;0!kdinh27>xco2H=a9@OE$|_<(=86HhmS za!~va{^Oqv0c8AJrQ%4m^7XwQd)-vojzstW<)70(q!fu!j>Pu=(@p<3bQ6h##Q9%H z6R}NrNqi)Jk^o7N0G3F?BoUG*NsJ^;k|0Tvq)5`FP5&>VMWn4Hx&KCqNDBXj50R9j z|4-BqN#%bNc=`(q{Y8TQ2Ny)zOS<--jE^4)qW_;^JtQ0)OFCdgI%q`FAzdQr8j@d8buFX-f-(OV+pUl5y34&R5Fujn?P8n>b2H)Phk%$qa)4e5W4sGL$5 zKz>VY^SMt3(7;^LYO>HEVtg5vo#Q=-t~d2cS$-Krr~LQJ1hIZc@8v^os%w8o3r7kP z2X1~x>c0fI&cFMPdMcnpM|cQLBrZQOH5o$p!}P{vZVjQtob!2-V?#*8Zl`&u+Axa9 zYpfTv97gwPE9uWT4x{$bBB8A{!^rX)qmd!Q2%=n=r~7I#g7}+?13R)u5bK}NJiU<- zB=}2?4z4teqi`vOY-+U$Gq(prrI4$mUHcH_ZJ&b!|5r{TzQH ztCY7wV&tD_{GR(^2*tQWei|lvr->#E8i{|9( zYtIeOqOdUblFhsXL9$o5kY8mE9i-OqDLOfa8n{;%2BYTCm{Y(Ofr>da)KNTAJ2r&wbpqfU2vM)HC-kAcG5EesCHsppe5`o=lS#(APArCEa@qXz+t$ znnLvg+BTKh=sLB4zB4^w6Xah+LK6i>&RUCzn$oWG#cUBZEy>?^vR*_-iyXppJQmS| ztp(@x6Bf}IZk-K*H;YL0o`inJ{32R1E#7mMX9-p9W!r6vmk`x0>Jk^XCG;&v_EdJ{ z67thTAL`1N&@H{7*OL89Xejo=o#M466ry>b+gf@ViO|!y@LDb-wdK3JLj#wQKF$wV zy19(p=qh!@%a;*V8*wn%v5fxA8SlY=mXUBUNxx6}7jl%=bWt<-g(5Ae##nuRA%AZf z!G^G3$SA*C+9~4~a%oCTiTgy5B$vtG3h93%Yo!1I)7`(3XX5OqG4tQZ{CHLXt?zI2 zHa~SJ#{QPwttYu_uuC! zp?}Z;#=8kTDSuGS{9Vi3mw%Acj;1a3ul}H0p0R~GV}FoQUcZ;K=nCpS*XbN|dWPDl|(g=&LCVoRC~ayxW!21NBx> zity`Qjb~TUl7Ei2-L+NJU;6dw#_d(~GC5}3@1j-oS!kU*re_sZ(wB%!Os}Gem$!Eg zNUfnv`c9c|$JUUV>}9QK&oxv)Pn)qlZVlO(TOKKCTtnpTAFp*2B#400*y_EdHFVeg zgwd+ZI(o&QR+({d9qrsIl6k|0AVWgE?s{D!$d9j!AN!xIBgc0PbeZJ@DRSFYlW}kz zg@IArZH5iBxa{u51{-LTD+l`nmkpGnd5voQ-UjOH-qXxpw1JjcTtHr6+RXiJ3+@lh3(^(+Lw5#aFP5r`o~+T@Z+lzLexNo{YP_8sajCs8=jXh zt9eo3ba79W3xQPl-tq6^2crpc#H(;tD}f5vj}<@eN~gk~IwTYf8maIaLta4bJ1VSL zx%0QvPbxexdrT*eof`K^hSacP`nK8jprP)I8-u zjcw>QCB=tP<4dX?3dbH%V~ZU%9ClLR?Zd-sZ-7Y*JY5U@cVMGzrh zl(*TY(BO9Ybw2f%G&nOzmE%z%kvH4Rx~Gu_lP*q)zwf8Pg<^I;+YPJIHt1+^ zR{AWLnjkIaBU7uGDG~YV?A-1>w0OJarQ2aso3(BYoJ-(Qov16Yl zJudkkk*Ix&9uI%?iV`K!6Ql|w|Azp2yg6ZA_Ea1_zT?PcYF|Q+eO}~ z^3MG)7_bp_fau362F(6$$k(Qy0hifSN>0x);C?$TjX?%Rtoo*B&3H2-X4xxFtA2zL z=hj|r>p8=SD_34TJ{ro1+ddS0EKFd;69&@#-^v*=WBUn3r51uXSwFpFev%Pydc|BK zNX3M?qomja8JX}4rs;TjekLq)LMd-!ClmJnq-y%uh6#Uv)~sA>}?@+EcpE&A@hZC795oA zzpBm4iW46UdA~WximSCVE#X_FH&gEQT#c$5PvTIIe#YW;WMOP`TI0^@TJT=9N z10rm8edc7tC3_!cGik8lv#=M&CThFL`EoWacqI4c z^cOZf_I}T&>kRDp!AzTEu_im740|8;)RG-b%rfprXV`Hr=g{?i583g@FuGmBP3(Ay zQ}2VsBs=apWf*mehXY6SGF!1}bKrp;0b_ipIq+~W<)lFf2aZuIvfh!#flZ^s>kMCW z;IElW9*(md_*E^*T)xDK&t5owfRxUO+s}W$G54AiSKkoe zEnnlryB0EM;~BW{;3}lN5a7a2FGJOg6}WKR>Z9Q~JuaN-x3@F@G#7rrwfn>sUqbcA z7rMi^u&$=PwH`sBq+2X5W@T{UnKm&xDhe0Yq7H1k^PUUaN)@G?{>g>&SHjXFS-Ejg zS)kPu32uD$saMi36>faNEdbgAOqxG~qn@mIQ0+<3Fd&j9`B z+<5JF_scsa+<00b^_g}jH?}j?J`!9cTIQ7EAHm(nvnc_H0V!a4H|pZgKg_MB&3nztNKJ4)9@P&%0lq)AQqp zs+UXd$nxVeSJQ_M9^%Jlw}oD<+VJCj+{xeA&hz7)j-~D!G5pv>ab=HbAwSO3|CV3z zi60mCm`@x0=EtH_8pg)_0(d0euT*7^0RE1rP=d7pKIStrwE2<%_SBTEe)&QGAK9_$ z%ukRj%a=p1p#cG`f9uRK6150fxggs^3wuiw;t zAsqT6Cx*6K2r~_k+Ruy&;mkcgE3W*)xN}AP!yhD!Sx*#*Ua=?06|F7jm?MNSH$MK( zq*NGRnlw~z85PDK!yk7X5*5MM%ZJ`X9umQShG|>8yhSjRh(*ot3lV%}ms+xZg$Uks zyy!dUun68EfAh<2K~els?9BIUV^KUAP_*UwWl{W)|9quQu_(4Ecq;gNP88qvzI<(; zgc$zVFsTr9Obq*SR*`a}#IT^cy?T4C7`{@>Sd{x)44-Jb(!i@Bjx{ye^I6Y|<5{OP z!E=S;IL(8@c0>}B zxU(-9-;u<@1=c+>?7mWBgWp7AhmHwsQx)sv+?T?vS z{ZVPm&JdTRBD4vIs)zjfVY~^`2P`fJL~O#FrzGk3mu|uz_f}_Wk8i?~BVEgm(lR(B zk=*BXQU>qjE_;yjPzJXp9nAgsNd|WaL+>CE-InSMEuo+)HAk)oqcQfYB@Y?z9 z!)7e1>+y4J>lV!XK$f)Vy9HmY-09NVy#?1DWju6!hb-={5vfXvk;OFKd1U@&SzH`? zV*0q#R$QwsXmqA$D^}%RpK;kEhgZ}uIJ73oVXIGtLj1DZa6NDPjkUsUxYXv*Z6@>W zIP-m6)79DSc)RKF=Db9CT=Zwx3e}k%7|vx3v=}I0ztr1D+tn2DL9PeO4!TO1OKMYw z+b(6yFUia**Q$*7lbd;ELR4_H6mU*BtKy(T=MQIGRKqU@*99LuQ^)#x{TDuI@50hg zUyz5r_Tb1}BTm%=S~#XKw(65T!jIxU#)-!t#2QGT@p+p87JDwrD7)hrjwKmK|1TsB z$^8FXJd5U<_V`vn`@YHKV{H|%Y{z4hE>#JS zOmy0teJjDy*8E^`YbAIGMsGPQSp}i4td%3)RnRl-yhEnB3hwKzo)rl zSpC(e;091KRlF*3s{zWZqS(>121pNBTnNu;0OKBav*n5g2)FTSx!ppzR9G;?>|Fx{ zrybs|GuQz0IG%|#-2f+AtPdW3NUsTib%6i;6nN2oH`E$KIm+ox+_e9 zwu+0-uoMM+Sby>zBHS%;wl_^V@)Tg333w2oOaZ4Aa!rXk1r$?!KA$06FWGCFEeTo_ zSWJsaJEctl=SMes@(|%(wf1%=?5BXhQDIgwpVE8+;>Fn$b&sfzThpHT2wsTW9d= zS{bop;d6xgE_XuFaqC-ogo;mEOw;KTZeM!q12;mGFUSv!6Z%%#Qu*=`3XCwx&ng-a z#qr{e3ha}-7QW4i z0##+tBKDFfuv?7HI*4!=)yDV)$2=%d<1+i?k{9t@sacb@?Jw~tdc^wu>M{u zbwvOAicdqDD6n$b_{r;bV&9moM9KA1fL^O8Iru#VY(6a?>iJB8g&Ku5=|Kwg9qaM% z7$w%*>{?Lq6a~VaefBQRQefxX?bOQ46u8~J$;O^=K~wIiZ@Ed`2w9f~&*w2T!oDL` zaqX;xYk5p>+aOmXh?xfT&+<2dqITD#Rl+4bc16yLR;m%Ix4Nh^ZXsODT|K(Y+Z(}n z;Cdm8QX@Pl){SLTZ-hkt)(K9HMkw4I`+#4Ya68qpfy9AEIJsr_t?h>z!KWlDOVh9s zD94>^j7%HhHtTSi^NB{d5V7a@RqIC3-^#i-(T=!ZsqSi>b0Z|=fz0UHMtHjzy^sBT zBZS@gJg9!55%i32l5GeV*6$`f4i6#R+=XK{1!0Y#rI*9;C8`nP{jT(}+-U@pL@geT z`;G8AuV2nJz7fLn_trj6XoQwMQ<*)N=rYQpu+rc(!1DnA59qXyMYfWG#%4NfJs|jKsH3r2$Y=ZF6)@FmmCOG~$Kw2!T3En)F zJVZ~p!g{r*C+WydKtIKnC)h%?bKJB?^K}z+6>OJx?Qeqd;0csSxWjkzf{eb-Ho;It z+fk|2CWxGMakFD+2F=cfr39{KXlOEs14n&DiN>6cZ)J@(VHi!JeK2ELEH%hs2g z;khMC-_P)7Nc{c8z%!;99)4iB-WT5tJ9g84S5IyR<&N)f19O^T?ttyLypm?P;7`8s zhTIH77KJXO&CMXAugo~n(+mq*+y8w2)C?mD`OP)oo8e+Z$=0@0RFK%C&%6aZ!`GN()@4 z@vFs_BRE1WpB-^(DLxcQW+L;#U z99tWY_i6!o3x$s0fEE~JuSzw(+5%U^xu5VxwSaAd??huv3s@`1em@h}0`7w^CpQR} z+nA#z;Cgxs#DAF)-N@QQc zg`pL^MJOlv*;_%2=Ee3k-c|@3%_;5|X@xyS4!Nb$tx*2Wb@GN>D^zSG*ql^qg`er& z0$X>r0=;j`{+Ye4@NmbI&1DB#!SKr?1`7K%@$nMFb;ZvBM= zTj6SGyx)Zftw6geb@2YvR=8(M8m~!ig;M2f70X$zFyg>?MzgRLjAZDCBFbBVQTgcn zU~Ma;E??C;)Y1xL8jO3(x?5rA7&cP<&RFfne=TSw)VdN2zwjEUbNtx=4*p2rZtmju{OB<^0kcI<~G=L z=IA!Ed>cF{WmGa&YXd5k@ok?p+d$hgOwD?K8>~Jtk9d2y4MfwQhU=KLf$r5yC0Q12 zu+$M(&3L*EwyBGISh}=ZjC0j^b8ys{yA|CmiXqPj)5S`WrTw+YDH($1a@1)RLRB;=W$u>kr zRJOsb#fqEZ^=)uCw4ExdwGE^Kspn#P+TgjI>b1lVZ7^;0d9?g%8>n6kHTyO~&<^i& zfAjum18H$bT8qUtkZ3Qu`*O7njA*m#h3VQszBncAF>5=>xqd>sc-!HUwP47k2$84m z)v4Ol4iaZ&>~glZLuXxJOqFUourktJ`Kj3sH^+b09z4(vHlo_y)koT4*VHF2Tl03< z_>=Qm)}|dI-x!(*I=6$7scxoecPA_3F82Z*_s1P<9Uz^2e`;E=1I}wjrM;HvfH!(! zO#Mn7(EVlGI@8_`FdxuzJbtJHcq^@F8_Wq>V@~ppv0Vq;>5WbQ?<%syw8r@iZd zqOElWEJGb&arB6Y-)sl49#%1!Snq(H={k{iY@M)JGqCbexDzHrj4O<{cEZ>6Tb*_4 zonUx3T18=hC$wK<{v3UjP}Q%LFV>xKQqgou@=PZv3!XV)=+_CurMlvd*E(Ux7fmO- zm`>QGcm2%%XPvMu)Z{8%7LgC|mq{t@1k=E>3F(GTXtpSc^Y13^tDn!8_PG-trdHWy zjdg<5q1Lp}g-)>hsjHw!)ddEkCoMBryP)=BXz{#27YIsg&#-Rl0@>|x-)44nf#S0R zHxhSufs3x#HgSSBiQc+j)xn?(`mMOmdLQosfn}+A!_!?r{c`TuyemPS)Nnm@^zMSb z^;339L0vFB;nbHO)&&n8RTu8w>Vi96t;h8rc7g5BswreJ>m{0leCx*8hK0K<` zzb#CZ^HoU96BJDSE7z75*=`7<#K}r2cEi5amHV{2h`24O3skWl65!833Tb?xOBsqAkQ$DPdBJ!7dM=_(hdIydv_I8<@YXnobGNAq+2=! zLFSw`BA_6pf`lT7fG8rN(xQ|I1_%hEgkT`8bS=6OrCUI{8_xWlea^Yr`(mGc&c(j? z4=x_x<-1t#S~7-X=;!@D6y<{Z_0L+tluc+AN@xWIs$trLUt2+@t6W}oc`Fb;W5m|d z*$QS&Y&FqTD}cNd<=p$N;Bd{8o*Nu(fHZsH!V$SPuulwcC1|&So9_*OeYoBR7BmuG znfSMXpXX_oDwEoPR$z|JYGoUEaWx`n?N1x{e#ecjjkX;;%;!l9Q)~yHh^iTtFJnD( zC}p)iupRtRp{Fs;Y6o?nf{2HP+CeY#!$e!=4)DI>L(|;x4xo4?F3r=u14tBHPNx0Z z0jvt^GLj}bz)bjUbtu#cxLq9m$1FMl^PKYQXYv0in$UlzXzXmvU)Wv$Hz9Kq(+9`@ zBV2CV{Wt#lmvH&d_j~>&T>b;$lJ&oZOY(nBxP1B#gp2z4^>8cL4%NvrimL8)!O`1n z*H#OE!@gF-lbR_#(7K+eInb*Q3fvm`zB1Gg&11$Ae~{u9jN*3>x2i$7;Uc15+7s-ye9_Do<`o{0|JEq+k^b`UBrK6*b&!`2!~o zPv18YnSd`IRDbGzFad32lD52mOu)0n$(L=|Cn0MdpR1YkB=n3H&G5|;2Yzp2og zf(%V5FGvHXVD?cHOPbLs80r7U{h+~LXzpF=_4mnN7#*IpZCdje1_r;`9Z{Wz#g^&5 z7j8~NWxk>y)5>Y+bfa5^RCxwkrt-}O1<$}fJM9_H))^>UU(qvtXcmU1ebNy3oQ0RE z4Q^aWo`vk%x9fwpW}y^+?TW9>9Q+!5U9hKM4tjutmp|>!!54o1=boZ@s2w=a5FI=Z z6FJV*%r?x!pzH+GSmp&dVbx+*tGxhY-!yJ$;iihw^mz{QmkUtU`Wl<(JKR_?NogFa zTY!8_RnOUo7U9IlJFR!HTyb>DI&5mX2!-=j;|Wg|;c0G{e<*u|xq zeQ|mb%IK^*$MY}22)gQcM!h9?so|&LN&h8iJ6ZOOH+Km>&?_+W=~{x99UjzQAX$bk zZ#GRk6qljDVTo&>%`${3e|Mduuvk%hc)$4@mMWiU?~pbx!|FlzAeD(_NP1|ics z%Iq7E?aHsf`0@p=D6I(e5)qW<8 zausgV*(PNRV~LVwn<;mG6}~yFw*U0ODtzoqJD~Mx6(%;9-h0@!3InF*>8f{EVd2{G z>|M?^$cN4x$`)9I)gCDwIf`r0H}8(0+x0cLL#nXKAHN2ToQ%}37q7uP+_u-YyVqbD z|D3ii)jBNy(jywBwhlGF4Vft$ufvwWM)GI4ankTZlFISRI&?YCxaQQl4lBDJ*+s6b zLpanY?|NthlF5e18yRfCk{Ox>Hk%FT$ix!V@q7cK-6n~-lnqGF{qCrG#|E6BUNO12 zwE|h{>}yVOaX&q4Lp9c#<_& z@f7D4!#zkf~H?J+IJdj?M7_kMR&n4D8EL8ULVxJzJ+JdT* zOR8`tjnm3jn~ zZ`kpB7rxliCyXuaLhmX4L|V~3IQZ_6QM36T9H+inZ0(6<%Cea_-TOUw{SHcHY1@N; z0wy`rSN7mRjcP?cEK`gRD%(Gk--l(F-sa{Q@59^|Rw21w`|#JpM|KyU@52Xn=DkO< zuuw74zn$N*50%87D2F%p@hwv(MZ=6lNVtt#pHrF$c@aN%2t!2ZV)PHcdMr|E4rViE z+Yuq#+FsP}R2&kZtSG_*)}DUyX4{WZVn^HP8qjWo`93aAjH*Qo0`2Ovf( z4^vLfUczGK^z+mTEL5JeT|D8YxCPo*tNUsUzV7ZcWxX8MM7?p}BMQXGW zBQEue!r`;TsKE`+yr;&ZB-k;#3b#whDMxx1aJyu;JhM0H7zqkw6&e3)N`hSY#QW=< zNKokMn3`FC5){Wn7zuhqf%Z!UW$+9i*w8#jiY_noeG@k&MNcD-_vV_Dq88u6;HS4p(brd*KRyJKB3Qs5{`wSLZBJEM`8A+m@1|84umxmwQMNX}@##!UQS0cUfNV+dL`ym~k+notzBq zdt}z!6d^+=;z@`FaLZ)R5>k3fqYAervFG#pdS;Pt?jsVqL}y9EyaWar7(Vog3{t6x!|tdwU<)88mioB`v&WF-ZPo;$ul|C0hOtp)B|E>oaSDrNE1 zrbGnh7b@YWDUml#HmT+f+&=l`NS%s>%6-Qp)0!VB(G_@SBBT_b-}vxRWh*6WJICSn z2@933Orwx>Rw{HVVD^%TG8O9F<6cxWq(WZ0H>hUqsSv5INL*?#6$*Z9RTi8;g+8nc zef*tAg*<6ep4xO%p}=jRz&t{Q8iyF^kN%}XJ_0w+@sm@d&F7~Bb0w(}i3IP^_w&?f zcfu&s*oGPv?O297`BI~|8>ZPz@zltOL+q|!7B%{maQ%7qZ)$W(T*hZ?of>_aiLCv= zLxYyr-G|1NX;9iJ*&G)`8uXSl$0gl`1`QUP?|OyPpeLqj?S`2&D3XcKJsr1DzLkC0 zpxmZGS9UpqAMw#5&eMa1H?UA454$8wV@`{{fBlm8^eHVOk!1~Nd`F8?Mg6rrGHB7R zm~633D=k_j7QAq3i56Y9D_CX_r9*9Pma#{S=+K-=T6N7GI&`?ZO|?Ck4$1x9i0RCx zL)-hELn}Y&P%U>K>&_k>($-NPUdL^eriFJ$lJ)2jImMpNnM*bQ zksehwmp|C=phvSKG!LF{&?AM?{JTox49NalluEJ*11gLk)ysBdK(^Y4J$Ql`P`s<@ z7FQtyLL~3WCnp$idkFM=pk_pWW4;H_X)vN@DG|dZOGYI6-7#Fuj}g_$%G9xaWJL8c z%`LZE7?I1uNa>*+MkIaCpRIN`{I z{HFgODJCGp$L%qZqV!g*U^W~6$9h+F?KGcs6dT;|Zm4V49*16#JtC_|M&Y4$!d$`P{H zE01DER@%OoNHduc1Isbqg)(N8?UQ@exQiM6?YC8=T3|*4zqx62cCmm_f16;#&Vm%4 zpOf8HWI;Ds$rpM~u^_dUh~vRmS&;BC%IvTASx`+^si*W47F6tfjFvW)1@X{OF*8-M zpflrDrd$Ioi0nhx!hvpcuCSuE{3lFT za7*QJ_*ENf+)@cF6c(FGXGPEMd>oOhWJR}jlO^qkS&?M<)T;~2ShTojKi6SpL)^Jd z%>gQGsIDT&V%UfcjXh2+dUO|ym9zIiO9&gXIe!z{eP%<687(?qC2Z)JxAAG>E;a-x zyE~c|*iekfod6dmb`*X8aQ?a+I~wJ-Pi@j?N2Uvp1aoh(qoTw?k>L<_q~oj}%9O#5 zl20kxI<~N*uuXSUnk9BbV_PPd$HswFPbg7qigBRvQ^SWwG&xYy#zcpjB?qEu37P2d z=Rj{l6y7ywa3BX&mh9+S4kUR=L5q2k19>+#JorS%i40U24}MhQL?wccRF#Z5(VdyI zq12w7h{zf@L)k$TFy6s<;uW*DHqcLw32&5Mid@EyB8_=WgHJ6p^;FA;J5?GtojLe zYt8{=F>vo{^6&vPSk^V!#l?#xOY#F((k5J2N4HpKze0;oQ2`)lxm0Mf6_-FV0;i2Cv@ z_}?Hwl+L04zS9x6TyoYEE0Y9~#%}9l&o)6Mf3Cq&V_Oj2I=wZcDj0K4`x0mSs<32XalS<_TO)#mWq)VUQi>uOY7NOF`l3jbu9?E? zwJ2g#Jx5_OEs83Q;&Nq=h@p9&)Q-+*F?7}^;J)^T7@BKJc4e>;N5s6cjY$pSs3|?c zX!NKAV(i&Tu>LB6>iyjHxp^c}r)8pu!DC6Zdi?8kH6|&Pt+4of_pKCiK1d%>ds-S* z+PZyho|Hz3+g$1P@rO{(paZ#~qYRpM7jC$3EQ=25cpSWaOb(TQ===RyQ6BB@!-HfE z^61d$ntRZ71@zI!2Z;$OqE6N+re%61q$AKf7AB#LqQxTuMod%?$1Mp zhm-24RgHbX<(DR+l{(Mkg;SDSb9Yxrj8CHaPV+ByzjaYf>SL#(-TxoLB_;A*N5Iz~ zfFqC8Ly)8pcwX@mEVx(*oEz^KoJlPN_g6gn+cyh=uu?#((YYd!==a&VQF9#oZRzL87x~uw0W1Xcu~7K@Rbvb7l-F6MK!8e zwlLQ9)2dg4VcoEwvq$iK;1tg8_cg0QzQ%q`)=?}TcAl=KVF~j!l7#;nz(V7zlJzW} z@t4fL=wcZo)okV(hUW<(>c=^F9^Oruufy}eba8VBo{vNa#ed;RuoKVwXWAV5w|P+g z-{#Mhm&U*GqXT=nrr(Za&ZQ{9rYmQi~0+MQ1I~6=TqV6+X z$5UcZwD&!p1@=$OSMVgp5h$}`SOQ5Lm;Q;TNf`ai&Er^#l!YQbEO%meh34k)479qF zG4hY#q0152#)8L1d+g^CENK!eKZ<_9V&=O`lC(OOF~cY{=N}QXcdblm7E73!fz%QP zEMUrO1?a5|u~1pA^%yg%1|Rj|el(UZG+H-RA6>?uzoe;Alm(VX=^P5btg3@J}a~`>krORb#s-cLb%bgUfo5WbUobm=gd-47FSs#c< zOOvVrlNa^dv{d|a(?R0;>JyeZNc-O7Z`I(cdq=ig9)6yK!S(Bf`1Q)FC(oBvgA%{l z#>3UsptWPMnX4X4rs?qRC43+MY|0a%okrzvl*CHzS1qnbw zG^v$Li~xcYZz;xN0h2@Gds_nwn5$pBZ2u?`z&eX#PMjJ6w8$owS{x;SV_x++hmK*n zQfCoKaT@mos7qC5bO^wArTKdQc`RJ~M}Ku25kODEh|2IK0(j8jCc1o;0L*Oy&M{sm z0LAlHE~?xlfMiO^zt@}zAXAFHJl>T6>V3$f20aMCPk>%h%9{X&e*Um|7=Swhojs`g zDFL)gX$&2GMgZq>t9>$XpWwnt?{Fb3U~V`)OnRR{03zlskL8jH;6!JEY7G`JjL&#R z95M;ub)n?)!8`(3*mGnYDZ~PZ)SfxNoB$*p({>VS2!NE!Vfk$n0qlEP%jI z?TKzIhe#UJRk3`L<&6*g@P_~@qpK^GW(h!sf->OGG65WXo>x_}g+FhpMvD^S8n9TH zOFThU1Fr3K${b;;0S#Sd(%(68&w#OV_Zoi$#MtXae7;u$ z@(bTBNO;$PL4{=b$|qRLnAw?mMAiV;`w|9c;%b0Cne6PLlp3H`Gq@<6Sp&kS)`X>g z)BvaWL_N)_8t`n?NzVj#5K4m*54!)Z0dd1I3~Dbp7cW3L6x3hQCg{8*?&5S58a*5doZzq+t0)q<2GUzyeYyRqbS{MYmeuYb-}=<5LTc zDW@}5Kdl9J2jiY`M%98hRwrgJ#o_b4-i19&#$qPr;;-BlB)oV zmtenR?!j2Rbm}@4p7X=fg{V?;|7jg4e7AQn35yp311+QKKjLMt)u#}P7e3o|awRNY z^u?ikJQgoqq648@d39hnZ{V#C7BA7CdIlq^>%hBsl8X99EMoF!zioElK18uQ*Fh{^ zhG>&6sg2ZuO8>&&XQr@tQD0opU#J5&a{b8l*6Towk6pm=J^VgN*k|R*>p=}a$8Qe0 zdT^O$eruJb9tiPqinegqgP6gWN8bz7gV^&V=&pD@n2UOG6#uh5=&nPCv?}$0p?|^Pe|1@EKg*s zE7Kh6f#`UN>5Dt{pfsj?Bgms3XwA851o+g0#)`qjr$O}~t3&N&ba*{T6gPGL_7V%4 znPkUK+^cv#mjV?{CRaOUW}Fm4|!$P139DXTs7b8!70PifP&bp1iLX7G5g%s2IdWb@1l)Y z;I#&DdPVp47l#I5a$L%$=}rSUTAY?N;?V%)%(TAD`QY{N0h~MU zaeee97B*GO$2#H~fJE>HN$GnmRXU!qrKL9jG9`Yph;R71M!MbI3mU+tV6lQtX#+?T zS0OPVG=PS?dJU(V@O6BlbUohL0B)(=8P@K_-=B$n!^o0iC zVgH2icfA34#f@-k?Kgn&HZC>p_aia8chhDP9*eN4HC9Sas;^DB;gjX;xXOYw+k zBPhN|VJafi2#(95>oO{hAk_2YyzxhVmw5eV%!KsuX*-Z zUTp;KVFS;P+ckpO>W^mnE{&iBaA*X2;$xL~&OiQ*K!ojP>YcDgur{~oA^o}$WC)>6 zrgvDh)a*J5XEcJ(QU~a4avK4>O0?8ciXXo-tA4Y-5$J?fFDv|P1dr7ygvEy%LHeC1 z#oE)2fL--T8ou2Uh$brk;2>!N2VQ36m(gQ!;(>o4{U-o~MCH6NuF23KqZC1bE~p+=X45fTVLs=ZQy6V6^w@{?m{q z@X5JcelfZUxSy=J=bq98oZ?0^`Er`Tc7JQ^KzS2*EVfit(9#6df@>l^_BR1;rzWj0 z(@lV~g?YAevk5%2(u|#;YzE7w{IVPz&44yQ-}RhGGbk1}ITWPW4EU;wC@Wzzu*vB9 zvZL1wM%ops<;|NxOW5g|%eaFQ`J|ZO>Cp`ORF-z024N{PGJ_t!Yz8qYDwl7)Zw7Tk zi(=~Enn8|2=bNdLW?=k1u-vn;8SHzd6-{+FgQIso5|nT+<-k!ZMPn>os3aV#km&;pcilIR@LX#ug$ag!BT zxCji97YSOofI`NJmuDPXz}beSw!`lD`4J2D3w|x2E0cl3HLL~L%T>@=wF*TL^t08%mdvg^Ea@hQMI^vintX-vc4hKrDz3`1e5Ojw5{M2<-ybzrdD8> zjB?F6S^;On#E>*^D-bnwczr^s6$IFocV{SGRXxp5ANO3Y#WSy&wt_n>zj=9VT0xWVk-%NYR&Y98)A*|g?!dT64QM@X z1#Loi6AGhRfirCZR7q+DU8M6~h2L7i%Ir;gi;7mTenR5?AuL<;wEG%VCtAUdLB?3f zb}MkTNha4|ZUc`WKbtj>Xaj##Sm%ae8@R%r{(JRO8wjrun~8O6!#%Dyl|#4-qg>^F zvNfv>7#3JW-s@-s2gk0i_N=x6jiYyeQuDNft~Bm+8rTjTRh(AFZnOh1o1u~Lyd8vS zmC%D?EMIPUlGXif$I=nDLY@wgf5Kk-qfQ5i%AnxL9Bc9bO)ey zk$ToH(h1_aEN+olc7l3QFFuL?DO`U1UkI1CcK?mP{v}-gC0zcKORN6lhRe|Z7A_tC zHR00p9|#vOd-ciLfF8L_VA*Djcj*d<9tyW!{HfS#$&9+=h@U6PA20Dv!UfSZ6Q#?O zFutGoK~3%?eEMWV_bT%gJo?yv_(Sj%EY4mzwKF{hgS}<0DX9E~Vw$vyw_^W710ALd zzsaZJ#SQNnGp%X(D6ccDK5!a7Jpb48@bWYyc0wNprDtGEHbI&uYz7Xqzg|2+HVaQ( z7gN zk_D)_tI&36VF6~?H!Yu_T!iDl#cilK7Gd3m>$-$vi*P5PxYxmR5iZ_+HlLrc2#55O zIhFAiAPwe)d;_W_xJlyn(nDqmn&=+xOgym!U0MCbeVvwIn9%HrGaX z-(Selq+5o|wMxh9HJ0JIn-_h{uPj6B80HihvJBT#28a2Imf_O?%Q?N7Wyt;}+oI&a z3iNvpSvl6*4hp)-GqQ!VgMP7ZvdK9@0DH za&io7FyVcNejr?f=4mCWcW~$0OHZ$;~8&_AhHtGT>6`bp9H&ce$;|*{}vP zDJ9}#_tzk~)Zgy{ShAR3%08@v+bdh8m+P(E@iv~gBhlaRwjQH_WJSd;++K;ldA(XS`4)6YS@PMB+=A4!9B-BDx1gh0*QnF%78En*%t>L`hE(dw zU()2aq2@GlzkO;O5^kvx+dFSVPT7sk;|W-<&<&Xij&H-8k9ckVQ0>6abX?^RrFP(S zEO#%7;ST(&b{2wW2OJMa_x1JSM*J5a9Tb*xq04m=d-bL0>8E?f$mk9CmS zg-_l*xqI#8E@aae))TPbg)c+>FZBlP!q-Ii`%dOy;Zpq0sA6Cj(p-E!K%m=$oFXnk zYASp1@NFJ(u?u_f30ups6&5U?_4J9);kL?K#L+p?g%d<5nUl6G-jE1QM(Io^-XKDLJsd{W z4~Wny)g$L`VX^XDi~0WiS0eOEJ@7YI4H1d~kGDI1;Z}>JIW$`$LRabT{-Pu$Mrmgf zLe5hWqqPS{xAbU;k*=Q5+9EqKDi~dhh?6Ep10IwCu80`T_R;u$H77>l{JUQ{-HFi| z(*yO?LByz4RdVdiOT4wmMlv8MofzdrFwf;;!7{Ni*_hHwjP5f2xT!r(j9!i3y=uQr zjO2W_7l-&rkbkYH<%SC+f6(}f?l^bUyL9oMYro>?D+Baof)P} z&h)sYLTVXNM>vDG=rBeHFk`v$_g5#ri31CklWDh$qw!WA!t4FoucWB5_DCa53n^NB zkRHw7M~c{U=jP={Nb$Yn>9^|^Ns-nz1SR)F8gf({w>+jSN{;><)$S$*(MB3!uBWZ@4JeR(ANcv`76ocNuIE7&M1dIYew8?uMuEE4_qLg`D3F1!)+z4- z3bgB$`s7SG7A<$uCPz{ZBZdM+rHc7EYyg(I5@0LnHq_B`#yhuh8kV*HWnvXQzOCI%P$xFsga5OPtJ-^ zYQ!SmzPkPriC+(BuC2ildm03OR|l1c(IDIW@i;BfqSw1*buG2d%0A*Mrn z&yLjD^U@*G8#9dJI&^3itfUKA(jgxzhZl4XbcoN5{6uUN9io=-DI3nCLl@oN(Q3@n zp-(!lM*V#BXwLB4i=o5x=neVd$reL;q*Ww;{JxBeqj$#` z5#zDaG8!ybwCfeQLeWkRu(FK+wiG2v}SYpOq+@bglVJ^23M=8ERm^VC?bm@9noxJ$*1#B7Gm zIM|p`(!4=9wG=a=xqds7^aL}a`fl>q(2^OIbRMUr^k7DP&x(({!;O_=aZFV;3CxJ` zYK??r7Bjj+v&&$QxBe73rKtpsF(a2eY5~&?+*moV>_oxEf?NikyIzrJL8lW8hr99i zpSre)H($(fW94P)r0{JPlsQa)!^WEh{jeTC{5T#9m;D_h@$W3?@5a2LRx=CI^0X^} zQ!FTC*tf-X2e(+hl^5)=vLgGzDa%VrtVqv4M_yQ;6}<_kP(J6#ipJ6{TKS){B2twS z*RM%X;<=AC3km6wfQj8ovPKi~I@xP;lz-QyVX6w(?n`V)Yw`BItPux#u2P>dc%K99-`wmQ!CQhn zGB~e!NpVl(dL)sQyi#)l1q|;o)gKt_h>jB=0q({Mn_o8IMLb{B2f!B zPP7y|{ca+b6AjFo7gkhqqW27!ho1c5L{w)#EAugMA6f#j@dMZj_@r{gz>q8(leVFno`n2d#P}T;|f@L3NL_N5|cG z(0r$u+=cf%h(EN_(XoREc`_?9xoz^GSE7pBV*&@zyXn?@!nnP1GG%M+g6{!D;jrv1 zlz#xRs;+&AoH&3qZY_m)apLVl99mq0XL->P_1L}zTVAw&yqxb$1TV5mdBc3Zf)@?< zOE|~v^P-M?GvgIiK6LBn^`euv_>l9<+|Z0qd}x9+%Pgj!55e{KpYDef`?RU&xQ7k9*bqc*>8sU9=(}xALO^K28&I zIsueDx@o^9CxD#KR2uAD5I}2zUco$WxXtpntbgN;0HR&qSWzs)!sRu~)$DNrq*6y7 zUrQ;7bV=Ge1rG@#(Uygf2xCE1{F!yG&RY=ea%kq)d=x|r){LSuzXXv{Y)#Dooe)z0 z+n~CrC4|@mUW7Y42%*P=NKrRd2=N7%O&Yffp^l+GTd!Tb&4?sZ#Y9dR**fs4x84#) zybmZNl2V1y*;Ts5*eSxcaAlmP9|p z>)1AVrBK?mf1Grx6q-I+OqQT5jmmU7YrYIgqr5j{O0s^3&|4tZ)pkS%4TYDA6f(&o z?!!gWCy3lCmc%mi8fis<5X;%6GS zl~5U*cE|7wWptlY<#ISd1!WK`5mR^^Mo&s!zRE99N6|&}<29B?(T`i@yEU2!eGxuz zIV$HQQjv^tw(`|O!^g8i5}zCYe`vU**BNPNum1pADV{M48inA;_H=loPa*jDxS!)R zp%C=Dceh@pD*}IhIkdAI7J-hcAQOvnMOqPK0@0l-bl}ka0eh|%FEL~`x zeHr=DSPE8u!PBql%0QEqV)KAv8L+8Yx0N<414%a+xLm!q>t9!8wTpGUgDVwt#1VyAfUOHM1KAM_5skAN!yM|ga<3Z)X;9kY++)w48dsdP~ zx~&{+{&=&cv04tSH+~TYxGF%gXb=?*Zn{Wr9C6FRO&1nZ)x}O9yt$xAHPkw(0-TA+ zkGNP_0lG3W9w*_=26NFx>L*Am!Rg}BVg(_*nLwSx-3C?y4(?v5cJoTWSID*F=2;1( zZuNQTVCh0!7oMj5trC3MmtJ&es03kiJV!r|Rf1Prt1DEym0;BC1HBg;ZmzV@vJgpE z0XoKq(l22Zcrd9Tre=iOEpH56C-4S>iM>#zB(EwUp!`9>F02X=FDfsnVGEx7@fA>I}e zbqQF8Y)!t~$i*V$0gY>M2o@ohKg;{2un3{32rh`jlm2C!_+LDWL{DEoa2g8?_O}y< z@iePX2B+|h%PU>d!LwBAgrP2;@?8Hm4{aa+pT||4t%LtOK4T!dqmO5n#vrK?o>v6| zUReBdex~dLCp<3O9=9ZeanmLCMU9LZmMaZdSKC_ux0GzeGLnm;82U48(5m`+^gnrz%nP+RWcbjT&7Kwo6PUv=8LvP z);|rGtMhK}PU41316#TB?ML{}FZug$p&u4Be*#Iwg7D`r-8q;Mf?GAtZ}QGYU zsdCT9pWju3#)r7!(kNC_=39IRo%f1AblM1-`qjxWVF<_wwpb+`w^S z&_C8w4Q^Zw5aSud?HboF@_$CF!H|h%S@I-)U)oXjrnC6-pg2pmw}^#Q&FRcnYgn?( zYyKA6#&YPZk>dM(ERaIhinz!Kpw%wsM*tO;9%3RNC-J6>Y3gycQ_KXAc<4P!z)hFt z&YK0R+yoGM{6MnKK>`Tl8RvK}L;#zr4s3f^wpe!Qgjh)9*2%9dNWik?=qt8bRor&j zOl)%hhGk11u(CglWlKqUlv5qTk8eHXu{(vEE-PlGtXQ_Jr+M6O)W^q>;bwK-4Ev!f^`%ka)?zFKa^pO+1ujVs-@3?{m~e!Vz!c&^4b_xkCWXPgq#=?&CH} zWP0-L2L#~1`OQAw7YiHf;v=1p3BXF9la)ObOPr8{%$CmyV2#?>E%y}`CqeF?+2aVn zX-{0&_Z@D&D4QMFOd)`sKa32I@J0?=i{vxRSy9)!wE+f!i*`>&(v5cwn=bJ$nnvj4Yk+ta~~$-9Z1C+KVBb;CCRD*-BVc+YDKs`Q@(HUkbv7Rrs>a{T5CZ1Gx=K4-Ws4+ zRa53Sjs=aW-L>KQ8X%#!)~vOK+b;FLjiSkLo8=Wl$TUMO*zncSROQA}#Gvbzn{X{C zK52X*U8WWk7(GANdbk!Crb#dUL3l%mxFz|lPAxdS?C(EpR13WO9>r8%#f_Hx>S>Yo zwIH~Y^t9gHT3~xY==j=$S}-R_kr4d27DT->389Us1tYq>mpx)?!OMido}EdxfFwrC zn(tFBxY_3ybuqUVm^|Hn=~+^XH^dxSc~(;kT(~k-U$)kQliLn`!QEKOJaoC_GExh2 zohi7q@dlB;&)v6JR%*e$@cg)@9ellh0lz%S>ws>=eGMLlI`F8q=w}8;9XPT$^j3}^ zOOfw4J(9)ifH9q_3cY+CZjS6k+N#w7&pWv~-yoJNLM)uKXRr)eEXd@(PzOX^>;_fM z>OjK0o%;zZ+*;XMxpBMiAmXB;1EUGSX53h|NSF(GTVdJq_2r$@i9L0|jkjd|=WrdcH@r|sf@O=?h-KiP9fLku6(pQga;g$=t z-59wDZn@}RDe5D|Ef-2ZZ_fcNTkI^DzvbYTOS~qDLlADcbgndfFu^UCRk9XaG2C*= zE@LQJ!Lr3%`EOn&Zn;o8nwh=8Ef>%*%INWHd^<-9;io=I(Dbm1K<8PN0+|U zgW1k*J2os^4m`Tl3(Bxuk@URcT2l|Kf-A$mHP?fj9m34oPkfzs7TS;Z<0i~zg3IeM z+@#5~>R6br2N{>n4eKq}g9U?<>zP~iKtO|vjg6!M*r|Psa;I(pO1ev7eM}8tnz5rm zi>m=V2+JRe=WhT8L~o}z#IQVJ{oSi4i)G89x2#0A5;_nw6L}fR;zsV+L^3<=vx3Twv``^TP|w@Ctf9BX){(~?~>90 zGzbxmXFoRp-DmQ%!a4Z-jn}q&KN^5^&E?5nyou)BXLF^J+6Lg-I>?sVf@KSDyJd7& z1DJfU^*5>?H)5J=d}7BMK*;3oMCLRWGemTQKbP?5aPl}0-4?#i>62PU#EpRe-m&2< zsz&hVqHnkuQzOt4rK|hK*$9-#rYd9A*>8k|nq`b6ys2uu)4{pHOWCxu-X4j)VT@t4Sk*1dVt$5F{_EH5M+9TSNqtaiirZO;1f$ z6WBU15q; znY|gTG{otJ3O9pY_RoW}3eDiB-472VEL^NXdqXJ}F2zYIe0VdEMJU(Qc@`{E=v`J!_*=lGOip%r+;ADN zM-so(TEK%PI&GbkSe$6N_6J{R0of$%DKE@%+l42m@dj?URK0(&LV6F&6%oyI_CB}? zQ)!bJ9nu1Ph$C)Ay=nn@=Q(FDW7%>;#874x%NCli);uQ1>Shl1u+K)W6ZUq)U ztjCIPwSxAvF0LQY!h+wOf{e!3ml2whp#bjD4WYc+-u(d{5C011~@wu8r+HGex6+ClY^mUE5#Sh(yr zaDG1D0hU_!FS+}7VBvMdN3Ng)7%6Qaum+4bI zo3lpY;_;Y|ir6lv({n}mB)WZ!iYCLy2b0TSWqNocF{>Ek`cDflNUX!Aha6#VweV%eMO zFC>&I(pKI73;o+aF&WkWg|BD4<#ffS;b!IA9=2E0FkeOP<=pf%B)OrYGQ~OrkEQ4> z&*E51a@a$Y#GN!*@i?p^O3xP$A87(Nuo{5#1$hgwd__suV{id3ni=zI^DIJ(8&yPfdW$f=(XaaOeN0=t%jKuN z7a_HQM1xk+B7FD$>e1-mi}2;%#Lfq@C79pkblg;F30{$WZYP5&i@j6#Y5mwG*tn?r zsyBNHE(s4x33V^Q-q#D~8fcecTE{nY|D(&WeNgpw@x5heHf}~FpRx=C5~r9ZaGb>= zJ@|LY<}&nJXearM*9pON!(>BKOj?@Uj_wDoz#xnI>&|&A(BTsynz()i%Isge=ex85 zO>Nv#6ZTf%OkDp7ZoySp96oZ@-eeUz6VEa~@?C{@?d#o3ag^nziyAQ*jDAH))}YY2hwt9Vtl^l&eeCcf{CI$FzxU@gNS4&JK8)7~xe9&W zPNH0g-ArEmZ3i1v8&J@_^=pvs1}u%qSf29SfWkjAjgG(BfD1%j0dp-IuqV*CrfGEp zW=gWA{p8w&CYdHf+gh8DXW(U<8YV1te5Z<{lQ!YdW4)v(9An`v49dtH+l0pLLPUv} zvg~&|FGb_BeAeqy<`u@*2%5qn1X}@9%R&z#r<&JK_9m#xO zQI>5uMbk(%etH|SJxbXa|08 zf94r4xdVOOCFTb&@4zF9R}4}TcOZFTu;MIX2a1D*vyS6C5P7LF)H3fv`mMlU_WZl> zDN}nKqtq_^)wryZYq$$V?;ZPX^>h~|xv=(%H|#=R!Kv@NE4y$#S~n|?W)FUyh_NP< z-Gi48#`fLS+k>$hBJ;r>dob;3c(_jL9()sU>i(N99AT-F3eO?hhbpRZcP9Dvq0TUy z?{_JD?7e;e+u42SB-y2V_Rc=^p?WfI6uJ)!L%!QK74Ad0dhLF~<~}sbGv276BSK2^ z{IAmaiI4|mKc#S(2uTr0-c9Ndp*8N7^D)La!qVC)YHmw}-cD+(ustF|?2~!a&m)Nt zNMFd9drO2EjtTNveeY ziP5EamgDS-#7K>Am`LyxF=Fb8xbQ#Nd(&tv!#_~hJkRr-c}@r^>VAGQM9NqsLz9SP zij0|(P(mq5QW7bYP^QfDYYs)Fl6gwz`P~1t*IDbVb&XRO@hM*_$pac_I8!*z_RJW_UK!+D@|Vdsk)spKF^k!UXT z7H5H6Gm8JVkpq2#Gw=5?a`14bI@G#F4ne3Q?I|q<7|)xX9>)j^E7N4Jp8^FeMF@S; zM|eBrE`7jxAfc?8uXSz|@Z{g>r-pb65N5oeei7$^LT3bceDblp#a`rWB}Q1PYSm)x zzfyo-*cp!CWqh2NX-)wrCCGw7-JAj?Eb~0L7k_{f{L@QrryAi*5M6_3y(1+kk6ki5 z6GRC!#Ny4p36wCG`FOiEj}kWGwP#8iDd9`IOGtSiKJM-&fB6a}sN-trH=F@t)32I5 zs7M71ouxmxjHuwP3*XqOGgQDad&rH(nF<_^Z`eNaqypwkfjX8kR6s$+sigT5zg{#F z^ZP^vJACXv(lEM`MPJo1FiZu(+An_UtWv??H5*lm9V$4xzSpRLl^UW%7W*3&sbND$ zw%+U*HJo93DKC1S8dhwLw08ojVVt{WgXumsyfeOW_;MCC+%W!7>e+FuF@_IF_$8RBD=4NYH@Fm~cmwDh&)-ow80crh#Jr1PeP?8VH#lU0T15 z5tc`Cdt+bIKsnD3ulyPs7+sNZ*BGLKvi-8rceijBXwbp@4L2=_q@OIz)u06uQqvkT zq=gFyd}eN%(}K&hO37s_S|Inkd$P)r7G^AO`mTr3f`_pE8O>+3aE#~XvQ8Z>WE)O3 z==`CDM&~0V!yB|9BY$rX4Fi_1@L3SIrRgAACJi@qkf99lzY1J!MvU}*^`ql!w%}I=` z=XZn3(IFkWJrgfgKR4_p8MMrVyX0vwf?3?9X7}FN{637l==*KYt}ucj>-iyP0VYt^Y&ff>%>-Z4x3}spFaaq);_YA@6DTrh zR+M1*O7i0%u8A%th-@mf!$vUhAa4w8zz9qBsgWI1S!P(=_M3XC&kV(p&kJwkOpw{( z1uEmG%wV_7+7p50E8i9r-pZ~qL+a-TiwP_&;Fo*5!A%qAfF{42U$bR_Ch23hEwOy% z&!Cs+LLLh=o(+3!@Ph@CmXe(-XfUFpboU;G3@eu6B&r1=RuFFgWs~ZPk(LAY(3r>y zM6z$XX*DZU1-H2UU1Eisk;j}B=-5DKhL3ihlMQUo(U(6|VgsQ}c5+{guvF}`dMAk` zEG0gg%C+un@I%w~huclOeVRW1!Xq}=7E=1jZIsOIC1f878bLqkI6>q;CIyF-)VPVc#zv9de!wq)M*%)Dwd+_~u zOBg$Fiur%je8>*rf4j8xv4o}VE~DjL5|*+o4&4wLWrxr`apX&z>`*g&!e*ESOH?$P zE*nbXOwd}FZrMH#Xc=XgUO34CLCm!^gO@nqcns^v<0uXoOR-iwoXG*YysS3e#T@WQ z^QamVMp(q0DTCI>IpEIS!!ltj9Pqo_cIFrtMo}1M>GrE|!u!CSFD-hUuxL42cjGK4 zl!Z4;zBwG%kRY47p)1{Z`+y3E{s!3BXY(w(BPgvA7@-)kM< zf`|&)4(~NCNV0TTQf20bQRhq@$-UgbD@O5E?*v9yxOT7f`EkRIJNrrUN!(D#67;6N zkQ+RW7us_%!ZKXh_oM1JHyp-GvX{xROoi`tT!;`4klwatnjYc-dBuZFsrEcDnV?(2 z5{kDcbzM?_$^+MJ4>Y?}@qlv*1MmA09;p6$mCKTz7kYlgy1r221;oOB{>Cw0cq3GI zTGyTztUNM#eS>*nH1~Yz)H7b7_0uJ7w%}|~d#KR)1zz|{pRd-2Q5IpoA{U4D=WQ#ut~&JT+F+9s=~_`#!;S9U)m&Iak8yLnwr0Ah|V9CkDo z0I@Q^9WNgN(E4^JEEuCKRQHXz^P2@=LS%G6X+;1UdKV4Z#Rb9j*xfxoCW3HThFbm))R2V8sj&1*07KTFI zvsGmZBJg_2FjCG{1bjRO9w|Q+fo#iTM#Y~+fSJ?z_5=r(u+Z_UZ5Zu>y|KxP85n8V zKh{dU-HvlZ%`EHmI4_jI@X2ObP82*!D(3=CM8RNhx1g^#Mp$ajoQr=b3j3dO4V*3$ z1esdaVQhl;F}K;2hxRI_lMq#Ll9Tu4Z2_A@J)%< zyp~M@j>g)s?C48CQ)iG0t*-=(&_wojWJ^H%y`^mBQ3=Sta#iZBgd{w!IWn$mD+wkN z%FLEn*5V!(WIos?3HK*#`J$Pmz(cCx@usm9#D0$4cQa86_QbETaN+z=Q8>NQd1h(Y z@VnmBX)O(21>#&~8PcFq5*H=3Aq}rG=M+yImw|$Ve`+G~WMJXq>2^I7;2{Sg_I8?YSTaR?R7IpMRADu0Jj*dPn3z+Iw-qxm+GJerWaT=qdnlv4lpc zR{`=axs)-*Dq_jeP(7pSZt$)>FupUr8;+}ww?x(`!3MX`S=WzyK<0Xj$qy@KaM)XX zQf5jSSia5Y)!$Kp0EhUa_tjOw_kHFXF{?wK&*WckJq^f} z+*{|jxeww}ohq&10Bo;SaJu^cU%2$ zKwaVvS~%$!l%k>Amiqg#%q65n-}$6@8S;HGU;N~G8FJ{q@|k6!49RVu9nC&mj#~66 zY+de`BkTK(6{aKQ=yjdwEo+SmbY6{>`4E7B))ocX}fIpInaHc$~H;$De-jozoqS5=}{=J!rV&{g3aOipaKauo{IZ_nGX zu0p-KQpPKxRp_C6!P|=LDwK8c37J7>6>8cJ)sJ1NLal-Rq2VIcC_Z{NTT-tYO_=tV zUvjNRopW(Dh6&Y(#z4QVyto>D*1oh^I#`WFyXmiMW0_03q-xxL$r>b=2G_YCoLJ4Y8WddyV2L9CLi`uYAkQbc+@5Sg&(68`>OU$i{kvx z6YoSL8H`vMCh=}6V%bS?2Rnl*Mh&{ZVnG*{b2hYcP&(gN>JgxRxNCG1%dkVAJE%AJ9%merE z^tg2Y@^3udPxsp##;D3*`@gRr@QgEbD+i3Myn0IUB5=opPy1 z{nV%OY~1QmY=hIa2rO+;x14b9@vcX=no?gGUaLpZ%bztyFyc~WaeV9rMqK!5$i1U5 z;?kE_?H7Bq9win$4a<+INB*P-6#wF|v_{4Dl-WHjO}Q1<()tj8KZlY+98&T3Mrjnu z@C@Jgq;XqICPqr0AeFQn{By8k8yudGUrYM<`xIhS=v~_1t0ncwxrq0}^-uNahPF*^ zd~H3tF!8xQy9sBfbh(-8+wk_&{JF#37=c+I+oZtq7V)d0L1I|m@<+mY@ZfKpEwU0{ zKRH&9x+{;&yG~=|Wqg@42qP{5{DliQG2+6l#&Y2{MqF0!J6^v{hS3n(+4LxCjFxPO zxLjwzS)OxN`JSv;LgK7>^&A(Lq`YtaZidkom8Zip*olfvh9lEdBpOiHkLU-IvJEKo zlZ2z-Zj62i)Slo~#gY|?bE*9M8jvfQf`NoKMqMtFG}NI1t@_6Em|~>GzlQO|RgARk z_P#Fu9Lrk5Eo?mhBWoeG7;N#MZa_a4?^>QegWuoLa<~x7TDtvJ$XHw(koS=6hMPwN z+At`T{p^FU7h*bz0vphF^3CG6p$&*Ll3zp`qbv;PzO+A$#i)&F{sUo*vh=a&IzGiH z3+JGzsT4+8vf4NvO_BWeYxzmYyv5Ge&BJ4*q-pqY*JT&vY)0H=^63Pxa9PmcQIr61cO~h{Vq- zX?~+^LMvaSOXWD4P+`UBjF(Uoa!gmUDUxnN`cJM_&MG&d1ch*3VJ)05l6ZCRkRC=* zh=f!#6TCm*d5`6(CPb+x&u)OFEtgC>FUVkNOW@fTJWE*GVi*&Um5-$@PqaO{PR8Kt zm>rCr#L|`vvf0$GPnwXB2xI1#mpE_4Zo0bnZ4;`IK9L_>(u7!!g(Vi(G@HaplVm zhGz6IyPVI66H83?_sdZW;arjH9_3=mW~7n*OT}(C-o8c8v##EZyhGSBZXaq!rTt_HWK91qo@qu}rrw`EIX5F-L)mpYjI>Oo>rm@qq@`Gw z!_X@XAOA^BCmzdMEKjmUr6n|@;A*?ZR4i*bHFBmg=2liq}z}4NJn}j3VvW@MW^8j`)D&- zExCv7VE8^4LLR(WY)17?`~qJ$nh|}?HWwLX3qpe)zxf$jP+-o(pVI6tD0c0lw+vqk z(m2saE3~TxU1MYCr;OhfZiuGpKnvOku$134 zXhH9+@;dX5w;+XMw;rB8(SpwOTu!F6#psHl&3e|k7IeUMWYX{wmaZH+_i)l3pLaY{ zD%Q6Jomz0oR}5}J4DSsNc1EZoVwe2672^z@WJYcb54no7b*3%8_d=4Fhuyi{^Oaug#i%zk5kRWQY~g%KK|E${DIXL#Pa=py!lQG zvfyPQxzn_wE%_76@i!fZ$)pmIR%bm zY0Gu7h6GQ|R&=gZN-GgzDa!h7r+ocZM3dzi+;j}*h#2iwzFA^vidB%~^l6NgjJ|VU zKG%vOy{P-vFX6mUT#?6`M=Nsavs3zatrfL!ZSss&LnyTTxZw0$1tnR`h3Q zp*!_nD>~5?!ylM}_wT#$;>5F7^jq_c_3rFe^s|HYAZ30l3ix3W^rfg3F%C#L}Kk*kG*OmsWJ+K&3AKP%Dx?-XX_1iqRGkhE=|q zR#Yp{a!GL!fBup`>LwdFhs0;f8bLuqVHh-OrYE6UKE4N%>?9QUhch^dkA$dp1^*Ei zC7~#%G?PkA{P5d$Y|xt*&~RAwn9o>Y%$srsqK^YAGBprlk(iC z70w6w1PMA|w57I~UUd`8TP}UIr>n&BmQYKN`D`q2X`xe+EW`2^&e)>D<=Yrt$-k9g z`+$VLN$B2~c}ha#+)k=FuSm#gpiJ~0&K8~6aVXBN!19>FO_*xL=eJ4j*mRT7^Tkub ztKTp>lYYIXW{ia7^K9tL{*lni(Pw18wn(V>USYNxeH&_c$G=d-)rRs9->bSH+J;hW zI|m5GHdNOCY1UA)4V^tl855%0h6u;c{J%`wP>$C7NjJMT#E^bhO3I}THO3USQ(wbq zO!uD}mK$xzE8u4Fp#+>QdizD~ei}Zn)g+DiO&c1unU{Z6(uTskxTh{OwxPbRv8F@4 zSniVk;+EQQ8+xl3-gFpei<-^m$X#~Y&?34Q`+~V0-JG9z^j8o|ShD=kQF)A_oUL|$ zr-|h((;^h22JOgk>0Hsh6YXf$-eWKQ1)LvJsNxRxYDYd2`=_Qtv5aM6QrrA)J7PVf zlKAFHJNoL>=CguxMf+Zt1nntpM?(77P0X6GtmV2<&Z)k3)F4=9tM{iJ+1Z~pV*l5U z*nQjFN_W~((zT(l2bnw2=(qWbWGruyO&oD;!txfiu{PTlwGO29y-YI|I?yv;xgo9N z9Y~mU&NIuV15pbKo%w#T16l2?dw=ulKzDb9hcd3?ywDE!(Y-Mp=!nC`nV6&w)NzC7 z@$2*s6p~dp_yD6V-cYfA9HT8WzsI@zG1@Zpv{7kqYX>^H+N$N;i%}VsTN*(_9jM~k zfTZsPMqgrbciAs=pp@d%rw-!$&|>6X_PZEuA$tm)H+eZ_O(1o zEu0H-__olsR(`rTN3_YWB%gW;%U>>eq(@@JMf{@3OBRf{s9Th{ z>iKpeAAvuCnm9`&ANn$H`F1C|K9?YP_Yuw;^_VlVXJHwPbIn+6Q72k6Fi>Ev$M18c z$t0(@6J02zuDFaPF0aIAiyhZH(I3$VM_;gXp(gqjVxMFeVyrQt*saxtbb96Q+_UIH z3;W0I{oK0HqK?=3@mpPp;!n=VTxJ)#pl~Q8rLGIf4>{5={J|*9+2eO8X}i(Os1F*w z^4(~&LebE}v>VX`r}BNf){P7lLaBE>!%~+Gr{F^*EP2_WAVX{2X#2Z}yrgUos(IXB z|JS+)b;Z;Vy^QTaH?5EUG^pyqk60{Ze_rlEuY$b_kL~%4I3Epbyub7rsVRK?36Co)aHpKIB;!OPY1J~6ih(l-G`m1Xv zi0Qs`T`sRlf{!|6_w7AX#1?z|)WOCn;j&$iSA#w1Ua>k#(#B|}lK`)DW;@m((r%J~>v3Ep%Q3Q)fX4=&ZjB@`G z95;28^ssP*%<1uaEXXfQ;jr#y+piflzDvVCl-&`pJB9OSSE@xr}n?whiMF{7EuqJ z#tCuF4LfybnYcXYapVUUi%`lQeEgwhnHYIn|IPdNGC@Qq?tQ|rLbx1!vX>sM5LN4p zh8)*ch}R{@UpBv7A;>lO&$4x_5ciBoET>mi2xW@is|;kT1W&Nmc@CykfFGbOF;WW;Xk#Dm;wW~yhQO4T)#Z}^>gFeS&SxjAQYKtrAt`QH&8un27 ztP$tP+I7EU8bj;kfPzlr8sU}Fch_!WjqqUNw+QFQ!Vu41djgrvopOA>|aL;@vUczWA9F;qDicw}RpP#wGW!(D2FxaJwUyo%E}uhkF4KMdL+ zs`}H9o8H|Z0{EA;#`8CboBG2E;XgKr@(RyyQXHE^){B)}Ukx@1F2URmBacm@7yshu zPy(hi^2`_P3pa_mfbO1~t($~z(%CAX$xVVylv!dECvoBmmj1C@Z4rVA>rGjAw}`r{ z@~ZH1izw0dj`8l?BC2JoI|-b?NtGoLMVnhhC9O*FdD?A4X!ZE9RV)^finw@Sm&-O$ zv!QAkl)X*(6xFA&bZ--EO+te5Bir~=5sM52w8J z-64|fu7)h8?hrGV=SF^Dp~!&!YjLNU9pZ#fn*lc!rYZDWiAH)dpw9ii+mHt*Zkpfq zULb?pXLM|Qg2_PPWvX>n3>kE=#z=HMB?BoD z>)!)KWT1J1RWGWE3{*K(b`^G!f%olq9+JPvAi2*?`r9fNmatOM?qVW`?MoNWO!4E? zjYGu9x;#$Z7?vi}YLbJ(IYo=&LBm$Us%@vC_IfUS)frZYZubbfhHP66|;)jtGL zQ9y=1OM@Ff1yIF@d~(F1k>$O5&*l8T@6J&_c!p(}2h zb&mp6TapFovhlQ-GvzO&0E&n+$6XsJVBh^+FF1!OU_v&CJmen*i0^!hjbWvPVoQs> z@0iwz6l{N5p+N~nr)ik$2}
dfdfr-XYyW4p=RDWUS~BX}E42@NE7r9GLH@cq{; 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 z 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 F~g&#o?R9;Q^;COhmyhAI7RFKd4$ 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®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 KnP9}>ulOHz9}b@Y literal 0 HcmV?d00001 diff --git a/tests/test_io_data/run_TPI_outputs_mono_2.pkl b/tests/test_io_data/run_TPI_outputs_mono_2.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8867a493fca2e23c19d6b12629a59e827f7a5d60 GIT binary patch literal 1201448 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%0A>EECR*O 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%0D2pT~riG@@f^H{$K#`_jW!)Wcv#d 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

s&Z7 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

dTs%Dd3Hr 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⪙Svu`nxov z@pXP)Bk8GL8A$5JzQ>t^UUQo2=}Z5muXQ8!H2qRvzQr2`-Mp>t|Gk4jT1UBd7H8|| z_SD1GvYQz+%5vXrR8>nKp3R-R75L-7aTwhS{IyH(SUj+wPj?DbwuLkSe`ly*wIrX$ zJR-FtPw;4X-ODR2$Xj;INR?^;zS?vq`IG{Gir2+VM}R-E?pM`mz@L>ice5R?pK^=t z;o^OCtdsA$T*jk=GQGU=2YhO=j?-^cfZr%f>(*^St|B?}p}IBRN6Fr2e}TU#UP`L* zm@`!Y% z=+$y_FF&oY0Q!%Ws+76|`cFvg-`+%j90+(!_qR=JGtGVfXwAUIX3{H?Qg8ps zB`?9-`{O4!Q-{f?ukuH@w8>`25|{lPsvRCDBdB51xss>*KA`{Bx$o%)PwXL8#H^Y+ zVG@_Te>{rSbmma{S;bT*2KdiuQ*|}`v3X(T&F`Brztuj=)D-iBHxyTBF_UoGkL