Skip to content

Commit e2fcdd2

Browse files
committed
update tax lecture
1 parent 33fdd78 commit e2fcdd2

File tree

1 file changed

+35
-24
lines changed

1 file changed

+35
-24
lines changed

lectures/tax_smooth.md

Lines changed: 35 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@ In this lecture, we'll study a famous model of optimal tax policy that Robert Ba
2020

2121
In this lecture, we'll study what is often called the "tax-smoothing model" using matrix multiplication and matrix inversion, the same tools that we used in this QuantEcon lecture {doc}`present values <pv>`.
2222

23-
This lecture is a sister lecture to the consumption-smoothing model of Milton Friedman {cite}`Friedman1956` and Robert Hall {cite}`Hall1978` that we studied in this QuantEcon lecture {doc}`consumption-smoothing <cons_smooth>`.
23+
This lecture is a sister lecture to our previous lecture on {doc}`consumption-smoothing <cons_smooth>`.
24+
25+
We will see how "reinterpretating" the paramters in the consumption-smoothing model can lead to the tax-smoothing model.
2426

2527
Formulas presented in {doc}`present value formulas<pv>` are again at the core of the tax-smoothing model because we shall use them to compute the present value of government expenditures.
2628

2729
The government's optimization problem is to choose a tax collection path that minimizes the present value of the costs of raising revenue.
2830

29-
The key idea that inspired Barro was that temporary government spending surges (like wars or natural disasters) create a stream of expenditure requirements that could be optimally financed by issuing debt and raising taxes gradually over time.
31+
The key idea that inspired Barro was that temporary government spending surges (like wars or natural disasters) create a stream of expenditure requirements that could be optimally financed by issuing debt and raising taxes *gradually* over time.
3032

3133
This approach allows the government to minimize the distortionary costs of taxation by keeping tax rates relatively stable.
3234

@@ -44,7 +46,7 @@ The model describes a government that operates from time $t=0, 1, \ldots, S$, fa
4446

4547
The government expenditure stream is exogenous spending requirements that the government must finance.
4648

47-
Analogous to {doc}`consumption-smoothing <cons_smooth>`, The model takes a government expenditure stream as an input, regarding it as "exogenous" in the sense of not being determined by the model.
49+
Analogous to {doc}`consumption-smoothing <cons_smooth>`, the model takes a government expenditure stream as an input, regarding it as "exogenous" in the sense of not being determined by the model.
4850

4951
The government faces a gross interest rate of $R >1$ that is constant over time, at which it is free to borrow or lend, subject to limits that we'll describe below.
5052

@@ -106,26 +108,37 @@ To answer this question, we shall eventually evaluate alternative budget feasibl
106108
```{math}
107109
:label: cost
108110
109-
L = \sum_{t=0}^S \beta^t (g_1 T_t - \frac{g_2}{2} T_t^2 )
111+
L = - \sum_{t=0}^S \beta^t (g_1 T_t - \frac{g_2}{2} T_t^2 )
110112
```
111113
112114
where $g_1 > 0, g_2 > 0$.
113115
116+
114117
This is called the "present value of revenue-raising costs" in {cite}`Barro1979`.
115118
116-
When $\beta R \approx 1$, the quadratic term $-\frac{g_2}{2} T_t^2$ captures increasing marginal costs of taxation, implying that tax distortions rise more than proportionally with tax rates. This creates an incentive for tax smoothing.
119+
When $\beta R \approx 1$, the quadratic term $-\frac{g_2}{2} T_t^2$ captures increasing marginal costs of taxation, implying that tax distortions rise more than proportionally with tax rates.
117120
118-
Indeed, we shall see that when $\beta R = 1$ (a condition assumed in many public finance models), criterion {eq}`cost` leads to smoother tax paths.
121+
This creates an incentive for tax smoothing.
122+
123+
Indeed, we shall see that when $\beta R = 1$, criterion {eq}`cost` leads to smoother tax paths.
119124
120125
By **smoother** we mean tax rates that are as close as possible to being constant over time.
121126
122127
The preference for smooth tax paths that is built into the model gives it the name "tax-smoothing model", following {cite}`Barro1979`'s seminal work.
123128
129+
Or equivalently, we can transform this into the same problem as in the {doc}`consumption-smoothing <cons_smooth>` lecture by maximizing the welfare criterion:
130+
131+
```{math}
132+
:label: welfare_tax
133+
134+
J = \sum_{t=0}^S \beta^t (g_1 T_t - \frac{g_2}{2} T_t^2 )
135+
```
136+
124137
Let's dive in and do some calculations that will help us understand how the model works.
125138
126139
Here we use default parameters $R = 1.05$, $g_1 = 1$, $g_2 = 1/2$, and $S = 65$.
127140
128-
We create a Python **namedtuple** to store these parameters with default values.
141+
We create a Python ``namedtuple`` to store these parameters with default values.
129142
130143
```{code-cell} ipython3
131144
TaxSmoothing = namedtuple("TaxSmoothing",
@@ -141,7 +154,7 @@ def create_tax_smoothing_model(R=1.05, g1=1, g2=1/2, S=65):
141154
return TaxSmoothing(R, g1, g2, β_seq, S)
142155
```
143156
144-
## Barro Tax-Smoothing Model
157+
## Barro tax-smoothing model
145158
146159
A key object is the present value of government expenditures at time $0$:
147160
@@ -177,7 +190,7 @@ T_t = T_0 \quad t =0, 1, \ldots, S
177190
$$
178191
179192
(Later we'll present a "variational argument" that shows that this constant path minimizes
180-
criterion {eq}`cost` when $\beta R =1$.)
193+
criterion {eq}`cost` and maximizes {eq}`welfare_tax` when $\beta R =1$.)
181194
182195
In this case, we can use the intertemporal budget constraint to write
183196
@@ -187,7 +200,7 @@ $$ (eq:taxsmoothing)
187200
188201
Equation {eq}`eq:taxsmoothing` is the tax-smoothing model in a nutshell.
189202
190-
## Mechanics of Tax-Smoothing Model
203+
## Mechanics of tax-smoothing model
191204
192205
As promised, we'll provide step-by-step instructions on how to use linear algebra, readily implemented in Python, to compute all objects in play in the tax-smoothing model.
193206
@@ -262,7 +275,6 @@ def compute_optimal(model, B0, G_seq):
262275
T0 = (1 - 1/R) / (1 - (1/R)**(S+1)) * (B0 + h0)
263276
T_seq = T0*np.ones(S+1)
264277
265-
# verify
266278
A = np.diag(-R*np.ones(S), k=-1) + np.eye(S+1)
267279
b = G_seq - T_seq
268280
b[0] = b[0] + B0
@@ -282,7 +294,7 @@ The drop in government expenditures could reflect a change in spending requireme
282294
283295
```{code-cell} ipython3
284296
# Initial debt
285-
B0 = -2 # initial government debt
297+
B0 = 2 # initial government debt
286298
287299
# Government expenditure process
288300
G_seq = np.concatenate([np.ones(46), np.zeros(20)])
@@ -313,15 +325,20 @@ plt.show()
313325
314326
Note that $B_{S+1} = 0$, as anticipated.
315327
316-
We can evaluate cost criterion {eq}`cost` which measures the total cost of taxation
328+
We can evaluate cost criterion {eq}`cost` which measures the total cost / welfare of taxation
317329
318330
```{code-cell} ipython3
319331
def cost(model, T_seq):
320332
β_seq, g1, g2 = model.β_seq, model.g1, model.g2
321333
cost_seq = g1 * T_seq - g2/2 * T_seq**2
322-
return β_seq @ cost_seq
334+
return - β_seq @ cost_seq
323335
324336
print('Cost:', cost(tax_model, T_seq))
337+
338+
def welfare(model, T_seq):
339+
return - cost(model, T_seq)
340+
341+
print('Welfare:', welfare(tax_model, T_seq))
325342
```
326343
327344
### Experiments
@@ -372,14 +389,6 @@ np.ones(24), np.zeros(20)])
372389
plot_ts(tax_model, B0, G_seq_pos)
373390
```
374391
375-
```{code-cell} ipython3
376-
# Spending cut W_0 = -2.5
377-
G_seq_neg = np.concatenate([np.ones(21), np.array([-2.5]),
378-
np.ones(24), np.zeros(20)])
379-
380-
plot_ts(tax_model, B0, G_seq_neg)
381-
```
382-
383392
#### Experiment 2: permanent expenditure shift
384393
385394
Now we assume a permanent increase in government expenditures of $L$ in year 21 of the $G$-sequence.
@@ -466,7 +475,7 @@ The approach we'll take is an elementary example of the "calculus of variations"
466475
467476
Let's dive in and see what the key idea is.
468477
469-
To explore what types of tax paths are welfare-improving, we shall create an **admissible tax path variation sequence** $\{v_t\}_{t=0}^S$
478+
To explore what types of tax paths are cost-minimizing / welfare-improving, we shall create an **admissible tax path variation sequence** $\{v_t\}_{t=0}^S$
470479
that satisfies
471480
472481
$$
@@ -547,6 +556,7 @@ fig, ax = plt.subplots()
547556
ϕs= [.95, 1.02]
548557
colors = {.01: 'tab:blue', .05: 'tab:green'}
549558
params = np.array(np.meshgrid(ξ1s, ϕs)).T.reshape(-1, 2)
559+
wel_opt = welfare(tax_model, T_seq)
550560
551561
for i, param in enumerate(params):
552562
ξ1, ϕ = param
@@ -555,7 +565,8 @@ for i, param in enumerate(params):
555565
Tvar_seq = compute_variation(model=tax_model,
556566
ξ1=ξ1, ϕ=ϕ, B0=B0,
557567
G_seq=G_seq)
558-
print(f'cost={cost(tax_model, Tvar_seq)}')
568+
print(f'welfare={welfare(tax_model, Tvar_seq)}')
569+
print(f'welfare < optimal: {welfare(tax_model, Tvar_seq) < wel_opt}')
559570
print('-'*64)
560571
561572
if i % 2 == 0:

0 commit comments

Comments
 (0)