Fiscal Functions#

fiscal.py modules

ogcore.fiscal#


Fiscal policy functions for unbalanced budgeting. In particular, some functions require time-path calculation.


ogcore.fiscal.D_G_path(r_gov, dg_fixed_values, p)[source]#

Calculate the time paths of debt and government spending

\[\begin{split}\begin{split} &e^{g_y}\left(1 + \tilde{g}_{n,t+1}\right)\hat{D}_{t+1} + \hat{Rev}_t = (1 + r_{gov,t})\hat{D}_t + \hat{G}_t + \hat{TR}_t + \hat{UBI}_t \quad\forall 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}\hat{Y}_{t} + (1-\rho_{d})\hat{D}_{t}\right] - (1+r_{gov,t})\hat{D}_{t} - \hat{TR}_{t} - \hat{UBI}_t + \hat{Rev}_{t}}{\alpha_g \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}\hat{Y}_{t} - (1+r_{gov,t})\hat{D}_{t} - \hat{TR}_{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 \\ &e^{g_y}\bigl[1 + \tilde{g}_{n,t+1}\bigr]\hat{D}^{f}_{t+1} = \hat{D}^{f}_{t} + \zeta_{D}\Bigl(e^{g_y}\bigl[1 + \tilde{g}_{n,t+1}\bigr]\hat{D}_{t+1} - \hat{D}_{t}\Bigr) \quad\forall t \end{split}\end{split}\]
Parameters:
  • r_gov (Numpy array) – interest rate on government debt over the time path

  • dg_fixed_values (tuple) – (Y, total_tax_revenue, agg_pension_outlays, UBI_outlays,TR, D0, G0) values of variables that are taken as given in the government budget constraint

  • Gbaseline (Numpy array) – government spending over the time path in the baseline equilibrium, used only if baseline_spending=True

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

Returns:

fiscal variable path output:

  • D (Numpy array): government debt over the time path

  • G (Numpy array): government spending over the time path

  • D_d (Numpy array): domestic held government debt over the

    time path

  • D_f (Numpy array): foreign held government debt over the

    time path

  • new_borrowing_f: new borrowing from foreigners

Return type:

(tuple)

ogcore.fiscal.get_D_ss(r_gov, Y, p)[source]#

Calculate the steady-state values of government spending and debt

\[\begin{split}\begin{split} \bar{D} &= \alpha_D \bar{Y}\\ \bar{D_d} &= \bar{D} - \bar{D}^{f}\\ \bar{D_f} &= \zeta_{D}\bar{D} \\ \overline{\text{new borrowing}} &= (e^{g_{y}}(1 + \bar{g}_n) - 1)\bar{D}\\ \overline{\text{debt service}} &= \bar{r}_{gov}\bar{D} \\ \overline{\text{new foreign borrowing}} &= (e^{g_{y}}(1 + \bar{g}_n) - 1)\bar{D_f}\\ \end{split}\end{split}\]
Parameters:
  • r_gov (scalar) – steady-state interest rate on government debt

  • Y (scalar) – steady-state GDP

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

Returns:

steady-state fiscal variables:

  • D (scalar): steady-state government debt

  • D_d (scalar): steady-state domestic held government debt

  • D_f (scalar): steady-state foreign held government debt

  • new_borrowing: steady-state new borrowing

  • debt_service: steady-state debt service costs

  • new_borrowing_f: steady-state borrowing from foreigners

Return type:

(tuple)

ogcore.fiscal.get_G_ss(Y, total_tax_revenue, agg_pension_outlays, TR, UBI_outlays, I_g, new_borrowing, debt_service, p)[source]#

Calculate the steady-state values of government spending.

\[\bar{G} = \bar{Rev} + \bar{D}\bigl[(1 + \bar{g}_n)e^{g_y} - (1 + \bar{r}_{gov})\bigr] - \bar{I}_g - \bar{TR} - \overline{UBI}\]
Parameters:
  • Y (scalar) – aggregate output

  • total_tax_revenue (scalar) – steady-state tax revenue

  • agg_pension_outlays (scalar) – steady-state pension outlays

  • TR (scalar) – steady-state transfer spending

  • UBI_outlays (scalar) – steady-state total UBI outlays

  • I_g (scalar) – steady-state public infrastructure investment

  • new_borrowing (scalar) – steady-state amount of new borrowing

  • debt_service (scalar) – steady-state debt service costs

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

Returns:

steady-state government spending

Return type:

G (tuple)

ogcore.fiscal.get_I_g(Y, Ig_baseline, p, method='SS')[source]#

Find investment in public capital

\[I_{g,t} = \alpha_{I,t}Y_{t}\]
Parameters:
  • Y (array_like) – aggregate output

  • Ig_baseline (array_like) – public infrastructure investment in the baseliine simulation

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

  • method (str) – either ‘SS’ for steady-state or ‘TPI’ for transition path

Returns

I_g (array_like): investment in public capital

ogcore.fiscal.get_K_g(K_g0, I_g, p, method)[source]#

Law of motion for the government capital stock

\[K_{g,t+1} = \frac{(1 - \delta_g)K_{g,t} + I_{g,t}} {(1 + \tilde{g}_{n,t+1})e^{g_y}}\]
Parameters:
  • K_g0 (scalar) – initial stock of public capital

  • I_g (array_like) – government infrastructure investment

  • p (ParamTools object) – model parameters

  • method (str) – either ‘SS’ for steady-state or ‘TPI’ for transition path

Returns

K_g (array_like): stock of public capital

ogcore.fiscal.get_TR(Y, TR, G, total_tax_revenue, agg_pension_outlays, UBI_outlays, I_g, p, method)[source]#

Function to compute aggregate transfers. Note that this excludes transfer spending through the public pension system.

\[\begin{split}TR^{'}_{t}= \begin{cases} Revenue,& \text{if balanced budget} \\ TR^{baseline}, & \text{if baseline spending}\\ \alpha_{T,t}Y_{t}, & \text{otherwise} \end{cases}\end{split}\]
Parameters:
  • Y (array_like) – aggregate output

  • TR (array_like) – aggregate government transfers

  • G (array_like) – total government spending

  • total_tax_revenue (array_like) – total tax revenue net of government pension benefits

  • agg_pension_outlays (array_like) – total government pension outlays

  • UBI_outlays (array_like) – total universal basic income (UBI) outlays

  • I_g (array_like) – public infrastructure investement

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

  • method (str) – whether doing SS or TP calculation

Returns:

new value of aggregate government transfers

Return type:

new_TR (array_like)

ogcore.fiscal.get_debt_service_f(r_p, D_f)[source]#

Function to compute foreign debt service payments.

\[\text{Foreign debt service}_{t} = r_{p,t} * D^{f}_{t}\]

Args:

Returns:

foreign debt service payment amount

Return type:

debt_service_f (array_like)

ogcore.fiscal.get_r_gov(r, p, method)[source]#

Determine the interest rate on government debt

\[r_{gov,t} = \max\{(1-\tau_{d,t}r_{t} - \mu_d, 0.0\}\]
Parameters:
  • r (array_like) – interest rate on private capital debt over the time path or in the steady state

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

Returns:

interest rate on government debt over the

time path or in the steady-state

Return type:

r_gov (array_like)