Aggregates Equations#

aggregates.py modules

ogcore.aggregates#

Functions to compute economic aggregates.#

ogcore.aggregates.get_B(b, p, method, preTP)[source]#

Calculate aggregate savings

\[B_{t} = \sum_{s=E}^{E+S}\sum_{j=0}^{J}\omega_{s,t}\lambda_{j}b_{j,s,t}\]
Parameters:
  • b (Numpy array) – savings of households

  • p (OG-Core Specifications object) – model parameters

  • method (str) – adjusts calculation dimensions based on ‘SS’ or ‘TPI’

  • preTP (bool) – whether calculation is for the pre-time path period amount of savings. If True, then need to use omega_S_preTP.

Returns:

aggregate supply of savings

Return type:

B (array_like)

ogcore.aggregates.get_BQ(r, b_splus1, j, p, method, preTP)[source]#

Calculation of aggregate bequests. If use_zeta is False, then computes aggregate bequests within each lifetime income group.

\[BQ_{t} = \sum_{s=E}^{E+S}\sum_{j=0}^{J}\rho_{s}\omega_{s,t} \lambda_{j}b_{j,s+1,1}\]
Parameters:
  • r (array_like) – the real interest rate

  • b_splus1 (numpy array) – household savings one period ahead

  • j (int) – index of lifetime income group

  • p (OG-Core Specifications object) – model parameters

  • method (str) – adjusts calculation dimensions based on SS or TPI

  • preTP (bool) – whether calculation is for the pre-time path period amount of savings. If True, then need to use omega_S_preTP.

Returns:

aggregate bequests, overall or by lifetime

income group, depending on use_zeta value.

Return type:

BQ (array_like)

ogcore.aggregates.get_C(c, p, method)[source]#

Calculation of aggregate consumption.

Set up to only take one consumption good at a time. This function is called in a loop to get consumption for all goods.

\[C_{t} = \sum_{s=E}^{E+S}\sum_{j=0}^{J}\omega_{s,t} \lambda_{j}c_{j,s,t}\]
Parameters:
  • c (Numpy array) – consumption of households

  • p (OG-Core Specifications object) – model parameters

  • method (str) – adjusts calculation dimensions based on ‘SS’ or ‘TPI’

Returns:

aggregate consumption

Return type:

C (array_like)

ogcore.aggregates.get_I(b_splus1, K_p1, K, p, method)[source]#

Calculate aggregate investment.

\[I_{t} = (1 + g_{n,t+1})e^{g_{y}}(K_{t+1} - \sum_{s=E}^{E+S} \sum_{j=0}^{J}\omega_{s+1,t}i_{s+1,t}\lambda_{j}b_{j,s+1,t+1} \ (1+ g_{n,t+1})) - (1 - \delta)K_{t}\]
Parameters:
  • b_splus1 (Numpy array) – savings of households

  • K_p1 (array_like) – aggregate capital, one period ahead

  • K (array_like) – aggregate capital

  • p (OG-Core Specifications object) – model parameters

  • method (str) – adjusts calculation dimensions based on ‘SS’ or ‘TPI’, also compute total investment (not net of immigrants)

Returns:

aggregate investment

Return type:

aggI (array_like)

ogcore.aggregates.get_K_splits(B, K_demand_open, D_d, zeta_K)[source]#

Returns total domestic capital as well as amounts of domestic capital held by domestic and foreign investors separately.

\[\begin{split}\begin{split} \hat{K}_{t} &= \hat{K}^{f}_{t} + \hat{K}^{d}_{t}\\ \hat{K}^{d}_{t} &= \hat{B}_{t} + \hat{D}^{d}_{t}\\ \hat{K}^{f}_{t} &= \zeta_{D}\left(\hat{K}^{open}_{t} - K^{d}_{t}\right) \end{split}\end{split}\]
Parameters:
  • B (array_like) – aggregate savings by domestic households

  • K_demand_open (array_like) – capital demand at the world interest rate

  • D_d (array_like) – governmet debt held by domestic households

  • zeta_K (array_like) – fraction of excess capital demand satisfied by foreign investors

Returns:

series of capital stocks:

  • K (array_like): total capital

  • K_d (array_like): capital held by domestic households

  • K_f (array_like): capital held by foreign households

Return type:

(tuple)

ogcore.aggregates.get_L(n, p, method)[source]#

Calculate aggregate labor supply.

\[L_{t} = \sum_{s=E}^{E+S}\sum_{j=0}^{J}\omega_{s,t}\lambda_{j}n_{j,s,t}\]
Parameters:
  • n (Numpy array) – labor supply of households

  • p (OG-Core Specifications object) – model parameters

  • method (str) – adjusts calculation dimensions based on ‘SS’ or ‘TPI’

Returns:

aggregate labor supply

Return type:

L (array_like)

ogcore.aggregates.get_RM(Y, p, method)[source]#

Calculation of aggregate remittances.

\[\begin{split}\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}\end{split}\]
Parameters:
  • 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:

aggregate remittances

Return type:

RM (array_like)

ogcore.aggregates.get_ptilde(p_i, tau_c, alpha_c, method='SS')[source]#

Calculate price of composite good.

\[\tilde{p}_{t} = \prod_{i=1}^{I} \left(\frac{(1 + \tau^{c}_{i,t})p_{i,j}}{\alpha_{i,j}}\right)^{\alpha_{i,j}}\]
Parameters:
  • p_i (array_like) – prices for consumption good i

  • tau_c (array_like) – consumption taxes on good i

  • alpha_c (array_like) – consumption share parameters

Returns:

tax-inclusive price of composite good

Return type:

p_tilde (array_like)

ogcore.aggregates.get_r_p(r, r_gov, p_m, K_vec, K_g, D, MPKg_vec, p, method)[source]#

Compute the interest rate on the household’s portfolio of assets, a mix of government debt and private equity.

\[r_{p,t} = \frac{r_{gov,t}D_{t} + r_{K,t}K_{t}}{D_{t} + K_{t}}\]
Parameters:
  • r (array_like) – the real interest rate

  • r_gov (array_like) – the real interest rate on government debt

  • p_m (array_like) – good prices

  • K_vec (array_like) – aggregate capital demand from each industry

  • K_g (array_like) – aggregate public capital

  • D (array_like) – aggregate government debt

  • MPKg_vec (array_like) – marginal product of government capital for each industry

  • p (OG-Core Specifications object) – model parameters

  • method (str) – adjusts calculation dimensions based on ‘SS’ or ‘TPI’

Returns:

the real interest rate on the household portfolio

Return type:

r_p (array_like)

ogcore.aggregates.resource_constraint(Y, C, G, I_d, I_g, net_capital_flows, RM)[source]#

Compute the error in the resource constraint.

\[\begin{split}\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} ... \\ &\qquad -\: \hat{\text{net capital outflows}}_t - \hat{RM}_t \end{split}\end{split}\]
Parameters:
  • Y (array_like) – aggregate output by industry

  • C (array_like) – aggregate consumption by industry

  • G (array_like) – aggregate government spending by industry

  • 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:

error in the resource constraint

Return type:

rc_error (array_like)

ogcore.aggregates.revenue(r, w, b, n, bq, c, Y, L, K, p_m, factor, ubi, theta, etr_params, e, p, m, method)[source]#

Calculate aggregate tax revenue.

\[\begin{split}\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}) ... \\ &\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}\end{split}\]
Parameters:
  • r (array_like) – the real interest rate

  • w (array_like) – the real wage rate

  • b (Numpy array) – household savings

  • n (Numpy array) – household labor supply

  • bq (Numpy array) – household bequests received

  • c (Numpy array) – household consumption

  • Y (array_like) – aggregate output

  • L (array_like) – aggregate labor

  • K (array_like) – aggregate capital

  • p_m (array_like) – output prices

  • factor (scalar) – scaling factor converting model units to dollars

  • ubi (array_like) – universal basic income household distributions

  • theta (Numpy array) – social security replacement rate for each lifetime income group

  • etr_params (list) – list of parameters of the effective tax rate functions

  • e (Numpy array) – effective labor units

  • p (OG-Core Specifications object) – model parameters

  • method (str) – adjusts calculation dimensions based on ‘SS’ or ‘TPI’

Returns:

aggregate tax revenue iit_payroll_tax_revenue (array_like): aggregate income and

payroll tax revenue

agg_pension_outlays (array_like): aggregate outlays for gov’t

pensions

UBI_outlays (array_like): aggregate universal basic income (UBI)

outlays

bequest_tax_revenue (array_like): aggregate bequest tax revenue wealth_tax_revenue (array_like): aggregate wealth tax revenue cons_tax_revenue (array_like): aggregate consumption tax revenue business_tax_revenue (array_like): aggregate business tax

revenue

payroll_tax_revenue (array_like): aggregate payroll tax revenue iit_tax_revenue (array_like): aggregate income tax revenue

Return type:

total_tax_revenue (array_like)