Tax Functions#

tax.py modules

ogcore.tax#

Functions for taxes in the steady state and along the transition path.#

ogcore.tax.ETR_income(r, w, b, n, factor, e, etr_params, labor_noncompliance_rate, capital_noncompliance_rate, p)[source]#

Calculates effective personal income tax rate.

Parameters:
  • r (array_like) – real interest rate

  • w (array_like) – real wage rate

  • b (Numpy array) – savings

  • n (Numpy array) – labor supply

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

  • e (Numpy array) – effective labor units

  • etr_params (list) – list of effective tax rate function parameters or nonparametric function

  • labor_noncompliance_rate (Numpy array) – income tax noncompliance rate for labor income

  • capital_noncompliance_rate (Numpy array) – income tax noncompliance rate for capital income

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

Returns:

effective tax rate on total income

Return type:

tau (Numpy array)

ogcore.tax.ETR_wealth(b, h_wealth, m_wealth, p_wealth)[source]#

Calculates the effective tax rate on wealth.

\[T_{j,s,t}^{w} = \frac{h^{w}p_{w}b_{j,s,t}}{h^{w}b_{j,s,t} + m^{w}}\]
Parameters:
  • b (Numpy array) – savings

  • h_wealth (scalar) – parameter of wealth tax function

  • p_wealth (scalar) – parameter of wealth tax function

  • m_wealth (scalar) – parameter of wealth tax function

Returns:

effective tax rate on wealth, size = SxJ

Return type:

tau_w (Numpy array)

ogcore.tax.MTR_income(r, w, b, n, factor, mtr_capital, e, etr_params, mtr_params, noncompliance_rate, p)[source]#

Generates the marginal tax rate on labor income for households.

Parameters:
  • r (array_like) – real interest rate

  • w (array_like) – real wage rate

  • b (Numpy array) – savings

  • n (Numpy array) – labor supply

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

  • mtr_capital (bool) – whether to compute the marginal tax rate on capital income or labor income

  • e (Numpy array) – effective labor units

  • etr_params (list) – list of effective tax rate function parameters or nonparametric function

  • mtr_params (list) – list of marginal tax rate function parameters or nonparametric function

  • noncompliance_rate (Numpy array) – income tax noncompliance rate

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

Returns:

marginal tax rate on income source

Return type:

tau (Numpy array)

ogcore.tax.MTR_wealth(b, h_wealth, m_wealth, p_wealth)[source]#

Calculates the marginal tax rate on wealth from the wealth tax.

\[\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]\]
Parameters:
  • b (Numpy array) – savings

  • h_wealth (scalar) – parameter of wealth tax function

  • p_wealth (scalar) – parameter of wealth tax function

  • m_wealth (scalar) – parameter of wealth tax function

Returns:

marginal tax rate on wealth, size = SxJ

Return type:

tau_prime (Numpy array)

ogcore.tax.bequest_tax_liab(r, b, bq, t, j, method, p)[source]#

Calculate liability due from taxes on bequests for each household.

Parameters:
  • r (array_like) – real interest rate

  • b (Numpy array) – savings

  • bq (Numpy array) – bequests received

  • t (int) – time period

  • j (int) – index of lifetime income group

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

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

Returns:

bequest tax liability for each household

Return type:

T_BQ (Numpy array)

ogcore.tax.get_biz_tax(w, Y, L, K, p_m, p, m, method)[source]#

Finds total business income tax revenue.

\[R_{t}^{b} = \sum_{m=1}^{M}\tau_{m,t}^{b}(Y_{m,t} - w_{t}L_{m,t}) - \tau_{m,t}^{b}\delta_{m,t}^{\tau}K_{m,t}^{\tau} - \tau^{inv}_{m,t}I_{m,t}\]
Parameters:
  • r (array_like) – real interest rate

  • Y (array_like) – aggregate output for each industry

  • L (array_like) – aggregate labor demand for each industry

  • K (array_like) – aggregate capital demand for each industry

  • p_m (array_like) – output prices

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

  • m (int or None) – index for production industry, if None, then compute for all industries

Returns:

aggregate business tax revenue

Return type:

business_revenue (array_like)

ogcore.tax.income_tax_liab(r, w, b, n, factor, t, j, method, e, etr_params, p)[source]#

Calculate income and payroll tax liability for each household

Parameters:
  • r (array_like) – real interest rate

  • w (array_like) – real wage rate

  • b (Numpy array) – savings

  • n (Numpy array) – labor supply

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

  • t (int) – time period

  • j (int) – index of lifetime income group

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

  • e (Numpy array) – effective labor units

  • etr_params (list) – effective tax rate function parameters

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

Returns:

total income and payroll taxes paid for each

household

Return type:

T_I (Numpy array)

ogcore.tax.net_taxes(r, w, b, n, bq, factor, tr, ubi, theta, t, j, shift, method, e, etr_params, p)[source]#

Calculate net taxes paid for each household.

Parameters:
  • r (array_like) – real interest rate

  • w (array_like) – real wage rate

  • b (Numpy array) – savings

  • n (Numpy array) – labor supply

  • bq (Numpy array) – bequests received

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

  • tr (Numpy array) – government transfers to the household

  • ubi (Numpy array) – universal basic income payments to households

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

  • t (int) – time period

  • j (int) – index of lifetime income group

  • shift (bool) – whether computing for periods 0–s or 1–(s+1), =True for 1–(s+1)

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

  • e (Numpy array) – effective labor units

  • etr_params (list) – list of effective tax rate function parameters

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

Returns:

net taxes paid for each household

Return type:

net_tax (Numpy array)

ogcore.tax.pension_amount(w, n, theta, t, j, shift, method, e, p)[source]#

Calculate public pension benefit amounts for each household.

Parameters:
  • w (array_like) – real wage rate

  • n (Numpy array) – labor supply

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

  • t (int) – time period

  • j (int) – index of lifetime income group

  • shift (bool) – whether computing for periods 0–s or 1–(s+1), =True for 1–(s+1)

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

  • e (Numpy array) – effective labor units

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

Returns:

pension amount for each household

Return type:

pension (Numpy array)

ogcore.tax.replacement_rate_vals(nssmat, wss, factor_ss, j, p)[source]#

Calculates replacement rate values for the social security system.

Parameters:
  • nssmat (Numpy array) – initial guess at labor supply, size = SxJ

  • new_w (scalar) – steady state real wage rate

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

  • j (int) – index of lifetime income group

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

Returns:

social security replacement rate value for

lifetime income group j

Return type:

theta (Numpy array)

ogcore.tax.wealth_tax_liab(r, b, t, j, method, p)[source]#

Calculate wealth tax liability for each household.

Parameters:
  • r (array_like) – real interest rate

  • b (Numpy array) – savings

  • t (int) – time period

  • j (int) – index of lifetime income group

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

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

Returns:

wealth tax liability for each household

Return type:

T_W (Numpy array)