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)