Repository: PSLmodels/OG-Core (language: python)

Issue:
Update README.rst
Using OSPC name rather than AEI name. 



Discussion / hints:

Fix patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ccfcf653d..564fb8e2d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## [0.13.0] - 2024-09-26 12:00:00
+
+### Added
+
+- Updates all of the documentation.
+    - Adds remittances to all instances of the household budget constraint
+    - Rewrites bequests and transfers components of household budget constraint in terms of individual variables in all instances
+    - Adds a household transfers section to `households.md` with subsections on bequests, remittances, government transfers, and universal basic income
+    - Changes all instances of $p_t Y_t$ to $Y_t
+    - Updates the steady-state equilibrium algorithm description in `equilibrium.md`
+    - Added updates to the government pensions descriptions in `government.md` and added `pensions` to all instances of the household budget constraint.
+    - Updates the docstrings in `tax.py` for the wealth tax ETR and MTR functions. The code is right. I just thought there was a clearer specification of the equations in LaTeX.
+- Adds remittances to the OG-Core code
+    - Adds aggregate remittances function `get_RM()` to `aggregates.py`
+    - Adds household remittances function `get_rm()` to `household.py`
+    - Adds four new remittance parameters: `alpha_RM_1`, `g_RM`, `alpha_RM_T`, `eta_RM`
+    - We model aggregate remittances as a percent of GDP in the first period, then growing at a specified rate that can deviate from the country growth rate until the cutoff rule period, after which the remittance growth rate trends back to the long-run model growth rate (growth rate in population and productivity). We also model remittances in reforms as being a percentage of baseline GDP. In this way, if remittance parameters are not changed in the reform, remittances remain at their baseline levels. The only way they change is if their parameter values are changed.
+    - Adds 3 tests using the `test_get_RM()` function in `test_aggregates.py`
+    - Adds 4 tests using the `test_get_rm()` function in `test_household.py`
+    - Changes the `initial_guess_r_SS` in two tests in `test_SS.py` because they were not solving with their current values
+- Increases `RC_SS` steady-state resource constraint tolerance from 1e-9 to 1e-8 because two `test_run_SS()` tests were failing in `test_SS.py` with resource constraints errors just bigger than 1e-9 (-2.29575914e-09 for [Baseline, small open] and -2.29575914e-09 for [Reform, small open]).
+- Increases `RC_TPI` transition path resource constraint tolerance from 1e-5 to 1e-4 in because one `test_run_TPI_full_run()` test was failing in `test_TPI.py` with a resource constraint error just bigger than 1e-5 (1.4459913381864586e-05 for `[Baseline, M=3 non-zero Kg]`).
+- Updated two directory path references that were out of date in `test_run_example.py`.
+- Updated expected value tuples and dictionaries in `test_txfunc.py`.
+
 ## [0.12.0] - 2024-08-20 12:00:00
 
 ### Added
diff --git a/docs/book/content/api/aggregates.rst b/docs/book/content/api/aggregates.rst
index 788d96423..e83a73d79 100644
--- a/docs/book/content/api/aggregates.rst
+++ b/docs/book/content/api/aggregates.rst
@@ -9,5 +9,5 @@ ogcore.aggregates
 ------------------------------------------
 
 .. automodule:: ogcore.aggregates
-  :members: get_L, get_I, get_B, get_BQ, get_C, revenue, get_r_p,
+  :members: get_L, get_I, get_B, get_BQ, get_RM, get_C, revenue, get_r_p,
     resource_constraint, get_K_splits, get_ptilde
diff --git a/docs/book/content/api/household.rst b/docs/book/content/api/household.rst
index 26a6b24a0..1c992a1bc 100644
--- a/docs/book/content/api/household.rst
+++ b/docs/book/content/api/household.rst
@@ -9,6 +9,6 @@ ogcore.household
 ------------------------------------------
 
 .. automodule:: ogcore.household
-  :members: marg_ut_cons, marg_ut_labor, get_bq, get_tr, get_cons, get_ci,
-    FOC_savings, FOC_labor, get_y, constraint_checker_SS,
+  :members: marg_ut_cons, marg_ut_labor, get_bq, get_tr, get_rm, get_cons,
+    get_ci, FOC_savings, FOC_labor, get_y, constraint_checker_SS,
     constraint_checker_TPI
diff --git a/docs/book/content/contributing/contributor_guide.md b/docs/book/content/contributing/contributor_guide.md
index 022b7e2c9..50643280e 100644
--- a/docs/book/content/contributing/contributor_guide.md
+++ b/docs/book/content/contributing/contributor_guide.md
@@ -1,3 +1,4 @@
+
 (Chap_ContribGuide)=
 # Contributor Guide
 
diff --git a/docs/book/content/theory/equilibrium.md b/docs/book/content/theory/equilibrium.md
index eab221cc1..cc8d2f249 100644
--- a/docs/book/content/theory/equilibrium.md
+++ b/docs/book/content/theory/equilibrium.md
@@ -25,7 +25,7 @@ In all of the specifications of `OG-Core`, we use a two-stage fixed point algori
 
 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\}$.
+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 $\Bigl\{\bar{r}_p, \bar{r}, \bar{w}, \{\bar{p}_m\}_{m=1}^{M-1}, \bar{Y}, \overline{TR}, \overline{BQ}, factor\Bigr\}$.
 
 
 (SecEqlbSSdef)=
@@ -39,7 +39,7 @@ 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:
+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$, $\{p_{m,t}\}_{m=1}^M = \{\bar{p}_m\}_{m=1}^M$, and $p_t=\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`,
@@ -58,41 +58,45 @@ The computational algorithm for solving for the steady-state follows the steps b
 
 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.
+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 $\{\bar{p}_m^i\}_{m=1}^{M-1}$ (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 $\Bigl\{\bar{r}_p^i, \bar{r}^i, \bar{w}^i, \{\bar{p}_m^i\}_{m=1}^{M-1}, \overline{TR}^i, \overline{BQ}^i, factor^i\Bigr\}$.
 
-    1. Given $\boldsymbol{\bar{p}}^i$ find the price of consumption goods using {eq}`EqHH_pi2`
+    1. Given $\{\bar{p}_m^i\}_{m=1}^{M-1}$ find the price of consumption goods $\{\bar{p}_i\}_{i=1}^I$ 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$.
+    3. Using {eq}`Eq_tr` with $\overline{TR}^{\,i}$, find transfers to each household, $\overline{tr}_{j,s}$
+    4. Use {eq}`EqStnrzTfer` to get aggregate GDP $\overline{Y}$ from steady-state transfers $\overline{TR}^i$.
+    5. With $\overline{Y}$, use {eq}`EqHH_AggrRemitStnrz` to get $\overline{RM}$ and use {eq}`EqHH_IndRemitRecStnrz` to get $\overline{rm}_{j,s}$.
+    6. Using the bequest transfer process, {eq}`Eq_bq` and aggregate bequests, $\overline{BQ}^{\,i}$, find $bq_{j,s}$
+    7. Given values $\bar{p}^i$, $\bar{r}_{p}^i$, $\bar{w}^i$ $\overline{bq}_{j,s}$, $\overline{rm}_{j,s}$, $\overline{tr}_{j,s}$, 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$.
+        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$, where steady-state composite consumption $\bar{c}_{j,s}$ is given by the budget constraint {eq}`EqStnrzHHBC`.
 
         ```{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}  \\
+          \bar{c}_{j,s} &= \Bigl[(1 + \bar{r}_{p}^i)\bar{b}_{j,s} + \bar{w}^i e_{j,s}\bar{n}_{j,s} - \sum_{i=1}^I\left(1 + \tau_i^c\right)\bar{p}_i \bar{c}_{min,i} - e^{g_y}\bar{b}_{j,s+1} ... \\
+          &\qquad + \overline{bq}_{j,s} + \overline{rm}_{j,s} + \overline{tr}_{j,s} + \overline{ubi}_{j,s} + \overline{pension}_{j,s} - \overline{tax}_{j,s}\Bigr] / \bar{p}  \\
           &\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}} \\
+          \frac{\bar{w}^i e_{j,s}}{\bar{p}}\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 \\
+          \frac{(\bar{c}_{j,s})^{-\sigma}}{\bar{p}} &= e^{-\sigma g_y}\Biggl[\chi^b_j\rho_s(\bar{b}_{j,s+1})^{-\sigma} ... \\
+          &\quad\quad\quad + \beta_j\bigl(1 - \rho_s\bigr)\left(\frac{1 + \bar{r}_{p}^i\bigl[1 - \tau^{mtry}_{s+1}\bigr] - \tau^{mtrw}}{\bar{p}}\right)(\bar{c}_{j,s+1})^{-\sigma}\Biggr] \\
+          &\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
+          \frac{(\bar{c}_{j,E+S})^{-\sigma}}{\bar{p}} = 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}`EqStnrz_cmDem2` 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}$
+    8. Determine from the quantity of the composite consumption good consumed by each household, $\bar{c}_{j,s}$, use equation {eq}`EqStnrz_cmDem2` to determine consumption of each output good, $\bar{c}_{m,j,s}$
+    9. Using $\bar{c}_{m,j,s}$ in {eq}`EqCmt`, solve for aggregate consumption of each output good, $\bar{C}_{m}$
+    10. 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}
@@ -105,14 +109,13 @@ The computational algorithm for solving for the steady-state follows the steps b
            :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`
+    11. Solve for the exogenous government interest rate $\bar{r}_{gov}$ using equation {eq}`EqUnbalGBC_rate_wedge`.
+    12. Use {eq}`EqStnrz_DY` to find $\overline{D}$ from $\overline{Y}$
+    13. Using $\overline{D}$, we can find foreign investor holdings of debt, $\overline{D}^{f}$ from {eq}`EqMarkClr_zetaD2` and then solve for domestic debt holdings through the debt market clearing condition: $\overline{D}^{d} = \overline{D} - \overline{D}^{f}$
+    14. Using $\overline{Y}$, find government infrastructure investment, $\bar{I}_{g}$ from {eq}`EqStnrz_Igt`
+    15. Using the law of motion of the stock of infrastructure, {eq}`EqStnrz_Kgmt`, and $\bar{I}_{g}$, solve for $\overline{K}_{g}$
+    16. Find output and factor demands for M-1 industries:
+        1. By {eq}`EqStnrzMarkClrGoods_Mm1`, $\overline{Y}_{m}=\overline{C}_{m}$ for $1\leq m \leq M-1$, where $\overline{C}_{m}$ 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:
@@ -127,42 +130,43 @@ The computational algorithm for solving for the steady-state follows the steps b
              \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$:
+    17. 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$:
+        3.  Find total capital supply, and the split between that from domestic and foreign households: $\bar{K}$, $\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}$
+            2.  Using $\bar{D}^{d}$ we can then find domestic investors' holdings of private capital as the residual from their total asset holdings: , $\bar{K}^{d} = \bar{B} - \bar{D}^{d}$
+            3.  Aggregate capital supply is then determined as $\bar{K} = \bar{K}^{d} + \bar{K}^{f}$.
+        4.  $\bar{K}_M = \bar{K} - \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'}$
+    18. Find an updated value for GDP, $\bar{Y}^{i'} = \sum_{m=1}^{M} \bar{p}_m\bar{Y}_m$ using {eq}`EqStnrzNomGDP`.
+    19. Find a updated values for $\bar{I}_{g}^{i'}$ and $\bar{K}_g^{i'}$ using  $\bar{Y}^{i'}$ and equations {eq}`EqStnrz_Igt` and {eq}`EqStnrz_Kgmt`
+3. Given updated inner-loop values based on initial guesses for outer-loop variables $\Bigl\{\bar{r}_p^i, \bar{r}^i, \bar{w}^i, \bigl\{\bar{p}_m^i\bigr\}_{m=1}^{M-1}, \overline{BQ}^i, \overline{TR}^i, factor^i\Bigr\}$, solve for updated values of outer-loop variables $\Bigl\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \bigl\{\bar{p}_m^{i'}\bigr\}_{m=1}^{M-1}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\Bigr\}$ using the remaining equations:
+
+    1. Use $\bar{Y}_M$ and $\bar{K}_M$ in {eq}`EqStnrzFOC_K` to solve for updated value of the rental rate on private capital $\bar{r}^{i'}$.
+    2. Use $\bar{Y}_M$ and $\bar{L}_M$ in {eq}`EqStnrzFOC_L` to solve for updated value of the wage rate $\bar{w}^{i'}$.
+    3. Use $\bar{r}^{i'}$ in equation {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}$
+    5. Use $\boldsymbol{\overline{MPK}}_g$, $\bar{r}^{i'}$, $\bar{r}_{gov}^{i'}$, $\bar{D}$, and $\bar{K}$ to find the return on the households' investment portfolio $\bar{r}_{p}^{i'}$ using equation {eq}`EqStnrz_rate_p`.
+    6. Use $\bar{Y}_m$, $\bar{L}_m$ in {eq}`EqStnrzFOC_L` to solve for the updates vector of prices, $\{\bar{p}_m^{i'}\}_{m=1}^{M-1}$.
     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'}$.
+    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'}$. Note that this $\bar{Y}^{i'}$ is different from the $\bar{Y}$ derived from the initial guess of aggregate transfers $\overline{TR}^i$ from step 2.4.
     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
+          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).
+4. If the updated values of the outer-loop variables $\Bigl\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \{\bar{p}_m^{i'}\}_{m=1}^{M-1}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\Bigr\}$ are close enough to the initial guess for the outer-loop variables $\Bigl\{\bar{r}_p^i, \bar{r}^i, \bar{w}^{i}, \{\bar{p}_m^{i}\}_{m=1}^{M-1}, \overline{BQ}^i, \overline{TR}^i, factor^i\Bigr\}$ 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 $\Bigl\{\bar{r}_p^{i+1}, \bar{r}^{i+1}, \bar{w}^{i+1}, \{\bar{p}_m^{i+1}\}_{m=1}^{M-1}, \overline{BQ}^{i+1}, \overline{TR}^{i+1}, factor^{i+1}\Bigr\}$ as a convex combination of the first initial guess $\Bigl\{\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \{\bar{p}_m^{i}\}_{m=1}^{M-1}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\Bigr\}$ and the updated values $\Bigl\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \{\bar{p}_m^{i'}\}_{m=1}^{M-1}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\Bigr\}$ 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.
+    1. Define a tolerance $toler_{ss,out}$ and a distance metric $\left\lVert\,\cdot\,\right\rVert$ on the space of 7-tuples of outer-loop variables $\{\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i},  \{\bar{p}_m^{i}\}_{m=1}^{M-1}, \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}
+        & \Biggl\lVert\left(\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \{\bar{p}_m^{i'}\}_{m=1}^{M-1}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\right) ... \\
+        &\qquad - \left(\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \{\bar{p}_m^{i}\}_{m=1}^{M-1}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\right)\Biggr\rVert \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.
@@ -174,19 +178,19 @@ The computational algorithm for solving for the steady-state follows the steps b
 
         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}
-           ```
+            ```{math}
+            :label: EqSS_toldistrepeat
+              &\Biggl\lVert\left(\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'},  \{\bar{p}_m^{i'}\}_{m=1}^{M-1}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\right) ... \\
+              &\qquad - \left(\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i},  \{\bar{p}_m^{i}\}_{m=1}^{M-1}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\right)\Biggr\rVert > 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'$.
+        2. If the distance metric is not satisfied {eq}`EqSS_toldistrepeat`, then an updated initial guess for the outer-loop variables $\Bigl\{\bar{r}_p^{i+1}, \bar{r}^{i+1}, \bar{w}^{i+1}, \{\bar{p}_m^{i+1}\}_{m=1}^{M-1}, \overline{BQ}^{i+1}, \overline{TR}^{i+1}, factor^{i+1}\Bigr\}$ is made as a convex combination of the previous initial guess $\Bigl\{\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \{\bar{p}_m^{i}\}_{m=1}^{M-1}, \overline{BQ}^{i}, \overline{TR}^{i}, factor^{i}\Bigr\}$ and the updated values based on the previous initial guess $\Bigl\{\bar{r}_p^{i'}, \bar{r}^{i'}, \bar{w}^{i'}, \{\bar{p}_m^{i'}\}_{m=1}^{M-1}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\Bigr\}$ 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)
+             & \left(\bar{r}_p^{i+1}, \bar{r}^{i+1}, \bar{w}^{i+1}, \{\bar{p}_m^{i+1}\}_{m=1}^{M-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'}, \{\bar{p}_m^{i'}\}_{m=1}^{M-1}, \overline{BQ}^{i'}, \overline{TR}^{i'}, factor^{i'}\right) + ... \\
+             &\qquad(1-\xi_{ss})\left(\bar{r}_p^{i}, \bar{r}^{i}, \bar{w}^{i}, \{\bar{p}_m^{i}\}_{m=1}^{M-1}, \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.
@@ -306,7 +310,7 @@ Under alternative model configurations, the solution algorithm changes slightly.
 
 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.
+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 time series values of macroeconomic variables $\Bigl\{r_{p,t}, r_t, w_t, \{p_{m,t}\}_{m=1}^{M-1}, BQ_t, TR_t\Bigr\}_{t=1}^T$. Note that in the case of the transition path equilibrium algorithm, we guess the time series of those variables from the current period $t=1$ to the steady state ($t=T$). 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]).
 
@@ -318,17 +322,17 @@ The stationary non-steady state (transition path) solution algorithm has followi
 
 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.
+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 $\Bigl\{\boldsymbol{r}_p^i, \boldsymbol{r}^i, \boldsymbol{\hat{w}}^i, \{\boldsymbol{p}_m^i\}_{m=1}^{M-1}, \boldsymbol{\hat{BQ}}^i,\boldsymbol{\hat{TR}}^i\Bigr\}$ such that $\hat{BQ}_1^i$ is consistent with $\boldsymbol{\hat{\Gamma}}_1$ and $\Bigl\{r_{p,t}^i, r_t^i, \hat{w}_t^i, \{p_{m,t}^i\}_{m=1}^{M-1}, \hat{BQ}_t^i, \hat{TR}_t^i\Bigr\} = \{\bar{r}_p, \bar{r}, \bar{w}, \{\bar{p}_m\}_{m=1}^{M-1}, \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`
+4. Using {eq}`Eq_tr` with $\boldsymbol{\hat{TR}}^{\,i}$, find transfers to each household $\hat{tr}_{j,s,t}$.
+5. Using the bequest transfer process, {eq}`Eq_bq` and aggregate bequests, $\boldsymbol{\hat{BQ}}^{\,i}$, find bequests received by each household $\hat{bq}_{j,s,t}$.
+6. Given time path guesses for $\boldsymbol{r}_p^i$, $\boldsymbol{\hat{w}}^i$, and $\{\boldsymbol{p}_m^i\}_{m=1}^{M-1}$, and the transition paths of household received bequests $\hat{bq}_{j,s,t}$ and government transfers to households $\hat{tr}_{j,s,t}$, 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+S-1$.
+   1. Given the prices of production goods $\{\boldsymbol{p}_m^i\}_{m=1}^{M-1}$, find the transition path of the price of consumption goods $p_{i,t}$ using {eq}`EqHH_pi2`.
+   2. From price of consumption goods $p_{i,t}$, determine the price of the composite consmpution good, $p_t$ 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}`EqStnrz_cmDem2` to determine consumption of each output good, $\hat{c}_{m,j,s,t}$
+7. Use the quantity of the composite consumption good consumed by each household, $\hat{c}_{j,s,t}$ and equation {eq}`EqStnrz_cmDem2` 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}$.
@@ -388,19 +392,19 @@ The stationary non-steady state (transition path) solution algorithm has followi
      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).
+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 (23).
 
   $$
-   &[\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}]
+   &\left[\boldsymbol{r}_p^{i+1}, \boldsymbol{r}^{i+1}, \boldsymbol{\hat{w}}^{i+1}, \{\boldsymbol{p}_m^{i+1}\}_{m=1}^{M-1}, \boldsymbol{\hat{BQ}}^{i+1},\boldsymbol{\hat{TR}}^{i+1}\right] = \\
+   &\qquad \xi_{tpi}\left[\boldsymbol{r}_p^{i'}, \boldsymbol{r}^{i'}, \boldsymbol{\hat{w}}^{i'}, \{\boldsymbol{p}_m^{i'}\}_{m=1}^{M-1}, \boldsymbol{\hat{BQ}}^{i'},\boldsymbol{\hat{TR}}^{i'}\right] ... \\
+   &\qquad + (1-\xi_{tpi})\left[\boldsymbol{r}_p^{i}, \boldsymbol{r}^{i}, \boldsymbol{\hat{w}}^{i}, \{\boldsymbol{p}_m^{i}\}_{m=1}^{M-1}, \boldsymbol{\hat{BQ}}^{i},\boldsymbol{\hat{TR}}^{i}\right]
   $$
 
 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.
+    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 in every period.
+    3. Make sure that all the $(T+S)\times2JS$ household Euler equations are solved to a satisfactory tolerance in every period.
 
 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.
 
@@ -414,4 +418,6 @@ Under alternative model configurations, the solution algorithm changes slightly.
 (SecEqlbFootnotes)=
 ## Footnotes
 
-[^citation_note]: See {cite}`AuerbachEtAl:1981,AuerbachEtAl:1983`, {cite}`AuerbachKotlikoff:1983a,AuerbachKotlikoff:1983b,AuerbachKotlikoff:1983c`, and {cite}`AuerbachKotlikoff:1985`.
+  This section contains the footnotes for this chapter.
+
+  [^citation_note]: See {cite}`AuerbachEtAl:1981,AuerbachEtAl:1983`, {cite}`AuerbachKotlikoff:1983a,AuerbachKotlikoff:1983b,AuerbachKotlikoff:1983c`, and {cite}`AuerbachKotlikoff:1985`.
diff --git a/docs/book/content/theory/financial.md b/docs/book/content/theory/financial.md
index 9e1b4985f..756dc2f77 100644
--- a/docs/book/content/theory/financial.md
+++ b/docs/book/content/theory/financial.md
@@ -2,59 +2,62 @@
 (Chap_FinInt)=
 # Financial Intermediary
 
-Domestic household wealth $W^d_{t}=B_{t}$ and foreign ownership of domestic assets $W^f_{t}$, both in terms of the numeraire good, are invested in a financial intermediary. This intermediary purchases a portfolio of government bonds and private capital in accordance with the domestic and foreign investor demand for these assets and then returns a single portfolio rate of return to all investors.
+  Domestic household wealth $W^d_{t}=B_{t}$ and foreign ownership of domestic assets $W^f_{t}$, both in terms of the numeraire good, are invested in a financial intermediary. This intermediary purchases a portfolio of government bonds and private capital in accordance with the domestic and foreign investor demand for these assets and then returns a single portfolio rate of return to all investors.
 
-Foreign demand for government bonds is specified in section {ref}`SecMarkClrMktClr_G` of the {ref}`Chap_MarkClr` chapter:
+  Foreign demand for government bonds is specified in section {ref}`SecMarkClrMktClr_G` of the {ref}`Chap_MarkClr` chapter:
 
   ```{math}
   :label: EqMarkClr_zetaD2
     D^{f}_{t+1} = D^{f}_{t} + \zeta_{D, t}(D_{t+1} - D_{t}) \quad\forall t
   ```
 
-This leaves domestic investors to buy up the residual amount of government debt:
+  This leaves domestic investors to buy up the residual amount of government debt:
 
   ```{math}
   :label: EqMarkClr_DomesticDebt
     D^{d}_{t} = D_{t} - D^{f}_{t} \quad\forall t
   ```
 
-We assume that debt dominates the capital markets, such that domestic investor demand for capital, $K^{d}_{t}$ is given as:
+  We assume that debt dominates the capital markets, such that domestic investor demand for capital, $K^{d}_{t}$ is given as:
 
   ```{math}
   :label: eq_domestic_cap_demand
     K^{d}_{t} = B_{t} - D^{d}_{t} \quad\forall t
   ```
 
-Foreign demand for capital is given in {ref}`SecMarkClrMktClr_K`, where $K^{f}_{t}$ is an exogenous fraction of excess capital demand at the world interest rate:
+  Foreign demand for capital is given in {ref}`SecMarkClrMktClr_K`, where $K^{f}_{t}$ is an exogenous fraction of excess capital demand at the world interest rate:
 
   ```{math}
   :label: eq_foreign_cap_demand
     K^{f}_t = \zeta_{K, t}ED^{K,r^*}_t \quad\forall t
   ```
 
-The total amount invested in the financial intermediary is thus:
+  The total amount invested in the financial intermediary is thus:
 
-```{math}
-W_{t} & = W^d_{t} + W^f_{t} \\
-    & = D^d_t + K^d_t  + D^f_t + K^f_t \\
-    & = D_t + K_t
-```
+  ```{math}
+  W_{t} & = W^d_{t} + W^f_{t} \\
+      & = D^d_t + K^d_t  + D^f_t + K^f_t \\
+      & = D_t + K_t
+  ```
 
-Interest rates on private capital through the financial intermediary and on government bonds differ. The return on the portfolio of assets held in the financial intermediary is the weighted average of these two rates of return. As derived in {eq}`EqFirms_rKt` of Section {ref}`EqFirmsPosProfits`, the presence of public infrastructure in the production function means that the returns to private factors of production ($r_t$ and $w_t$) exhibit decreasing returns to scale.[^MoorePecoraro] It is assumed that competition ensures a zero profit condition among firms and the returns to public infrastructure through the returns of firms are captured by the financial intermediary and returned to share holders. The return on capital is therefore the sum of the (after-tax) returns to private and public capital.
+  Interest rates on private capital through the financial intermediary and on government bonds differ. The return on the portfolio of assets held in the financial intermediary is the weighted average of these two rates of return. As derived in {eq}`EqFirms_rKt` of Section {ref}`EqFirmsPosProfits`, the presence of public infrastructure in the production function means that the returns to private factors of production ($r_t$ and $w_t$) exhibit decreasing returns to scale.[^MoorePecoraro] It is assumed that competition ensures a zero profit condition among firms and the returns to public infrastructure through the returns of firms are captured by the financial intermediary and returned to share holders. The return on capital is therefore the sum of the (after-tax) returns to private and public capital.
+
+  ```{math}
+  :label: eq_rK
+    r_{K,t}  = r_{t} + \frac{\sum_{m=1}^M(1 - \tau^{corp}_{m,t})p_{m,t}MPK_{g,m,t}K_{g,m,t}}{\sum_{m=1}^M K_{m,t}} \quad\forall t
+  ```
 
-```{math}
-:label: eq_rK
-  r_{K,t}  = r_{t} + \frac{\sum_{m=1}^M(1 - \tau^{corp}_{m,t})p_{m,t}MPK_{g,m,t}K_{g,m,t}}{\sum_{m=1}^M K_{m,t}} \quad\forall t
-```
+  The return on the portfolio of assets held by the financial intermediary is thus a weighted average of the return to government debt $r_{gov,t}$ from {eq}`EqUnbalGBC_rate_wedge` and the adjusted return on private capital $r_{K,t}$ from {eq}`eq_rK`.
 
-The return on the portfolio of assets held by the financial intermediary is thus a weighted average of the return to government debt $r_{gov,t}$ from {eq}`EqUnbalGBC_rate_wedge` and the adjusted return on private capital $r_{K,t}$ from {eq}`eq_rK`.
+  ```{math}
+  :label: eq_portfolio_return
+    r_{p,t} = \frac{r_{gov,t}D_{t} + r_{K,t}K_{t}}{D_{t} + K_{t}} \quad\forall t \quad\text{where}\quad K_t \equiv \sum_{m=1}^M K_{m,t}
+  ```
 
-```{math}
-:label: eq_portfolio_return
-  r_{p,t} = \frac{r_{gov,t}D_{t} + r_{K,t}K_{t}}{D_{t} + K_{t}} \quad\forall t \quad\text{where}\quad K_t \equiv \sum_{m=1}^M K_{m,t}
-```
 
 (SecFinfootnotes)=
 ## Footnotes
 
+  This section contains the footnotes for this chapter.
+
   [^MoorePecoraro]: See also {cite}`MoorePecoraro:2021` for a similar treatment of government infrastructure investment, positive profits, and returns to the owners of capital.
diff --git a/docs/book/content/theory/firms.md b/docs/book/content/theory/firms.md
index fffb84a26..c89308fcb 100644
--- a/docs/book/content/theory/firms.md
+++ b/docs/book/content/theory/firms.md
@@ -119,6 +119,8 @@ Industry $M$ in the model is unique in two respects.  First, we will define indu
 (SecFirmsfootnotes)=
 ## Footnotes
 
+  This section contains the footnotes for this chapter.
+
   [^Kg0_case]: It is important to note a special case of the Cobb-Douglas ($\varepsilon_m=1$) production function that we have to manually restrict. The inputs of production of private capital $K_{m,t}$ and labor $L_{m,t}$ are endogenous and have characteristics of the model that naturally bound them away from zero. But public capital $K_{g,m,t}$, although it is a function of endogenous variables in {eq}`EqUnbalGBC_Igt` and {eq}`EqUnbalGBC_Igmt`, can be exogenously set to zero as a policy parameter choice by setting $\alpha_{I,t}=0$ or $\alpha_{I,m,t}=0$. In the Cobb-Douglas case of the production function $\varepsilon_m=1$ {eq}`EqFirmsCDprodfun`, $K_{g,m,t}=0$ would zero out production and break the model. In the case when $\varepsilon_m=1$ and $K_{g,m,t}=0$, we set $\gamma_{g,m}=0$, thereby restricting the production function to only depend on private capital $K_{m,t}$ and labor $L_{m,t}$. This necessary restriction limits us from performing experiments in the model of the effect of changing $K_{g,m,t}=0$ to $K_{g,m,t}>0$ or vice versa in the $\varepsilon_m=1$ case.
 
   [^delta_M]: Because we are assuming that only the output of the $M$th industry can be used for investment, government spending, or government debt, and because that industry's output is the numeraire, the only depreciation rate that matters or can be nonzero is that of the $M$th industry $\delta_{M,t}$.
diff --git a/docs/book/content/theory/government.md b/docs/book/content/theory/government.md
index 33d62423d..1659d504f 100644
--- a/docs/book/content/theory/government.md
+++ b/docs/book/content/theory/government.md
@@ -14,14 +14,14 @@ Government levies taxes on households and firms, funds public pensions, and make
 
 #### Individual income taxes
 
-Income taxes are modeled through the total tax liability function $T_{s,t}$, which can be decomposed into the effective tax rate times total income {eq}`EqTaxCalcLiabETR2`. In this chapter, we detail the household tax component of government activity $T_{s,t}$ in `OG-Core`, along with our method of incorporating detailed microsimulation data into a dynamic general equilibrium model.
+Income taxes are modeled through the net tax liability function for each household $tax_{j,s,t}$, which can be decomposed into the effective tax rates times total income and wealth, respectively, {eq}`EqTaxCalcLiabETR2`. In this chapter, we detail the household tax component of government activity $tax_{j,s,t}$ in `OG-Core`, along with our method of incorporating detailed microsimulation data into a dynamic general equilibrium model.
 
 ```{math}
 :label: EqHHBC2_gov
   p_t c_{j,s,t} + &\sum_{i=1}^I (1 + \tau^{c}_{i,t})p_{i,t}c_{min,i} + b_{j,s+1,t+1} = \\
-  &(1 + r_{p,t})b_{j,s,t} + w_t e_{j,s} n_{j,s,t} + \\
-  &\quad\quad\zeta_{j,s}\frac{BQ_t}{\lambda_j\omega_{s,t}} + \eta_{j,s,t}\frac{TR_{t}}{\lambda_j\omega_{s,t}} + ubi_{j,s,t} - T_{j,s,t}  \\
-  &\quad\forall j,t\quad\text{and}\quad s\geq E+1 \quad\text{where}\quad b_{j,E+1,t}=0\quad\forall j,t
+  &(1 + r_{p,t})b_{j,s,t} + w_t e_{j,s} n_{j,s,t} ... \\
+  &\qquad +\: bq_{j,s,t} + rm_{j,s,t} + tr_{j,s,t} + ubi_{j,s,t} + pension_{j,s,t} - tax_{j,s,t}  \\
+  &\qquad\quad\forall j,t\quad\text{and}\quad E+1\leq s\leq E+S \quad\text{where}\quad b_{j,E+1,t}=0
 ```
 
 Incorporating realistic tax and incentive detail into a general equilibrium model is notoriously difficult for two reasons. First, it is impossible in a dynamic general equilibrium model to capture all of the dimensions of heterogeneity on which the real-world tax rate depends. For example, a household's tax liability in reality depends on filing status, number of dependents, many types of income, and some characteristics correlated with age. A good heterogeneous agent DGE model tries to capture the most important dimensions of heterogeneity, and necessarily neglects the other dimensions.
@@ -41,39 +41,47 @@ The second difficulty in modeling realistic tax and incentive detail is the need
   ```
   ```{math}
   :label: EqTaxCalcCapInc
-    y_{j,s,t} \equiv r_{hh,t}b_{j,s,t} \quad\forall j, t \quad\text{and}\quad E+1\leq s\leq E+S
+    y_{j,s,t} \equiv r_{p,t}b_{j,s,t} \quad\forall j, t \quad\text{and}\quad E+1\leq s\leq E+S
   ```
 
-  We can express total tax liability $T_{s,t}$ from the household budget constraint {eq}`EqHHBC` as an effective tax rate multiplied by total income.
+  We can express household net tax liability $tax_{j,s,t}$ from the household budget constraint {eq}`EqHHBC` as an effective tax rate on income multiplied by total income plus an effective tax rate on wealth multiplied by wealth $b_{j,s,t}$,
 
   ```{math}
   :label: EqTaxCalcLiabETR2
-    T_{s,t} = \tau^{etr}_{s,t}(x_{j,s,t}, y_{j,s,t})\left(x_{j,s,t} + y_{j,s,t}\right)
+    tax_{j,s,t} &= tax^{x+y}_{j,s,t} + tax^w_{j,s,t} \\
+    &=\tau^{etr,xy}_{s,t}(x_{j,s,t}, y_{j,s,t})\left(x_{j,s,t} + y_{j,s,t}\right) + \tau^{etr,w}_{t}\bigl(b_{j,s,t}\bigr)b_{j,s,t}
   ```
 
-  Rearranging {eq}`EqTaxCalcLiabETR2` gives the definition of an effective tax rate ($ETR$) as total tax liability divided by unadjusted gross income, or rather, total tax liability as a percent of unadjusted gross income.
+  where the wealth tax function is described in Section {ref}`SecGovWealthTax` of this chapter. Rearranging the first term on the right-hand-side of {eq}`EqTaxCalcLiabETR2` gives the definition of an effective tax rate on income ($\tau_{s,t}^{etr,xy}$) as total tax liability, minus the wealth tax liability, divided by unadjusted gross income. And the definition of the effective tax rate on wealth ($\tau_{t}^{etr,w}$) as total tax liability, minus the income tax liability, divided by wealth.
 
-  A marginal tax rate ($MTR$) is defined as the change in total tax liability from a small change income. In `OG-Core`, we differentiate between the marginal tax rate on labor income ($MTRx$) and the marginal tax rate on capital income ($MTRy$).
+  A marginal tax rate ($\tau_{s,t}^{mtr}$) is defined as the change in total tax liability from a small change in either income or wealth. We allow these functions to vary by age $s$ and time $t$. In `OG-Core`, we differentiate between the marginal tax rate on labor income ($\tau_{s,t}^{mtrx}$), the marginal tax rate on capital income ($\tau_{s,t}^{mtry}$), and the marginal tax rate on wealth ($\tau_{t}^{mtrw}$).
 
   ```{math}
   :label: EqTaxCalcMTRx
-    \tau^{mtrx} \equiv \frac{\partial T_{s,t}}{\partial w_t e_{j,s}n_{j,s,t}} = \frac{\partial T_{s,t}}{\partial x_{j,s,t}} \quad\forall j,t \quad\text{and}\quad E+1\leq s\leq E+S
+    \tau^{mtrx} \equiv \frac{\partial tax^{x+y}_{j,s,t}}{\partial w_t e_{j,s}n_{j,s,t}} = \frac{\partial tax^{x+y}_{j,s,t}}{\partial x_{j,s,t}} \quad\forall j,t \quad\text{and}\quad E+1\leq s\leq E+S
   ```
   ```{math}
   :label: EqTaxCalcMTRy
-    \tau^{mtry} \equiv \frac{\partial T_{s,t}}{\partial r_{hh,t}b_{j,s,t}} = \frac{\partial T_{s,t}}{\partial y_{j,s,t}} \qquad\quad\forall j,t \quad\text{and}\quad E+1\leq s\leq E+S
+    \tau^{mtry} \equiv \frac{\partial tax^{x+y}_{j,s,t}}{\partial r_{p,t}b_{j,s,t}} = \frac{\partial tax^{x+y}_{j,s,t}}{\partial y_{j,s,t}} \qquad\quad\forall j,t \quad\text{and}\quad E+1\leq s\leq E+S
   ```
 
-  As we show in Section [Optimality Conditions](https://pslmodels.github.io/OG-Core/content/theory/households.html#optimality-conditions) of the Households chapter of the `OG-Core` repository documentation, the derivative of total tax liability with respect to labor supply $\frac{\partial T_{s,t}}{n_{j,s,t}}$ and the derivative of total tax liability next period with respect to savings $\frac{\partial T_{s+1,t+1}}{b_{j,s+1,t+1}}$ show up in the household Euler equations for labor supply and savings , respectively, in the `OG-Core` documentation. It is valuable to be able to express those marginal tax rates, for which we have no data, as marginal tax rates for which we do have data. The following two expressions show how the marginal tax rates of labor supply can be expressed as the marginal tax rate on labor income times the household-specific wage and how the marginal tax rate of savings can be expressed as the marginal tax rate of capital income times the interest rate.
+  ```{math}
+  :label: EqTaxCalcMTRw
+    \tau^{mtrw} \equiv \frac{\partial tax^w_{j,s,t}}{\partial b_{j,s,t}} \qquad\qquad\qquad\quad\forall j,t \quad\text{and}\quad E+1\leq s\leq E+S
+  ```
+
+  Note that a change in wealth $b_{j,s,t}$ changes both income tax liability (through capital income) and wealth tax liability. However, it is both intuitively and computationally convenient to defined the marginal tax rate on capital income and the marginal tax rate on wealth to be separate, as we have done here.
+
+  As we show in Section [Optimality Conditions](https://pslmodels.github.io/OG-Core/content/theory/households.html#optimality-conditions) of the Households chapter of the `OG-Core` repository documentation, the derivative of total tax liability with respect to labor supply $\frac{\partial tax_{j,s,t}}{n_{j,s,t}}$ and the derivative of total tax liability next period with respect to savings $\frac{\partial tax_{j,s+1,t+1}}{b_{j,s+1,t+1}}$ show up in the household Euler equations for labor supply and savings , respectively, in the `OG-Core` documentation. It is valuable to be able to express those marginal tax rates, for which we have no data, as marginal tax rates for which we do have data. The following two expressions show how the marginal tax rates of labor supply can be expressed as the marginal tax rate on labor income times the household-specific wage and how the marginal tax rate of savings can be expressed as the marginal tax rate of capital income times the interest rate.
 
   ```{math}
   :label: EqMTRx_derive
-    \frac{\partial T_{s,t}}{\partial n_{j,s,t}}  = \frac{\partial T_{s,t}}{\partial w_t e_{j,s}n_{j,s,t}}\frac{\partial w_{t}e_{j,s}n_{j,s,t}}{\partial n_{j,s,t}} = \frac{\partial T_{s,t}}{\partial w_{t}e_{j,s}n_{j,s,t}}w_t e_{j,s} = \tau^{mtrx}_{s,t}w_t e_{j,s}
+    \frac{\partial tax_{j,s,t}}{\partial n_{j,s,t}}  = \frac{\partial tax^{x+y}_{j,s,t}}{\partial w_t e_{j,s}n_{j,s,t}}\frac{\partial w_{t}e_{j,s}n_{j,s,t}}{\partial n_{j,s,t}} = \frac{\partial tax^{x+y}_{j,s,t}}{\partial w_{t}e_{j,s}n_{j,s,t}}w_t e_{j,s} = \tau^{mtrx}_{s,t}w_t e_{j,s}
   ```
 
   ```{math}
   :label: EqMTRy_derive
-    \frac{\partial T_{s,t}}{\partial b_{j,s,t}} = \frac{\partial T_{s,t}}{\partial r_{hh,t}b_{j,s,t}}\frac{\partial r_{hh,t}b_{j,s,t}}{\partial b_{j,s,t}} = \frac{\partial T_{s,t}}{\partial r_{hh,t}b_{j,s,t}}r_{hh,t} = \tau^{mtry}_{s,t}r_{hh,t}
+    \frac{\partial tax_{j,s,t}}{\partial b_{j,s,t}} = \frac{\partial tax^{x+y}_{j,s,t}}{\partial r_{p,t}b_{j,s,t}}\frac{\partial r_{p,t}b_{j,s,t}}{\partial b_{j,s,t}} + \frac{\partial tax^w_{j,s,t}}{b_{j,s,t}}  = \tau^{mtry}_{s,t}r_{p,t} + \tau^{mtrw}_{t}
   ```
 
 
@@ -104,7 +112,6 @@ The second difficulty in modeling realistic tax and incentive detail is the need
 
   The respective $shift_x$ and $shift_y$ parameters in Equation {eq}`EqTaxCalcTaxFuncForm` are analogous to the additive constants in a Stone-Geary utility function. These constants ensure that the two sums $\tau(x) + shift_x$ and $\tau(y) + shift_y$ are both strictly positive. They allow for negative tax rates in the $\tau(\cdot)$ functions despite the requirement that the arguments inside the brackets be strictly positive. The general $shift$ parameter outside of the Cobb-Douglas brackets can then shift the tax rate function so that it can accommodate negative tax rates. The Cobb-Douglas share parameter $\phi\in[0,1]$ controls the shape of the function between the two univariate functions $\tau(x)$ and $\tau(y)$.
 
-
   This functional form for tax rates delivers flexible parametric functions that can fit the tax rate data shown in the scatterplot data in {numref}`Figure %s <FigTaxCalcETRtotinc>` and {numref}`Figure %s <FigTaxCalc3DvsPred>` as well as a wide variety of policy reforms. Further, these functional forms are monotonically increasing in both labor income $x$ and capital income $y$. This characteristic of monotonicity in $x$ and $y$ is essential for guaranteeing convex budget sets and thus uniqueness of solutions to the household Euler equations. The assumption of monotonicity does not appear to be a strong one when viewing the the tax rate data shown in {numref}`Figure %s <FigTaxCalc3DvsPred>`. While it does limit the potential tax systems to which one could apply our methodology, tax policies that do not satisfy this assumption would result in non-convex budget sets and thus require non-standard DGE model solutions methods and would not guarantee a unique equilibrium. The 12 parameters of our tax rate functional form from {eq}`EqTaxCalcTaxFuncForm` are summarized in {numref}`TabTaxCalcTfuncParams`.
 
   ```{list-table} **Description of tax rate function $\tau(x,y)$ parameters.**
@@ -281,7 +288,7 @@ When computing the role of compliance on the effective tax rate, we take a weigh
 
   ```{math}
   :label: EqTaxCalcFactor
-    factor\Biggl[\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\bar{\omega}_s\left(\bar{w}e_{j,s}\bar{n}_{j,s} + \bar{r}_{hh}\bar{b}_{j,s}\right)\Biggr] = \text{Avg. household income in data}
+    factor\Biggl[\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\bar{\omega}_s\left(\bar{w}e_{j,s}\bar{n}_{j,s} + \bar{r}_{p}\bar{b}_{j,s}\right)\Biggr] = \text{Avg. household income in data}
   ```
 
   We do not know the steady-state wage, interest rate, household labor supply, and savings *ex ante*. So the income $factor$ is an endogenous variable in the steady-state equilibrium computational solution. We hold the factor constant throughout the nonsteady-state equilibrium solution.
@@ -291,30 +298,51 @@ When computing the role of compliance on the effective tax rate, we take a weigh
 
 Linear consumption taxes, $\tau^c_{i,t}$ can vary over time and by consumption good.
 
+
+(SecGovWealthTax)=
 #### Wealth taxes
 
-Wealth taxes can be implemented through the $T_{j,s,t}^{w}(b_{j,s,t})$ function.  This function allows for progressive wealth taxation and is given by:
+  Wealth taxes can be implemented through the $tax^{w}_{j,s,t}(b_{j,s,t})$ function, shown in equations {eq}`EqTaxCalcLiabETR2` through {eq}`EqMTRy_derive`. This functional form allows for zero to flat to progressive wealth taxation and is given by the following,
 
   ```{math}
   :label: WealthTaxFunc
-    T_{j,s,t}^{w} = \left(\frac{h^{w}p_{w}b_{j,s,t}}{h^{w}b_{j,s,t} + m^{w}}\right)b_{j,s,t}
+    tax^{w}_{j,s,t} = p^w\left(\frac{h^{w}b_{j,s,t}}{h^{w}b_{j,s,t} + m^{w}}\right)b_{j,s,t}
+  ```
+
+  where $p^w\geq 0$ is a nonnegative scale parameter of the overall tax rate, $h^w> 0$ is a strictly positive scale coefficient parameter on the linear term inside of the parentheses, and $m^w\geq 0$ is a nonnegative constant additive coefficient in the denominator of the rate function in parentheses. This functional form allows us to represent a zero wealth tax rate ($p^w=0$), a flat wealth tax rate ($p^w>0$ and $m_w= 0$), and a progressive wealth tax rate ($p^w$, $h^w$, and $m^w$ > 0).
+
+  The expression for the effective tax rate on wealth is the following.
+
+  ```{math}
+  :label: EqETRwealth
+    \tau^{etr,w}_{t} = \frac{tax^{w}_{j,s,t}}{b_{j,s,t}} = p^w\left(\frac{h^{w}b_{j,s,t}}{h^{w}b_{j,s,t} + m^{w}}\right) \quad\forall j,s,t
+  ```
+
+  The analytical expression for the marginal tax rate on wealth defined in equation {eq}`` is the following.
+
+  ```{math}
+  :label: EqMTRwealth
+    \tau^{mtrw}_{t} = \frac{\partial tax^{w}_{j,s,t}}{\partial b_{j,s,t}} = \tau^{etr,w}_t\left[2 - \left(\frac{h^w b_{j,s,t}}{h^w b_{j,s,t} + m^w}\right)\right] \quad\forall j,s,t
   ```
 
+
 #### Corporate income taxes
 
-Businesses face a linear tax rate $\tau^{b}_{m,t}$, which can vary by industry and over time.  In the case of a single industry, `OG-Core` provides the parameters `c_corp_share_of_assets` to scale the tax rate applied to the representative firm so that it represents a weighted average between the rate on businesses entities taxes at the entity level (e.g., C corporations in the United States) and those with no entity level tax.  The parameter `adjustment_factor_for_cit_receipts` is additionally provided to represent a wedge between marginal and average tax rates (which could otherwise be zero with a linear tax function).
+Businesses face a linear tax rate $\tau^{corp}_{m,t}$, which can vary by industry and over time.  In the case of a single industry, `OG-Core` provides the parameters `c_corp_share_of_assets` to scale the tax rate applied to the representative firm so that it represents a weighted average between the rate on businesses entities taxes at the entity level (e.g., C corporations in the United States) and those with no entity level tax.  The parameter `adjustment_factor_for_cit_receipts` is additionally provided to represent a wedge between marginal and average tax rates (which could otherwise be zero with a linear tax function).
+
 ### Spending
 
-  Government spending is comprised of government provided pension benefits, lump sum transfers, universal basic income payments, infrastructure investment, spending on public goods, and interest payments on debt.  Below, we describe the transfer spending amounts.  Spending on infrastructure, public goods, and interest are described in {ref}`SecUnbalGBCbudgConstr`. Because government spending on lump-sum transfers to households $TR_t$, public goods $G_t$, and government infrastructure capital $I_g$ are all functions of nominal GDP, we define nominal GDP here,
+  Government spending is comprised of government provided pension benefits, lump sum transfers, universal basic income payments, infrastructure investment, spending on public goods, and interest payments on debt.  Below, we describe the transfer spending amounts.  Spending on infrastructure, public goods, and interest are described in {ref}`SecUnbalGBCbudgConstr`. Because government spending on lump-sum transfers to households $TR_t$, public goods $G_t$, and government infrastructure capital $I_g$ are all functions of nominal GDP, we define GDP here,
 
   ```{math}
   :label: EqGovtNomGDP
-    p_t Y_t \equiv \sum_{m=1}^M p_{m,t} Y_{m,t} \quad\forall t
+    Y_t \equiv \sum_{m=1}^M p_{m,t} Y_{m,t} \quad\forall t
   ```
 
-  where nominal GDP $p_t Y_t$ is in terms of the numeraire good of industry-$M$ output and $Y_t$ alone is in terms of composite consumption.
+  where GDP $Y_t$ is in terms of the numeraire good of industry-$M$ output.[^NomRealGDP]
 
 
+(SecGovPensions)=
 #### Pensions
 
 The `OG-Core` model allows for four different systems for public pensions:
@@ -328,7 +356,7 @@ These can be selected with the `pension_system` parameter.  Accepted values are
 
 For all systems, $R$ represents the age at which the individual becomes eligible to receive the government provided retirement benefit.
 
-##### U.S.-style social security system
+##### US-style social security system
 
 Under the U.S.-style social security system, households over age $R$ received a pension amount that is a function of their earnings history.  The earings history includes the highest earning `AIME_num_periods` prior to retirement (which OG-Core assumes happens at age $R$).  This history determines the Average Indexed Monthly Earnings (AIME):
 
@@ -358,7 +386,7 @@ Under the U.S.-style social security system, households over age $R$ received a
     \theta_{j,R,t+R} = \frac{PIA_{j,R,t+R} \times 12}{factor \times w_{t+R}}
   ```
 
-  Note that $aIME_{j,R,t+R}$ is a function of each households' earning history, but their choice of earning may depend on their retirement benefit.  Solving this exactly would introduce and additional fixed point problem in both the steady state solution and in the time path solution.  The latter would be extremely computationally taxing.  Therefore, we make the simplification of determining the AIME for each type $j$ using the steady state solution and earnings for type $j$ in the steady state.  This leads to some approximation error, but because $\theta_j$ is adjusted by the current wage rate, this approximation error is minized.
+  Note that $AIME_{j,R,t+R}$ is a function of each households' earning history, but their choice of earning may depend on their retirement benefit.  Solving this exactly would introduce and additional fixed point problem in both the steady state solution and in the time path solution.  The latter would be extremely computationally taxing.  Therefore, we make the simplification of determining the AIME for each type $j$ using the steady state solution and earnings for type $j$ in the steady state.  This leads to some approximation error, but because $\theta_j$ is adjusted by the current wage rate, this approximation error is minized.
 
   The pension amount for households under the US-style social security system is then:
 
@@ -374,15 +402,13 @@ The defined benefit system pension amount is given as:
 
   ```{math}
   :label: eqn:db_pension
-  pension{j,s,t} = \biggl[\frac{\sum_{s=R-ny}^{R-1}w_{t}e_{j,s,t}n_{j,s,t}}{ny}\biggr]\times Cy \times \alpha_{DB} \quad \forall s > R
+  pension_{j,s,t} = \biggl[\frac{\sum_{s=R-ny}^{R-1}w_{t}e_{j,s,t}n_{j,s,t}}{ny}\biggr]\times Cy \times \alpha_{DB} \quad \forall s > R
   ```
 
 where:
-  \begin{itemize}
-    \item $ny$ are the number of years over which average earnings are calculated
-    \item $Cy$ are the number of years of contributions.  In our model, there is no exit from the labor force, so workers will contribute for $R$ years, but $Cy$ could be some number less than $R$ if there is a maximum number of years of contributions one can accrue under the DB system.
-    \item $\alpha_{DB}$ is the replacement rate per year of contribution.
-  \end{itemize}
+  - $ny$ are the number of years over which average earnings are calculated
+  - $Cy$ are the number of years of contributions.  In our model, there is no exit from the labor force, so workers will contribute for $R$ years, but $Cy$ could be some number less than $R$ if there is a maximum number of years of contributions one can accrue under the DB system.
+  - $\alpha_{DB}$ is the replacement rate per year of contribution.
 
   Given this pension system and the fact that there is only variation in labor supply along the intensive margin (so we don't need to consider changes in $Cy$), the partial derivatives from the household section are given by:
 
@@ -402,7 +428,7 @@ The pension amount under a notional defined contribution system is given as:
 
   ```{math}
   :label: eqn:ndc_pension
-   pension{j,s,t} = \biggl[\sum_{s=E}^{R-1}\tau^{p}_{t}w_{t}e_{j,s,t}n_{j,s,t}(1 + g_{NDC,t})^{R-s-1}\biggr]\delta_{R, t} \quad \forall s > R
+   pension_{j,s,t} = \biggl[\sum_{s=E}^{R-1}\tau^{p}_{t}w_{t}e_{j,s,t}n_{j,s,t}(1 + g_{NDC,t})^{R-s-1}\biggr]\delta_{R, t} \quad \forall s > R
   ```
 
 where:
@@ -447,7 +473,7 @@ Under a points system, the pension amount is given as:
 
   ```{math}
   :label: eqn:ps_pension
-  pension{j,s,t} = \sum_{s=E}^{R-1}w_{t}e_{j,s,t}n_{j,s,t}\times v_{t} \quad \forall s > R
+  pension_{j,s,t} = \sum_{s=E}^{R-1}w_{t}e_{j,s,t}n_{j,s,t}\times v_{t} \quad \forall s > R
   ```
 
 where $v_{t}$ is the value of a point at time $t$
@@ -463,25 +489,27 @@ Given this pension system, the partial derivatives from the household section ar
   \end{cases}
  ```
 
+##### Aggregate Pension Spending
+
+Total pension spending is the sum of the pension payments to each household in the model:
+
+  ```{math}
+  :label: EqPensionSpending
+  Pensions_{t} = \sum_{j=1}^{J}\sum_{s=E+1}^{E+S} pension_{j,s,t}\omega_{s,t}\lambda_j \quad\forall t
+  ```
+
+(SecGovLumpSumTfers)=
 #### Lump sum transfers:
 
   Aggregate non-pension transfers to households are assumed to be a fixed fraction $\alpha_{tr}$ of GDP each period:
 
   ```{math}
   :label: EqUnbalGBCtfer
-    TR_t = g_{tr,t}\:\alpha_{tr}\: p_t Y_t \quad\forall t
+    TR_t = g_{tr,t}\:\alpha_{tr}\: Y_t \quad\forall t
   ```
 
-  where total government transfers to households $TR_t$ and GDP ($p_t Y_t$) are in terms of the numeraire good and the term $Y_t$ is in terms of the composite good.
-
   The time dependent multiplier $g_{tr,t}$ in front of the right-hand-side of {eq}`EqUnbalGBCtfer` will equal 1 in most initial periods. It will potentially deviate from 1 in some future periods in order to provide a closure rule that ensures a stable long-run debt-to-GDP ratio. We will discuss the closure rule in Section {ref}`SecUnbalGBCcloseRule`.
 
-  We assume that total non-pension transfers are distributed in a lump sum manner to households.  The distribution across households by age and lifetime income group is parameterized by the the parameters $\eta_{j,s,t}$, which are in the time specific $\boldsymbol{\eta}_{t}$ matrix. Thus, transfers to households of lifetime income group $j$, age $s$, at time $t$ are given as:
-
-   ```{math}
-  :label: Eq_tr
-    tr_{j,s,t} = \boldsymbol{\eta}_{t} TR_{t}
-  ```
 
 (SecUBI)=
 #### Universal basic income
@@ -540,17 +568,17 @@ Given this pension system, the partial derivatives from the household section ar
 (SecUnbalGBCrev)=
 ## Government Tax Revenue
 
-  We see from the household's budget constraint that taxes $T_{j,s,t}$ and transfers $TR_{t}$ enter into the household's decision,
+  We see from the household's budget constraint that net taxes $tax_{j,s,t}$ and government transfers $tr_{j,s,t}$ enter into the household's decision,
 
   ```{math}
   :label: EqHHBC3
     p_t c_{j,s,t} + &\sum_{i=1}^I (1 + \tau^{c}_{i,t})p_{i,t}c_{min,i} + b_{j,s+1,t+1} = \\
-    &(1 + r_{p,t})b_{j,s,t} + w_t e_{j,s} n_{j,s,t} + \\
-    &\quad\quad\zeta_{j,s}\frac{BQ_t}{\lambda_j\omega_{s,t}} + \eta_{j,s,t}\frac{TR_{t}}{\lambda_j\omega_{s,t}} + ubi_{j,s,t} - T_{j,s,t}  \\
-    &\quad\forall j,t\quad\text{and}\quad s\geq E+1 \quad\text{where}\quad b_{j,E+1,t}=0\quad\forall j,t
+    &(1 + r_{p,t})b_{j,s,t} + w_t e_{j,s} n_{j,s,t} ... \\
+    &\qquad +\: bq_{j,s,t} + rm_{j,s,t} + tr_{j,s,t} + ubi_{j,s,t} + pension_{j,s,t} - tax_{j,s,t}  \\
+    &\qquad\quad\forall j,t\quad\text{and}\quad E+1\leq s\leq E+S \quad\text{where}\quad b_{j,E+1,t}=0
   ```
 
-  where we defined the tax liability function $T_{j,s,t}$ in {eq}`EqTaxCalcLiabETR` as an effective tax rate times total income and the transfer distribution function $\eta_{j,s,t}$ is uniform across all households. And government revenue from the corporate income tax rate schedule $\tau^{corp}_{m,t}$ and the tax on depreciation expensing schedule $\delta^\tau_{m,t}$ enters the firms' profit function in each industry $m$.
+  where we defined the tax liability function $tax_{j,s,t}$ in {eq}`EqTaxCalcLiabETR` as effective tax rate times respective total income and wealth. The transfer distribution function $\eta_{j,s,t}$ can vary by lifetime ability group $j$, age $s$, and time period $t$. And government revenue from the corporate income tax rate schedule $\tau^{corp}_{m,t}$ and the tax on depreciation expensing schedule $\delta^\tau_{m,t}$ enters the firms' profit function in each industry $m$.
 
   ```{math}
   :label: EqFirmsProfit2
@@ -562,31 +590,32 @@ Given this pension system, the partial derivatives from the household section ar
 
   ```{math}
   :label: EqUnbalGBCgovRev
-    Rev_t &= \underbrace{\sum_{m=1}^M\Bigl[\tau^{corp}_{m,t}\bigl(p_{m,t}Y_{m,t} - w_t L_t\bigr) - \tau^{corp}_{m,t}\delta^\tau_{m,t}K_{m,t} - \tau^{inv}_{m,t}\delta_{M,t}K_{m,t}\Bigr]}_{\text{corporate income tax revenue}} \\
-    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\omega_{s,t}\tau^{etr}_{s,t}\left(x_{j,s,t},y_{j,s,t}\right)\bigl(x_{j,s,t} + y_{j,s,t}\bigr)}_{\text{household income tax revenue}} \\
-    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\sum_{i=1}^I\lambda_j\omega_{s,t}\tau^{c}_{i,t}p{i,t}c_{i,j,s,t}}_{\text{consumption tax revenue}} \\
-    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\omega_{s,t}\tau^{w}_{t}b_{j,s,t}}_{\text{wealth tax revenue}} \quad\forall t
+    Rev_t &= \underbrace{\sum_{m=1}^M\Bigl[\tau^{corp}_{m,t}\bigl(p_{m,t}Y_{m,t} - w_t L_{m,t}\bigr) - \bigl(\tau^{corp}_{m,t}\delta^\tau_{m,t} + \tau^{inv}_{m,t}\delta_{M,t}\bigr)K_{m,t}\Bigr]}_{\text{corporate income tax revenue}} \\
+    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\omega_{s,t}\tau^{etr,xy}_{s,t}\left(x_{j,s,t},y_{j,s,t}\right)\bigl(x_{j,s,t} + y_{j,s,t}\bigr)}_{\text{household income tax revenue}} \\
+    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\sum_{i=1}^I\lambda_j\omega_{s,t}\tau^{c}_{i,t}p_{i,t}c_{i,j,s,t}}_{\text{consumption tax revenue}} \\
+    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\omega_{s,t}\tau^{etr,w}_{t}b_{j,s,t}}_{\text{wealth tax revenue}} \quad\forall t
   ```
 
   where household labor income is defined as $x_{j,s,t}\equiv w_t e_{j,s}n_{j,s,t}$ and capital income $y_{j,s,t}\equiv r_{p,t} b_{j,s,t}$.
 
+
 (SecUnbalGBCbudgConstr)=
 ## Government Budget Constraint
 
-  Let the level of government debt in period $t$ be given by $D_t$. The government budget constraint requires that government revenue $Rev_t$ plus the budget deficit ($D_{t+1} - D_t$) equal expenditures on interest on the debt, government spending on public goods $G_t$, total infrastructure investments $I_{g,t}$, and total transfer payments to households $TR_t$ and $UBI_t$ every period $t$,
+  Let the level of government debt in period $t$ be given by $D_t$. The government budget constraint requires that government revenue $Rev_t$ plus the budget deficit ($D_{t+1} - D_t$) equal expenditures on interest on the debt, government spending on public goods $G_t$, total infrastructure investments $I_{g,t}$, total pension outlays, total transfer payments to households $TR_t$, and $UBI_t$ every period $t$,
 
   ```{math}
   :label: EqUnbalGBCbudgConstr
     D_{t+1} + Rev_t = (1 + r_{gov,t})D_t + G_t + I_{g,t} + Pensions_t + TR_t + UBI_t  \quad\forall t
   ```
 
-  where $r_{gov,t}$ is the interest rate paid by the government defined in equation {eq}`EqUnbalGBC_rate_wedge` below, $G_{t}$ is government spending on public goods, $I_{g,t}$ is total government spending on infrastructure investment, $TR_{t}$ are non-pension government transfers, and $UBI_t$ is the total UBI transfer outlays across households in time $t$.
+  where $r_{gov,t}$ is the interest rate paid by the government defined in equation {eq}`EqUnbalGBC_rate_wedge` below, $G_{t}$ is government spending on public goods, $I_{g,t}$ is total government spending on infrastructure investment, $TR_{t}$ are non-pension government transfers, and $UBI_t$ is the total UBI transfer outlays across households in time $t$. All variables in {eq}`EqUnbalGBCbudgConstr` are real variables denominated in units of current-period output in industry $M$ the numeraire ($p_{M,t}=1$ for all $t$).
 
   We assume that government spending on public goods in terms of the numeraire good is a fixed fraction of GDP each period in the initial periods.
 
   ```{math}
   :label: EqUnbalGBC_Gt
-    G_t = g_{g,t}\:\alpha_{g}\: p_t Y_t \quad\forall t
+    G_t = g_{g,t}\:\alpha_{g}\: Y_t \quad\forall t
   ```
 
   Similar to transfers $TR_t$, the time dependent multiplier $g_{g,t}$ in front of the right-hand-side of {eq}`EqUnbalGBC_Gt` will equal 1 in most initial periods. It will potentially deviate from 1 in some future periods in order to provide a closure rule that ensures a stable long-run debt-to-GDP ratio. We make this more specific in the next section.
@@ -595,7 +624,7 @@ Given this pension system, the partial derivatives from the household section ar
 
   ```{math}
   :label: EqUnbalGBC_Igt
-    I_{g,t} = \alpha_{I,t}\: p_t Y_t \quad\forall t
+    I_{g,t} = \alpha_{I,t}\: Y_t \quad\forall t
   ```
 
   The government also chooses what percent of total infrastructure investment goes to each industry $\alpha_{I,m,t}$, although these are exogenously calibrated parameters in the model.
@@ -646,7 +675,7 @@ Given this pension system, the partial derivatives from the household section ar
 
   ```{math}
   :label: EqUnbalGBC_DY
-    \frac{D_t}{p_t Y_t} = \alpha_D \quad\text{for}\quad t\geq T
+    D_t = \alpha_D Y_t \quad\Rightarrow\quad \frac{D_t}{Y_t} = \alpha_D \quad\text{for}\quad t\geq T
   ```
 
   where $\alpha_D$ is a scalar long-run value of the debt-to-GDP ratio. This long-run stability condition on the debt-to-GDP ratio clearly applies to the steady-state as well as any point in the time path for $t>T$.
@@ -667,18 +696,19 @@ Given this pension system, the partial derivatives from the household section ar
   ```{math}
   :label: EqUnbalGBCclosure_Gt
   \begin{split}
-    &G_t = g_{g,t}\:\alpha_{g}\: p_t Y_t \\
+    &G_t = g_{g,t}\:\alpha_{g}\: Y_t \\
     &\text{where}\quad g_{g,t} =
       \begin{cases}
-        1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\:\,\text{if}\quad t < T_{G1} \\
-        \frac{\left[\rho_{d}\alpha_{D}p_t Y_{t} + (1-\rho_{d})D_{t}\right] - (1+r_{gov,t})D_{t} - I_{g,t} - TR_{t} - UBI_{t} + Rev_{t}}{\alpha_g p_t Y_t} \quad\text{if}\quad T_{G1}\leq t<T_{G2} \\
-        \frac{\alpha_{D}p_t Y_{t} - (1+r_{gov,t})D_{t} - I_{g,t} - TR_{t} - UBI_{t} + Rev_{t}}{\alpha_g p_t Y_t} \qquad\qquad\quad\:\:\,\text{if}\quad t \geq T_{G2}
+        1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\:\text{if}\quad t < T_{G1} \\
+        \frac{\left[\rho_{d}\alpha_{D}Y_{t} + (1-\rho_{d})D_{t}\right] - (1+r_{gov,t})D_{t} - I_{g,t} - TR_{t} - UBI_{t} + Rev_{t}}{\alpha_g Y_t} \quad\text{if}\quad T_{G1}\leq t<T_{G2} \\
+        \frac{\alpha_{D}Y_{t} - (1+r_{gov,t})D_{t} - I_{g,t} - TR_{t} - UBI_{t} + Rev_{t}}{\alpha_g Y_t} \qquad\qquad\quad\:\:\,\text{if}\quad t \geq T_{G2}
       \end{cases} \\
     &\text{and}\quad g_{tr,t} = 1 \quad\forall t
   \end{split}
   ```
 
-  The first case in {eq}`EqUnbalGBCclosure_Gt` says that government spending $G_t$ will be a fixed fraction $\alpha_g$ of GDP $p_t Y_t$ for every period before $T_{G1}$. The second case specifies that, starting in period $T_{G1}$ and continuing until before period $T_{G2}$, government spending be adjusted to set tomorrow's debt $D_{t+1}$ to be a convex combination between its long-run stable level $\alpha_D p_t Y_t$ and the current debt level $D_t$, where $\alpha_D$ is a target debt-to-GDP ratio and $\rho_d\in(0,1]$ is the percent of the way to jump toward the target $\alpha_D p_t Y_t$ from the current debt level $D_t$. The last case specifies that, for every period after $T_{G2}$, government spending $G_t$ is set such that the next-period debt be a fixed target percentage $\alpha_D$ of GDP.
+  The first case in {eq}`EqUnbalGBCclosure_Gt` says that government spending $G_t$ will be a fixed fraction $\alpha_g$ of GDP $Y_t$ for every period before $T_{G1}$. The second case specifies that, starting in period $T_{G1}$ and continuing until before period $T_{G2}$, government spending be adjusted to set tomorrow's debt $D_{t+1}$ to be a convex combination between its long-run stable level $\alpha_D Y_t$ and the current debt level $D_t$, where $\alpha_D$ is a target debt-to-GDP ratio and $\rho_d\in(0,1]$ is the percent of the way to jump toward the target $\alpha_D Y_t$ from the current debt level $D_t$. The last case specifies that, for every period after $T_{G2}$, government spending $G_t$ is set such that the next-period debt be a fixed target percentage $\alpha_D$ of GDP.
+
 
 (SecUnbalGBC_chgTRt)=
 ### Change government transfers only
@@ -688,18 +718,18 @@ Given this pension system, the partial derivatives from the household section ar
   ```{math}
   :label: EqUnbalGBCclosure_TRt
   \begin{split}
-    &TR_t = g_{tr,t}\:\alpha_{tr}\: p_t Y_t \\
+    &TR_t = g_{tr,t}\:\alpha_{tr}\: Y_t \\
     &\text{where}\quad g_{tr,t} =
       \begin{cases}
-        1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\text{if}\quad t < T_{G1} \\
-        \frac{\left[\rho_{d}\alpha_{D}p_t Y_{t} + (1-\rho_{d})D_{t}\right] - (1+r_{gov,t})D_{t} - G_{t} - I_{g,t} -  UBI_{t} + Rev_{t}}{\alpha_{tr} p_t Y_t} \quad\text{if}\quad T_{G1}\leq t<T_{G2} \\
-        \frac{\alpha_{D}p_t Y_{t} - (1+r_{gov,t})D_{t} - G_{t} - I_{g,t} - UBI_{t} + Rev_{t}}{\alpha_{tr}p_t Y_t} \qquad\qquad\quad\:\:\:\text{if}\quad t \geq T_{G2}
+        1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\:\:\:\,\text{if}\quad t < T_{G1} \\
+        \frac{\left[\rho_{d}\alpha_{D}Y_{t} + (1-\rho_{d})D_{t}\right] - (1+r_{gov,t})D_{t} - G_{t} - I_{g,t} -  UBI_{t} + Rev_{t}}{\alpha_{tr} Y_t} \quad\text{if}\quad T_{G1}\leq t<T_{G2} \\
+        \frac{\alpha_{D}Y_{t} - (1+r_{gov,t})D_{t} - G_{t} - I_{g,t} - UBI_{t} + Rev_{t}}{\alpha_{tr}Y_t} \qquad\qquad\quad\:\:\:\text{if}\quad t \geq T_{G2}
       \end{cases} \\
     &\text{and}\quad g_{g,t} = 1 \quad\forall t
   \end{split}
   ```
 
-  The first case in {eq}`EqUnbalGBCclosure_TRt` says that government transfers $TR_t$ will be a fixed fraction $\alpha_{tr}$ of GDP $p_t Y_t$ for every period before $T_{G1}$. The second case specifies that, starting in period $T_{G1}$ and continuing until before period $T_{G2}$, government transfers be adjusted to set tomorrow's debt $D_{t+1}$ to be a convex combination between the target debt $\alpha_D p_t Y_t$ and the current debt level $D_t$. The last case specifies that, for every period after $T_{G2}$, government transfers $TR_t$ are set such that the next-period debt be a fixed target percentage $\alpha_D$ of GDP.
+  The first case in {eq}`EqUnbalGBCclosure_TRt` says that government transfers $TR_t$ will be a fixed fraction $\alpha_{tr}$ of GDP $Y_t$ for every period before $T_{G1}$. The second case specifies that, starting in period $T_{G1}$ and continuing until before period $T_{G2}$, government transfers be adjusted to set tomorrow's debt $D_{t+1}$ to be a convex combination between the target debt $\alpha_D Y_t$ and the current debt level $D_t$. The last case specifies that, for every period after $T_{G2}$, government transfers $TR_t$ are set such that the next-period debt be a fixed target percentage $\alpha_D$ of GDP.
 
 
 (SecUnbalGBC_chgGtTRt)=
@@ -719,40 +749,44 @@ Given this pension system, the partial derivatives from the household section ar
   ```{math}
   :label: EqUnbalGBCclosure_TRGt
   \begin{split}
-    &G_t + TR_t = g_{trg,t}\left(\alpha_g + \alpha_{tr}\right)p_t Y_t \quad\Rightarrow\quad G_t = g_{trg,t}\:\alpha_g\: p_t Y_t \quad\text{and}\quad TR_t = g_{trg,t}\:\alpha_{tr}\: p_t Y_t \\
+    &G_t + TR_t = g_{trg,t}\left(\alpha_g + \alpha_{tr}\right)Y_t \quad\Rightarrow\quad G_t = g_{trg,t}\:\alpha_g\: Y_t \quad\text{and}\quad TR_t = g_{trg,t}\:\alpha_{tr}\: Y_t \\
     &\text{where}\quad g_{trg,t} =
     \begin{cases}
-      1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\:\:\,\text{if}\quad t < T_{G1} \\
-      \frac{\left[\rho_{d}\alpha_{D}p_t Y_{t} + (1-\rho_{d})D_{t}\right] - (1+r_{gov,t})D_{t} - I_{g,t} - UBI_{t} + Rev_{t}}{\left(\alpha_g + \alpha_{tr}\right)p_t Y_t} \quad\text{if}\quad T_{G1}\leq t<T_{G2} \\
-      \frac{\alpha_{D}p_t Y_{t} - (1+r_{gov,t})D_{t} - I_{g,t} - UBI_{t} + Rev_{t}}{\left(\alpha_g + \alpha_{tr}\right)p_t Y_t} \qquad\qquad\quad\:\:\:\text{if}\quad t \geq T_{G2}
+      1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\:\,\text{if}\quad t < T_{G1} \\
+      \frac{\left[\rho_{d}\alpha_{D}Y_{t} + (1-\rho_{d})D_{t}\right] - (1+r_{gov,t})D_{t} - I_{g,t} - UBI_{t} + Rev_{t}}{\left(\alpha_g + \alpha_{tr}\right)Y_t} \quad\text{if}\quad T_{G1}\leq t<T_{G2} \\
+      \frac{\alpha_{D}Y_{t} - (1+r_{gov,t})D_{t} - I_{g,t} - UBI_{t} + Rev_{t}}{\left(\alpha_g + \alpha_{tr}\right)Y_t} \qquad\qquad\quad\:\:\:\text{if}\quad t \geq T_{G2}
     \end{cases}
   \end{split}
   ```
 
- The first case in {eq}`EqUnbalGBCclosure_TRGt` says that government spending and government transfers $TR_t$ will their respective fixed fractions $\alpha_g$ and $\alpha_{tr}$ of GDP $p_t Y_t$ for every period before $T_{G1}$. The second case specifies that, starting in period $T_{G1}$ and continuing until before period $T_{G2}$, government spending and transfers be adjusted by the same rate to set tomorrow's debt $D_{t+1}$ to be a convex combination between target debt $\alpha_D p_t Y_t$ and the current debt level $D_t$. The last case specifies that, for every period after $T_{G2}$, government spending and transfers are set such that the next-period debt be a fixed target percentage $\alpha_D$ of GDP.
+  The first case in {eq}`EqUnbalGBCclosure_TRGt` says that government spending and government transfers $TR_t$ will their respective fixed fractions $\alpha_g$ and $\alpha_{tr}$ of GDP $Y_t$ for every period before $T_{G1}$. The second case specifies that, starting in period $T_{G1}$ and continuing until before period $T_{G2}$, government spending and transfers be adjusted by the same rate to set tomorrow's debt $D_{t+1}$ to be a convex combination between target debt $\alpha_D Y_t$ and the current debt level $D_t$. The last case specifies that, for every period after $T_{G2}$, government spending and transfers are set such that the next-period debt be a fixed target percentage $\alpha_D$ of GDP.
+
+  Each of these budget closure rules {eq}`EqUnbalGBCclosure_Gt`, {eq}`EqUnbalGBCclosure_TRt`, and {eq}`EqUnbalGBCclosure_TRGt` allows the government to run increasing deficits or surpluses in the short run (before period $T_{G1}$). But then the adjustment rule is implemented gradually beginning in period $t=T_{G1}$ to return the debt-to-GDP ratio back to its long-run target of $\alpha_D$. Then the rule is implemented exactly in period $T_{G2}$ by adjusting some combination of government spending $G_t$ and transfers $TR_t$ to set the debt $D_{t+1}$ such that it is exactly $\alpha_D$ proportion of GDP $Y_t$.
 
- Each of these budget closure rules {eq}`EqUnbalGBCclosure_Gt`, {eq}`EqUnbalGBCclosure_TRt`, and {eq}`EqUnbalGBCclosure_TRGt` allows the government to run increasing deficits or surpluses in the short run (before period $T_{G1}$). But then the adjustment rule is implemented gradually beginning in period $t=T_{G1}$ to return the debt-to-GDP ratio back to its long-run target of $\alpha_D$. Then the rule is implemented exactly in period $T_{G2}$ by adjusting some combination of government spending $G_t$ and transfers $TR_t$ to set the debt $D_{t+1}$ such that it is exactly $\alpha_D$ proportion of GDP $p_t Y_t$.
 
 (SecUnbalGBCcaveat)=
 ## Some Caveats and Alternatives
 
-`OG-Core` adjusts some combination of government spending $G_t$ and government transfers $TR_t$ as its closure rule instrument because of its simplicity and lack of distortionary effects. Since government spending does not enter into the household's utility function, its level does not affect the solution of the household problem. In contrast, government transfers do appear in the household budget constraint. However, household decisions do not individually affect the amount of transfers, thereby rendering government transfers as exogenous from the household's perspective. As an alternative, one could choose to adjust taxes to close the budget (or a combination of all of the government fiscal policy levers).
+  `OG-Core` adjusts some combination of government spending $G_t$ and government transfers $TR_t$ as its closure rule instrument because of its simplicity and lack of distortionary effects. Since government spending does not enter into the household's utility function, its level does not affect the solution of the household problem. In contrast, government transfers do appear in the household budget constraint. However, household decisions do not individually affect the amount of transfers, thereby rendering government transfers as exogenous from the household's perspective. As an alternative, one could choose to adjust taxes to close the budget (or a combination of all of the government fiscal policy levers).
 
-There is no guarantee that any of our stated closure rules {eq}`EqUnbalGBCclosure_Gt`, {eq}`EqUnbalGBCclosure_TRt`, or {eq}`EqUnbalGBCclosure_TRGt` is sufficient to stabilize the debt-to-GDP ratio in the long run. For large and growing deficits, the convex combination parameter $\rho_d$ might be too gradual, or the budget closure initial period $T_{G1}$ might be too far in the future, or the target debt-to-GDP ratio $\alpha_D$ might be too high. The existence of any of these problems might be manifest in the steady state computation stage. However, it is possible for the steady-state to exist, but for the time path to never reach it. These problems can be avoided by choosing conservative values for $T_{G1}$, $\rho_d$, and $\alpha_D$ that close the budget quickly.
+  There is no guarantee that any of our stated closure rules {eq}`EqUnbalGBCclosure_Gt`, {eq}`EqUnbalGBCclosure_TRt`, or {eq}`EqUnbalGBCclosure_TRGt` is sufficient to stabilize the debt-to-GDP ratio in the long run. For large and growing deficits, the convex combination parameter $\rho_d$ might be too gradual, or the budget closure initial period $T_{G1}$ might be too far in the future, or the target debt-to-GDP ratio $\alpha_D$ might be too high. The existence of any of these problems might be manifest in the steady state computation stage. However, it is possible for the steady-state to exist, but for the time path to never reach it. These problems can be avoided by choosing conservative values for $T_{G1}$, $\rho_d$, and $\alpha_D$ that close the budget quickly.
 
-And finally, in closure rules {eq}`EqUnbalGBCclosure_Gt` and {eq}`EqUnbalGBCclosure_TRGt` in which government spending is used to stabilize the long-run budget, it is also possible that government spending is forced to be less than zero to make this happen. This would be the case if tax revenues bring in less than is needed to financed transfers and interest payments on the national debt. None of the equations we've specified above preclude that result, but it does raise conceptual difficulties. Namely, what does it mean for government spending to be negative? Is the government selling off public assets? We caution those using this budget closure rule to consider carefully how the budget is closed in the long run given their parameterization. We also note that such difficulties present themselves across all budget closure rules when analyzing tax or spending proposals that induce structural budget deficits. In particular, one probably needs a different closure instrument if government spending must be negative in the steady-state to hit your long-term debt-to-GDP target.
+  And finally, in closure rules {eq}`EqUnbalGBCclosure_Gt` and {eq}`EqUnbalGBCclosure_TRGt` in which government spending is used to stabilize the long-run budget, it is also possible that government spending is forced to be less than zero to make this happen. This would be the case if tax revenues bring in less than is needed to financed transfers and interest payments on the national debt. None of the equations we've specified above preclude that result, but it does raise conceptual difficulties. Namely, what does it mean for government spending to be negative? Is the government selling off public assets? We caution those using this budget closure rule to consider carefully how the budget is closed in the long run given their parameterization. We also note that such difficulties present themselves across all budget closure rules when analyzing tax or spending proposals that induce structural budget deficits. In particular, one probably needs a different closure instrument if government spending must be negative in the steady-state to hit your long-term debt-to-GDP target.
 
 
 (SecGovfootnotes)=
 ## Footnotes
 
+  This section contains the footnotes for this chapter.
+
+  [^interpolation_note]: We use two criterion to determine whether the function should be interpolated. First, we require a minimum number of observations of filers of that age and in that tax year. Second, we require that that sum of squared errors meet a predefined threshold.
 
-[^interpolation_note]: We use two criterion to determine whether the function should be interpolated. First, we require a minimum number of observations of filers of that age and in that tax year. Second, we require that that sum of squared errors meet a predefined threshold.
+  [^param_note]: We assume that whatever parameters the tax functions have in the last year of the budget window persist forever.
 
-[^param_note]: We assume that whatever parameters the tax functions have in the last year of the budget window persist forever.
+  [^NomRealGDP]: All quantities in OG-Core are real in the sense that their prices can only be denominated in terms of one of the goods in the model. We have made the assumption that all prices are given in terms of industry-$M$ output as the numeraire good. However, we can convert the real amounts in the model to currency prices using the income adjustment factor described in equation {eq}`EqIncFactor` in Section {ref}`SecHHincFactor` of Chapter {ref}`Chap_House`.
 
-[^UBIgrowthadj]: The steady-state assumption in equation {eq}`EqUBIubi_mod_NonGrwAdj_SS` implies that the UBI amount is growth adjusted for every period after the steady-state is reached.
+  [^UBIgrowthadj]: The steady-state assumption in equation {eq}`EqUBIubi_mod_NonGrwAdj_SS` implies that the UBI amount is growth adjusted for every period after the steady-state is reached.
 
-[^GrowthAdj_note]: We impose this requirement of `ubi_growthadj = False` when `g_y_annual < 0` in the [`default_parameters.json`](https://github.com/PSLmodels/OG-Core/blob/master/ogcore/default_parameters.json) "validators" specification of the parameter.
+  [^GrowthAdj_note]: We impose this requirement of `ubi_growthadj = False` when `g_y_annual < 0` in the [`default_parameters.json`](https://github.com/PSLmodels/OG-Core/blob/master/ogcore/default_parameters.json) "validators" specification of the parameter.
 
-[^negative_val_note]: Negative values for government spending on public goods would mean that revenues are coming into the country from some outside source, which revenues are triggered by government deficits being too high in an arbitrary future period $T_{G2}$.
+  [^negative_val_note]: Negative values for government spending on public goods would mean that revenues are coming into the country from some outside source, which revenues are triggered by government deficits being too high in an arbitrary future period $T_{G2}$.
diff --git a/docs/book/content/theory/households.md b/docs/book/content/theory/households.md
index 53ab88fa1..566cc5915 100644
--- a/docs/book/content/theory/households.md
+++ b/docs/book/content/theory/households.md
@@ -1,21 +1,19 @@
 ---
 jupytext:
+  formats: md:myst
   text_representation:
     extension: .md
     format_name: myst
-    format_version: '0.8'
-    jupytext_version: '1.4.1'
 kernelspec:
   display_name: Python 3
   language: python
-  name: ogcore-dev
+  name: python3
 ---
 
-(glue)=
+
 (Chap_House)=
 # Households
 
-
 In this section, we describe what is arguably the most important economic agent in the `OG-Core` model: the household. We model households in `OG-Core` rather than individuals, because we want to abstract from the concepts of gender, marital status, and number of children. Furthermore, the household is the usual unit of account in tax data. Because `OG-Core` is primarily a fiscal policy model, it is advantageous to have the most granular unit of account be the household.
 
 <!-- This last sentence will not be true once we start carefully modeling government benefit programs, which focus on individual members of the household. -->
@@ -54,19 +52,19 @@ In this section, we describe what is arguably the most important economic agent
   Solving {eq}`EqHHFOCci` for $c_{i,j,s,t}$ gives the optimal demand function for consumption of good $i$ by ability-$j$ and age-$s$ individual in period $t$.
   ```{math}
   :label: EqHH_ciDem
-    c_{i,j,s,t} = \alpha_i\left(\frac{(1 + \tau^{c}_{i,t})\tilde{p}_{i,t}}{\tilde{p}_{j,s,t}}\right)^{-1}c_{j,s,t} + c_{min,i} \quad\forall i,j,s,t
+    c_{i,j,s,t} = \alpha_i\left(\frac{[1 + \tau^{c}_{i,t}]\tilde{p}_{i,t}}{\tilde{p}_{j,s,t}}\right)^{-1}c_{j,s,t} + c_{min,i} \quad\forall i,j,s,t
   ```
   This household demand function for good-$i$ shows that $c_{i,j,s,t}$ is a fraction of total composite consumption $c_{j,s,t}$, and that fraction is negatively correlated with the relative price of good-$i$ to the composite good price.
 
   Substituting the demand equations {eq}`EqHH_ciDem` back into the composite consumption definition {eq}`EqHHCompCons` gives us the expression for the non-normalized composite price $\tilde{p}_{j,s,t}$ as a function of each non-normalized industry-$i$ good price $\tilde{p}_{i,t}$.
   ```{math}
   :label: EqCompPnonnorm
-    \tilde{p}_{j,s,t} = \prod_{i=1}^I\left(\frac{(1 + \tau^{c}_{i,t})\tilde{p}_{i,t}}{\alpha_i}\right)^{\alpha_i} \quad\forall j,s,t
+    \tilde{p}_{j,s,t} = \prod_{i=1}^I\left(\frac{[1 + \tau^{c}_{i,t}]\tilde{p}_{i,t}}{\alpha_i}\right)^{\alpha_i} \quad\forall j,s,t
   ```
   Because nothing on the right-hand-side of {eq}`EqCompPnonnorm` is a function of $j$ or $s$, then $\tilde{p}_{j,s,t}=\tilde{p}_t$ for all $j$ and $s$.
   ```{math}
   :label: EqCompPnonnorm2
-    \tilde{p}_{t} = \prod_{i=1}^I\left(\frac{(1 + \tau^{c}_{i,t})\tilde{p}_{i,t}}{\alpha_i}\right)^{\alpha_i} \quad\forall t
+    \tilde{p}_{t} = \prod_{i=1}^I\left(\frac{[1 + \tau^{c}_{i,t}]\tilde{p}_{i,t}}{\alpha_i}\right)^{\alpha_i} \quad\forall t
   ```
 
   Consumption goods are determined from production goods through a fixed $I\times M$ coefficient matrix, $\Pi^I$. Each element, $\pi_{i,m}$, of $\Pi^I$ represents the fraction of good $i$ that is made up of output from industry $m$. It follows that the prices of consumption goods can be expressed as a function of the prices of production goods and the fixed coefficient matrix $\Pi^I$.
@@ -82,11 +80,11 @@ In this section, we describe what is arguably the most important economic agent
   ```
   ```{math}
   :label: EqHH_ciDem2
-    c_{i,j,s,t} = \alpha_i\left(\frac{(1 + \tau^{c}_{i,t})p_{i,t}}{p_t}\right)^{-1}c_{j,s,t} + c_{min,i} \quad\forall m,j,s,t
+    c_{i,j,s,t} = \alpha_i\left(\frac{[1 + \tau^{c}_{i,t}]p_{i,t}}{p_t}\right)^{-1}c_{j,s,t} + c_{min,i} \quad\forall m,j,s,t
   ```
   ```{math}
   :label: EqCompPnorm2
-    p_t = \prod_{i=1}^I\left(\frac{(1 + \tau^{c}_{i,t})p_{i,t}}{\alpha_i}\right)^{\alpha_i} \quad\forall t
+    p_t = \prod_{i=1}^I\left(\frac{[1 + \tau^{c}_{i,t}]p_{i,t}}{\alpha_i}\right)^{\alpha_i} \quad\forall t
   ```
   ```{math}
   :label: EqPmPcompNormDef
@@ -104,27 +102,27 @@ In this section, we describe what is arguably the most important economic agent
   ```{math}
   :label: EqHHBC
     p_t c_{j,s,t} + &\sum_{i=1}^I (1 + \tau^{c}_{i,t})p_{i,t}c_{min,i} + b_{j,s+1,t+1} = \\
-    &(1 + r_{p,t})b_{j,s,t} + w_t e_{j,s} n_{j,s,t} + \\
-    &\quad\quad\zeta_{j,s}\frac{BQ_t}{\lambda_j\omega_{s,t}} + \eta_{j,s,t}\frac{TR_{t}}{\lambda_j\omega_{s,t}} + ubi_{j,s,t} - T_{j,s,t}  \\
-    &\quad\forall j,t\quad\text{and}\quad s\geq E+1 \quad\text{where}\quad b_{j,E+1,t}=0\quad\forall j,t
+    &(1 + r_{p,t})b_{j,s,t} + w_t e_{j,s} n_{j,s,t} ... \\
+    &\quad\quad + bq_{j,s,t} + rm_{j,s,t} + tr_{j,s,t} + ubi_{j,s,t} + pension_{j,s,t} - tax_{j,s,t}  \\
+    &\quad\quad\forall j,t\quad\text{and}\quad E+1\leq s\leq E+S \quad\text{where}\quad b_{j,E+1,t}=0
   ```
 
   where $c_{j,s,t}$ is consumption, $b_{j,s+1,t+1}$ is savings for the next period, $r_{p,t}$ is the normalized interest rate (return) on household savings invested in the financial intermediary, $b_{j,s,t}$ is current period wealth (savings from last period), $w_t$ is the normalized wage, and $n_{j,s,t}$ is labor supply. Equations {eq}`eq_rK` and {eq}`eq_portfolio_return` of Chapter {ref}`Chap_FinInt` show how the rate of return from the financial intermediary $r_{p,t}$ might differ from the marginal product of capital $r_t$ and from the interest rate the government pays $r_{gov,t}$. Note that we must add in the cost of minimum consumption $c_{min,i}$ for all $i$ because that amount is subtracted out of composite consumption in {eq}`EqHHCompCons`.
 
-  The third term on the right-hand-side of the budget constraint {eq}`EqHHBC` represents the portion of total bequests $BQ_t$ that go to the age-$s$, income-group-$j$ household. Let $\zeta_{j,s}$ be the fraction of total bequests $BQ_t$ that go to the age-$s$, income-group-$j$ household, such that $\sum_{s=E+1}^{E+S}\sum_{j=1}^J\zeta_{j,s}=1$. We must divide that amount by the population of $(j,s)$ households $\lambda_j\omega_{s,t}$. The calibration chapter on beqests in the country-specific repository documentation details how to calibrate the $\zeta_{j,s}$ values from consumer finance data.
+  The last six terms on the right-hand-side of the budget constraint {eq}`EqHHBC` have to do with dfferent types of transfers to households: bequests $bq_{j,s,t}$, remittances $rm_{j,s,t}$, government transfers $tr_{j,s,t}$, universal basic income $ubi_{j,s,t}$, public pension benefits $pension_{j,s,t}$, and net taxes $tax_{j,s,t}$. The first four types of transfers to households are detailed in the section below entitled {ref}`SecHHtransfers`.
 
-  The last three terms on the right-hand-side of the budget constraint {eq}`EqHHBC` have to do with government transfers, universal basic income transfer, and taxes, respectively. $TR_{t}$ is total government transfers to households in period $t$ and $\eta_{j,s,t}$ is the percent of those transfers that go to households of age $s$ and lifetime income group $j$ such that $\sum_{s=E+1}^{E+S}\sum_{j=1}^J\eta_{j,s,t}=1$. This term is divided by the population of type $(j,s)$ households. We assume government transfers to be lump sum, so they do not create any direct distortions to household decisions. Total government transfers $TR_t$ is in terms of the numeraire good, as shown in equation {eq}`EqUnbalGBCtfer` in Chapter {ref}`Chap_UnbalGBC`.
+  The third term $bq_{j,s,t}$ on the right-hand-side of the budget constraint {eq}`EqHHBC` represents the portion of total bequests $BQ_t$ that go to the age-$s$, income-group-$j$ household. Section {ref}`SecHHbequests` details how total bequests are distributed among the different households. The next term on the right-hand-side of the budget constraint {eq}`EqHHBC` represents remittances received by the household $rm_{j,s,t}$. We describe these remittances in Section {ref}`SecHHremit` below.
 
-  The term $ubi_{j,s,t}$ the time series of a matrix of universal basic income (UBI) transfers by lifetime income group $j$ and age group $s$ in each period $t$. There is a specification where the time series of this matrix is stationary (growth adjusted) and a specification in which it's stationary value is going to zero in the limit (non-growth-adjusted). The calibration chapter on UBI in the country-specific repository documentation describes the exact way in which this matrix is calibrated from the values of five parameters, household composition data, and OG-Core's demographics. Similar to the transfers term $TR_{t}$, the UBI transfers will not be distortionary.
+  The next term is government transfers $tr_{j,s,t}$ to households of lifetime income group $j$ in age $s$ at time $t$. Section {ref}`SecHHgovtransfers` details how total government transfers to households are distributed among the differenty household types. The term $ubi_{j,s,t}$ the time series of a matrix of universal basic income (UBI) transfers by lifetime income group $j$ and age group $s$ in each period $t$. There is a specification where the time series of this matrix is stationary (growth adjusted) and a specification in which it's stationary value is going to zero in the limit (non-growth-adjusted). The calibration chapter on UBI in the country-specific repository documentation describes the exact way in which this matrix is calibrated from the values of five parameters, household composition data, and OG-Core's demographics. Similar to the transfers term $TR_{t}$, the UBI transfers will not be distortionary.
 
-  The term $T_{j,s,t}$ is the total tax liability of the household in terms of the numeraire good. In contrast to government transfers $tr_{j,s,t}$, tax liability can be a function of labor income $(x_{j,s,t}\equiv w_t e_{j,s}n_{j,s,t})$ and capital income $(y_{j,s,t}\equiv r_{p,t} b_{j,s,t})$ and wealth, $b_{j,s,t}$. The tax liability can, therefore, be a distortionary influence on household decisions. It becomes valuable to represent total tax liability as the sum of an effective income tax rate $\tau^{etr}_{s,t}$ function multiplied by total income and a wealth tax function,
+  Government pension systems are modeled explicitly and enter the budget through the $pension_{j,s,t}$ term. The rules and parameters of the available public pension rules and parameters are in the {ref}`SecGovPensions` section of chapter {ref}`Chap_UnbalGBC`. The term $tax_{j,s,t}$ is the total tax liability of the household in terms of the numeraire good. This term can include means tested benefit programs. In contrast to government transfers $tr_{j,s,t}$, tax liability can be a function of labor income $(x_{j,s,t}\equiv w_t e_{j,s}n_{j,s,t})$ and capital income $(y_{j,s,t}\equiv r_{p,t} b_{j,s,t})$ and wealth, $b_{j,s,t}$. The tax liability can, therefore, be a distortionary influence on household decisions. It becomes valuable to represent total tax liability as the sum of an effective income tax rate $\tau^{etr,xy}_{s,t}$ function multiplied by total income plus an effective tax rate on wealth $\tau^{etr,w}_{s,t}$ multiplied by wealth,
 
   ```{math}
   :label: EqTaxCalcLiabETR
-    T_{j,s,t} = \tau^{etr}_{s,t}(x_{j,s,t}, y_{j,s,t})\left(x_{j,s,t} + y_{j,s,t}\right) + \left(\frac{h^{w}p_{w}b_{j,s,t}}{h^{w}b_{j,s,t} + m^{w}}\right)b{j,s,t} \quad\forall j,s,t
+    tax_{j,s,t} = \tau^{etr,xy}_{s,t}(x_{j,s,t}, y_{j,s,t})\left(x_{j,s,t} + y_{j,s,t}\right) + \tau^{etr,w}_{s,t}\left(b_{j,s,t}\right)b_{j,s,t} \quad\forall j,s,t
   ```
 
-  where the effective income tax rate can be a function of both labor income and capital income $\tau^{etr}_{s,t}(x_{j,s,t},y_{j,s,t})$. The calibration chapter on the microsimulation model and tax function estimation in the country-specific repository documentation details exactly how the model estimates the income tax functions from microsimulation model data.
+  where the effective income tax rate on labor and capital income can be a function of both labor income and capital income, respectively, $\tau^{etr,xy}_{s,t}(x_{j,s,t},y_{j,s,t})$, and the effective tax rate on wealth is given by the functional form described in Section {ref}`SecGovWealthTax`. The calibration chapter on the microsimulation model and tax function estimation in the country-specific repository documentation details exactly how the model estimates the income tax functions from microsimulation model data.
 
 
 (SecHHellipUtil)=
@@ -139,16 +137,13 @@ In this section, we describe what is arguably the most important economic agent
 
   The functional form for the utility of leisure or the disutility of labor supply has important implications for the computational tractability of the model. One difference of the household's labor supply decision $n_{j,s,t}$ from the consumption decision $c_{j,s,t}$ is that the consumption decision only has a lower bound $c_{j,s,t}\geq 0$ whereas the labor supply decision has both upper and lower bounds $n_{j,s,t}\in[0,\tilde{l}]$. {cite}`EvansPhillips:2017` show that many of the traditional functional forms for the disutility of labor---Cobb-Douglas, constant Frisch elasticty, constant relative risk aversion (CRRA)---do not have Inada conditions on both the upper and lower bounds of labor supply. To solve these in a heterogeneous agent model would require occasionally binding constraints, which is a notoriously difficult computational problem.
 
-  +++
-  ```{code-cell} ogcore-dev
-  :tags: [hide-cell]
-  from myst_nb import glue
+  ```{code-cell} ipython3
+  :tags: ["hide-input", "remove-output"]
   import ogcore.parameter_plots as pp
   from ogcore import Specifications
   p = Specifications()
   p.update_specifications({'frisch': 0.6})
   fig = pp.plot_elliptical_u(p)
-  glue("labor_utility", fig, display=False)
   ```
 
   ```{figure} ./images/EllipVsCFE_MargUtil.png
@@ -157,7 +152,7 @@ In this section, we describe what is arguably the most important economic agent
   name: FigMDUcompar
   ---
 
-  Comparison of CFE marginal disutility of leisure $\theta=1.67$ to fitted elliptical utility
+  Comparison of CFE marginal disutility of leisure $\theta=0.4$ to fitted elliptical utility
   ```
 
   {cite}`EvansPhillips:2017` propose using an equation for an ellipse to match the disutility of labor supply to whatever traditional functional form one wants. Our preferred specification in `OG-Core` is to fit an elliptical disutility of labor supply function to approximate a linearly separable constant Frisch elasticity (CFE) functional form. Let $v(n)$ be a general disutility of labor function. A CFE disutility of labor function is the following,
@@ -178,6 +173,97 @@ In this section, we describe what is arguably the most important economic agent
 
   Because it is the marginal disutility of labor supply that matters for household decision making, we want to choose the parameters of the elliptical disutility of labor supply function $(b,\upsilon)$ so that the elliptical marginal utilities match the marginal utilities of the CFE disutility of labor supply. Figure {numref}`FigMDUcompar` shows the fit of marginal utilities for a Frisch elasticity of $\theta=0.9$ and a total time endowment of $\tilde{l}=1.0$. The estimated elliptical utility parameters in this case are $b=0.527$ and $\upsilon=1.497$.[^frisch_note]
 
+
+(SecHHtransfers)=
+## Transfers to household
+
+  The household budget constraint {eq}`EqHHBC` includes four terms that represent different types of transfers to households: bequests $bq_{j,s,t}$, remittances $rm_{j,s,t}$, government transfers $tr_{j,s,t}$, and universal basic income $ubi_{j,s,t}$. These four types of household transfers are detailed in the following subsections.
+
+
+(SecHHbequests)=
+### Bequests
+
+  `OG-Core` allows for two parameterizations of the distribution of bequests. Users can choose the bequest transmission process through two parameters: `use_zeta` and `zeta`.
+
+  If `use_zeta=False`, then bequests from households of lifetime earnings type `j` are distributed equally across households of type `j`,
+
+  ```{math}
+  :label: Eq_bq
+    bq_{j,s,t} = \frac{BQ_{j,t}}{\lambda_j \omega_{s,t}}
+  ```
+
+  where $BQ_{j,t}$ is the total amount of bequests from the deceased in lifetime income group $j$. Note that the sum of all the $BQ_{j,t}$ equals aggregate bequests $BQ_t$ from equation {eq}`EqMarkClrBQ`.
+
+  ```{math}
+  :label: EqMarkClrBQjt
+    BQ_{j,t} \equiv (1+r_{p,t})\lambda_j\left(\sum_{s=E+2}^{E+S+1}\rho_{s-1}\omega_{s-1,t-1}b_{j,s,t}\right) \quad\forall j,t
+  ```
+
+  If `use_zeta=True`, then in the distribution of bequests across age and lifetime ability is determined by $\zeta_{j,s,t}$, which allocates aggregate bequests across households by age and lifetime income group:
+
+  ```{math}
+  :label: Eq_bq_use_zeta
+    \begin{split}
+      bq_{j,s,t} &= \zeta_{j,s,t}\left(\frac{BQ_t}{\lambda_j \omega_{s,t}}\right) \quad\forall j,t \quad\text{and}\quad E+1\leq s\leq E+S \\
+      &\quad\text{where}\quad \sum_{j=1}^J \sum_{s=E+1}^{E+S}\zeta_{j,s,t} = 1 \quad\forall t
+    \end{split}
+  ```
+
+  Let $\zeta_{j,s,t}$ be the fraction of total bequests $BQ_t$ that go to the age-$s$, income-group-$j$ household, such that $\sum_{s=E+1}^{E+S}\sum_{j=1}^J\zeta_{j,s}=1$. We must divide that amount by the population of $(j,s)$ households $\lambda_j\omega_{s,t}$. The calibration chapter on beqests in the country-specific repository documentation details how to calibrate the $\zeta_{j,s,t}$ values from consumer finance data.
+
+
+(SecHHremit)=
+### Remittances
+
+  Remittances represent capital, most often currency balances, collected from ex patriots and citizens living abroad and sent back to households in the country. For most developed countries, like the United States, remittances represent an insignificant amount.[^remit_us] But for countries like the Phillipines, total incoming remittances are larger than total exports (?% of GDP in 202?).[^remit_phl]
+
+  We calibrate remittances to initially be an exogenous fraction of GDP $\alpha_{RM,0}$ but can grow from the initial period at a growth rate that differs from the endogenous growth rate of GDP and from the long-run growth rate of GDP ($g_y + \bar{g}_n$).
+
+  ```{math}
+  :label: EqHH_AggrRemit
+  RM_t = \begin{cases}
+    &\alpha_{RM,1}Y_t \quad\text{for}\quad t=1, \\
+    &\left(1 + g_{RM,t}\right)RM_{t-1} \quad\text{for}\quad 2\leq t \leq T_{G1}, \\
+    &\left(\frac{t - T_{G1}}{T_{G2} - T_{G1}}\right)\alpha_{RM,T}Y_t + \left(1 - \frac{t - T_{G1}}{T_{G2} - T_{G1}}\right)\left(1 + g_{RM,t}\right)RM_{t-1} \:\:\text{for}\:\: T_{G1} < t < T_{G2}, \\
+    &\alpha_{RM,T}Y_t \quad\forall t\geq T_{G2}
+  \end{cases}
+  ```
+
+  The first two lines of {eq}`EqHH_AggrRemit` represent the transition path of remittances before the closure rule, which are growing at a rate independent of the growth rate of the country economy. But for the steady-state to exists, total remittances must grow at the long-run growth rate of GDP before reaching the steady state. Similar to the closure rule's described in Section {ref}`SecUnbalGBCcloseRule` of Chapter {ref}`Chap_UnbalGBC`, we implement a stabilizing rule that gradually transitions the growth rate of aggregate remittances from its exogenous rate through period $T_{G1}$ to the long run economic growth rate after period $T_{G2}$.
+
+  It is important to note that we specify the growth rate of remittances on nominal GPD as an initial percent $\alpha_{RM,1}$, a growth rate based on those initial remittances, then a movemnt back to a rate relative to nominal GDP. This will result in stationary equations in which it matters wither the growth rate of nominal GDP $g_{RM,t}$ is greater or less than the growth rate of labor productivity plus the population growth rate $e^{g_y}\left(1+g_{n,t}\right)$. See equations {eq}`EqHH_AggrRemitStnrz` and {eq}`EqHH_IndRemitRecStnrz` in Section {ref}`SecStnrzHH` in Chapter {ref}`Chap_Stnrz`.
+
+  The aggregate remittances $RM_t$ are then distributed by the $\eta_{RM,j,s,t}$ matrix, resulting in the value on the income side of the household budget constraint in {eq}`EqHHBC`.
+
+  ```{math}
+  :label: EqHH_IndRemitRec
+  rm_{j,s,t} = \eta_{RM,j,s,t}\frac{RM_t}{\lambda_j\omega_{s,t}} \quad\forall \quad j,s,t
+  ```
+
+  The distribution object $\eta_{RM,j,s,t}$ is an $S\times J$ matrix in every period $t$ whose elements sum to one in every period. This object governs how total remittances in every period $RM_t$ are distributed as income among household budget constraints.
+
+
+(SecHHgovtransfers)=
+### Government transfers
+
+  Section {ref}`SecGovLumpSumTfers` in chapter {ref}`Chap_UnbalGBC` details how aggregate government transfers to households $TR_{t}$ in every period are a percentage of total GDP. We assume here that each household's portion of those tranfers in every period can be calibrated using the matrix of percentages $\eta_{j,s,t}$ in every time period to allocate the transfers by a household's lifetime income group $j$ and age $s$. Then the $\eta_{j,s,t}$ allocation percentages can also vary over time $t$.
+
+  ```{math}
+  :label: Eq_tr
+    tr_{j,s,t} = \eta_{j,s,t}\frac{TR_{t}}{\lambda_j \omega_{s,t}} \forall j,t, \quad\text{and}\quad E+1\leq s\leq E+S
+  ```
+
+  These transfers to household are lump sum and only influence households' decisions through how they change income in the budget constraint. These transfers do not include pension payments or tax credits.
+
+  is total government transfers to households in period $t$ and $\eta_{j,s,t}$ is the percent of those transfers that go to households of age $s$ and lifetime income group $j$ such that $\sum_{s=E+1}^{E+S}\sum_{j=1}^J\eta_{j,s,t}=1$. This term is divided by the population of type $(j,s)$ households. We assume government transfers to be lump sum, so they do not create any direct distortions to household decisions. Total government transfers $TR_t$ is in terms of the numeraire good, as shown in equation {eq}`EqUnbalGBCtfer` in Chapter {ref}`Chap_UnbalGBC`.
+
+
+(SecHHubi)=
+### Universal basic income (UBI)
+
+  Put household universal basic income (UBI) description here.
+
+
 (SecHHeulers)=
 ## Optimality Conditions
 
@@ -205,8 +291,9 @@ In this section, we describe what is arguably the most important economic agent
   ```{math}
   :label: EqHHBC2
     \text{s.t.}\quad &p_t c_{j,s,t} + \sum_{i=1}^I (1 + \tau^{c}_{i,t})p_{i,t}c_{min,i} + b_{j,s+1,t+1} = \\
-    &\quad (1 + r_{p,t})b_{j,s,t} + w_t e_{j,s} n_{j,s,t} + \zeta_{j,s}\frac{BQ_t}{\lambda_j\omega_{s,t}} + \eta_{j,s,t}\frac{TR_{t}}{\lambda_j\omega_{s,t}} + ubi_{j,s,t} - T_{j,s,t} \\
-    &\qquad\text{and}\quad c_{j,s,t}\geq 0,\: n_{j,s,t} \in[0,\tilde{l}],\:\text{and}\: b_{j,1,t}=0 \quad\forall j, t, \:\text{and}\: E+1\leq s\leq E+S \nonumber
+    &\quad (1 + r_{p,t})b_{j,s,t} + w_t e_{j,s} n_{j,s,t} ...\\
+    &\qquad +\: bq_{j,s,t} + rm_{j,s,t} + tr_{j,s,t} + ubi_{j,s,t} + pension_{j,s,t} - tax_{j,s,t} \\
+    &\qquad\text{and}\quad c_{j,s,t}\geq 0,\: n_{j,s,t} \in[0,\tilde{l}],\:\text{and}\: b_{j,1,t}=0 \quad\forall j, t, \:\text{and}\: E+1\leq s\leq E+S
   ```
 
   The nonnegativity constraint on consumption does not bind in equilibrium because of the Inada condition $\lim_{c\rightarrow 0}u_1(c,n,b') = \infty$, which implies consumption is always strictly positive in equilibrium $c_{j,s,t}>0$ for all $j$, $s$, and $t$. The warm glow bequest motive in Equation {eq}`EqHHPerUtil` also has an Inada condition for savings at zero, so $b_{j,s,t}>0$ for all $j$, $s$, and $t$. This is an implicit borrowing constraint.[^constraint_note] And note that the discount factor $\beta_j$ has a $j$ subscript for lifetime income group. We use heterogeneous discount factors following {cite}`CarrollEtAl:2017`. And finally, as discussed in Section {ref}`SecHHellipUtil`, the elliptical disutility of labor supply functional form in Equation {eq}`EqHHPerUtil` imposes Inada conditions on both the upper and lower bounds of labor supply such that labor supply is strictly interior in equilibrium $n_{j,s,t}\in(0,\tilde{l})$ for all $j$, $s$, and $t$.
@@ -221,65 +308,34 @@ In this section, we describe what is arguably the most important economic agent
 
   ```{math}
   :label: EqHHeul_b
-    &\frac{(c_{j,s,t})^{-\sigma}}{p_t} = \chi^b_j\rho_s(b_{j,s+1,t+1})^{-\sigma} + \beta_j\bigl(1 - \rho_s\bigr)\left(\frac{1 + r_{p,t+1}\bigl[1 - \tau^{mtry}_{s+1,t+1}\bigr] - MTR^w_{j,s+1,t+1}}{p_{t+1}}\right)(c_{j,s+1,t+1})^{-\sigma} \\
-    &\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\forall j,t, \quad\text{and}\quad E+1\leq s\leq E+S-1 \\
+    \frac{(c_{j,s,t})^{-\sigma}}{p_t} &= \chi^b_j\rho_s(b_{j,s+1,t+1})^{-\sigma} ... \\
+    &\qquad+ \beta_j\bigl(1 - \rho_s\bigr)\left(\frac{1 + r_{p,t+1}\bigl[1 - \tau^{mtry}_{s+1,t+1}\bigr] - \tau^{mtrw}_{s+1,t+1}}{p_{t+1}}\right)(c_{j,s+1,t+1})^{-\sigma} \\
+    &\qquad\qquad\qquad \forall j,t, \quad\text{and}\quad E+1\leq s\leq E+S-1 \\
   ```
 
   ```{math}
   :label: EqHHeul_bS
-    \frac{(c_{j,E+S,t})^{-\sigma}}{p_t} = \chi^b_j(b_{j,E+S+1,t+1})^{-\sigma} \quad\forall j,t \quad\text{and}\quad s = E+S
+    \frac{(c_{j,E+S,t})^{-\sigma}}{p_t} = \chi^b_j(b_{j,E+S+1,t+1})^{-\sigma} \quad\forall j,t
   ```
 
-  The distortion of taxation on household decisions can be seen in Euler equations {eq}`EqHHeul_n` and {eq}`EqHHeul_b` in the terms that have a marginal tax rate $(1-\tau^{mtr})$. This comes from the expression for total tax liabilities as a function of the effective tax rate and total income as expressed in Equation {eq}`EqTaxCalcLiabETR`. Using the chain rule, we can break up the derivatives of total tax liability with respect to $n_{j,s,t}$ and $b_{j,s,t}$, respectively, into simpler functions of marginal tax rates. We discuss this in more detail in the calibration chapter on the microsimulation model and tax function estimation in the country-specific repository.
-
-  ```{math}
-  :label: EqMTRx_derive
-    \frac{\partial T_{j,s,t}}{\partial n_{j,s,t}}  = \frac{\partial T_{s,t}}{\partial w_t e_{j,s}n_{j,s,t}}\frac{\partial w_{t}e_{j,s}n_{j,s,t}}{\partial n_{j,s,t}} = \frac{\partial T_{s,t}}{\partial w_{t}e_{j,s}n_{j,s,t}}w_t e_{j,s} = \tau^{mtrx}_{s,t}w_t e_{j,s}
-  ```
-
-  ```{math}
-  :label: EqMTRy_derive
-    \frac{\partial T_{j,s,t}}{\partial b_{j,s,t}} &= \frac{\partial T_{s,t}}{\partial r_{p,t}b_{j,s,t}}\frac{\partial r_{p,t} b_{j,s,t}}{\partial b_{j,s,t}} + \left(\frac{h^{w}p_{w}b_{j,s,t}}{(b_{j,s,t}h^{w}+m^{w})}\left[2 -
-        \frac{h^{w}p_{w}b_{j,s,t}}{(b_{j,s,t}h^{w}+m^{w})}\right] \right) \\ &= \frac{\partial T_{s,t}}{\partial r_{p,t} b_{j,s,t}}r_{p,t} + \left( \frac{h^{w}p_{w}b_{j,s,t}}{(b_{j,s,t}h^{w}+m^{w})}\left[2 -
-        \frac{h^{w}p_{w}b_{j,s,t}}{(b_{j,s,t}h^{w}+m^{w})}\right]\right) \\ &= \tau^{mtry}_{s,t}r_{p,t} + \underbrace{\left( \frac{h^{w}p_{w}b_{j,s,t}}{(b_{j,s,t}h^{w}+m^{w})}\left[2 -
-        \frac{h^{w}p_{w}b_{j,s,t}}{(b_{j,s,t}h^{w}+m^{w})}\right]\right)}_{\equiv MTR^w_{j,s,t}}
-  ```
+  The distortion of taxation on household decisions can be seen in Euler equations {eq}`EqHHeul_n` and {eq}`EqHHeul_b` in the terms that have a marginal tax rate $(1-\tau^{mtr})$. This comes from the expression for total tax liabilities as a function of the effective tax rate and total income as expressed in Equation {eq}`EqTaxCalcLiabETR`. The expressions for the marginal tax rates and effective tax rates that emerge from the total tax liability variable $T_{j,s,t}$ are derived in Section {ref}`SecTaxCalcRateTheory` of Chapter {ref}`Chap_UnbalGBC`.
 
 
 (SecHHincFactor)=
 ## Factor Transforming Income Units
 
-  The tax functions $\tau^{etr}_{s,t}$, $\tau^{mtrx}_{s,t}$, and $\tau^{mtry}_{s,t}$ are estimated in each country calibration model based on the currency units of the corresponding income data. However, the consumption units of the `OG-Core` model or any of its country calibrations are not in the same units as income data. For this reason, we have to transform the model income units $x$ and $y$ by a $factor$ so that they are in the same units as the income data on which the tax functions were estimated.
+  The tax functions $\tau^{etr,xy}_{s,t}$, $\tau^{etr,w}_{s,t}$, $\tau^{mtrx}_{s,t}$, $\tau^{mtry}_{s,t}$, and $\tau^{mtrw}_{s,t}$ are estimated in each country calibration model based on the currency units of the corresponding income data. However, the consumption units of the `OG-Core` model or any of its country calibrations are not in the same units as income data. For this reason, we have to transform the model income units $x$ and $y$ by a $factor$ so that they are in the same units as the income data on which the tax functions were estimated.
 
   The tax rate functions are each functions of capital income and labor income $\tau(x,y)$. In order to make the tax functions return accurate tax rates associated with the correct levels of income, we multiply the model income $x^I$ and $y^I$ by a $factor$ so that they are in the same units as the real-world income data $\tau(factor\times x^I, factor\times y^I)$. We define the $factor$ such that average steady-state household total income in the model times the $factor$ equals the U.S. data average total income.
 
   ```{math}
   :label: EqIncFactor
-    factor \times \Biggl[\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\bar{\omega}_s\left(\bar{w}e_{j,s}\bar{n}_{j,s} + \bar{r}_{hh}\bar{b}_{j,s}\right)\Biggr] = \text{Avg. household inc. in data}
+    factor \times \Biggl[\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\bar{\omega}_s\left(\bar{w}e_{j,s}\bar{n}_{j,s} + \bar{r}_{p}\bar{b}_{j,s}\right)\Biggr] = \text{Avg. household inc. in data}
   ```
 
   We do not know the steady-state wage, interest rate, household labor supply, and savings *ex ante*. So the income $factor$ is an endogenous variable in the steady-state equilibrium computational solution. We hold the factor constant throughout the nonsteady-state equilibrium solution.
 
 
-(SecHHbequests)=
-## The Distribution of Bequests
-
-`OG-Core` allows for two parameterizations of the distribution of bequests.  Users can choose the bequest transmission process through two parameters: `use_zeta` and `zeta`.
-
-If `use_zeta=False`, then bequests from households of lifetime earnings type `j` are distributed equality across households of type `j`.  That is:
-
-   ```{math}
-  :label: Eq_bq
-    bq_{j,s,t} = \frac{BQ_{j,t}}{\lambda_j \omega_{s,t}}
-  ```
-
-   If `use_zeta=True`, then in the distribution of bequests across age and lifetime ability is determined by $\boldsymbol{\zeta}_{t}$, which allocated aggregate bequests across households by age and lifetime income group:
-
-   ```{math}
-  :label: Eq_bq_use_zeta
-    bq_{j,s,t} = \boldsymbol{\zeta}_{t} BQ_{t}
-  ```
-
 (SecHHexp)=
 ## Expectations
 
@@ -305,6 +361,8 @@ If `use_zeta=False`, then bequests from households of lifetime earnings type `j`
 (SecHHfootnotes)=
 ## Footnotes
 
+  This section contains the footnotes for this chapter.
+
   [^StoneGeary]: This functional form was originally proposed as a utility function by in a short comment by {cite}`Geary:1950` that aggregates differentiated goods into a scalar utility value. It is differentiated from Cobb-Douglas utility by the subsistence consumption amount in each term of the product. This function was further developed and operationalized by {cite}`Stone:1954`.
 
   [^ConsDeriv]: See section {ref}`SecAppDerivHHcons` in the {ref}`Chap_Deriv` Chapter for the derivation of the household industry-specific consumption demand.
@@ -315,6 +373,10 @@ If `use_zeta=False`, then bequests from households of lifetime earnings type `j`
 
   [^frisch_note]: {cite}`Peterman:2016` shows that in a U.S. macro-model that has only an intensive margin of labor supply and no extensive margin and represents a broad composition of individuals supplying labor---such as `OG-Core`---a Frisch elasticity of around 0.9 is probably appropriate. He tests the implied macro elasticity when the assumed micro elasticities are small on the intensive margin but only macro aggregates---which include both extensive and intensive margin agents---are observed.
 
+  [^remit_us]: Put citation here about remittances being small in the US and large in countries like India and the Philippines. However, we should note that populations within the US do send remittances out, making developed country remittances negative. We should include a citation about Mexican remittances through Western Union transfers.
+
+  [^remit_phl]: Put citation of Philippines remittances.
+
   [^Iort_rates_note]: See Section the mortality rate section of the calibration chapter on demographics in the country-specific repository documentation for a detailed discussion of mortality rates for the specific country calibration interfacing with `OG-Core`.
 
   [^constraint_note]: It is important to note that savings also has an implicit upper bound $b_{j,s,t}\leq k$ above which consumption would be negative in current period. However, this upper bound on savings in taken care of by the Inada condition on consumption.
diff --git a/docs/book/content/theory/images/EllipVsCFE_MargUtil.png b/docs/book/content/theory/images/EllipVsCFE_MargUtil.png
index 2dab77402..32492ea2a 100644
Binary files a/docs/book/content/theory/images/EllipVsCFE_MargUtil.png and b/docs/book/content/theory/images/EllipVsCFE_MargUtil.png differ
diff --git a/docs/book/content/theory/market_clearing.md b/docs/book/content/theory/market_clearing.md
index 3d3a7d9b9..7848937ca 100644
--- a/docs/book/content/theory/market_clearing.md
+++ b/docs/book/content/theory/market_clearing.md
@@ -1,9 +1,10 @@
 (Chap_MarkClr)=
 # Market Clearing
 
-$M+3$ markets must clear in `OG-Core`---the labor market, the private capital market, the government bond market, and $M$ goods markets. By Walras' Law, we only need to use $M+2$ of those market clearing conditions because the remaining one is redundant. In the model, we choose to use the labor, private capital, government bond market, and the first $M-1$ goods market clearing conditions and to ignore the $M$th goods market clearing condition. But we present all $M+3$ market clearing conditions here. Further, the redundant $M$th goods market clearing condition---sometimes referred to as the resource constraint---makes for a nice check on the solution method to see if everything worked.
+  $M+3$ markets must clear in `OG-Core`---the labor market, the private capital market, the government bond market, and $M$ goods markets. By Walras' Law, we only need to use $M+2$ of those market clearing conditions because the remaining one is redundant. In the model, we choose to use the labor, private capital, government bond market, and the first $M-1$ goods market clearing conditions and to ignore the $M$th goods market clearing condition. But we present all $M+3$ market clearing conditions here. Further, the redundant $M$th goods market clearing condition---sometimes referred to as the resource constraint---makes for a nice check on the solution method to see if everything worked.
+
+  We also characterize here the law of motion for total bequests $BQ_t$. Although it is not technically a market clearing condition, one could think of the bequests law of motion as the bequests market clearing condition.
 
-We also characterize here the law of motion for total bequests $BQ_t$. Although it is not technically a market clearing condition, one could think of the bequests law of motion as the bequests market clearing condition.
 
 (SecMarkClrMktClr)=
 ## Market Clearing Conditions
@@ -21,6 +22,7 @@ We also characterize here the law of motion for total bequests $BQ_t$. Although
     \sum_{m=1}^M L_{m,t} = \sum_{s=E+1}^{E+S}\sum_{j=1}^{J} \omega_{s,t}\lambda_j e_{j,s}n_{j,s,t} \quad \forall t
   ```
 
+
   (SecMarkClrMktClr_CapGen)=
   ### Capital markets generalities
 
@@ -68,7 +70,7 @@ We also characterize here the law of motion for total bequests $BQ_t$. Although
 
   ```{math}
   :label: EqMarkClr_KtKdKf
-   K_t = K^d_t + K^f_t \quad\forall t \quad\text{where}\quad K_t \equiv  \sum_{m=1}^M K_{m,t}
+  K_t = K^d_t + K^f_t \quad\forall t \quad\text{where}\quad K_t \equiv  \sum_{m=1}^M K_{m,t}
   ```
 
   Assume that there exists some exogenous world interest rate $r^*_t$. We assume that foreign capital supply $K^f_t$ is an exogenous percentage $\zeta_K\in[0,1]$ of the excess total domestic private capital demand $ED^{K,r^*}_t$ that would exist if domestic private capital demand were determined by the exogenous world interest rate $r^*_t$ and domestic private capital supply were determined by the model consistent return on household savings $r_{p,t}$. This percentage $\zeta_K$ is something we calibrate. Define excess total domestic capital demand at the exogenous world interest rate $r^*_t$ as $ED^{K,r^*}_t$, where $K^{r^*}_t\equiv\sum_{m=1}^M K^{r^*}_{m,t}$ is the capital demand by domestic firms at the world interest rate $r^*_t$, and $K^{d}_t$ is the domestic supply of private capital to firms, which is modeled as being a function of the actual rate faced by households $r_{p,t}$. Then our measure of excess demand at the world interest rate is the following.
@@ -115,7 +117,7 @@ We also characterize here the law of motion for total bequests $BQ_t$. Although
 
   ```{math}
   :label: EqMarkClrGoods_M
-    Y_{M,t} = C_{M,t} + I_{M,t} + I_{g,t} + G_t + r_{p,t} K^f_t + r_{p,t}D^f_t - (K^f_{t+1} - K^f_t) - \bigl(D^f_{t+1} - D^f_t\bigr) \quad\forall t
+    Y_{M,t} = C_{M,t} + I_{M,t} + I_{g,t} + G_t + r_{p,t} K^f_t + r_{p,t}D^f_t - (K^f_{t+1} - K^f_t) - \bigl(D^f_{t+1} - D^f_t\bigr) - RM_t \quad\forall t
   ```
   where
   ```{math}
@@ -127,9 +129,9 @@ We also characterize here the law of motion for total bequests $BQ_t$. Although
 
   In the partially open economy, we must add to the right-hand-side of {eq}`EqMarkClrGoods_M` the output paid to the foreign owners of capital $r_{p,t} K^f_t$ and to the foreign holders of government debt $r_{p,t}D^f_t$. And we must subtract off the foreign inflow component $K^f_{t+1} - K^f_t$ from private capital investment as shown in the first term in parentheses on the right-hand-side of {eq}`EqMarkClrGoods_M`. You can see in the definition of private investment {eq}`EqMarkClrGoods_IMt` where this amount of foreign capital is part of $I_{M,t}$.
 
-  Similarly, we must subtract off the foreign purchases of new government debt $D^f_{t+1} - D^f_t$ as shown in the second term in parentheses on the right-hand-side of {eq}`EqMarkClrGoods_M`. These new foreign purchases of government debt are part of $I_{g,t}$ and $G_t$, as they are functions of GDP $p_tY_t$, as shown in {eq}`EqUnbalGBC_Gt`, {eq}`EqUnbalGBC_Igt`, and the government budget constraint {eq}`EqUnbalGBCbudgConstr`. Foreign lending relaxes the resource constraint.
+  Similarly, we must subtract off the foreign purchases of new government debt $D^f_{t+1} - D^f_t$ and aggregate remittances $RM_t$ as shown in the second term in parentheses and the last term, respectively, on the right-hand-side of {eq}`EqMarkClrGoods_M`. The new foreign purchases of government debt are part of $I_{g,t}$ and $G_t$, as they are functions of GDP $Y_t$, as shown in {eq}`EqUnbalGBC_Gt`, {eq}`EqUnbalGBC_Igt`, and the government budget constraint {eq}`EqUnbalGBCbudgConstr`. Foreign lending relaxes the resource constraint. And aggregate remittances are part of aggregate consumption $C_t$ and also relax the resource constraint.
 
-  Net exports (imports) of capital in the form of foreign private capital inflows $K^f_t$ and foreign holdings of government debt $D^f_t$ are clearly accounted for in {eq}`EqMarkClrGoods_M`.
+  Net exports (imports) of capital in the form of foreign private capital inflows $K^f_t$, foreign holdings of government debt $D^f_t$, and remittances $RM_t$ are clearly accounted for in {eq}`EqMarkClrGoods_M`. Foreign remittances received by domestic households are described in Section {ref}`SecHHremit` of Chapter {ref}`Chap_House`.
 
 
 (SecMarkClrBQ)=
@@ -148,8 +150,10 @@ We also characterize here the law of motion for total bequests $BQ_t$. Although
 (SecMarkClr_footnotes)=
 ## Footnotes
 
-[^indif_KD_note]: By assuming that households are indifferent between the savings allocation to private capital $K^d_t$ and government bonds $D^d_t$, we avoid the need for another state variable in the solution method. In our approach the allocation between the two types of capital is simply a residual of the exogenous proportion $\zeta_K$ of total private captial $K_t$ allocated to foreigners implied by equations {eq}`EqMarkClr_zetaK` and {eq}`EqMarkClr_KtKdKf` and a residual of the exogenous proportion $\zeta_D$ of total government bonds $D_t$ allocated to foreigners implied by equations {eq}`EqMarkClr_zetaD` and {eq}`EqMarkClr_DtDdDf`.
+  This section contains the footnotes for this chapter.
+
+  [^indif_KD_note]: By assuming that households are indifferent between the savings allocation to private capital $K^d_t$ and government bonds $D^d_t$, we avoid the need for another state variable in the solution method. In our approach the allocation between the two types of capital is simply a residual of the exogenous proportion $\zeta_K$ of total private captial $K_t$ allocated to foreigners implied by equations {eq}`EqMarkClr_zetaK` and {eq}`EqMarkClr_KtKdKf` and a residual of the exogenous proportion $\zeta_D$ of total government bonds $D_t$ allocated to foreigners implied by equations {eq}`EqMarkClr_zetaD` and {eq}`EqMarkClr_DtDdDf`.
 
-[^M_ind]: Our assumption that only the $M$th industry output can be used as investment, government spending, and government debt is a strong one. However, it greatly simplifies our equilibrium solution method in the transition path. Intuitively, think of an economy that has two industries---delivery services and trucks. The delivery services industry uses trucks and labor to produce its output. The trucks industry uses trucks and labor to produce its output. Both industries face depreciation of their capital (trucks). But only in the trucks industry can the output be used for both consumption and investment.
+  [^M_ind]: Our assumption that only the $M$th industry output can be used as investment, government spending, and government debt is a strong one. However, it greatly simplifies our equilibrium solution method in the transition path. Intuitively, think of an economy that has two industries---delivery services and trucks. The delivery services industry uses trucks and labor to produce its output. The trucks industry uses trucks and labor to produce its output. Both industries face depreciation of their capital (trucks). But only in the trucks industry can the output be used for both consumption and investment.
 
-[^RCrates_note]: Because we treat household return $r_{p,t}$ as an average between the return on private capital $r_{K,t}$ and the return on government bonds $r_{gov,t}$ in {eq}`eq_portfolio_return`, and because this return is actually given to households in the budget constraint {eq}`EqHHBC`, it is required for market clearing that the return paid to foreign suppliers of private capital $K^f_t$ and foreign holders of government bonds $D^f_t$ be paid that same average return $r_{p,t}$.
+  [^RCrates_note]: Because we treat household return $r_{p,t}$ as an average between the return on private capital $r_{K,t}$ and the return on government bonds $r_{gov,t}$ in {eq}`eq_portfolio_return`, and because this return is actually given to households in the budget constraint {eq}`EqHHBC`, it is required for market clearing that the return paid to foreign suppliers of private capital $K^f_t$ and foreign holders of government bonds $D^f_t$ be paid that same average return $r_{p,t}$.
diff --git a/docs/book/content/theory/stationarization.md b/docs/book/content/theory/stationarization.md
index 9b21fb8c2..927152a2c 100644
--- a/docs/book/content/theory/stationarization.md
+++ b/docs/book/content/theory/stationarization.md
@@ -49,6 +49,14 @@ The previous chapters derive all the equations necessary to solve for the steady
   -
   - $\hat{D}_t\equiv\frac{D_t}{e^{g_y t}\tilde{N}_t}$
   - $p_{m,t} \equiv \frac{\tilde{p}_{m,t}}{\tilde{p}_{M,t}}$
+* - $\hat{rm}_{j,s,t} \equiv \frac{rm_{j,s,t}}{e^{g_y t}}$
+  -
+  - $\hat{RM}_t \equiv \frac{RM_t}{e^{g_y t}\tilde{N}_t}$
+  -
+* - $\hat{pensions}_{j,s,t} \equiv \frac{pensions_{j,s,t}}{e^{g_y t}}$
+  -
+  -
+  -
 ```
 
 The usual definition of equilibrium would be allocations and prices such that households optimize {eq}`EqHH_ciDem2`, {eq}`EqHHeul_n`, {eq}`EqHHeul_b`, and {eq}`EqHHeul_bS`, firms optimize {eq}`EqFirmFOC_L` and {eq}`EqFirmFOC_K`, and markets clear {eq}`EqMarkClrLab`, {eq}`EqMarkClr_DtDdDf`, {eq}`EqMarkClr_KtKdKf`, {eq}`EqMarkClrGoods_Mm1`, {eq}`EqMarkClrGoods_M`, and {eq}`EqMarkClrBQ`. In this chapter, we show how to stationarize each of these characterizing equations so that we can use our fixed point methods described in Sections {ref}`SecEqlbSSsoln` and {ref}`SecEqlbNSSsoln` of Chapter {ref}`Chap_Eqm` to solve for the equilibria in the steady-state and transition path equilibrium definitions.
@@ -65,7 +73,7 @@ The usual definition of equilibrium would be allocations and prices such that ho
   ```
   ```{math}
   :label: EqStnrz_cmDem2
-    \hat{c}_{i,j,s,t} = \alpha_i\left(\frac{p_{i,t}}{p_t}\right)^{-1}\hat{c}_{j,s,t} + \hat{c}_{min,i,t} \quad\forall i,j,s,t
+    \hat{c}_{i,j,s,t} = \alpha_i\left(\frac{[1+\tau^c_{i,t}]p_{i,t}}{p_t}\right)^{-1}\hat{c}_{j,s,t} + \hat{c}_{min,i,t} \quad\forall i,j,s,t
   ```
   ```{math}
   :label: EqStnrz_cmin
@@ -85,12 +93,12 @@ The usual definition of equilibrium would be allocations and prices such that ho
   ```{math}
   :label: EqStnrzHHBC
     p_t\hat{c}_{j,s,t} + &\sum_{i=1}^I (1 + \tau^{c}_{i,t})p_{i,t}\hat{c}_{min,i} + e^{g_y}\hat{b}_{j,s+1,t+1} = \\
-    &(1 + r_{p,t})\hat{b}_{j,s,t} + \hat{w}_t e_{j,s} n_{j,s,t} + \\
-    &\quad\quad\zeta_{j,s}\frac{\hat{BQ}_t}{\lambda_j\hat{\omega}_{s,t}} + \eta_{j,s,t}\frac{\hat{TR}_{t}}{\lambda_j\hat{\omega}_{s,t}} + \hat{ubi}_{j,s,t} - \hat{T}_{j,s,t}  \\
-    &\quad\forall j,t\quad\text{and}\quad s\geq E+1 \quad\text{where}\quad \hat{b}_{j,E+1,t}=0\quad\forall j,t
+    &(1 + r_{p,t})\hat{b}_{j,s,t} + \hat{w}_t e_{j,s} n_{j,s,t} ... \\
+    &\qquad +\: \hat{bq}_{j,s,t} + \hat{rm}_{j,s,t} + \hat{tr}_{j,s,t} + \hat{ubi}_{j,s,t} + \hat{pension}_{j,s,t} - \hat{tax}_{j,s,t}  \\
+    &\quad\forall j,t\quad\text{and}\quad E+1\leq s\leq E+S \quad\text{where}\quad \hat{b}_{j,E+1,t}=0
   ```
 
-  Because total bequests $BQ_t$ and total government transfers $TR_t$ grow at both the labor productivity growth rate and the population growth rate, we have to multiply and divide each of those terms by the economically relevant population $\tilde{N}_t$. This stationarizes total bequests $\hat{BQ}_t$, total transfers $\hat{TR}_t$, and the respective population level in the denominator $\hat{\omega}_{s,t}$.
+  Because total bequests $BQ_t$ in $bq_{j,s,t}$ and total government transfers $TR_t$ in $tr_{j,s,t}$ grow at both the labor productivity growth rate and the population growth rate, we have to multiply and divide each of those terms by the economically relevant population $\tilde{N}_t$. This stationarizes total bequests $\hat{BQ}_t$, total transfers $\hat{TR}_t$, and the respective population level in the denominator $\hat{\omega}_{s,t}$.
 
   We stationarize the Euler equations for labor supply {eq}`EqHHeul_n` by dividing both sides by $e^{g_y(1-\sigma)}$. On the left-hand-side, $e^{g_y}$ stationarizes the wage $\hat{w}_t$ and $e^{-\sigma g_y}$ goes inside the parentheses and stationarizes consumption $\hat{c}_{j,s,t}$. On the right-and-side, the $e^{g_y(1-\sigma)}$ terms cancel out.
 
@@ -100,27 +108,44 @@ The usual definition of equilibrium would be allocations and prices such that ho
     &\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\forall j,t, \quad\text{and}\quad E+1\leq s\leq E+S \\
   ```
 
-  We stationarize the Euler equations for savings {eq}`EqHHeul_b` and {eq}`EqHHeul_bS` by dividing both sides of the respective equations by $e^{-\sigma g_y t}$. On the right-hand-side of the equation, we then need to multiply and divide both terms by $e^{-\sigma g_y(t+1)}$, which leaves a multiplicative coefficient $e^{-\sigma g_y}$.
+  We stationarize the Euler equations for savings {eq}`EqHHeul_b` and {eq}`EqHHeul_bS` by dividing both sides of the respective equations by $e^{-\sigma g_y t}$. On the right-hand-side of the equation, we then need to multiply and divide both terms by $e^{-\sigma g_y(t+1)}$, which leaves a multiplicative coefficient $e^{-\sigma g_y}$,
 
   ```{math}
   :label: EqStnrz_eul_b
     \frac{(\hat{c}_{j,s,t})^{-\sigma}}{p_t} &= e^{-\sigma g_y}\Biggl[\chi^b_j\rho_s(\hat{b}_{j,s+1,t+1})^{-\sigma} + \\
-    &\qquad\qquad\quad \beta_j\bigl(1 - \rho_s\bigr)\left(\frac{1 + r_{p,t+1}\bigl[1 - \tau^{mtry}_{s+1,t+1}\bigr] - \hat{MTR}^w_{j,s+1,t+1}}{p_{t+1}}\right)(\hat{c}_{j,s+1,t+1})^{-\sigma}\Biggr] \\
+    &\qquad\qquad\quad \beta_j\bigl(1 - \rho_s\bigr)\left(\frac{1 + r_{p,t+1}\bigl[1 - \tau^{mtry}_{s+1,t+1}\bigr] - \tau^{mtrw}_{t+1}}{p_{t+1}}\right)(\hat{c}_{j,s+1,t+1})^{-\sigma}\Biggr] \\
     &\qquad\qquad\qquad\qquad\qquad\qquad\qquad\forall j,t, \quad\text{and}\quad E+1\leq s\leq E+S-1 \\
   ```
 
   ```{math}
   :label: EqStnrz_eul_bS
-    \frac{(\hat{c}_{j,E+S,t})^{-\sigma}}{p_t} = e^{-\sigma g_y}\chi^b_j(\hat{b}_{j,E+S+1,t+1})^{-\sigma} \quad\forall j,t \quad\text{and}\quad s = E+S
+    \frac{(\hat{c}_{j,E+S,t})^{-\sigma}}{p_t} = e^{-\sigma g_y}\chi^b_j(\hat{b}_{j,E+S+1,t+1})^{-\sigma} \quad\forall j,t
+  ```
+
+  where $\tau^{mtrw}_{t+1}$ is defined in {eq}`EqMTRwealth` in Section {ref}`SecGovWealthTax` of Chapter {ref}`Chap_UnbalGBC`.
+
+  The stationarized versions of the remittance equations {eq}`EqHH_AggrRemit` and {eq}`EqHH_IndRemitRec` from Section {ref}`SecHHremit` in Chapter {ref}`Chap_House` are the following.
+
+  ```{math}
+  :label: EqHH_AggrRemitStnrz
+  \hat{RM}_t = \begin{cases}
+    &\alpha_{RM,1}\hat{Y}_t \quad\text{for}\quad t=1, \\
+    &\frac{\left(1 + g_{RM,t}\right)}{e^{g_y}\left(1 + \tilde{g}_{n,t}\right)}\hat{RM}_{t-1} \quad\text{for}\quad 2\leq t \leq T_{G1}, \\
+    &\left(\frac{t - T_{G1}}{T_{G2} - T_{G1}}\right)\alpha_{RM,T}\hat{Y}_t + \left(1 - \frac{t - T_{G1}}{T_{G2} - T_{G1}}\right)\frac{\left(1 + g_{RM,t}\right)}{e^{g_y}\left(1 + \tilde{g}_{n,t}\right)}\hat{RM}_{t-1} \:\:\text{for}\:\: T_{G1} < t < T_{G2}, \\
+    &\alpha_{RM,T}\hat{Y}_t \quad\forall t\geq T_{G2}
+  \end{cases}
+  ```
+
+  ```{math}
+  :label: EqHH_IndRemitRecStnrz
+  \hat{rm}_{j,s,t} = \eta_{RM,j,s,t}\frac{\hat{RM}_t}{\lambda_j\hat{\omega}_{s,t}} \quad\forall \quad j,s,t
   ```
 
-Where $\hat{MTR}^w_{j,s,t} = \left( \frac{h^{w}p_{w}\hat{b}_{j,s,t}}{(\hat{b}_{j,s,t}h^{w}+m^{w})}\left[2 -
-        \frac{h^{w}p_{w}\hat{b}_{j,s,t}}{(\hat{b}_{j,s,t}h^{w}+m^{w})}\right]\right)$
 
 (SecStnrzFirms)=
 ## Stationarized Firms Equations
 
-  The nonstationary production function {eq}`EqFirmsCESprodfun` for each industry can be stationarized by dividing both sides by $e^{g_y t}\tilde{N}$. This stationarizes output $\hat{Y}_{m,t}$ on the left-hand-side. Because the general CES production function is homogeneous of degree 1, $F(xK,xK_g,xL) = xF(K,K_g,L)$, the right-hand-side of the production function is also stationarized by dividing by $e^{g_y t}\tilde{N}_t$.
+  The nonstationary production function {eq}`EqFirmsCESprodfun` for each industry can be stationarized by dividing both sides by $e^{g_y t}\tilde{N}$. This stationarizes output $\hat{Y}_{m,t}$ on the left-hand-side. Because the general CES production function is homogeneous of degree one, $F(xK,xK_g,xL) = xF(K,K_g,L)$, the right-hand-side of the production function is also stationarized by dividing by $e^{g_y t}\tilde{N}_t$.
 
   ```{math}
   :label: EqStnrzCESprodfun
@@ -178,29 +203,28 @@ Where $\hat{MTR}^w_{j,s,t} = \left( \frac{h^{w}p_{w}\hat{b}_{j,s,t}}{(\hat{b}_{j
 (SecStnrzGovt)=
 ## Stationarized Government Equations
 
-  Each of the tax rate functions $\tau^{etr}_{s,t}$, $\tau^{mtrx}_{s,t}$, and $\tau^{mtry}_{s,t}$ is stationary. The total tax liability function $T_{j,s,t}$ is growing at the rate of labor productivity growth $g_y$ This can be see by looking at the decomposition of the total tax liability function into the effective tax rate times total income {eq}`EqTaxCalcLiabETR`. The effective tax rate function is stationary, and household income is growing at rate $g_y$. So household total tax liability is stationarized by dividing both sides of the equation by $e^{g_y t}$.
+  Each of the tax rate functions $\tau^{etr,xy}_{s,t}$, $\tau^{etr,2}_{t}$ $\tau^{mtrx}_{s,t}$, $\tau^{mtry}_{s,t}$, and $\tau^{mtrw}_{t}$ is stationary. The total tax liability function $tax_{j,s,t}$ is growing at the rate of labor productivity growth $g_y$ This can be see by looking at the decomposition of the total tax liability function into the effective tax rate times total income {eq}`EqTaxCalcLiabETR`. The effective tax rate function is stationary, and household income is growing at rate $g_y$. So household total tax liability is stationarized by dividing both sides of the equation by $e^{g_y t}$.
 
   ```{math}
   :label: EqStnrzLiabETR
-    \hat{T}_{js,t} &= \tau^{etr}_{s,t}(\hat{x}_{j,s,t}, \hat{y}_{j,s,t})\left(\hat{x}_{j,s,t} + \hat{y}_{j,s,t}\right) \qquad\qquad\qquad\qquad\:\:\:\forall j,t \quad\text{and}\quad s\geq E+1 \\
-    &= \tau^{etr}_{s,t}(\hat{w}_t e_{j,s}n_{j,s,t}, r_{p,t}\hat{b}_{j,s,t})\left(\hat{w}_t e_{j,s}n_{j,s,t} + r_{p,t}\hat{b}_{j,s,t}\right) \quad\forall j,t \quad\text{and}\quad s\geq E+1
+    \hat{tax}_{j,s,t} = \tau^{etr,xy}_{s,t}\left(\hat{w}_t e_{j,s}n_{j,s,t} + r_{p,t}\hat{b}_{j,s,t}\right) + \tau^{etr,w}_t\hat{b}_{j,s,t} \quad\forall j,t \quad\text{and}\quad E+1\leq s\leq E+S
   ```
 
   We can stationarize the simple expressions for total government spending on household transfers $TR_t$ in {eq}`EqUnbalGBCtfer` and on public goods $G_t$ in {eq}`EqUnbalGBC_Gt` by dividing both sides by $e^{g_y t}\tilde{N}_t$,
 
   ```{math}
   :label: EqStnrzNomGDP
-    p_t \hat{Y}_t \equiv \sum_{m=1}^M p_{m,t} \hat{Y}_{m,t} \quad\forall t
+    \hat{Y}_t \equiv \sum_{m=1}^M p_{m,t} \hat{Y}_{m,t} \quad\forall t
   ```
 
   ```{math}
   :label: EqStnrzTfer
-    \hat{TR}_t = g_{tr,t}\:\alpha_{tr}\: p_t \hat{Y}_t \quad\forall t
+    \hat{TR}_t = g_{tr,t}\:\alpha_{tr}\: \hat{Y}_t \quad\forall t
   ```
 
   ```{math}
   :label: EqStnrz_Gt
-    \hat{G}_t = g_{g,t}\:\alpha_{g}\: p_t \hat{Y}_t \quad\forall t
+    \hat{G}_t = g_{g,t}\:\alpha_{g}\: \hat{Y}_t \quad\forall t
   ```
 
   where the time varying multipliers $g_{g,t}$ and $g_{tr,t}$, respectively, are defined in {eq}`EqStnrzClosureRule_Gt` and {eq}`EqStnrzClosureRule_TRt` below. These multipliers $g_{g,t}$ and $g_{tr,t}$ do not have a ``$\:\,\hat{}\,\:$'' on them because their specifications {eq}`EqUnbalGBCclosure_Gt` and {eq}`EqUnbalGBCclosure_TRt` that are functions of nonstationary variables are equivalent to {eq}`EqStnrzClosureRule_Gt` and {eq}`EqStnrzClosureRule_TRt` specified in stationary variables.
@@ -208,10 +232,10 @@ Where $\hat{MTR}^w_{j,s,t} = \left( \frac{h^{w}p_{w}\hat{b}_{j,s,t}}{(\hat{b}_{j
   We can stationarize the expression for total government revenue $Rev_t$ in {eq}`EqUnbalGBCgovRev` by dividing both sides of the equation by $e^{g_y t}\tilde{N}_t$.
   ```{math}
   :label: EqStnrzGovRev
-    \hat{Rev}_t &= \underbrace{\sum_{m=1}^M\Bigl[\tau^{corp}_{m,t}\bigl(p_{m,t}\hat{Y}_{m,t} - \hat{w}_t\hat{L}_t\bigr) - \tau^{corp}_{m,t}\delta^\tau_{m,t}\hat{K}_{m,t} - \tau^{inv}_{m,t}\hat{I}_{m,t}\Bigr]}_{\text{corporate tax revenue}} \\
-    &\qquad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\hat{\omega}_{s,t}\tau^{etr}_{s,t}\left(\hat{x}_{j,s,t},\hat{y}_{j,s,t}\right)\bigl(\hat{x}_{j,s,t} + \hat{y}_{j,s,t}\bigr)}_{\text{household tax revenue}} \\
-    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\sum_{i=1}^I\lambda_j\omega_{s,t}\tau^{c}_{i,t}p{i,t}\hat{c}_{i,j,s,t}}_{\text{consumption tax revenue}} \\
-    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\omega_{s,t}\tau^{w}_{t}\hat{b}_{j,s,t}}_{\text{wealth tax revenue}} \quad\forall t
+    \hat{Rev}_t &= \underbrace{\sum_{m=1}^M\Bigl[\tau^{corp}_{m,t}\bigl(p_{m,t}\hat{Y}_{m,t} - \hat{w}_t\hat{L}_{m,t}\bigr) - \tau^{corp}_{m,t}\delta^\tau_{m,t}\hat{K}_{m,t} - \tau^{inv}_{m,t}\hat{I}_{m,t}\Bigr]}_{\text{corporate tax revenue}} \\
+    &\qquad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\hat{\omega}_{s,t}\tau^{etr,xy}_{s,t}\left(\hat{x}_{j,s,t},\hat{y}_{j,s,t}\right)\bigl(\hat{x}_{j,s,t} + \hat{y}_{j,s,t}\bigr)}_{\text{household tax revenue}} \\
+    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\sum_{i=1}^I\lambda_j\omega_{s,t}\tau^{c}_{i,t}p_{i,t}\hat{c}_{i,j,s,t}}_{\text{consumption tax revenue}} \\
+    &\quad + \underbrace{\sum_{s=E+1}^{E+S}\sum_{j=1}^J\lambda_j\omega_{s,t}\tau^{etr,w}_{t}\hat{b}_{j,s,t}}_{\text{wealth tax revenue}} \quad\forall t
   ```
 
   Every term in the government budget constraint {eq}`EqUnbalGBCbudgConstr` is growing at both the productivity growth rate and the population growth rate, so we stationarize it by dividing both sides by $e^{g_y t}\tilde{N}_t$. We also have to multiply and divide the next period debt term $D_{t+1}$ by $e^{g_y(t+1)}\tilde{N}_{t+1}$, leaving the term $e^{g_y}(1 + \tilde{g}_{n,t+1})$.
@@ -224,7 +248,7 @@ Where $\hat{MTR}^w_{j,s,t} = \left( \frac{h^{w}p_{w}\hat{b}_{j,s,t}}{(\hat{b}_{j
   The stationarized versions of the rule for total government infrastructure investment spending $I_{g,t}$ in {eq}`EqUnbalGBC_Igt` and the rule for government investment spending in each industry in {eq}`EqUnbalGBC_Igt` are found by dividing both sides of the respective equations by $e^{g_y t}\tilde{N}_t$.
   ```{math}
   :label: EqStnrz_Igt
-    \hat{I}_{g,t} = \alpha_{I,t}\: p_t\hat{Y}_t \quad\forall t
+    \hat{I}_{g,t} = \alpha_{I,t}\: \hat{Y}_t \quad\forall t
   ```
   ```{math}
   :label: EqStnrz_Igmt
@@ -260,7 +284,7 @@ Where $\hat{MTR}^w_{j,s,t} = \left( \frac{h^{w}p_{w}\hat{b}_{j,s,t}}{(\hat{b}_{j
 
   ```{math}
   :label: EqStnrz_DY
-    \frac{\hat{D}_t}{p_t\hat{Y}_t} = \alpha_D \quad\text{for}\quad t\geq T
+    \hat{D}_t = \alpha_D\hat{Y}_t \quad\Rightarrow\quad \frac{\hat{D}_t}{\hat{Y}_t} = \alpha_D \quad\text{for}\quad t\geq T
   ```
 
   The three potential budget closure rules {eq}`EqUnbalGBCclosure_Gt`, {eq}`EqUnbalGBCclosure_TRt`, and {eq}`EqUnbalGBCclosure_TRGt` are the last government equations to stationarize. In each of the cases, we simply divide both sides by $e^{g_y t}\tilde{N}_t$.
@@ -268,12 +292,12 @@ Where $\hat{MTR}^w_{j,s,t} = \left( \frac{h^{w}p_{w}\hat{b}_{j,s,t}}{(\hat{b}_{j
   ```{math}
   :label: EqStnrzClosureRule_Gt
   \begin{split}
-    &\hat{G}_t = g_{g,t}\:\alpha_{g}\: p_t\hat{Y}_t \\
+    &\hat{G}_t = g_{g,t}\:\alpha_{g}\: \hat{Y}_t \\
     &\text{where}\quad g_{g,t} =
     \begin{cases}
-      1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\:\:\text{if}\quad t < T_{G1} \\
-      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\left[\rho_{d}\alpha_{D}p_t\hat{Y}_{t} + (1-\rho_{d})\hat{D}_{t}\right] - (1+r_{gov,t})\hat{D}_{t} - \hat{TR}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\alpha_g p_t\hat{Y}_t} \quad\text{if}\quad T_{G1}\leq t<T_{G2} \\
-      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\alpha_{D}p_t\hat{Y}_{t} - (1+r_{gov,t})\hat{D}_{t} - \hat{TR}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\alpha_g p_t\hat{Y}_t} \qquad\qquad\quad\,\text{if}\quad t \geq T_{G2}
+      1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\text{if}\quad t < T_{G1} \\
+      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\left[\rho_{d}\alpha_{D}\hat{Y}_{t} + (1-\rho_{d})\hat{D}_{t}\right] - (1+r_{gov,t})\hat{D}_{t} - \hat{TR}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\alpha_g \hat{Y}_t} \:\text{if}\: T_{G1}\leq t<T_{G2} \\
+      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\alpha_{D}\hat{Y}_{t} - (1+r_{gov,t})\hat{D}_{t} - \hat{TR}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\alpha_g \hat{Y}_t} \qquad\qquad\quad\,\text{if}\quad t \geq T_{G2}
     \end{cases} \\
     &\text{and}\quad g_{tr,t} = 1 \quad\forall t
   \end{split}
@@ -283,12 +307,12 @@ Where $\hat{MTR}^w_{j,s,t} = \left( \frac{h^{w}p_{w}\hat{b}_{j,s,t}}{(\hat{b}_{j
   ```{math}
   :label: EqStnrzClosureRule_TRt
   \begin{split}
-    &\hat{TR}_t = g_{tr,t}\:\alpha_{tr}\: p_t\hat{Y}_t \\
+    &\hat{TR}_t = g_{tr,t}\:\alpha_{tr}\: \hat{Y}_t \\
     &\text{where}\quad g_{tr,t} =
     \begin{cases}
-      1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\text{if}\quad t < T_{G1} \\
-      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\left[\rho_{d}\alpha_{D}p_t\hat{Y}_{t} + (1-\rho_{d})\hat{D}_{t}\right] - (1+r_{gov,t})\hat{D}_{t} - \hat{G}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\alpha_{tr} p_t\hat{Y}_t} \quad\text{if}\quad T_{G1}\leq t<T_{G2} \\
-      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\alpha_{D}p_t\hat{Y}_{t} - (1+r_{gov,t})\hat{D}_{t} - \hat{G}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\alpha_{tr} p_t\hat{Y}_t} \qquad\qquad\quad\,\text{if}\quad t \geq T_{G2}
+      1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\:\:\:\text{if}\quad t < T_{G1} \\
+      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\left[\rho_{d}\alpha_{D}\hat{Y}_{t} + (1-\rho_{d})\hat{D}_{t}\right] - (1+r_{gov,t})\hat{D}_{t} - \hat{G}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\alpha_{tr} \hat{Y}_t} \:\text{if}\: T_{G1}\leq t<T_{G2} \\
+      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\alpha_{D}\hat{Y}_{t} - (1+r_{gov,t})\hat{D}_{t} - \hat{G}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\alpha_{tr} \hat{Y}_t} \qquad\qquad\quad\,\text{if}\quad t \geq T_{G2}
     \end{cases} \\
     &\text{and}\quad g_{g,t} = 1 \quad\forall t
   \end{split}
@@ -298,18 +322,18 @@ Where $\hat{MTR}^w_{j,s,t} = \left( \frac{h^{w}p_{w}\hat{b}_{j,s,t}}{(\hat{b}_{j
   ```{math}
   :label: EqStnrzClosureRule_TRGt
   \begin{split}
-    &\hat{G}_t + \hat{TR}_t = g_{trg,t}\left(\alpha_g + \alpha_{tr}\right)p_t\hat{Y}_t \quad\Rightarrow\quad \hat{G}_t = g_{trg,t}\:\alpha_g\:p_t\hat{Y}_t \quad\text{and}\quad \hat{TR}_t = g_{trg,t}\:\alpha_{tr}\:p_t\hat{Y}_t \\
+    &\hat{G}_t + \hat{TR}_t = g_{trg,t}\left(\alpha_g + \alpha_{tr}\right)\hat{Y}_t \quad\Rightarrow\quad \hat{G}_t = g_{trg,t}\:\alpha_g\: \hat{Y}_t \quad\text{and}\quad \hat{TR}_t = g_{trg,t}\:\alpha_{tr}\: \hat{Y}_t \\
     &\text{where}\quad g_{trg,t} =
     \begin{cases}
-      1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\text{if}\quad t < T_{G1} \\
-      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\left[\rho_{d}\alpha_{D}p_t\hat{Y}_{t} + (1-\rho_{d})\hat{D}_{t}\right] - (1+r_{gov,t})\hat{D}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\left(\alpha_g + \alpha_{tr}\right)p_t\hat{Y}_t} \quad\text{if}\quad T_{G1}\leq t<T_{G2} \\
-      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\alpha_{D}p_t\hat{Y}_{t} - (1+r_{gov,t})\hat{D}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\left(\alpha_g + \alpha_{tr}\right)p_t\hat{Y}_t} \qquad\qquad\quad\,\text{if}\quad t \geq T_{G2}
+      1 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\:\quad \text{if}\quad t < T_{G1} \\
+      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\left[\rho_{d}\alpha_{D}\hat{Y}_{t} + (1-\rho_{d})\hat{D}_{t}\right] - (1+r_{gov,t})\hat{D}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\left(\alpha_g + \alpha_{tr}\right)\hat{Y}_t} \:\text{if}\: T_{G1}\leq t<T_{G2} \\
+      \frac{e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\alpha_{D}\hat{Y}_{t} - (1+r_{gov,t})\hat{D}_{t} - \hat{I}_{g,t} - \hat{UBI}_t + \hat{Rev}_{t}}{\left(\alpha_g + \alpha_{tr}\right)\hat{Y}_t} \qquad\qquad\quad\,\text{if}\quad t \geq T_{G2}
     \end{cases}
   \end{split}
   ```
 
 
-  ### Stationarized Pension System Equations
+### Stationarized Pension System Equations
 
 #### Stiationarized Notional Defined Contributions Equations
 
@@ -468,7 +492,7 @@ Stationarized pension amount derivative:
   ```{math}
   :label: EqStnrzMarkClrGoods_M
     \hat{Y}_{M,t} &= \hat{C}_{M,t} + \hat{I}_{M,t} + \hat{I}_{g,t} + \hat{G}_t + r_{p,t} \hat{K}^f_t + r_{p,t}\hat{D}^f_t ... \\
-    &\quad - \Bigl(e^{g_y}\bigl[1 + \tilde{g}_{n,t+1}\bigr]\hat{K}^f_{t+1} - \hat{K}^f_t\Bigr) - \Bigl(e^{g_y}\bigl[1 + \tilde{g}_{n,t+1}\bigr]\hat{D}^f_{t+1} - \hat{D}^f_t\Bigr) \quad\forall t
+    &\quad - \Bigl(e^{g_y}\bigl[1 + \tilde{g}_{n,t+1}\bigr]\hat{K}^f_{t+1} - \hat{K}^f_t\Bigr) - \Bigl(e^{g_y}\bigl[1 + \tilde{g}_{n,t+1}\bigr]\hat{D}^f_{t+1} - \hat{D}^f_t\Bigr) - \hat{RM}_t \quad\forall t
   ```
   where
   ```{math}
@@ -489,3 +513,5 @@ Stationarized pension amount derivative:
   :label: EqStnrzMarkClrBQ
     \hat{BQ}_{t} = \left(\frac{1+r_{p,t}}{1 + \tilde{g}_{n,t}}\right)\left(\sum_{s=E+2}^{E+S+1}\sum_{j=1}^J\rho_{s-1}\lambda_j\hat{\omega}_{s-1,t-1}\hat{b}_{j,s,t}\right) \quad\forall t
   ```
+
+  The demand side of aggregate consumption $\hat{C}_{m,t}$, aggregate investment $\hat{I}_{M,t}$, and aggregate bequests $\hat{BQ}_t$ is each indirectly affected by the size of remittances, described equations {eq}`EqHH_AggrRemit` and {eq}`EqHH_IndRemitRec` in Section {ref}`SecHHremit` of Chapter {ref}`Chap_House` and in the stationarized versions of those equations {eq}`EqHH_AggrRemitStnrz` and {eq}`EqHH_IndRemitRecStnrz` in Section {ref}`SecStnrzHH` in this Chapter.
diff --git a/ogcore/SS.py b/ogcore/SS.py
index c1716f3f1..6d147df84 100644
--- a/ogcore/SS.py
+++ b/ogcore/SS.py
@@ -55,6 +55,7 @@ def euler_equation_solver(guesses, *args):
         w (scalar): real wage rate
         p_tilde (scalar): composite good price
         bq (Numpy array): bequest amounts by age, length S
+        rm (scalar): remittance amounts by age, length S
         tr (scalar): government transfer amount by age, length S
         ubi (vector): universal basic income (UBI) payment, length S
         factor (scalar): scaling factor converting model units to dollars
@@ -64,7 +65,7 @@ def euler_equation_solver(guesses, *args):
         errros (Numpy array): errors from FOCs, length 2S
 
     """
-    (r, w, p_tilde, bq, tr, ubi, factor, j, p) = args
+    (r, w, p_tilde, bq, rm, tr, ubi, factor, j, p) = args
 
     b_guess = np.array(guesses[: p.S])
     n_guess = np.array(guesses[p.S :])
@@ -81,6 +82,7 @@ def euler_equation_solver(guesses, *args):
         b_splus1,
         n_guess,
         bq,
+        rm,
         factor,
         tr,
         ubi,
@@ -101,6 +103,7 @@ def euler_equation_solver(guesses, *args):
         b_splus1,
         n_guess,
         bq,
+        rm,
         factor,
         tr,
         ubi,
@@ -155,6 +158,7 @@ def euler_equation_solver(guesses, *args):
         b_splus1,
         n_guess,
         bq,
+        rm,
         taxes,
         p.e[-1, :, j],
         p,
@@ -174,8 +178,8 @@ def inner_loop(outer_loop_vars, p, client):
 
     Args:
         outer_loop_vars (tuple): tuple of outer loop variables,
-            (bssmat, nssmat, r_p, r, w, p_m, BQ, TR, factor) or
-            (bssmat, nssmat, r_p, r, w, p_m, BQ, Y, TR, factor)
+            (bssmat, nssmat, r_p, r, w, p_m, BQ, RM, TR, factor) or
+            (bssmat, nssmat, r_p, r, w, p_m, BQ, RM, Y, TR, factor)
         bssmat (Numpy array): initial guess at savings, size = SxJ
         nssmat (Numpy array): initial guess at labor supply, size = SxJ
         r_p (scalar): return on household investment portfolio
@@ -226,11 +230,13 @@ def inner_loop(outer_loop_vars, p, client):
     p_m = np.array(p_m)  # TODO: why is this a list otherwise?
     p_i = np.dot(p.io_matrix, p_m)
     BQ = np.array(BQ)
+    RM = np.array(aggr.get_RM(Y, p, "SS"))
     # initialize array for euler errors
     euler_errors = np.zeros((2 * p.S, p.J))
 
     p_tilde = aggr.get_ptilde(p_i, p.tau_c[-1, :], p.alpha_c)
     bq = household.get_bq(BQ, None, p, "SS")
+    rm = household.get_rm(RM, None, p, "SS")
     tr = household.get_tr(TR, None, p, "SS")
     ubi = p.ubi_nom_array[-1, :, :] / factor
 
@@ -242,6 +248,7 @@ def inner_loop(outer_loop_vars, p, client):
             w,
             p_tilde,
             bq[:, j],
+            rm[:, j],
             tr[:, j],
             ubi[:, j],
             factor,
@@ -312,6 +319,7 @@ def inner_loop(outer_loop_vars, p, client):
         b_splus1,
         nssmat,
         bq,
+        rm,
         net_tax,
         np.squeeze(p.e[-1, :, :]),
         p,
@@ -400,6 +408,8 @@ def inner_loop(outer_loop_vars, p, client):
         new_factor = factor
     new_BQ = aggr.get_BQ(new_r_p, bssmat, None, p, "SS", False)
     new_bq = household.get_bq(new_BQ, None, p, "SS")
+    new_RM = aggr.get_RM(Y, p, "SS")
+    new_rm = household.get_rm(new_RM, None, p, "SS")
     tr = household.get_tr(TR, None, p, "SS")
     theta = pensions.replacement_rate_vals(nssmat, new_w, new_factor, None, p)
 
@@ -444,6 +454,7 @@ def inner_loop(outer_loop_vars, p, client):
         bssmat,
         nssmat,
         new_bq,
+        new_rm,
         taxss,
         np.squeeze(p.e[-1, :, :]),
         p,
@@ -532,6 +543,7 @@ def inner_loop(outer_loop_vars, p, client):
         K_vec,
         L_vec,
         Y_vec,
+        new_RM,
         new_TR,
         Y,
         new_factor,
@@ -599,6 +611,7 @@ def SS_solver(
             new_K_vec,
             new_L_vec,
             new_Y_vec,
+            new_RM,
             new_TR,
             new_Y,
             new_factor,
@@ -679,6 +692,7 @@ def SS_solver(
     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)
+    RM_ss = new_RM
     TR_ss = new_TR
     Yss = new_Y
     I_g_ss = fiscal.get_I_g(Yss, p.alpha_I[-1])
@@ -723,6 +737,7 @@ def SS_solver(
     factor_ss = factor
     bqssmat = household.get_bq(BQss, None, p, "SS")
     trssmat = household.get_tr(TR_ss, None, p, "SS")
+    rmssmat = household.get_rm(RM_ss, None, p, "SS")
     ubissmat = p.ubi_nom_array[-1, :, :] / factor_ss
     theta = pensions.replacement_rate_vals(nssmat, wss, factor_ss, None, p)
 
@@ -823,6 +838,7 @@ def SS_solver(
         bssmat_splus1,
         nssmat,
         bqssmat,
+        rmssmat,
         taxss,
         np.squeeze(p.e[-1, :, :]),
         p,
@@ -908,6 +924,9 @@ def SS_solver(
     I_g_vec_ss[-1] = I_g_ss
     net_capital_outflows_vec = np.zeros(p.M)
     net_capital_outflows_vec[-1] = net_capital_outflows
+    RM_vec_ss = np.zeros(p.M)
+    RM_vec_ss[-1] = RM_ss
+
     RC = aggr.resource_constraint(
         Y_vec_ss,
         C_m_vec_ss,
@@ -915,6 +934,7 @@ def SS_solver(
         I_d_vec_ss,
         I_g_vec_ss,
         net_capital_outflows_vec,
+        RM_vec_ss,
     )
     if VERBOSE:
         print("Foreign debt holdings = ", D_f_ss)
@@ -979,6 +999,7 @@ def SS_solver(
         "r_p_ss": r_p_ss,
         "theta": theta,
         "BQss": BQss,
+        "RMss": RM_ss,
         "factor_ss": factor_ss,
         "bssmat_s": bssmat_s,
         "cssmat": cssmat,
@@ -987,6 +1008,7 @@ def SS_solver(
         "bqssmat": bqssmat,
         "TR_ss": TR_ss,
         "trssmat": trssmat,
+        "rmssmat": rmssmat,
         "Gss": Gss,
         "total_tax_revenue": total_tax_revenue,
         "business_tax_revenue": business_tax_revenue,
@@ -1072,6 +1094,7 @@ def SS_fsolve(guesses, *args):
         new_K_vec,
         new_L_vec,
         new_Y_vec,
+        new_RM,
         new_TR,
         new_Y,
         new_factor,
diff --git a/ogcore/TPI.py b/ogcore/TPI.py
index 52765667b..7607b1e0e 100644
--- a/ogcore/TPI.py
+++ b/ogcore/TPI.py
@@ -1,3 +1,14 @@
+"""
+Time path iteration (TPI) module for OG-Core.
+
+This module contains the following functions:
+    get_initial_SS_values()
+    firstdoughnutring()
+    twist_doughnut()
+    inner_loop()
+    run_TPI()
+"""
+
 # imports
 import numpy as np
 import pickle
@@ -49,8 +60,8 @@ def get_initial_SS_values(p):
                 solution results
             * theta (Numpy array): steady-state retirement replacement
                 rates, length J
-            * baseline_values (tuple): (TRbaseline, Gbaseline,
-                D0_baseline), lump sum transfer and government spending
+            * baseline_values (tuple): (Ybaseline, TRbaseline, Gbaseline,
+                D0_baseline), GDP, lump sum transfer, and government spending
                 amounts from the baseline model run
 
     """
@@ -62,9 +73,15 @@ def get_initial_SS_values(p):
         ss_baseline_vars["Bss"] / B0
     )
     initial_n = ss_baseline_vars["nssmat"]
+
+    Ybaseline = None
     TRbaseline = None
     Gbaseline = None
     Ig_baseline = None
+    if not p.baseline:
+        baseline_tpi = os.path.join(p.baseline_dir, "TPI", "TPI_vars.pkl")
+        tpi_baseline_vars = utils.safe_read_pickle(baseline_tpi)
+        Ybaseline = tpi_baseline_vars["Y"]
     if p.baseline_spending:
         baseline_tpi = os.path.join(p.baseline_dir, "TPI", "TPI_vars.pkl")
         tpi_baseline_vars = utils.safe_read_pickle(baseline_tpi)
@@ -101,11 +118,13 @@ def get_initial_SS_values(p):
         D0_baseline = tpi_baseline_vars["D"][0]
         Kg0_baseline = tpi_baseline_vars["K_g"][0]
     else:
+        RM0_baseline = None
         D0_baseline = None
         Kg0_baseline = None
 
     initial_values = (B0, b_sinit, b_splus1init, factor, initial_b, initial_n)
     baseline_values = (
+        Ybaseline,
         TRbaseline,
         Gbaseline,
         Ig_baseline,
@@ -117,7 +136,7 @@ def get_initial_SS_values(p):
 
 
 def firstdoughnutring(
-    guesses, r, w, p_tilde, bq, tr, theta, factor, ubi, j, initial_b, p
+    guesses, r, w, p_tilde, bq, rm, tr, theta, factor, ubi, j, initial_b, p
 ):
     """
     Solves the first entries of the upper triangle of the twist doughnut. This
@@ -130,6 +149,7 @@ def firstdoughnutring(
         w (scalar): real wage rate
         p_tilde (scalar): composite good price
         bq (scalar): bequest amounts by age
+        rm (scalar): remittance amounts by age
         tr (scalar): government transfer amount
         theta (Numpy array): retirement replacement rates, length J
         factor (scalar): scaling factor converting model units to dollars
@@ -157,6 +177,7 @@ def firstdoughnutring(
         np.array([b_splus1]),
         np.array([n]),
         np.array([bq]),
+        np.array([rm]),
         factor,
         np.array([tr]),
         np.array([ubi]),
@@ -178,6 +199,7 @@ def firstdoughnutring(
         b_splus1,
         np.array([n]),
         np.array([bq]),
+        np.array([rm]),
         factor,
         np.array([tr]),
         np.array([ubi]),
@@ -205,6 +227,7 @@ def twist_doughnut(
     w,
     p_tilde,
     bq,
+    rm,
     tr,
     theta,
     factor,
@@ -229,6 +252,7 @@ def twist_doughnut(
         w (Numpy array): real wage rate
         p_tilde (Numpy array): composite good price
         bq (Numpy array): bequest amounts by age, length s
+        rm (Numpy array): remittance amounts by age, length s
         tr (Numpy array): government transfer amount
         theta (Numpy array): retirement replacement rates, length J
         factor (scalar): scaling factor converting model units to dollars
@@ -276,6 +300,7 @@ def twist_doughnut(
         b_splus1,
         n_s,
         bq,
+        rm,
         factor,
         tr,
         ubi,
@@ -297,6 +322,7 @@ def twist_doughnut(
         b_splus1,
         n_s,
         bq,
+        rm,
         factor,
         tr,
         ubi,
@@ -334,8 +360,8 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p):
         guesses (tuple): initial guesses for b and n, (guesses_b,
             guesses_n)
         outer_loop_vars (tuple): values for factor prices and economic
-            aggregates used in household problem (r_p, r, w, p+m, BQ, TR,
-            theta)
+            aggregates used in household problem
+            (r_p, r, w, p_m, BQ, RM, TR, theta)
         r_p (Numpy array): real interest rate on household portfolio
         r (Numpy array): real interest rate on private capital
         w (Numpy array): real wage rate
@@ -362,7 +388,7 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p):
     """
     (K0, b_sinit, b_splus1init, factor, initial_b, initial_n) = initial_values
     guesses_b, guesses_n = guesses
-    r_p, r, w, p_m, BQ, TR, theta = outer_loop_vars
+    r_p, r, w, p_m, BQ, RM, TR, theta = outer_loop_vars
 
     # compute composite good price
     p_i = (
@@ -374,6 +400,8 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p):
     bq = household.get_bq(BQ, None, p, "TPI")
     # compute tr
     tr = household.get_tr(TR, None, p, "TPI")
+    # compute rm
+    rm = household.get_rm(RM, None, p, "TPI")
 
     # initialize arrays
     b_mat = np.zeros((p.T + p.S, p.S))
@@ -388,6 +416,7 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p):
             w[0],
             p_tilde[0],
             bq[0, -1, j],
+            rm[0, -1, j],
             tr[0, -1, j],
             theta * p.replacement_rate_adjust[0],
             factor,
@@ -407,6 +436,7 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p):
         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]
         bq_to_use = np.diag(bq[: p.S, :, j], p.S - (s + 2))
+        rm_to_use = np.diag(rm[: p.S, :, j], p.S - (s + 2))
         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))
 
@@ -441,6 +471,7 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p):
                 w,
                 p_tilde,
                 bq_to_use,
+                rm_to_use,
                 tr_to_use,
                 theta_to_use,
                 factor,
@@ -468,6 +499,7 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p):
         n_guesses_to_use = np.diag(guesses_n[t : t + p.S, :])
         theta_to_use = theta[j] * p.replacement_rate_adjust[t : t + p.S]
         bq_to_use = np.diag(bq[t : t + p.S, :, j])
+        rm_to_use = np.diag(rm[t : t + p.S, :, j])
         tr_to_use = np.diag(tr[t : t + p.S, :, j])
         ubi_to_use = np.diag(ubi[t : t + p.S, :, j])
 
@@ -494,6 +526,7 @@ def inner_loop(guesses, outer_loop_vars, initial_values, ubi, j, ind, p):
                 w,
                 p_tilde,
                 bq_to_use,
+                rm_to_use,
                 tr_to_use,
                 theta_to_use,
                 factor,
@@ -546,6 +579,7 @@ def run_TPI(p, client=None):
     initial_values, ss_vars, theta, baseline_values = get_initial_SS_values(p)
     (B0, b_sinit, b_splus1init, factor, initial_b, initial_n) = initial_values
     (
+        Ybaseline,
         TRbaseline,
         Gbaseline,
         Ig_baseline,
@@ -718,6 +752,18 @@ def run_TPI(p, client=None):
         )
         BQ = np.array(BQ)
 
+    # Initialize aggregate remittances
+    if p.baseline:
+        RM = aggr.get_RM(Y, p, "TPI")
+    else:
+        # This is the reform case and is based off of Ybaseline, but allows for
+        # remittance parameters to change in a reform and update the RM series
+        Ybaseline_ext = np.concatenate(
+            [Ybaseline, np.ones(p.S) * Ybaseline[-1]]
+        )
+        RM = aggr.get_RM(Ybaseline_ext, p, "TPI")
+
+    # Start transition path iteration (TPI)
     TPIiter = 0
     TPIdist = 10
     euler_errors = np.zeros((p.T, 2 * p.S, p.J))
@@ -725,7 +771,7 @@ 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)
+        outer_loop_vars = (r_p, r, w, p_m, BQ, RM, TR, theta)
         # compute composite good price
         p_i = (
             np.tile(p.io_matrix.reshape(1, p.I, p.M), (p.T + p.S, 1, 1))
@@ -752,7 +798,7 @@ def run_TPI(p, client=None):
             futures = client.compute(lazy_values, num_workers=p.num_workers)
             results = client.gather(futures)
         else:
-            results = results = compute(
+            results = compute(
                 *lazy_values,
                 scheduler=dask.multiprocessing.get,
                 num_workers=p.num_workers,
@@ -780,6 +826,7 @@ def run_TPI(p, client=None):
         ]
 
         bqmat = household.get_bq(BQ, None, p, "TPI")
+        rmmat = household.get_rm(RM, None, p, "TPI")
         trmat = household.get_tr(TR, None, p, "TPI")
         tax_mat = tax.net_taxes(
             r_p[: p.T],
@@ -810,6 +857,7 @@ def run_TPI(p, client=None):
             bmat_splus1,
             n_mat[: p.T, :, :],
             bqmat[: p.T, :, :],
+            rmmat[: p.T, :, :],
             tax_mat,
             p.e,
             p,
@@ -1040,6 +1088,8 @@ def run_TPI(p, client=None):
             p,
             "TPI",
         )
+        RM = aggr.get_RM(Y[: p.T], p, "TPI")
+        RM = np.concatenate([RM, np.ones(p.S) * RM[-1]])
 
         # update vars for next iteration
         w[: p.T] = utils.convex_combo(wnew[: p.T], w[: p.T], p.nu)
@@ -1223,8 +1273,16 @@ def run_TPI(p, client=None):
     I_g_vec[:, -1] = I_g[: p.T]
     net_capital_outflows_vec = np.zeros((p.T, p.M))
     net_capital_outflows_vec[:, -1] = net_capital_outflows[: p.T]
+    RM_vec = np.zeros((p.T, p.M))
+    RM_vec[:, -1] = RM[: p.T]
     RC_error = aggr.resource_constraint(
-        Y_vec, C_m_vec, G_vec, I_d_vec, I_g_vec, net_capital_outflows_vec
+        Y_vec,
+        C_m_vec,
+        G_vec,
+        I_d_vec,
+        I_g_vec,
+        net_capital_outflows_vec,
+        RM_vec,
     )
     # Compute total investment (not just domestic)
     I_total = aggr.get_I(None, K[1 : p.T + 1], K[: p.T], p, "total_tpi")
@@ -1269,6 +1327,7 @@ def run_TPI(p, client=None):
         "I_total": I_total[: p.T, ...],
         "I_d": I_d[: p.T, ...],
         "BQ": BQ[: p.T, ...],
+        "RM": RM[: p.T, ...],
         "total_tax_revenue": total_tax_revenue[: p.T, ...],
         "business_tax_revenue": business_tax_revenue[: p.T, ...],
         "iit_payroll_tax_revenue": iit_payroll_tax_revenue[: p.T, ...],
@@ -1294,6 +1353,7 @@ def run_TPI(p, client=None):
         "n_mat": n_mat[: p.T, ...],
         "c_path": c_mat[: p.T, ...],
         "bq_path": bqmat[: p.T, ...],
+        "rm_path": rmmat[: p.T, ...],
         "tr_path": trmat[: p.T, ...],
         "y_before_tax_mat": y_before_tax_mat[: p.T, ...],
         "tax_path": tax_mat[: p.T, ...],
diff --git a/ogcore/__init__.py b/ogcore/__init__.py
index a11acad60..5c0a1d072 100644
--- a/ogcore/__init__.py
+++ b/ogcore/__init__.py
@@ -20,4 +20,4 @@
 from ogcore.txfunc import *
 from ogcore.utils import *
 
-__version__ = "0.12.0"
+__version__ = "0.13.0"
diff --git a/ogcore/aggregates.py b/ogcore/aggregates.py
index 431910b46..bd073bfaa 100644
--- a/ogcore/aggregates.py
+++ b/ogcore/aggregates.py
@@ -231,6 +231,52 @@ def get_BQ(r, b_splus1, j, p, method, preTP):
     return BQ
 
 
+def get_RM(Y, p, method):
+    r"""
+    Calculation of aggregate remittances.
+
+    .. math::
+        \hat{RM}_{t} = \begin{cases}
+            \alpha_{RM,1}\hat{Y}_t \quad\text{for}\quad t=1 \\
+            \frac{(1+g_{RM,t})}{e^{g_y}(1+\tilde{g}_{n,t})}\hat{RM}_{t-1}
+            \quad\text{for}\quad 2\leq t\leq T_{G1} \\
+            \rho_{RM}\alpha_{RM,T}\hat{Y}_t
+            + (1-\rho_{RM})\frac{(1+g_{RM,t})}{e^{g_y}(1+\tilde{g}_{n,t})}
+            \hat{RM}_{t-1} \quad\text{for}\quad T_{G1}< t<T_{G2} \\
+            \alpha_{RM,T}\hat{Y}_t \quad\text{for}\quad t\geq T_{G2}
+        \end{cases}
+
+    Args:
+        Y (array_like): GDP steady state or time path
+        p (OG-Core Specifications object): model parameters
+        method (str): adjusts calculation dimensions based on SS or TPI
+
+    Returns:
+        RM (array_like): aggregate remittances
+
+    """
+    if method == "SS":
+        RM = p.alpha_RM_T * Y
+    elif method == "TPI":
+        RM = np.zeros_like(Y)
+        RM[0] = p.alpha_RM_1 * Y[0]
+        for t in range(1, p.tG1):
+            RM[t] = ((1 + p.g_RM[t]) / (np.exp(p.g_y) * (1 + p.g_n[t]))) * RM[
+                t - 1
+            ]
+        rho_vec = np.linspace(0, 1, p.tG2 - p.tG1)
+        for t in range(p.tG1, p.tG2 - 1):
+            RM[t] = (
+                rho_vec[t - p.tG1] * p.alpha_RM_T * Y[t]
+                + (1 - rho_vec[t - p.tG1])
+                * ((1 + p.g_RM[t]) / (np.exp(p.g_y) * (1 + p.g_n[t])))
+                * RM[t - 1]
+            )
+        RM[p.tG2 - 1 :] = p.alpha_RM_T * Y[p.tG2 - 1 :]
+
+    return RM
+
+
 def get_C(c, p, method):
     r"""
     Calculation of aggregate consumption.
@@ -297,12 +343,14 @@ def revenue(
     Calculate aggregate tax revenue.
 
     .. math::
-        R_{t} = \sum_{s=E}^{E+S}\sum_{j=0}^{J}\omega_{s,t}\lambda_{j}
+        \begin{split}
+            R_{t} &= \sum_{s=E}^{E+S}\sum_{j=0}^{J}\omega_{s,t}\lambda_{j}
         (T_{j,s,t} + \tau^{p}_{t}w_{t}e_{j,s}n_{j,s,t} - \theta_{j}
         w_{t} + \tau^{bq}bq_{j,s,t} + \tau^{c}_{s,t}c_{j,s,t} +
-        \tau^{w}_{t}b_{j,s,t}) +
-        \sum_{m=1}^{M}\tau^{b}_{m,t}(Y_{m,t}-w_{t}L_{m,t}) -
+        \tau^{w}_{t}b_{j,s,t}) ... \\
+            &\qquad + \sum_{m=1}^{M}\tau^{b}_{m,t}(Y_{m,t}-w_{t}L_{m,t}) -
         \tau^{b}_{m,t}\delta^{\tau}_{m,t}K^{\tau}_{m,t}
+        \end{split}
 
     Args:
         r (array_like): the real interest rate
@@ -469,15 +517,17 @@ def get_r_p(r, r_gov, p_m, K_vec, K_g, D, MPKg_vec, p, method):
     return np.squeeze(r_p)
 
 
-def resource_constraint(Y, C, G, I_d, I_g, net_capital_flows):
+def resource_constraint(Y, C, G, I_d, I_g, net_capital_flows, RM):
     r"""
     Compute the error in the resource constraint.
 
     .. math::
-      \text{rc_error} = \hat{Y}_t - \hat{C}_t -
+      \begin{split}
+        \text{rc_error} &= \hat{Y}_t - \hat{C}_t -
       \Bigl(e^{g_y}\bigl[1 + \tilde{g}_{n,t+1}\bigr]\hat{K}^d_{t+1} -
-      \hat{K}^d_t\Bigr) - \delta\hat{K}_t - \hat{G}_t - \hat{I}_{g,t} -
-      \text{net capital outflows}_t
+      \hat{K}^d_t\Bigr) - \delta\hat{K}_t - \hat{G}_t - \hat{I}_{g,t} ... \\
+        &\qquad -\: \hat{\text{net capital outflows}}_t - \hat{RM}_t
+      \end{split}
 
     Args:
         Y (array_like): aggregate output by industry
@@ -486,12 +536,13 @@ def resource_constraint(Y, C, G, I_d, I_g, net_capital_flows):
         I_d (array_like): aggregate private investment from domestic households
         I_g (array_like): investment in government capital
         net_capital_flows (array_like): net capital outflows
+        RM (array_like): aggregate remittances
 
     Returns:
         rc_error (array_like): error in the resource constraint
 
     """
-    rc_error = Y - C - I_d - I_g - G - net_capital_flows
+    rc_error = Y - C - I_d - I_g - G - net_capital_flows - RM
 
     return rc_error
 
diff --git a/ogcore/constants.py b/ogcore/constants.py
index 0efd80568..6f6f1b7a3 100644
--- a/ogcore/constants.py
+++ b/ogcore/constants.py
@@ -30,6 +30,7 @@
     "r_p": "Real interest rate on HH portfolio ($r_{p,t}$)",
     "w": "Wage rate",
     "BQ": "Aggregate bequests ($BQ_{j,t}$)",
+    "RM": "Aggregate remittances ($RM_t$)",
     "total_tax_revenue": "Total tax revenue ($REV_t$)",
     "business_tax_revenue": "Business tax revenue",
     "iit_revenue": "Individual income tax revenue",
@@ -39,6 +40,7 @@
     "c_path": "Consumption ($c_{j,s,t}$)",
     "bmat_splus1": "Savings ($b_{j,s+1,t+1}$)",
     "bq_path": "Bequests ($bq_{j,s,t}$)",
+    "rm_path": "Remittances ($rm_{j,s,t}$)",
     "bmat_s": "Savings ($b_{j,s,t}$)",
     "y_before_tax_mat": "Before tax income",
     "etr_path": "Effective Tax Rate ($ETR_{j,s,t}$)",
@@ -77,6 +79,7 @@
     "r_p_ss": "Real interest rate on HH portfolio ($\\bar{r}_{hh}$)",
     "wss": "Wage rate ($\\bar{w}$)",
     "BQss": "Aggregate bequests ($\\bar{BQ}_{j}$)",
+    "RMss": "Aggregate remittances ($\\bar{RM}$)",
     "debt_service_ss": "Debt service cost ($\\bar{r}_{gov}\\bar{D}$)",
     "D/Y": "Debt to GDP ratio",
     "T_Pss": "Government Pensions",
@@ -102,6 +105,7 @@
     "total_tax_revenue": "Tax Revenue-to-GDP ($REV_{t}/Y_t$)",
     "TR": "Transfer Spending-to-GDP ($TR_{t}/Y_t$)",
     "BQ": "Bequests-to-GDP ($BQ_{t}/Y_t$)",
+    "RM": "Remittances-to-GDP ($RM_{t}/Y_t$)",
     "total_tax_revenue": "Tax Revenue-to-GDP ($Revenue_{t}/Y_t$)",
     "business_tax_revenue": "Corporate Tax Revenue-to-GDP",
     "iit_revenue": "Personal Income Tax Revenue-to-GDP",
@@ -236,7 +240,17 @@
     ],
     "alpha_T": ["Transfers as a share of GDP", r"$\alpha^{T}_{t}$"],
     "eta": ["Distribution of transfers", r"$\eta_{j,s,t}$"],
+    "eta_RM": ["Distribution of remittances", r"$\eta_{RM,j,s,t}$"],
     "alpha_G": ["Government spending as a share of GDP", r"$\alpha^{G}_{t}$"],
+    "alpha_RM_1": [
+        "Remittances as a share of GDP in initial period",
+        r"$\alpha_{RM,1}$",
+    ],
+    "alpha_RM_T": [
+        "Remittances as a share of GDP in long run",
+        r"$\alpha_{RM,T}$",
+    ],
+    "g_RM": ["Growth rate of remittances in initial periods", r"$g_{RM,t}$"],
     "tG1": ["Model period in which budget closure rule starts", r"$t_{G1}$"],
     "tG2": ["Model period in which budget closure rule ends", r"$t_{G2}$"],
     "rho_G": ["Budget closure rule smoothing parameter", r"$\rho_{G}$"],
diff --git a/ogcore/default_parameters.json b/ogcore/default_parameters.json
index c464129ca..88fe4ea42 100644
--- a/ogcore/default_parameters.json
+++ b/ogcore/default_parameters.json
@@ -769,6 +769,66 @@
             }
         }
     },
+    "alpha_RM_1": {
+        "title": "Exogenous ratio of aggregate remittances to GDP in current period (t=1)",
+        "description": "Exogenous ratio of aggregate remittances to GDP in current period (t=1).",
+        "section_1": "Household Parameters",
+        "section_2": "Endowments",
+        "notes": "",
+        "type": "float",
+        "value": [
+            {
+                "value": 0.0
+            }
+        ],
+        "validators": {
+            "range": {
+                "min": -0.05,
+                "max": 0.4
+            }
+        }
+    },
+    "alpha_RM_T": {
+        "title": "Exogenous ratio of aggregate remittances to GDP in the long run/steady state (t>T)",
+        "description": "Exogenous ratio of aggregate remittances to GDP in the long run/steady state (t>T).",
+        "section_1": "Household Parameters",
+        "section_2": "Endowments",
+        "notes": "",
+        "type": "float",
+        "value": [
+            {
+                "value": 0.0
+            }
+        ],
+        "validators": {
+            "range": {
+                "min": -0.05,
+                "max": 0.4
+            }
+        }
+    },
+    "g_RM": {
+        "title": "Growth rate of aggregate remittances between periods tG1 and tG2",
+        "description": "Growth rate of aggregate remittances between periods tG1 and tG2",
+        "section_1": "Household Parameters",
+        "section_2": "Endowments",
+        "notes": "",
+        "type": "float",
+        "number_dims": 1,
+        "value": [
+            {
+                "value": [
+                    0.00
+                ]
+            }
+        ],
+        "validators": {
+            "range": {
+                "min": -0.02,
+                "max": 0.15
+            }
+        }
+    },
     "debt_ratio_ss": {
         "title": "Debt to GDP ratio to be achieved in the steady state",
         "description": "Debt to GDP ratio to be achieved in the steady state.",
@@ -1123,214 +1183,955 @@
         "validators": {
             "range": {
                 "min": 0.0,
-                "max": 10000.0
+                "max": 10000.0
+            }
+        }
+    },
+    "chi_n": {
+        "title": "Utility weight on disutility of labor supply",
+        "description": "Household utility weight on on disutility of labor supply.",
+        "section_1": "Household Parameters",
+        "section_2": "Behavioral Assumptions",
+        "notes": "",
+        "type": "float",
+        "number_dims": 1,
+        "value": [
+            {
+                "value": [
+                    38.12000874,
+                    33.22762421,
+                    25.3484224,
+                    26.67954008,
+                    24.41097278,
+                    23.15059004,
+                    22.46771332,
+                    21.85495452,
+                    21.46242013,
+                    22.00364263,
+                    21.57322063,
+                    21.53371545,
+                    21.29828515,
+                    21.10144524,
+                    20.8617942,
+                    20.57282,
+                    20.47473172,
+                    20.31111347,
+                    19.04137299,
+                    18.92616951,
+                    20.58517969,
+                    20.48761429,
+                    20.21744847,
+                    19.9577682,
+                    19.66931057,
+                    19.6878927,
+                    19.63107201,
+                    19.63390543,
+                    19.5901486,
+                    19.58143606,
+                    19.58005578,
+                    19.59073213,
+                    19.60190899,
+                    19.60001831,
+                    21.67763741,
+                    21.70451784,
+                    21.85430468,
+                    21.97291208,
+                    21.97017228,
+                    22.25518398,
+                    22.43969757,
+                    23.21870602,
+                    24.18334822,
+                    24.97772026,
+                    26.37663164,
+                    29.65075992,
+                    30.46944758,
+                    31.51634777,
+                    33.13353793,
+                    32.89186997,
+                    38.07083882,
+                    39.2992811,
+                    40.07987878,
+                    35.19951571,
+                    35.97943562,
+                    37.05601334,
+                    37.42979341,
+                    37.91576867,
+                    38.62775142,
+                    39.4885405,
+                    37.10609921,
+                    40.03988031,
+                    40.86564363,
+                    41.73645892,
+                    42.6208256,
+                    43.37786072,
+                    45.38166073,
+                    46.22395387,
+                    50.21419653,
+                    51.05246704,
+                    53.86896121,
+                    53.90029708,
+                    61.83586775,
+                    64.87563699,
+                    66.91207845,
+                    68.07449767,
+                    71.27919965,
+                    73.57195873,
+                    74.95045988,
+                    76.6230815
+                ]
+            }
+        ],
+        "validators": {
+            "range": {
+                "min": 0.0,
+                "max": 10000.0
+            }
+        }
+    },
+    "ubi_growthadj": {
+        "title": "Boolean indicator variable for whether or not to growth adjust universal basic income transfer",
+        "description": "Boolean indicator variable for whether or not to growth adjust universal basic income transfer.",
+        "section_1": "Fiscal Policy Parameters",
+        "section_2": "Spending",
+        "notes": "When this Boolean = True, the ubi_{j,s,t} matrix is stationary because it is multiplied by e^{g_y t} in the nonstationary household budget constraint. When this Boolean = False, the ubi_{j,s,t} is not multiplied by e^{g_y t} and the steady-state value is a matrix of zeros.",
+        "type": "bool",
+        "value": [
+            {
+                "value": false
+            }
+        ],
+        "validators": {
+            "when": {
+                "param": "g_y_annual",
+                "is": {"less_than": 0},
+                "then": {"choice": {"choices": [true]}},
+                "otherwise": {"choice": {"choices": [true, false]}}
+            }
+        }
+    },
+    "ubi_nom_017": {
+        "title": "Dollar (nominal) amount of universal basic income (UBI) per child age 0 through 17",
+        "description": "Dollar (nominal) amount of universal basic income (UBI) per child age 0 through 17.",
+        "section_1": "Fiscal Policy Parameters",
+        "section_2": "Spending",
+        "notes": "The universal basic income (UBI) per child ages 0 through 17 can take positive or negative values (e.g., a negative value may be used to implement a head tax).",
+        "type": "float",
+        "value": [
+            {
+                "value": 0.0
+            }
+        ],
+        "validators": {
+            "range": {
+                "min": -99e9,
+                "max": 99e9
+            }
+        }
+    },
+    "ubi_nom_1864": {
+        "title": "Dollar (nominal) amount of universal basic income (UBI) per adult age 18 through 64",
+        "description": "Dollar (nominal) amount of universal basic income (UBI) per adult age 18 to 64.",
+        "section_1": "Fiscal Policy Parameters",
+        "section_2": "Spending",
+        "notes": "The universal basic income (UBI) per adult age 18 through 64 can take positive or negative values (e.g., a negative value may be used to implement a head tax).",
+        "type": "float",
+        "value": [
+            {
+                "value": 0.0
+            }
+        ],
+        "validators": {
+            "range": {
+                "min": -99e9,
+                "max": 99e9
+            }
+        }
+    },
+    "ubi_nom_65p": {
+        "title": "Dollar (nominal) amount of universal basic income (UBI) per adult age 65 and over",
+        "description": "Dollar (nominal) amount of universal basic income (UBI) per adult age 65 and over.",
+        "section_1": "Fiscal Policy Parameters",
+        "section_2": "Spending",
+        "notes": "The universal basic income (UBI) per adult age 65 can take positive or negative values (e.g., a negative value may be used to implement a head tax).",
+        "type": "float",
+        "value": [
+            {
+                "value": 0.0
+            }
+        ],
+        "validators": {
+            "range": {
+                "min": -99e9,
+                "max": 99e9
+            }
+        }
+    },
+    "ubi_nom_max": {
+        "title": "Maximum dollar (nominal) amount of universal basic income (UBI) per household when all UBI allowances are added up",
+        "description": "Maximum dollar (nominal) amount of universal basic income (UBI) per household when all UBI allowances are added up.",
+        "section_1": "Fiscal Policy Parameters",
+        "section_2": "Spending",
+        "notes": "The maximum dollar (nominal) amount of universal basic income (UBI) per household can range from $0 per year to $40,000 per year ($3,333 per month).",
+        "type": "float",
+        "value": [
+            {
+                "value": 40000.0
+            }
+        ],
+        "validators": {
+            "range": {
+                "min": 0.0,
+                "max": 40000.0
+            }
+        }
+    },
+    "eta": {
+        "title": "Government transfer allocation",
+        "description": "Matrix that allocated government transfers across households.",
+        "section_1": "Fiscal Policy Parameters",
+        "section_2": "Spending",
+        "notes": "This SxJ matrix gives the fraction of total aggregate transfers going to each age s and ability type j.",
+        "type": "float",
+        "number_dims": 2,
+        "value": [
+            {
+                "value": [
+                    [
+                        0.00395156539,
+                        0.00395156539,
+                        0.00316125231,
+                        0.00158062616,
+                        0.00158062616,
+                        0.00142256354,
+                        0.000158062616
+                    ],
+                    [
+                        0.00397057633,
+                        0.00397057633,
+                        0.00317646106,
+                        0.00158823053,
+                        0.00158823053,
+                        0.00142940748,
+                        0.000158823053
+                    ],
+                    [
+                        0.00399140521,
+                        0.00399140521,
+                        0.00319312416,
+                        0.00159656208,
+                        0.00159656208,
+                        0.00143690587,
+                        0.000159656208
+                    ],
+                    [
+                        0.00401335125,
+                        0.00401335125,
+                        0.003210681,
+                        0.0016053405,
+                        0.0016053405,
+                        0.00144480645,
+                        0.00016053405
+                    ],
+                    [
+                        0.0040353396,
+                        0.0040353396,
+                        0.00322827168,
+                        0.00161413584,
+                        0.00161413584,
+                        0.00145272226,
+                        0.000161413584
+                    ],
+                    [
+                        0.00405670193,
+                        0.00405670193,
+                        0.00324536154,
+                        0.00162268077,
+                        0.00162268077,
+                        0.00146041269,
+                        0.000162268077
+                    ],
+                    [
+                        0.0040761153,
+                        0.0040761153,
+                        0.00326089224,
+                        0.00163044612,
+                        0.00163044612,
+                        0.00146740151,
+                        0.000163044612
+                    ],
+                    [
+                        0.00409333545,
+                        0.00409333545,
+                        0.00327466836,
+                        0.00163733418,
+                        0.00163733418,
+                        0.00147360076,
+                        0.000163733418
+                    ],
+                    [
+                        0.00410837135,
+                        0.00410837135,
+                        0.00328669708,
+                        0.00164334854,
+                        0.00164334854,
+                        0.00147901369,
+                        0.000164334854
+                    ],
+                    [
+                        0.00412086399,
+                        0.00412086399,
+                        0.00329669119,
+                        0.0016483456,
+                        0.0016483456,
+                        0.00148351104,
+                        0.00016483456
+                    ],
+                    [
+                        0.004130814,
+                        0.004130814,
+                        0.0033046512,
+                        0.0016523256,
+                        0.0016523256,
+                        0.00148709304,
+                        0.00016523256
+                    ],
+                    [
+                        0.0041388937,
+                        0.0041388937,
+                        0.00331111496,
+                        0.00165555748,
+                        0.00165555748,
+                        0.00149000173,
+                        0.000165555748
+                    ],
+                    [
+                        0.00414547736,
+                        0.00414547736,
+                        0.00331638188,
+                        0.00165819094,
+                        0.00165819094,
+                        0.00149237185,
+                        0.000165819094
+                    ],
+                    [
+                        0.00415083838,
+                        0.00415083838,
+                        0.0033206707,
+                        0.00166033535,
+                        0.00166033535,
+                        0.00149430182,
+                        0.000166033535
+                    ],
+                    [
+                        0.00415488494,
+                        0.00415488494,
+                        0.00332390795,
+                        0.00166195398,
+                        0.00166195398,
+                        0.00149575858,
+                        0.000166195398
+                    ],
+                    [
+                        0.00415765147,
+                        0.00415765147,
+                        0.00332612118,
+                        0.00166306059,
+                        0.00166306059,
+                        0.00149675453,
+                        0.000166306059
+                    ],
+                    [
+                        0.00415882813,
+                        0.00415882813,
+                        0.00332706251,
+                        0.00166353125,
+                        0.00166353125,
+                        0.00149717813,
+                        0.000166353125
+                    ],
+                    [
+                        0.00415877597,
+                        0.00415877597,
+                        0.00332702078,
+                        0.00166351039,
+                        0.00166351039,
+                        0.00149715935,
+                        0.000166351039
+                    ],
+                    [
+                        0.00415741548,
+                        0.00415741548,
+                        0.00332593239,
+                        0.00166296619,
+                        0.00166296619,
+                        0.00149666957,
+                        0.000166296619
+                    ],
+                    [
+                        0.00415480168,
+                        0.00415480168,
+                        0.00332384134,
+                        0.00166192067,
+                        0.00166192067,
+                        0.0014957286,
+                        0.000166192067
+                    ],
+                    [
+                        0.00415094623,
+                        0.00415094623,
+                        0.00332075698,
+                        0.00166037849,
+                        0.00166037849,
+                        0.00149434064,
+                        0.000166037849
+                    ],
+                    [
+                        0.00414595663,
+                        0.00414595663,
+                        0.00331676531,
+                        0.00165838265,
+                        0.00165838265,
+                        0.00149254439,
+                        0.000165838265
+                    ],
+                    [
+                        0.00413994913,
+                        0.00413994913,
+                        0.00331195931,
+                        0.00165597965,
+                        0.00165597965,
+                        0.00149038169,
+                        0.000165597965
+                    ],
+                    [
+                        0.00413307009,
+                        0.00413307009,
+                        0.00330645607,
+                        0.00165322804,
+                        0.00165322804,
+                        0.00148790523,
+                        0.000165322804
+                    ],
+                    [
+                        0.00412533994,
+                        0.00412533994,
+                        0.00330027195,
+                        0.00165013598,
+                        0.00165013598,
+                        0.00148512238,
+                        0.000165013598
+                    ],
+                    [
+                        0.00411571867,
+                        0.00411571867,
+                        0.00329257494,
+                        0.00164628747,
+                        0.00164628747,
+                        0.00148165872,
+                        0.000164628747
+                    ],
+                    [
+                        0.00410463912,
+                        0.00410463912,
+                        0.00328371129,
+                        0.00164185565,
+                        0.00164185565,
+                        0.00147767008,
+                        0.000164185565
+                    ],
+                    [
+                        0.0040923822,
+                        0.0040923822,
+                        0.00327390576,
+                        0.00163695288,
+                        0.00163695288,
+                        0.00147325759,
+                        0.000163695288
+                    ],
+                    [
+                        0.00407842935,
+                        0.00407842935,
+                        0.00326274348,
+                        0.00163137174,
+                        0.00163137174,
+                        0.00146823457,
+                        0.000163137174
+                    ],
+                    [
+                        0.00406247076,
+                        0.00406247076,
+                        0.00324997661,
+                        0.0016249883,
+                        0.0016249883,
+                        0.00146248947,
+                        0.00016249883
+                    ],
+                    [
+                        0.00404485785,
+                        0.00404485785,
+                        0.00323588628,
+                        0.00161794314,
+                        0.00161794314,
+                        0.00145614883,
+                        0.000161794314
+                    ],
+                    [
+                        0.00402617428,
+                        0.00402617428,
+                        0.00322093943,
+                        0.00161046971,
+                        0.00161046971,
+                        0.00144942274,
+                        0.000161046971
+                    ],
+                    [
+                        0.00400535937,
+                        0.00400535937,
+                        0.0032042875,
+                        0.00160214375,
+                        0.00160214375,
+                        0.00144192937,
+                        0.000160214375
+                    ],
+                    [
+                        0.00398258969,
+                        0.00398258969,
+                        0.00318607175,
+                        0.00159303588,
+                        0.00159303588,
+                        0.00143373229,
+                        0.000159303588
+                    ],
+                    [
+                        0.00395814392,
+                        0.00395814392,
+                        0.00316651514,
+                        0.00158325757,
+                        0.00158325757,
+                        0.00142493181,
+                        0.000158325757
+                    ],
+                    [
+                        0.00393179647,
+                        0.00393179647,
+                        0.00314543717,
+                        0.00157271859,
+                        0.00157271859,
+                        0.00141544673,
+                        0.000157271859
+                    ],
+                    [
+                        0.00390383957,
+                        0.00390383957,
+                        0.00312307165,
+                        0.00156153583,
+                        0.00156153583,
+                        0.00140538224,
+                        0.000156153583
+                    ],
+                    [
+                        0.00387400035,
+                        0.00387400035,
+                        0.00309920028,
+                        0.00154960014,
+                        0.00154960014,
+                        0.00139464013,
+                        0.000154960014
+                    ],
+                    [
+                        0.00384196877,
+                        0.00384196877,
+                        0.00307357502,
+                        0.00153678751,
+                        0.00153678751,
+                        0.00138310876,
+                        0.000153678751
+                    ],
+                    [
+                        0.00380787789,
+                        0.00380787789,
+                        0.00304630231,
+                        0.00152315115,
+                        0.00152315115,
+                        0.00137083604,
+                        0.000152315115
+                    ],
+                    [
+                        0.00377185201,
+                        0.00377185201,
+                        0.00301748161,
+                        0.0015087408,
+                        0.0015087408,
+                        0.00135786672,
+                        0.00015087408
+                    ],
+                    [
+                        0.0037340474,
+                        0.0037340474,
+                        0.00298723792,
+                        0.00149361896,
+                        0.00149361896,
+                        0.00134425707,
+                        0.000149361896
+                    ],
+                    [
+                        0.00369312767,
+                        0.00369312767,
+                        0.00295450213,
+                        0.00147725107,
+                        0.00147725107,
+                        0.00132952596,
+                        0.000147725107
+                    ],
+                    [
+                        0.00364931125,
+                        0.00364931125,
+                        0.002919449,
+                        0.0014597245,
+                        0.0014597245,
+                        0.00131375205,
+                        0.00014597245
+                    ],
+                    [
+                        0.00360766197,
+                        0.00360766197,
+                        0.00288612958,
+                        0.00144306479,
+                        0.00144306479,
+                        0.00129875831,
+                        0.000144306479
+                    ],
+                    [
+                        0.00356285967,
+                        0.00356285967,
+                        0.00285028773,
+                        0.00142514387,
+                        0.00142514387,
+                        0.00128262948,
+                        0.000142514387
+                    ],
+                    [
+                        0.00351155021,
+                        0.00351155021,
+                        0.00280924016,
+                        0.00140462008,
+                        0.00140462008,
+                        0.00126415807,
+                        0.000140462008
+                    ],
+                    [
+                        0.00345670257,
+                        0.00345670257,
+                        0.00276536205,
+                        0.00138268103,
+                        0.00138268103,
+                        0.00124441292,
+                        0.000138268103
+                    ],
+                    [
+                        0.00340163241,
+                        0.00340163241,
+                        0.00272130593,
+                        0.00136065297,
+                        0.00136065297,
+                        0.00122458767,
+                        0.000136065297
+                    ],
+                    [
+                        0.00334480304,
+                        0.00334480304,
+                        0.00267584243,
+                        0.00133792122,
+                        0.00133792122,
+                        0.00120412909,
+                        0.000133792122
+                    ],
+                    [
+                        0.00328292059,
+                        0.00328292059,
+                        0.00262633647,
+                        0.00131316824,
+                        0.00131316824,
+                        0.00118185141,
+                        0.000131316824
+                    ],
+                    [
+                        0.00321650788,
+                        0.00321650788,
+                        0.00257320631,
+                        0.00128660315,
+                        0.00128660315,
+                        0.00115794284,
+                        0.000128660315
+                    ],
+                    [
+                        0.00314624315,
+                        0.00314624315,
+                        0.00251699452,
+                        0.00125849726,
+                        0.00125849726,
+                        0.00113264753,
+                        0.000125849726
+                    ],
+                    [
+                        0.00307157839,
+                        0.00307157839,
+                        0.00245726271,
+                        0.00122863136,
+                        0.00122863136,
+                        0.00110576822,
+                        0.000122863136
+                    ],
+                    [
+                        0.00299199285,
+                        0.00299199285,
+                        0.00239359428,
+                        0.00119679714,
+                        0.00119679714,
+                        0.00107711743,
+                        0.000119679714
+                    ],
+                    [
+                        0.00290744259,
+                        0.00290744259,
+                        0.00232595407,
+                        0.00116297703,
+                        0.00116297703,
+                        0.00104667933,
+                        0.000116297703
+                    ],
+                    [
+                        0.00281749792,
+                        0.00281749792,
+                        0.00225399834,
+                        0.00112699917,
+                        0.00112699917,
+                        0.00101429925,
+                        0.000112699917
+                    ],
+                    [
+                        0.00272138616,
+                        0.00272138616,
+                        0.00217710893,
+                        0.00108855447,
+                        0.00108855447,
+                        0.000979699019,
+                        0.000108855447
+                    ],
+                    [
+                        0.00261938813,
+                        0.00261938813,
+                        0.00209551051,
+                        0.00104775525,
+                        0.00104775525,
+                        0.000942979727,
+                        0.000104775525
+                    ],
+                    [
+                        0.00251105115,
+                        0.00251105115,
+                        0.00200884092,
+                        0.00100442046,
+                        0.00100442046,
+                        0.000903978414,
+                        0.000100442046
+                    ],
+                    [
+                        0.00239617674,
+                        0.00239617674,
+                        0.00191694139,
+                        0.000958470695,
+                        0.000958470695,
+                        0.000862623626,
+                        9.58470695e-05
+                    ],
+                    [
+                        0.00227487878,
+                        0.00227487878,
+                        0.00181990302,
+                        0.000909951512,
+                        0.000909951512,
+                        0.000818956361,
+                        9.09951512e-05
+                    ],
+                    [
+                        0.00214701698,
+                        0.00214701698,
+                        0.00171761358,
+                        0.000858806792,
+                        0.000858806792,
+                        0.000772926113,
+                        8.58806792e-05
+                    ],
+                    [
+                        0.00201259941,
+                        0.00201259941,
+                        0.00161007953,
+                        0.000805039765,
+                        0.000805039765,
+                        0.000724535788,
+                        8.05039765e-05
+                    ],
+                    [
+                        0.00187184833,
+                        0.00187184833,
+                        0.00149747867,
+                        0.000748739333,
+                        0.000748739333,
+                        0.000673865399,
+                        7.48739333e-05
+                    ],
+                    [
+                        0.00172541264,
+                        0.00172541264,
+                        0.00138033011,
+                        0.000690165054,
+                        0.000690165054,
+                        0.000621148549,
+                        6.90165054e-05
+                    ],
+                    [
+                        0.00157491245,
+                        0.00157491245,
+                        0.00125992996,
+                        0.000629964979,
+                        0.000629964979,
+                        0.000566968481,
+                        6.29964979e-05
+                    ],
+                    [
+                        0.00142220089,
+                        0.00142220089,
+                        0.00113776071,
+                        0.000568880357,
+                        0.000568880357,
+                        0.000511992321,
+                        5.68880357e-05
+                    ],
+                    [
+                        0.00126948236,
+                        0.00126948236,
+                        0.00101558589,
+                        0.000507792943,
+                        0.000507792943,
+                        0.000457013648,
+                        5.07792943e-05
+                    ],
+                    [
+                        0.00111831414,
+                        0.00111831414,
+                        0.000894651316,
+                        0.000447325658,
+                        0.000447325658,
+                        0.000402593092,
+                        4.47325658e-05
+                    ],
+                    [
+                        0.000971364381,
+                        0.000971364381,
+                        0.000777091505,
+                        0.000388545752,
+                        0.000388545752,
+                        0.000349691177,
+                        3.88545752e-05
+                    ],
+                    [
+                        0.000830982831,
+                        0.000830982831,
+                        0.000664786265,
+                        0.000332393132,
+                        0.000332393132,
+                        0.000299153819,
+                        3.32393132e-05
+                    ],
+                    [
+                        0.000699517695,
+                        0.000699517695,
+                        0.000559614156,
+                        0.000279807078,
+                        0.000279807078,
+                        0.00025182637,
+                        2.79807078e-05
+                    ],
+                    [
+                        0.00057872894,
+                        0.00057872894,
+                        0.000462983152,
+                        0.000231491576,
+                        0.000231491576,
+                        0.000208342418,
+                        2.31491576e-05
+                    ],
+                    [
+                        0.000469422939,
+                        0.000469422939,
+                        0.000375538351,
+                        0.000187769176,
+                        0.000187769176,
+                        0.000168992258,
+                        1.87769176e-05
+                    ],
+                    [
+                        0.000373067125,
+                        0.000373067125,
+                        0.0002984537,
+                        0.00014922685,
+                        0.00014922685,
+                        0.000134304165,
+                        1.4922685e-05
+                    ],
+                    [
+                        0.000290043322,
+                        0.000290043322,
+                        0.000232034658,
+                        0.000116017329,
+                        0.000116017329,
+                        0.000104415596,
+                        1.16017329e-05
+                    ],
+                    [
+                        0.000220585214,
+                        0.000220585214,
+                        0.000176468171,
+                        8.82340856e-05,
+                        8.82340856e-05,
+                        7.9410677e-05,
+                        8.82340856e-06
+                    ],
+                    [
+                        0.000163827444,
+                        0.000163827444,
+                        0.000131061955,
+                        6.55309777e-05,
+                        6.55309777e-05,
+                        5.89778799e-05,
+                        6.55309777e-06
+                    ],
+                    [
+                        0.000118543187,
+                        0.000118543187,
+                        9.48345498e-05,
+                        4.74172749e-05,
+                        4.74172749e-05,
+                        4.26755474e-05,
+                        4.74172749e-06
+                    ]
+                ]
+            }
+        ],
+        "validators": {
+            "range": {
+                "min": 0.0,
+                "max": 1.0
             }
         }
     },
-    "chi_n": {
-        "title": "Utility weight on disutility of labor supply",
-        "description": "Household utility weight on on disutility of labor supply.",
+    "eta_RM": {
+        "title": "Remittances allocation",
+        "description": "Matrix that allocates aggregate remittances across households.",
         "section_1": "Household Parameters",
-        "section_2": "Behavioral Assumptions",
-        "notes": "",
-        "type": "float",
-        "number_dims": 1,
-        "value": [
-            {
-                "value": [
-                    38.12000874,
-                    33.22762421,
-                    25.3484224,
-                    26.67954008,
-                    24.41097278,
-                    23.15059004,
-                    22.46771332,
-                    21.85495452,
-                    21.46242013,
-                    22.00364263,
-                    21.57322063,
-                    21.53371545,
-                    21.29828515,
-                    21.10144524,
-                    20.8617942,
-                    20.57282,
-                    20.47473172,
-                    20.31111347,
-                    19.04137299,
-                    18.92616951,
-                    20.58517969,
-                    20.48761429,
-                    20.21744847,
-                    19.9577682,
-                    19.66931057,
-                    19.6878927,
-                    19.63107201,
-                    19.63390543,
-                    19.5901486,
-                    19.58143606,
-                    19.58005578,
-                    19.59073213,
-                    19.60190899,
-                    19.60001831,
-                    21.67763741,
-                    21.70451784,
-                    21.85430468,
-                    21.97291208,
-                    21.97017228,
-                    22.25518398,
-                    22.43969757,
-                    23.21870602,
-                    24.18334822,
-                    24.97772026,
-                    26.37663164,
-                    29.65075992,
-                    30.46944758,
-                    31.51634777,
-                    33.13353793,
-                    32.89186997,
-                    38.07083882,
-                    39.2992811,
-                    40.07987878,
-                    35.19951571,
-                    35.97943562,
-                    37.05601334,
-                    37.42979341,
-                    37.91576867,
-                    38.62775142,
-                    39.4885405,
-                    37.10609921,
-                    40.03988031,
-                    40.86564363,
-                    41.73645892,
-                    42.6208256,
-                    43.37786072,
-                    45.38166073,
-                    46.22395387,
-                    50.21419653,
-                    51.05246704,
-                    53.86896121,
-                    53.90029708,
-                    61.83586775,
-                    64.87563699,
-                    66.91207845,
-                    68.07449767,
-                    71.27919965,
-                    73.57195873,
-                    74.95045988,
-                    76.6230815
-                ]
-            }
-        ],
-        "validators": {
-            "range": {
-                "min": 0.0,
-                "max": 10000.0
-            }
-        }
-    },
-    "ubi_growthadj": {
-        "title": "Boolean indicator variable for whether or not to growth adjust universal basic income transfer",
-        "description": "Boolean indicator variable for whether or not to growth adjust universal basic income transfer.",
-        "section_1": "Fiscal Policy Parameters",
-        "section_2": "Spending",
-        "notes": "When this Boolean = True, the ubi_{j,s,t} matrix is stationary because it is multiplied by e^{g_y t} in the nonstationary household budget constraint. When this Boolean = False, the ubi_{j,s,t} is not multiplied by e^{g_y t} and the steady-state value is a matrix of zeros.",
-        "type": "bool",
-        "value": [
-            {
-                "value": false
-            }
-        ],
-        "validators": {
-            "when": {
-                "param": "g_y_annual",
-                "is": {"less_than": 0},
-                "then": {"choice": {"choices": [true]}},
-                "otherwise": {"choice": {"choices": [true, false]}}
-            }
-        }
-    },
-    "ubi_nom_017": {
-        "title": "Dollar (nominal) amount of universal basic income (UBI) per child age 0 through 17",
-        "description": "Dollar (nominal) amount of universal basic income (UBI) per child age 0 through 17.",
-        "section_1": "Fiscal Policy Parameters",
-        "section_2": "Spending",
-        "notes": "The universal basic income (UBI) per child ages 0 through 17 can take positive or negative values (e.g., a negative value may be used to implement a head tax).",
-        "type": "float",
-        "value": [
-            {
-                "value": 0.0
-            }
-        ],
-        "validators": {
-            "range": {
-                "min": -99e9,
-                "max": 99e9
-            }
-        }
-    },
-    "ubi_nom_1864": {
-        "title": "Dollar (nominal) amount of universal basic income (UBI) per adult age 18 through 64",
-        "description": "Dollar (nominal) amount of universal basic income (UBI) per adult age 18 to 64.",
-        "section_1": "Fiscal Policy Parameters",
-        "section_2": "Spending",
-        "notes": "The universal basic income (UBI) per adult age 18 through 64 can take positive or negative values (e.g., a negative value may be used to implement a head tax).",
-        "type": "float",
-        "value": [
-            {
-                "value": 0.0
-            }
-        ],
-        "validators": {
-            "range": {
-                "min": -99e9,
-                "max": 99e9
-            }
-        }
-    },
-    "ubi_nom_65p": {
-        "title": "Dollar (nominal) amount of universal basic income (UBI) per adult age 65 and over",
-        "description": "Dollar (nominal) amount of universal basic income (UBI) per adult age 65 and over.",
-        "section_1": "Fiscal Policy Parameters",
-        "section_2": "Spending",
-        "notes": "The universal basic income (UBI) per adult age 65 can take positive or negative values (e.g., a negative value may be used to implement a head tax).",
-        "type": "float",
-        "value": [
-            {
-                "value": 0.0
-            }
-        ],
-        "validators": {
-            "range": {
-                "min": -99e9,
-                "max": 99e9
-            }
-        }
-    },
-    "ubi_nom_max": {
-        "title": "Maximum dollar (nominal) amount of universal basic income (UBI) per household when all UBI allowances are added up",
-        "description": "Maximum dollar (nominal) amount of universal basic income (UBI) per household when all UBI allowances are added up.",
-        "section_1": "Fiscal Policy Parameters",
-        "section_2": "Spending",
-        "notes": "The maximum dollar (nominal) amount of universal basic income (UBI) per household can range from $0 per year to $40,000 per year ($3,333 per month).",
-        "type": "float",
-        "value": [
-            {
-                "value": 40000.0
-            }
-        ],
-        "validators": {
-            "range": {
-                "min": 0.0,
-                "max": 40000.0
-            }
-        }
-    },
-    "eta": {
-        "title": "Government transfer allocation",
-        "description": "Matrix that allocated government transfers across households.",
-        "section_1": "Fiscal Policy Parameters",
-        "section_2": "Spending",
-        "notes": "This SxJ matrix gives the fraction of total aggregate transfers going to each age s and ability type j.",
+        "section_2": "Endowments",
+        "notes": "This SxJ matrix gives the fraction of total aggregate remittances going to each age s and ability type j.",
         "type": "float",
         "number_dims": 2,
         "value": [
@@ -3489,7 +4290,7 @@
         "type": "float",
         "value": [
             {
-                "value": 1e-09
+                "value": 1e-08
             }
         ],
         "validators": {
@@ -3507,7 +4308,7 @@
         "type": "float",
         "value": [
             {
-                "value": 1e-05
+                "value": 1e-04
             }
         ],
         "validators": {
diff --git a/ogcore/household.py b/ogcore/household.py
index 11f5ae7cf..b9e18746a 100644
--- a/ogcore/household.py
+++ b/ogcore/household.py
@@ -141,7 +141,8 @@ def get_bq(BQ, j, p, method):
     Calculate bequests to each household.
 
     .. math::
-        bq_{j,s,t} = \zeta_{j,s}\frac{BQ_{t}}{\lambda_{j}\omega_{s,t}}
+        \hat{bq}_{j,s,t} = \zeta_{j,s}
+        \frac{\hat{BQ}_{t}}{\lambda_{j}\hat{\omega}_{s,t}} \quad\forall j,s,t
 
     Args:
         BQ (array_like): aggregate bequests
@@ -202,7 +203,8 @@ def get_tr(TR, j, p, method):
     Calculate transfers to each household.
 
     .. math::
-        tr_{j,s,t} = \zeta_{j,s}\frac{TR_{t}}{\lambda_{j}\omega_{s,t}}
+        \hat{tr}_{j,s,t} = \zeta_{j,s}
+        \frac{\hat{TR}_{t}}{\lambda_{j}\hat{\omega}_{s,t}} \quad\forall j,s,t
 
     Args:
         TR (array_like): aggregate transfers
@@ -212,7 +214,7 @@ def get_tr(TR, j, p, method):
             'TPI'
 
     Returns:
-        tr (array_like): transfers received by each household
+        tr (array_like): transfers received by household
 
     """
     if j is not None:
@@ -238,23 +240,71 @@ def get_tr(TR, j, p, method):
     return tr
 
 
-def get_cons(r, w, p_tilde, b, b_splus1, n, bq, net_tax, e, p):
+def get_rm(RM, j, p, method):
     r"""
-    Calculate household consumption.
+    Calculate remittances to each household.
 
     .. math::
-        c_{j,s,t} =  \frac{(1 + r_{t})b_{j,s,t} + w_t e_{j,s} n_{j,s,t}
-        + bq_{j,s,t} + tr_{j,s,t} - T_{j,s,t} -
-        e^{g_y}b_{j,s+1,t+1}}{1 - \tau^{c}_{s,t}}
+        \hat{rm}_{j,s,t} = \eta_{RM,j,s,t}
+        \frac{\hat{RM}_{t}}{\lambda_{j}\hat{\omega}_{s,t}} \quad\forall j,s,t
 
     Args:
-        r (array_like): the real interest rate
+        RM (array_like): aggregate remittances
+        j (int): index of lifetime ability group
+        p (OG-Core Specifications object): model parameters
+        method (str): adjusts calculation dimensions based on 'SS' or
+            'TPI'
+
+    Returns:
+        rm (array_like): remittances received by household
+
+    """
+    if j is not None:
+        if method == "SS":
+            rm = (p.eta_RM[-1, :, j] * RM) / (p.lambdas[j] * p.omega_SS)
+        else:
+            len_T = RM.shape[0]
+            rm = (p.eta_RM[:len_T, :, j] * RM.reshape((len_T, 1))) / (
+                p.lambdas[j] * p.omega[:len_T, :]
+            )
+    else:
+        if method == "SS":
+            rm = (p.eta_RM[-1, :, :] * RM) / (
+                p.lambdas.reshape((1, p.J)) * p.omega_SS.reshape((p.S, 1))
+            )
+        else:
+            len_T = RM.shape[0]
+            rm = (p.eta_RM[:len_T, :, :] * utils.to_timepath_shape(RM)) / (
+                p.lambdas.reshape((1, 1, p.J))
+                * p.omega[:len_T, :].reshape((len_T, p.S, 1))
+            )
+
+    return rm
+
+
+def get_cons(r_p, w, p_tilde, b, b_splus1, n, bq, rm, net_tax, e, p):
+    r"""
+    Calculate household composite consumption.
+
+    .. math::
+        \hat{c}_{j,s,t} &= \biggl[(1 + r_{p,t})\hat{b}_{j,s,t}
+        + \hat{w}_t e_{j,s}n_{j,s,t} + \hat{bq}_{j,s,t} + \hat{rm}_{j,s,t}
+        + \hat{tr}_{j,s,t} + \hat{ubi}_{j,s,t} + \hat{pension}_{j,s,t}
+        - \hat{tax}_{j,s,t} \\
+        &\qquad - \sum_{i=1}^I\left(1 + \tau^c_{i,t}\right)p_{i,t}\hat{c}_{min,i}
+        - e^{g_y}\hat{b}_{j,s+1,t+1}\biggr] / p_t \\
+        &\qquad\qquad\forall j,t \quad\text{and}\quad E+1\leq s\leq E+S
+        \quad\text{where}\quad \hat{b}_{j,E+1,t}=0
+
+    Args:
+        r_p (array_like): the real interest rate
         w (array_like): the real wage rate
         p_tilde (array_like): the ratio of real GDP to nominal GDP
         b (Numpy array): household savings
         b_splus1 (Numpy array): household savings one period ahead
         n (Numpy array): household labor supply
         bq (Numpy array): household bequests received
+        rm (Numpy array): household remittances received
         net_tax (Numpy array): household net taxes paid
         e (Numpy array): effective labor units
         p (OG-Core Specifications object): model parameters
@@ -264,8 +314,14 @@ def get_cons(r, w, p_tilde, b, b_splus1, n, bq, net_tax, e, p):
 
     """
     cons = (
-        (1 + r) * b + w * e * n + bq - b_splus1 * np.exp(p.g_y) - net_tax
+        (1 + r_p) * b
+        + w * e * n
+        + bq
+        + rm
+        - net_tax
+        - b_splus1 * np.exp(p.g_y)
     ) / p_tilde
+
     return cons
 
 
@@ -320,6 +376,7 @@ def FOC_savings(
     b_splus1,
     n,
     bq,
+    rm,
     factor,
     tr,
     ubi,
@@ -353,6 +410,7 @@ def FOC_savings(
         b_splus2 (Numpy array): household savings two periods ahead
         n (Numpy array): household labor supply
         bq (Numpy array): household bequests received
+        rm (Numpy array): household remittances received
         factor (scalar): scaling factor converting model units to dollars
         tr (Numpy array): government transfers to household
         ubi (Numpy array): universal basic income payment
@@ -449,7 +507,7 @@ def FOC_savings(
         etr_params,
         p,
     )
-    cons = get_cons(r, w, p_tilde, b, b_splus1, n, bq, taxes, e, p)
+    cons = get_cons(r, w, p_tilde, b, b_splus1, n, bq, rm, taxes, e, p)
     deriv = (
         (1 + r)
         - (
@@ -506,6 +564,7 @@ def FOC_labor(
     b_splus1,
     n,
     bq,
+    rm,
     factor,
     tr,
     ubi,
@@ -539,6 +598,7 @@ def FOC_labor(
         b_splus1 (Numpy array): household savings one period ahead
         n (Numpy array): household labor supply
         bq (Numpy array): household bequests received
+        rm (Numpy array): household bequests received
         factor (scalar): scaling factor converting model units to dollars
         tr (Numpy array): government transfers to household
         ubi (Numpy array): universal basic income payment
@@ -637,7 +697,7 @@ def FOC_labor(
         etr_params,
         p,
     )
-    cons = get_cons(r, w, p_tilde, b, b_splus1, n, bq, taxes, e, p)
+    cons = get_cons(r, w, p_tilde, b, b_splus1, n, bq, rm, taxes, e, p)
     deriv = (
         1
         - tau_payroll
diff --git a/ogcore/parameter_plots.py b/ogcore/parameter_plots.py
index 78a83d25e..3c87abe03 100644
--- a/ogcore/parameter_plots.py
+++ b/ogcore/parameter_plots.py
@@ -297,19 +297,20 @@ def plot_elliptical_u(p, plot_MU=True, include_title=False, path=None):
             + k
         )
     fig, ax = plt.subplots()
-    plt.plot(n_grid, CFE, label="CFE")
-    plt.plot(n_grid, ellipse, label="Elliptical U")
+    plt.plot(n_grid, CFE, label="Constant Frisch elasticity")
+    plt.plot(n_grid, ellipse, label="Elliptical disutility")
     if include_title:
         if plot_MU:
             plt.title("Marginal Utility of CFE and Elliptical")
         else:
             plt.title("Constant Frisch Elasticity vs. Elliptical Utility")
-    plt.xlabel(r"Labor Supply")
+    plt.xlabel(r"Labor Supply $n_{j,s,t}$")
     if plot_MU:
-        plt.ylabel(r"Marginal Utility")
+        plt.ylabel(r"Marginal disutility")
     else:
-        plt.ylabel(r"Utility")
+        plt.ylabel(r"Disutility")
     plt.legend(loc="upper left")
+    plt.grid(color="gray", linestyle=":", linewidth=1, alpha=0.5)
     if path is None:
         return fig
     else:
diff --git a/ogcore/parameters.py b/ogcore/parameters.py
index fd653da1b..35c96e688 100644
--- a/ogcore/parameters.py
+++ b/ogcore/parameters.py
@@ -172,6 +172,7 @@ def compute_default_params(self):
             "zeta_K",
             "r_gov_scale",
             "r_gov_shift",
+            "g_RM",
         ]
         for item in tp_param_list:
             param_in = getattr(self, item)
@@ -244,14 +245,20 @@ def compute_default_params(self):
             )
             setattr(self, item, tax_to_set_out)
 
-        # Try to deal with size of eta.  It may vary by S, J, T, but
-        # want to allow user to enter one that varies by only S, S and J,
+        # Try to deal with size of eta and eta_RM. They may vary by S, J, T,
+        # but want to allow user to enter one that varies by only S, S and J,
         # S and T, or T and S and J.
-        param_in = getattr(self, "eta")
-        param_out = extrapolate_array(
-            param_in, dims=(self.T + self.S, self.S, self.J), item="eta"
-        )
-        setattr(self, "eta", param_out)
+        eta_params_to_TP = [
+            "eta",
+            "eta_RM",
+        ]
+        for item in eta_params_to_TP:
+            param_in = getattr(self, item)
+            param_out = extrapolate_array(
+                param_in, dims=(self.T + self.S, self.S, self.J), item=item
+            )
+            setattr(self, item, param_out)
+        # extrapolate lifetime ability e matrix over time dimension
         param_in = getattr(self, "e")
         param_out = extrapolate_array(
             param_in, dims=(self.T, self.S, self.J), item="e"
diff --git a/ogcore/tax.py b/ogcore/tax.py
index 24a1d5724..af161d66e 100644
--- a/ogcore/tax.py
+++ b/ogcore/tax.py
@@ -21,7 +21,8 @@ def ETR_wealth(b, h_wealth, m_wealth, p_wealth):
     Calculates the effective tax rate on wealth.
 
     .. math::
-        T_{j,s,t}^{w} = \frac{h^{w}p_{w}b_{j,s,t}}{h^{w}b_{j,s,t} + m^{w}}
+        \tau_{t}^{etr,w} =
+        p^{w}\left(\frac{h^{w}b_{j,s,t}}{h^{w}b_{j,s,t} + m^{w}}\right)
 
     Args:
         b (Numpy array): savings
@@ -43,9 +44,8 @@ def MTR_wealth(b, h_wealth, m_wealth, p_wealth):
     Calculates the marginal tax rate on wealth from the wealth tax.
 
     .. math::
-        \frac{\partial T_{j,s,t}^{w}}{\partial b_{j,s,t}} =
-        \frac{h^{w}p_{w}b_{j,s,t}}{(b_{j,s,t}h^{w}+m^{w})}\left[2 -
-        \frac{h^{w}p_{w}b_{j,s,t}}{(b_{j,s,t}h^{w}+m^{w})}\right]
+        \tau^{mtrw}_{t} = \tau^{etr,w}_{t}
+        \left[2 - \left(\frac{h^w b_{j,s,t}}{h^w b_{j,s,t} + m^w}\right)\right]
 
     Args:
         b (Numpy array): savings
diff --git a/run_examples/run_ogcore_example.py b/run_examples/run_ogcore_example.py
index 38d610974..19ae12a57 100644
--- a/run_examples/run_ogcore_example.py
+++ b/run_examples/run_ogcore_example.py
@@ -16,6 +16,7 @@
 from ogcore.utils import safe_read_pickle
 import matplotlib.pyplot as plt
 
+# Use a custom matplotlib style file for plots
 style_file_url = (
     "https://raw.githubusercontent.com/PSLmodels/OG-Core/"
     + "master/ogcore/OGcorePlots.mplstyle"
@@ -28,12 +29,15 @@ def main():
     num_workers = min(multiprocessing.cpu_count(), 7)
     print("Number of workers = ", num_workers)
     client = Client(n_workers=num_workers, threads_per_worker=1)
-    run_start_time = time.time()
 
     # Directories to save data
     CUR_DIR = os.path.dirname(os.path.realpath(__file__))
-    base_dir = os.path.join(CUR_DIR, BASELINE_DIR)
-    reform_dir = os.path.join(CUR_DIR, REFORM_DIR)
+    save_dir = os.path.join(CUR_DIR, "OG-Core-Example")
+    base_dir = os.path.join(save_dir, BASELINE_DIR)
+    reform_dir = os.path.join(save_dir, REFORM_DIR)
+
+    # Start timer on overall run time: baseline + reform
+    run_start_time = time.time()
 
     # Set some OG model parameters
     # See default_parameters.json for more description of these parameters
@@ -121,13 +125,13 @@ def main():
 
     # create plots of output
     op.plot_all(
-        base_dir, reform_dir, os.path.join(CUR_DIR, "run_example_plots")
+        base_dir, reform_dir, os.path.join(save_dir, "OG-Core_example_plots")
     )
 
     print("total time was ", (time.time() - run_start_time))
     print("Percentage changes in aggregates:", ans)
     # save percentage change output to csv file
-    ans.to_csv(os.path.join(CUR_DIR, "ogcore_example_output.csv"))
+    ans.to_csv(os.path.join(save_dir, "OG-Core_example_output.csv"))
     client.close()
 
 
diff --git a/setup.py b/setup.py
index 47bd7f8d8..de51a92f2 100755
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,7 @@
 
 setuptools.setup(
     name="ogcore",
-    version="0.12.0",
+    version="0.13.0",
     author="Jason DeBacker and Richard W. Evans",
     license="CC0 1.0 Universal (CC0 1.0) Public Domain Dedication",
     description="A general equilibrium overlapping generations model for fiscal policy analysis",


Test patch:
diff --git a/tests/test_SS.py b/tests/test_SS.py
index 6caff8b22..211041b62 100644
--- a/tests/test_SS.py
+++ b/tests/test_SS.py
@@ -500,8 +500,8 @@ def test_SS_solver_extra(baseline, param_updates, filename, dask_client):
     ],
 )
 def test_inner_loop(baseline, r_p, param_updates, filename, dask_client):
-    # Test SS.inner_loop function.  Provide inputs to function and
-    # ensure that output returned matches what it has been before.
+    # Test SS.inner_loop function. Provide inputs to function and ensure that
+    # output returned matches what it has been before.
     p = Specifications(baseline=baseline, num_workers=NUM_WORKERS)
     p.update_specifications(param_updates)
     p.output_base = CUR_PATH
@@ -532,6 +532,7 @@ def test_inner_loop(baseline, r_p, param_updates, filename, dask_client):
             new_r_gov,
             new_r_p,
             new_w,
+            new_RM,
             new_TR,
             Y,
             new_factor,
@@ -557,6 +558,7 @@ def test_inner_loop(baseline, r_p, param_updates, filename, dask_client):
             _,
             _,
             _,
+            _,
         ) = test_tuple
         expected_tuple = (
             euler_errors,
@@ -570,6 +572,7 @@ def test_inner_loop(baseline, r_p, param_updates, filename, dask_client):
             K_vec,
             L_vec,
             Y_vec,
+            new_RM,
             new_TR,
             Y,
             new_factor,
@@ -981,8 +984,8 @@ def test_inner_loop_extra(baseline, param_updates, filename, dask_client):
 def test_euler_equation_solver(input_tuple, ubi_j, p, expected):
     # Test SS.inner_loop function.  Provide inputs to function and
     # ensure that output returned matches what it has been before.
-    guesses, r, w, bq, tr, _, factor, j = input_tuple
-    args = (r, w, 1.0, bq, tr, ubi_j, factor, j, p)
+    guesses, r, w, bq, rm, tr, _, factor, j = input_tuple
+    args = (r, w, 1.0, bq, rm, tr, ubi_j, factor, j, p)
     test_list = SS.euler_equation_solver(guesses, *args)
     print(repr(test_list))
 
@@ -997,7 +1000,7 @@ def test_euler_equation_solver(input_tuple, ubi_j, p, expected):
     "initial_guess_TR_SS": 0.06,
 }
 filename2 = "run_SS_baseline_use_zeta.pkl"
-param_updates3 = {"zeta_K": [1.0], "initial_guess_r_SS": 0.10}
+param_updates3 = {"zeta_K": [1.0], "initial_guess_r_SS": 0.04}
 filename3 = "run_SS_baseline_small_open.pkl"
 param_updates4 = {
     "zeta_K": [1.0],
@@ -1018,7 +1021,7 @@ def test_euler_equation_solver(input_tuple, ubi_j, p, expected):
     "initial_guess_TR_SS": 0.06,
 }
 filename6 = "run_SS_reform_use_zeta.pkl"
-param_updates7 = {"zeta_K": [1.0], "initial_guess_r_SS": 0.10}
+param_updates7 = {"zeta_K": [1.0], "initial_guess_r_SS": 0.04}
 filename7 = "run_SS_reform_small_open.pkl"
 param_updates8 = {
     "zeta_K": [1.0],
@@ -1131,8 +1134,8 @@ def test_euler_equation_solver(input_tuple, ubi_j, p, expected):
 )
 @pytest.mark.local
 def test_run_SS(tmpdir, baseline, param_updates, filename, dask_client):
-    # Test SS.run_SS function.  Provide inputs to function and
-    # ensure that output returned matches what it has been before.
+    # Test SS.run_SS function. Provide inputs to function and ensure that
+    # output returned matches what it has been before.
     SS.ENFORCE_SOLUTION_CHECKS = True
     # if running reform, then need to solve baseline first to get values
     baseline_dir = os.path.join(tmpdir, "OUTPUT_BASELINE")
diff --git a/tests/test_TPI.py b/tests/test_TPI.py
index 972e33f19..d4d035942 100644
--- a/tests/test_TPI.py
+++ b/tests/test_TPI.py
@@ -1,3 +1,15 @@
+"""
+This module contains tests of the TPI.py module of the OG-Core model. This
+module contains the following tests:
+    - test_get_initial_SS_values(), 3 parameterizations
+    - test_firstdoughnutring(), 1 parameterization
+    - test_twist_doughnut(), 2 parameterizations
+    - test_inner_loop(), 1 parameterization
+    - test_run_TPI_full_run(), 11 parameterizations, local only
+    - test_run_TPI(), 2 parameterizations, local only
+    - test_run_TPI_extra(), 8 parameterizations, local only
+"""
+
 import multiprocessing
 from distributed import Client, LocalCluster
 import pytest
@@ -63,36 +75,13 @@ def test_get_initial_SS_values(baseline, param_updates, filename, dask_client):
         exp_theta,
         exp_baseline_values,
     ) = expected_tuple
-    (
-        B0,
-        b_sinit,
-        b_splus1init,
-        factor,
-        initial_b,
-        initial_n,
-    ) = exp_initial_values
-    B0 = aggr.get_B(exp_ss_vars["bssmat_splus1"], p, "SS", True)
-    initial_b = exp_ss_vars["bssmat_splus1"] * (exp_ss_vars["Bss"] / B0)
-    B0 = aggr.get_B(initial_b, p, "SS", True)
-    b_sinit = np.array(
-        list(np.zeros(p.J).reshape(1, p.J)) + list(initial_b[:-1])
-    )
-    b_splus1init = initial_b
-    exp_initial_values = (
-        B0,
-        b_sinit,
-        b_splus1init,
-        factor,
-        initial_b,
-        initial_n,
-    )
 
-    for i, v in enumerate(exp_initial_values):
-        assert np.allclose(test_initial_values[i], v, equal_nan=True)
+    for k, v in enumerate(exp_initial_values):
+        assert np.allclose(test_initial_values[k], v, equal_nan=True)
 
     if p.baseline_spending:
-        for i, v in enumerate(exp_baseline_values):
-            assert np.allclose(test_baseline_values[i], v, equal_nan=True)
+        for k, v in enumerate(exp_baseline_values):
+            assert np.allclose(test_baseline_values[k], v, equal_nan=True)
 
     assert np.allclose(test_theta, exp_theta)
 
@@ -106,11 +95,11 @@ def test_firstdoughnutring():
     input_tuple = utils.safe_read_pickle(
         os.path.join(CUR_PATH, "test_io_data", "firstdoughnutring_inputs.pkl")
     )
-    guesses, r, w, bq, tr, theta, factor, ubi, j, initial_b = input_tuple
+    guesses, r, w, bq, rm, tr, theta, factor, ubi, j, initial_b = input_tuple
     p_tilde = 1.0  # needed for multi-industry version
     p = Specifications()
     test_list = TPI.firstdoughnutring(
-        guesses, r, w, p_tilde, bq, tr, theta, factor, ubi, j, initial_b, p
+        guesses, r, w, p_tilde, bq, rm, tr, theta, factor, ubi, j, initial_b, p
     )
 
     expected_list = utils.safe_read_pickle(
@@ -150,6 +139,7 @@ def test_twist_doughnut(file_inputs, file_outputs):
         r,
         w,
         bq,
+        rm,
         tr,
         theta,
         factor,
@@ -165,12 +155,13 @@ def test_twist_doughnut(file_inputs, file_outputs):
     ) = input_tuple
     p_tilde = np.ones_like(r)  # needed for multi-industry version
     p = Specifications()
-    input_tuple = (
+    input_tuple2 = (
         guesses,
         r,
         w,
         p_tilde,
         bq,
+        rm,
         tr,
         theta,
         factor,
@@ -184,7 +175,7 @@ def test_twist_doughnut(file_inputs, file_outputs):
         initial_b,
         p,
     )
-    test_list = TPI.twist_doughnut(*input_tuple)
+    test_list = TPI.twist_doughnut(*input_tuple2)
     expected_list = utils.safe_read_pickle(file_outputs)
     assert np.allclose(np.array(test_list), np.array(expected_list), atol=1e-5)
 
@@ -201,10 +192,11 @@ def test_inner_loop():
     r_p = outer_loop_vars_old[2]
     w = outer_loop_vars_old[1]
     BQ = outer_loop_vars_old[3]
-    TR = outer_loop_vars_old[4]
-    theta = outer_loop_vars_old[5]
+    RM = outer_loop_vars_old[4]
+    TR = outer_loop_vars_old[5]
+    theta = outer_loop_vars_old[6]
     p_m = np.ones((p.T + p.S, p.M))
-    outer_loop_vars = (r_p, r, w, p_m, BQ, TR, theta)
+    outer_loop_vars = (r_p, r, w, p_m, BQ, RM, TR, theta)
     test_tuple = TPI.inner_loop(
         guesses, outer_loop_vars, initial_values, ubi, j, ind, p
     )
@@ -230,7 +222,7 @@ def test_inner_loop():
 filename4 = os.path.join(
     CUR_PATH, "test_io_data", "run_TPI_outputs_reform_baseline_spend.pkl"
 )
-param_updates5 = {"zeta_K": [1.0], "initial_guess_r_SS": 0.10}
+param_updates5 = {"zeta_K": [1.0], "initial_guess_r_SS": 0.04}
 filename5 = os.path.join(
     CUR_PATH, "test_io_data", "run_TPI_outputs_baseline_small_open.pkl"
 )
diff --git a/tests/test_aggregates.py b/tests/test_aggregates.py
index e7128a893..6d6237bd7 100644
--- a/tests/test_aggregates.py
+++ b/tests/test_aggregates.py
@@ -269,6 +269,852 @@ def test_get_BQ(r, b_splus1, j, p, method, PreTP, expected):
     assert np.allclose(BQ, expected)
 
 
+# Set up test for get_RM
+Y_RM_1 = 0.625
+p_RM_1 = Specifications(baseline=True)
+p_RM_1.alpha_RM_1 = 0.05
+p_RM_1.alpha_RM_T = 0.05
+p_RM_1.g_RM = ((np.exp(p_RM_1.g_y) * (1 + p_RM_1.g_n_ss)) - 1) * np.ones(
+    p_RM_1.T + p_RM_1.S
+)
+Y_RM_2 = Y_RM_1 * np.ones(p_RM_1.T + p_RM_1.S)
+p_RM_3 = copy.deepcopy(p_RM_1)
+p_RM_3.g_RM = (
+    (np.exp(p_RM_1.g_y) * (1 + p_RM_1.g_n_ss)) - 1 + 0.005
+) * np.ones(p_RM_1.T + p_RM_1.S)
+expected_RM_1 = 0.03125
+expected_RM_2 = np.array(
+    [
+        0.03125,
+        0.03107792,
+        0.03091237,
+        0.03075153,
+        0.0305999,
+        0.03045509,
+        0.03031471,
+        0.03018496,
+        0.03007849,
+        0.02998137,
+        0.02989228,
+        0.02981457,
+        0.02974598,
+        0.02967802,
+        0.02961485,
+        0.0295564,
+        0.02950259,
+        0.02945346,
+        0.02940861,
+        0.02936794,
+        0.0293313,
+        0.02930701,
+        0.02929526,
+        0.02929475,
+        0.02930538,
+        0.02932674,
+        0.02936019,
+        0.02940232,
+        0.02945246,
+        0.02950992,
+        0.02957364,
+        0.02964255,
+        0.02971554,
+        0.02979144,
+        0.02986916,
+        0.02994745,
+        0.03002574,
+        0.03010308,
+        0.03017881,
+        0.03025273,
+        0.03032412,
+        0.03039269,
+        0.03045844,
+        0.03052127,
+        0.03058095,
+        0.03063723,
+        0.03069058,
+        0.03074124,
+        0.03078938,
+        0.03083523,
+        0.03087825,
+        0.03091818,
+        0.03095533,
+        0.0309901,
+        0.03102291,
+        0.03105326,
+        0.03108156,
+        0.03110763,
+        0.03113148,
+        0.03115336,
+        0.03117259,
+        0.03118943,
+        0.03120391,
+        0.03121603,
+        0.03122628,
+        0.03123451,
+        0.03124089,
+        0.03124577,
+        0.03124937,
+        0.03125197,
+        0.03125341,
+        0.03125376,
+        0.03125323,
+        0.03125219,
+        0.03125085,
+        0.03124934,
+        0.0312479,
+        0.03124663,
+        0.03124557,
+        0.03124484,
+        0.03124424,
+        0.03124372,
+        0.03124352,
+        0.03124368,
+        0.03124409,
+        0.03124472,
+        0.03124558,
+        0.03124652,
+        0.03124735,
+        0.03124826,
+        0.03124923,
+        0.03125015,
+        0.031251,
+        0.03125182,
+        0.0312525,
+        0.031253,
+        0.03125329,
+        0.03125338,
+        0.03125329,
+        0.03125304,
+        0.03125267,
+        0.0312522,
+        0.03125167,
+        0.03125112,
+        0.03125056,
+        0.03125004,
+        0.03124956,
+        0.03124915,
+        0.03124881,
+        0.03124856,
+        0.0312484,
+        0.03124833,
+        0.03124834,
+        0.03124842,
+        0.03124857,
+        0.03124877,
+        0.03124901,
+        0.03124927,
+        0.03124954,
+        0.0312498,
+        0.03125005,
+        0.03125003,
+        0.03125002,
+        0.03125001,
+        0.03125001,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+    ]
+)
+expected_RM_3 = np.array(
+    [
+        0.03125,
+        0.03122852,
+        0.03121269,
+        0.03120076,
+        0.03119738,
+        0.0312002,
+        0.03120689,
+        0.0312239,
+        0.03126453,
+        0.0313146,
+        0.03137285,
+        0.03144293,
+        0.03152261,
+        0.03160301,
+        0.03168856,
+        0.03177927,
+        0.03187514,
+        0.03197627,
+        0.0320823,
+        0.03219318,
+        0.03230883,
+        0.03242431,
+        0.03253865,
+        0.03264945,
+        0.03275579,
+        0.03285663,
+        0.03295314,
+        0.03304137,
+        0.03312065,
+        0.0331905,
+        0.03325025,
+        0.03329941,
+        0.03333762,
+        0.03336462,
+        0.03338037,
+        0.03338477,
+        0.03337854,
+        0.03336207,
+        0.03333609,
+        0.03330184,
+        0.03325994,
+        0.03321149,
+        0.0331578,
+        0.03310002,
+        0.03303904,
+        0.03297562,
+        0.0329112,
+        0.03284683,
+        0.03278338,
+        0.03272166,
+        0.03266152,
+        0.03260304,
+        0.03254675,
+        0.03249326,
+        0.03244301,
+        0.03239548,
+        0.03235101,
+        0.03230928,
+        0.03227011,
+        0.03223354,
+        0.03219864,
+        0.0321654,
+        0.0321336,
+        0.03210296,
+        0.03207372,
+        0.03204546,
+        0.03201809,
+        0.03199175,
+        0.03196643,
+        0.03194218,
+        0.03191868,
+        0.03189579,
+        0.03187356,
+        0.03185224,
+        0.03183187,
+        0.03181251,
+        0.03179425,
+        0.03177713,
+        0.03176108,
+        0.03174616,
+        0.03173208,
+        0.03171875,
+        0.03170634,
+        0.03169485,
+        0.03168412,
+        0.0316741,
+        0.03166473,
+        0.03165586,
+        0.03164726,
+        0.03163908,
+        0.03163129,
+        0.03162377,
+        0.03161646,
+        0.03160939,
+        0.03160244,
+        0.03159554,
+        0.03158866,
+        0.0315818,
+        0.03157497,
+        0.03156817,
+        0.03156143,
+        0.03155477,
+        0.03154823,
+        0.03154182,
+        0.03153557,
+        0.03152949,
+        0.03152362,
+        0.03151794,
+        0.03151248,
+        0.03150724,
+        0.03150221,
+        0.03149739,
+        0.03149277,
+        0.03148833,
+        0.03148406,
+        0.03147995,
+        0.03147598,
+        0.03147212,
+        0.03146837,
+        0.0314647,
+        0.0314611,
+        0.0314573,
+        0.0314536,
+        0.03144998,
+        0.03144644,
+        0.03144297,
+        0.03143957,
+        0.03143624,
+        0.03143298,
+        0.03142978,
+        0.03142664,
+        0.03142357,
+        0.03142055,
+        0.03141759,
+        0.03141468,
+        0.03141183,
+        0.03140903,
+        0.03140628,
+        0.03140358,
+        0.03140093,
+        0.03139832,
+        0.03139576,
+        0.03139325,
+        0.03139078,
+        0.03138835,
+        0.03138596,
+        0.03138361,
+        0.0313813,
+        0.03137902,
+        0.03137679,
+        0.03137459,
+        0.03137242,
+        0.03137029,
+        0.03136819,
+        0.03136613,
+        0.0313641,
+        0.0313621,
+        0.03136013,
+        0.03135818,
+        0.03135627,
+        0.03135439,
+        0.03135253,
+        0.0313507,
+        0.0313489,
+        0.03134712,
+        0.03134537,
+        0.03134365,
+        0.03134195,
+        0.03134027,
+        0.03133861,
+        0.03133698,
+        0.03133537,
+        0.03133379,
+        0.03133222,
+        0.03133067,
+        0.03132915,
+        0.03132765,
+        0.03132616,
+        0.0313247,
+        0.03132325,
+        0.03132182,
+        0.03132041,
+        0.03131902,
+        0.03131765,
+        0.03131629,
+        0.03131495,
+        0.03131363,
+        0.03131232,
+        0.03131103,
+        0.03130975,
+        0.03130849,
+        0.03130725,
+        0.03130602,
+        0.0313048,
+        0.0313036,
+        0.03130242,
+        0.03130124,
+        0.03130008,
+        0.03129894,
+        0.03129781,
+        0.03129669,
+        0.03129558,
+        0.03129448,
+        0.0312934,
+        0.03129233,
+        0.03129127,
+        0.03129022,
+        0.03128919,
+        0.03128816,
+        0.03128715,
+        0.03128615,
+        0.03128515,
+        0.03128417,
+        0.0312832,
+        0.03128224,
+        0.03128129,
+        0.03128035,
+        0.03127942,
+        0.0312785,
+        0.03127759,
+        0.03127668,
+        0.03127579,
+        0.0312749,
+        0.03127403,
+        0.03127316,
+        0.0312723,
+        0.03127145,
+        0.03127061,
+        0.03126978,
+        0.03126895,
+        0.03126814,
+        0.03126733,
+        0.03126653,
+        0.03126573,
+        0.03126495,
+        0.03126417,
+        0.03126339,
+        0.03126263,
+        0.03126187,
+        0.03126112,
+        0.03126038,
+        0.03125964,
+        0.03125891,
+        0.03125819,
+        0.03125747,
+        0.03125676,
+        0.03125606,
+        0.03125536,
+        0.03125467,
+        0.03125399,
+        0.03125331,
+        0.03125263,
+        0.03125197,
+        0.03125131,
+        0.03125065,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+        0.03125,
+    ]
+)
+test_data_RM = [
+    (Y_RM_1, p_RM_1, "SS", expected_RM_1),
+    (Y_RM_2, p_RM_1, "TPI", expected_RM_2),
+    (Y_RM_2, p_RM_3, "TPI", expected_RM_3),
+]
+
+
+@pytest.mark.parametrize(
+    "Y,p,method,expected",
+    test_data_RM,
+    ids=[
+        "SS, alpha_RM_T=0.05",
+        "TPI, model growth",
+        "TPI, bigger growth",
+    ],
+)
+def test_get_RM(Y, p, method, expected):
+    """
+    Test of aggregate remittances function.
+    """
+    RM = aggr.get_RM(Y, p, method)
+    assert np.allclose(RM, expected)
+
+
 p = Specifications()
 rho_vec = np.zeros((1, 40))
 rho_vec[0, -1] = 1.0
@@ -863,8 +1709,11 @@ def test_resource_constraint():
     I_d = np.array([20, 5, 0.6, 10, 1])
     I_g = np.zeros_like(I_d)
     net_capital_flows = np.array([0.1, 0, 0.016, -1.67, -0.477])
+    RM = np.array([0.0, 0.0, 0.0, 0.0, 0.0])
     expected = np.array([-9.1, 1, 0.974, 13.67, 1.477])
-    test_RC = aggr.resource_constraint(Y, C, G, I_d, I_g, net_capital_flows)
+    test_RC = aggr.resource_constraint(
+        Y, C, G, I_d, I_g, net_capital_flows, RM
+    )
 
     assert np.allclose(test_RC, expected)
 
diff --git a/tests/test_demographics.py b/tests/test_demographics.py
index b49b58b27..7ea0e2167 100644
--- a/tests/test_demographics.py
+++ b/tests/test_demographics.py
@@ -262,7 +262,7 @@ def test_infant_mort():
     mort_rates, infmort_rate = demographics.get_mort(100, 0, 99, graph=False)
     # check that infant mortality equals rate hardcoded into
     # demographics.py
-    assert infmort_rate == 0.00477758
+    assert infmort_rate == 0.00496921
 
 
 def test_pop_rebin():
diff --git a/tests/test_household.py b/tests/test_household.py
index e7a26eb48..dbe5bec7a 100644
--- a/tests/test_household.py
+++ b/tests/test_household.py
@@ -1,9 +1,12 @@
 import pytest
 import numpy as np
 import copy
-from ogcore import household
+import os
+from ogcore import household, utils
 from ogcore.parameters import Specifications
 
+CUR_PATH = os.path.abspath(os.path.dirname(__file__))
+
 test_data = [
     (0.1, 1, 10),
     (0.2, 2.5, 55.90169944),
@@ -225,6 +228,54 @@ def test_get_tr(TR, j, p, method, expected):
     assert np.allclose(test_value, expected)
 
 
+# Set up test for get_rm
+(
+    RM1,
+    RM2,
+    RM3,
+    RM4,
+    expected_rm1,
+    expected_rm2,
+    expected_rm3,
+    expected_rm4,
+) = utils.safe_read_pickle(
+    os.path.join(CUR_PATH, "test_io_data", "RMrm_test_tuple.pkl")
+)
+j1 = 0
+p_rm_1 = Specifications()
+p_rm_2 = copy.deepcopy(p_rm_1)
+p_rm_2.alpha_RM_1 = 0.05
+p_rm_2.alpha_RM_T = 0.05
+p_rm_2.g_RM = ((np.exp(p_rm_2.g_y) * (1 + p_rm_2.g_n_ss)) - 1) * np.ones(
+    p_rm_2.T + p_rm_2.S
+)
+j2 = 3
+j3 = 4
+j4 = 6
+p_rm_4 = copy.deepcopy(p_rm_2)
+p_rm_4.g_RM = (
+    (np.exp(p_rm_4.g_y) * (1 + p_rm_4.g_n_ss)) - 1 + 0.005
+) * np.ones(p_rm_4.T + p_rm_4.S)
+test_data_rm = [
+    (RM1, j1, p_rm_1, "SS", expected_rm1),
+    (RM2, j2, p_rm_2, "SS", expected_rm2),
+    (RM3, j3, p_rm_2, "TPI", expected_rm3),
+    (RM4, j4, p_rm_4, "TPI", expected_rm4),
+]
+
+
+@pytest.mark.parametrize(
+    "RM,j,p,method,expected",
+    test_data_rm,
+    ids=["SS, zero", "SS, rm>0", "TPI, model growth", "TPI, bigger growth"],
+)
+def test_get_rm(RM, j, p, method, expected):
+    # Test the get_rm function
+    rm = household.get_rm(RM, j, p, method)
+    print("Test value = ", rm)
+    assert np.allclose(rm, expected)
+
+
 p1 = Specifications()
 p1.e = 0.99
 p1.lambdas = np.array([0.25])
@@ -235,6 +286,7 @@ def test_get_tr(TR, j, p, method, expected):
 b_splus1_1 = 0.55
 n1 = 0.8
 BQ1 = 0.1
+rm1 = 0.0
 tau_c1 = 0.05
 bq1 = BQ1 / p1.lambdas
 net_tax1 = 0.02
@@ -254,6 +306,7 @@ def test_get_tr(TR, j, p, method, expected):
 tau_c2 = np.array([0.08, 0.32, 0.02])
 BQ2 = np.array([0.1, 2.4, 0.2])
 bq2 = BQ2 / p2.lambdas
+rm2 = np.zeros_like(bq2)
 net_tax2 = np.array([0.02, 0.5, 1.4])
 j2 = None
 
@@ -271,6 +324,7 @@ def test_get_tr(TR, j, p, method, expected):
 n3 = np.array([[0.9, 0.5], [0.8, 1.1], [0, 0.77]])
 BQ3 = np.array([1.3, 0.3])
 bq3 = BQ3 / p3.lambdas.reshape(p3.J)
+rm3 = np.zeros_like(bq3)
 tau_c3 = np.array([[0.09, 0.05], [0.08, 0.11], [0.0, 0.077]])
 net_tax3 = np.array([[0.1, 1.1], [0.4, 0.44], [0.6, 1.7]])
 j3 = None
@@ -314,6 +368,7 @@ def test_get_tr(TR, j, p, method, expected):
     (1, 3, 1),
 )
 bq4 = BQ4 / p4.lambdas.reshape(1, 1, 2)
+rm4 = np.zeros_like(bq4)
 tau_c4 = np.array(
     [
         np.array([[0.02, 0.03], [0.04, 0.05], [0.055, 0.066]]),
@@ -334,15 +389,15 @@ def test_get_tr(TR, j, p, method, expected):
 
 test_data = [
     (
-        (r1, w1, b1, b_splus1_1, n1, bq1, net_tax1, p1),
+        (r1, w1, b1, b_splus1_1, n1, bq1, rm1, net_tax1, p1),
         1.288650006,
     ),
     (
-        (r2, w2, b2, b_splus1_2, n2, bq2, net_tax2, p2),
+        (r2, w2, b2, b_splus1_2, n2, bq2, rm2, net_tax2, p2),
         np.array([1.288650006, 13.76350909, 5.188181864]),
     ),
     (
-        (r3, w3, b3, b_splus1_3, n3, bq3, net_tax3, p3),
+        (r3, w3, b3, b_splus1_3, n3, bq3, rm3, net_tax3, p3),
         np.array(
             [
                 [4.042579933, 0.3584699],
@@ -352,7 +407,7 @@ def test_get_tr(TR, j, p, method, expected):
         ),
     ),
     (
-        (r4, w4, b4, b_splus1_4, n4, bq4, net_tax4, p4),
+        (r4, w4, b4, b_splus1_4, n4, bq4, rm4, net_tax4, p4),
         np.array(
             [
                 np.array(
@@ -396,10 +451,10 @@ def test_get_tr(TR, j, p, method, expected):
 )
 def test_get_cons(model_args, expected):
     # Test consumption calculation
-    r, w, b, b_splus1, n, bq, net_tax, p = model_args
+    r, w, b, b_splus1, n, bq, rm, net_tax, p = model_args
     p_tilde = np.ones_like(w)
     test_value = household.get_cons(
-        r, w, p_tilde, b, b_splus1, n, bq, net_tax, p.e, p
+        r, w, p_tilde, b, b_splus1, n, bq, rm, net_tax, p.e, p
     )
 
     assert np.allclose(test_value, expected)
@@ -489,6 +544,7 @@ def test_get_cons(model_args, expected):
 b_splus1 = np.array([0.8, 0.5, 0.1])
 n = np.array([0.9, 0.8, 0.5])
 bq = 0.1
+rm = 0.0
 factor = 120000
 tr = 0.22
 ubi_ss = np.zeros(p1.S)
@@ -502,6 +558,7 @@ def test_get_cons(model_args, expected):
     b_splus1,
     n,
     bq,
+    rm,
     factor,
     tr,
     ubi_ss,
@@ -519,6 +576,7 @@ def test_get_cons(model_args, expected):
     b_splus1,
     n,
     bq,
+    rm,
     factor,
     tr,
     ubi_ss,
@@ -547,6 +605,7 @@ def test_get_cons(model_args, expected):
 b_splus1_path = np.tile(np.reshape(np.array([0.8, 0.5, 0.1]), (1, 3)), (3, 1))
 n_path = np.tile(np.reshape(np.array([0.9, 0.8, 0.5]), (1, 3)), (3, 1))
 bq_vec = np.array([0.1, 0.05, 0.15])
+rm_vec = np.zeros_like(bq_vec)
 tr_vec = np.array([0.22, 0.15, 0.0])
 etr_params_tpi = np.empty((p1.S, etr_params.shape[2]))
 mtry_params_tpi = np.empty((p1.S, mtry_params.shape[2]))
@@ -560,6 +619,7 @@ def test_get_cons(model_args, expected):
     np.diag(b_splus1_path),
     np.diag(n_path),
     bq_vec,
+    rm_vec,
     factor,
     tr_vec,
     ubi_ss,
@@ -640,6 +700,7 @@ def test_FOC_savings(model_vars, in_params, expected):
         b_splus1,
         n,
         BQ,
+        rm,
         factor,
         tr,
         ubi,
@@ -668,6 +729,7 @@ def test_FOC_savings(model_vars, in_params, expected):
             b_splus1,
             n,
             BQ,
+            rm,
             factor,
             tr,
             ubi,
@@ -689,6 +751,7 @@ def test_FOC_savings(model_vars, in_params, expected):
             b_splus1,
             n,
             BQ,
+            rm,
             factor,
             tr,
             ubi,
@@ -792,6 +855,7 @@ def test_FOC_savings(model_vars, in_params, expected):
 b_splus1 = np.array([0.8, 0.5, 0.1])
 n = np.array([0.9, 0.8, 0.5])
 bq = 0.1
+rm = 0.0
 factor = 120000
 tr = 0.22
 ubi_ss = np.zeros(p1.S)
@@ -803,6 +867,7 @@ def test_FOC_savings(model_vars, in_params, expected):
     b_splus1,
     n,
     bq,
+    rm,
     factor,
     tr,
     ubi_ss,
@@ -831,6 +896,7 @@ def test_FOC_savings(model_vars, in_params, expected):
 b_splus1_path = np.tile(np.reshape(np.array([0.8, 0.5, 0.1]), (1, 3)), (3, 1))
 n_path = np.tile(np.reshape(np.array([0.9, 0.8, 0.5]), (1, 3)), (3, 1))
 bq_vec = np.tile(np.array([0.1, 0.05, 0.15]).reshape(3, 1), (1, 3))
+rm_vec = np.zeros_like(bq_vec)
 tr_vec = np.tile(np.array([0.22, 0.15, 0.0]).reshape(3, 1), (1, 3))
 etr_params_tpi = np.empty((p1.S, etr_params.shape[2]))
 mtrx_params_tpi = np.empty((p1.S, mtrx_params.shape[2]))
@@ -843,6 +909,7 @@ def test_FOC_savings(model_vars, in_params, expected):
     b_splus1_path,
     n_path,
     bq_vec,
+    rm_vec,
     factor,
     tr_vec,
     ubi_ss,
@@ -926,6 +993,7 @@ def test_FOC_labor(model_vars, params, expected):
         b_splus1,
         n,
         bq,
+        rm,
         factor,
         tr,
         ubi,
@@ -952,6 +1020,7 @@ def test_FOC_labor(model_vars, params, expected):
         b_splus1,
         n,
         bq,
+        rm,
         factor,
         tr,
         ubi,
diff --git a/tests/test_io_data/RMrm_test_tuple.pkl b/tests/test_io_data/RMrm_test_tuple.pkl
new file mode 100644
index 000000000..5b2785410
Binary files /dev/null and b/tests/test_io_data/RMrm_test_tuple.pkl differ
diff --git a/tests/test_io_data/euler_eqn_solver_inputs.pkl b/tests/test_io_data/euler_eqn_solver_inputs.pkl
index 3fa9becbd..c9de7a931 100644
Binary files a/tests/test_io_data/euler_eqn_solver_inputs.pkl and b/tests/test_io_data/euler_eqn_solver_inputs.pkl differ
diff --git a/tests/test_io_data/firstdoughnutring_inputs.pkl b/tests/test_io_data/firstdoughnutring_inputs.pkl
index 9aa01c5cb..622ffe5f3 100644
Binary files a/tests/test_io_data/firstdoughnutring_inputs.pkl and b/tests/test_io_data/firstdoughnutring_inputs.pkl differ
diff --git a/tests/test_io_data/inner_loop_outputs_baseline.pkl b/tests/test_io_data/inner_loop_outputs_baseline.pkl
index 59509fb9f..5caa0e623 100644
Binary files a/tests/test_io_data/inner_loop_outputs_baseline.pkl and b/tests/test_io_data/inner_loop_outputs_baseline.pkl differ
diff --git a/tests/test_io_data/inner_loop_outputs_baseline_balance_budget.pkl b/tests/test_io_data/inner_loop_outputs_baseline_balance_budget.pkl
index 9063631c3..7b05a801c 100644
Binary files a/tests/test_io_data/inner_loop_outputs_baseline_balance_budget.pkl and b/tests/test_io_data/inner_loop_outputs_baseline_balance_budget.pkl differ
diff --git a/tests/test_io_data/inner_loop_outputs_baseline_delta_tau0.pkl b/tests/test_io_data/inner_loop_outputs_baseline_delta_tau0.pkl
index eea841455..40e2a2c03 100644
Binary files a/tests/test_io_data/inner_loop_outputs_baseline_delta_tau0.pkl and b/tests/test_io_data/inner_loop_outputs_baseline_delta_tau0.pkl differ
diff --git a/tests/test_io_data/inner_loop_outputs_baseline_small_open.pkl b/tests/test_io_data/inner_loop_outputs_baseline_small_open.pkl
index a10175a20..f239f6da7 100644
Binary files a/tests/test_io_data/inner_loop_outputs_baseline_small_open.pkl and b/tests/test_io_data/inner_loop_outputs_baseline_small_open.pkl differ
diff --git a/tests/test_io_data/inner_loop_outputs_reform.pkl b/tests/test_io_data/inner_loop_outputs_reform.pkl
index 9d01bef5c..d3e3a3f53 100644
Binary files a/tests/test_io_data/inner_loop_outputs_reform.pkl and b/tests/test_io_data/inner_loop_outputs_reform.pkl differ
diff --git a/tests/test_io_data/inner_loop_outputs_reform_M4.pkl b/tests/test_io_data/inner_loop_outputs_reform_M4.pkl
index 846bbdcba..e347361f9 100644
Binary files a/tests/test_io_data/inner_loop_outputs_reform_M4.pkl and b/tests/test_io_data/inner_loop_outputs_reform_M4.pkl differ
diff --git a/tests/test_io_data/inner_loop_outputs_reform_MneI.pkl b/tests/test_io_data/inner_loop_outputs_reform_MneI.pkl
index f3b3e277e..5adc26829 100644
Binary files a/tests/test_io_data/inner_loop_outputs_reform_MneI.pkl and b/tests/test_io_data/inner_loop_outputs_reform_MneI.pkl differ
diff --git a/tests/test_io_data/inner_loop_outputs_reform_baselinespending.pkl b/tests/test_io_data/inner_loop_outputs_reform_baselinespending.pkl
index 4136d84db..f24c73db7 100644
Binary files a/tests/test_io_data/inner_loop_outputs_reform_baselinespending.pkl and b/tests/test_io_data/inner_loop_outputs_reform_baselinespending.pkl differ
diff --git a/tests/test_io_data/intial_SS_values_baseline.pkl b/tests/test_io_data/intial_SS_values_baseline.pkl
index 368b66969..c25fb1b98 100644
Binary files a/tests/test_io_data/intial_SS_values_baseline.pkl and b/tests/test_io_data/intial_SS_values_baseline.pkl differ
diff --git a/tests/test_io_data/intial_SS_values_reform.pkl b/tests/test_io_data/intial_SS_values_reform.pkl
index 55390ed37..7c3df36b0 100644
Binary files a/tests/test_io_data/intial_SS_values_reform.pkl and b/tests/test_io_data/intial_SS_values_reform.pkl differ
diff --git a/tests/test_io_data/intial_SS_values_reform_base_spend.pkl b/tests/test_io_data/intial_SS_values_reform_base_spend.pkl
index 8d6ac0cfd..07ecbda55 100644
Binary files a/tests/test_io_data/intial_SS_values_reform_base_spend.pkl and b/tests/test_io_data/intial_SS_values_reform_base_spend.pkl differ
diff --git a/tests/test_io_data/run_TPI_outputs_baseline_2.pkl b/tests/test_io_data/run_TPI_outputs_baseline_2.pkl
index 89f68d002..941009412 100644
Binary files a/tests/test_io_data/run_TPI_outputs_baseline_2.pkl and b/tests/test_io_data/run_TPI_outputs_baseline_2.pkl differ
diff --git a/tests/test_io_data/run_TPI_outputs_baseline_Kg_nonzero_2.pkl b/tests/test_io_data/run_TPI_outputs_baseline_Kg_nonzero_2.pkl
index c8a661a4b..ddb4cf919 100644
Binary files a/tests/test_io_data/run_TPI_outputs_baseline_Kg_nonzero_2.pkl and b/tests/test_io_data/run_TPI_outputs_baseline_Kg_nonzero_2.pkl differ
diff --git a/tests/test_io_data/run_TPI_outputs_baseline_delta_tau0_2.pkl b/tests/test_io_data/run_TPI_outputs_baseline_delta_tau0_2.pkl
index 8061f41b1..f77287244 100644
Binary files a/tests/test_io_data/run_TPI_outputs_baseline_delta_tau0_2.pkl and b/tests/test_io_data/run_TPI_outputs_baseline_delta_tau0_2.pkl differ
diff --git a/tests/test_io_data/run_TPI_outputs_baseline_small_open_2.pkl b/tests/test_io_data/run_TPI_outputs_baseline_small_open_2.pkl
index 28d4dbe4d..d25e87802 100644
Binary files a/tests/test_io_data/run_TPI_outputs_baseline_small_open_2.pkl and b/tests/test_io_data/run_TPI_outputs_baseline_small_open_2.pkl differ
diff --git a/tests/test_io_data/run_TPI_outputs_baseline_small_open_some_periods_2.pkl b/tests/test_io_data/run_TPI_outputs_baseline_small_open_some_periods_2.pkl
index ed11aff2c..30676690b 100644
Binary files a/tests/test_io_data/run_TPI_outputs_baseline_small_open_some_periods_2.pkl and b/tests/test_io_data/run_TPI_outputs_baseline_small_open_some_periods_2.pkl differ
diff --git a/tests/test_io_data/run_TPI_outputs_reform_2.pkl b/tests/test_io_data/run_TPI_outputs_reform_2.pkl
index ff3dc0596..f95a99db1 100644
Binary files a/tests/test_io_data/run_TPI_outputs_reform_2.pkl and b/tests/test_io_data/run_TPI_outputs_reform_2.pkl differ
diff --git a/tests/test_io_data/run_TPI_outputs_reform_baseline_spend_2.pkl b/tests/test_io_data/run_TPI_outputs_reform_baseline_spend_2.pkl
index 5166ce3a5..782ddafa6 100644
Binary files a/tests/test_io_data/run_TPI_outputs_reform_baseline_spend_2.pkl and b/tests/test_io_data/run_TPI_outputs_reform_baseline_spend_2.pkl differ
diff --git a/tests/test_io_data/tax_func_estimate_outputs.pkl b/tests/test_io_data/tax_func_estimate_outputs.pkl
index f047518e3..eb9a071a6 100644
Binary files a/tests/test_io_data/tax_func_estimate_outputs.pkl and b/tests/test_io_data/tax_func_estimate_outputs.pkl differ
diff --git a/tests/test_io_data/tax_func_loop_outputs.pkl b/tests/test_io_data/tax_func_loop_outputs.pkl
index 24e6c0244..be5e711de 100644
Binary files a/tests/test_io_data/tax_func_loop_outputs.pkl and b/tests/test_io_data/tax_func_loop_outputs.pkl differ
diff --git a/tests/test_io_data/tpi_inner_loop_inputs.pkl b/tests/test_io_data/tpi_inner_loop_inputs.pkl
index 88481e887..8a176e231 100644
Binary files a/tests/test_io_data/tpi_inner_loop_inputs.pkl and b/tests/test_io_data/tpi_inner_loop_inputs.pkl differ
diff --git a/tests/test_io_data/twist_doughnut_inputs_2.pkl b/tests/test_io_data/twist_doughnut_inputs_2.pkl
index e6cb7716c..e0c03bace 100644
Binary files a/tests/test_io_data/twist_doughnut_inputs_2.pkl and b/tests/test_io_data/twist_doughnut_inputs_2.pkl differ
diff --git a/tests/test_io_data/twist_doughnut_inputs_S.pkl b/tests/test_io_data/twist_doughnut_inputs_S.pkl
index b1b1c57a1..8983ed94a 100644
Binary files a/tests/test_io_data/twist_doughnut_inputs_S.pkl and b/tests/test_io_data/twist_doughnut_inputs_S.pkl differ
diff --git a/tests/test_run_example.py b/tests/test_run_example.py
index 6a7395e63..c5bbc34dc 100644
--- a/tests/test_run_example.py
+++ b/tests/test_run_example.py
@@ -45,7 +45,7 @@ def test_run_ogcore_example(f=call_run_ogcore_example):
     cur_path = os.path.split(os.path.abspath(__file__))[0]
     path = Path(cur_path)
     roe_output_dir = os.path.join(
-        path.parent, "run_examples", "OUTPUT_BASELINE"
+        path.parent, "run_examples", "OG-Core-Example", "OUTPUT_BASELINE"
     )
     shutil.rmtree(roe_output_dir)
 
@@ -66,11 +66,16 @@ def test_run_ogcore_example_output(f=call_run_ogcore_example):
     )
     # read in output from this run
     test_df = pd.read_csv(
-        os.path.join(path.parent, "run_examples", "ogcore_example_output.csv")
+        os.path.join(
+            path.parent,
+            "run_examples",
+            "OG-Core-Example",
+            "OG-Core_example_output.csv",
+        )
     )
     # Delete directory created by run_ogcore_example.py
     roe_output_dir = os.path.join(
-        path.parent, "run_examples", "OUTPUT_BASELINE"
+        path.parent, "run_examples", "OG-Core-Example", "OUTPUT_BASELINE"
     )
     shutil.rmtree(roe_output_dir)
 
diff --git a/tests/test_txfunc.py b/tests/test_txfunc.py
index 6e86dd21e..4aabc045c 100644
--- a/tests/test_txfunc.py
+++ b/tests/test_txfunc.py
@@ -164,21 +164,21 @@ def test_replace_outliers():
 expected_tuple_DEP = (
     np.array(
         [
-            2.27262567e-23,
-            6.52115408e-05,
-            2.58988624e-13,
-            5.79701075e-09,
-            3.39354147e-01,
-            7.60132613e-01,
-            9.14365331e-01,
+            6.34662816e-17,
+            6.05703755e-05,
+            2.32905968e-13,
+            6.74269844e-08,
+            8.00000000e-01,
+            7.32264836e-04,
+            8.90355422e-01,
             9.02760087e-06,
             9.02760087e-06,
-            3.39345119e-03,
-            7.60123585e-03,
+            7.99990972e-03,
+            7.23237235e-06,
             9.02760087e-06,
         ]
     ),
-    237677.14110076256,
+    237645.51573934805,
     152900,
 )
 
@@ -198,8 +198,8 @@ def test_replace_outliers():
 )
 expected_tuple_linear = (0.26135747, 0.0, 152900)
 expected_tuple_GS = (
-    np.array([3.03099171e-01, 9.64733478e-01, 1.77900933e-05]),
-    256366.42971360413,
+    np.array([0.2380778, 0.44519796, 0.00958987]),
+    357042.1125832452,
     152900,
 )
 expected_tuple_linear_mtrx = (0.37030104, 0.0, 152900)
diff --git a/tests/testing_params.json b/tests/testing_params.json
index e54fd5c2a..a27b440c9 100644
--- a/tests/testing_params.json
+++ b/tests/testing_params.json
@@ -3,8 +3,11 @@
 "S": 40,
 "J": 2,
 "T": 120,
+"tG1": 20,
+"tG2": 80,
 "lambdas": [0.6, 0.4],
 "eta": [[0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125]],
+"eta_RM": [[0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125], [0.0125, 0.0125]],
 "maxiter": 35,
 "mindist_SS": 1e-6,
 "mindist_TPI": 1e-3,
@@ -2331,4 +2334,4 @@
     0.0197469 , 0.01730843, 0.01474155, 0.01285935, 0.01119112,
     0.00984811, 0.00801472, 0.00696934, 0.00592803, 0.00454995,
     0.00352386, 0.00256576, 0.00167457, 0.00106337, 0.00061474]
-}
\ No newline at end of file
+}