TD Introduction à la macroéconomie
2025-03-03
Supposez qu’un ménage résolve le problème consommation suivant sur deux périodes avec les impôts :
\[ \max_{c_1,\, c_2,\, a} \; u(c_1) + \beta\, u(c_2) \]
subject to \[ a = a_0 + y_1 - \tau_1 - c_1\] \[c_2 = y_2 - \tau_2 + (1+r)a \]
avec \[ u(c)=\frac{c^{1-\sigma}}{1-\sigma}, \]
où - \(c_1\) est la consommation en période 1, - \(c_2\) est la consommation en période 2, - \(y_1\) est le revenu du ménage en période 1, - \(y_2\) est le revenu du ménage en période 2, - \(\tau_1\) sont les impôts en période 1, - \(\tau_2\) sont les impôts en période 2, - \(a_0\) est la richesse initiale.
#| '!! shinylive warning !!': |
#| shinylive does not work in self-contained HTML documents.
#| Please set `embed-resources: false` in your metadata.
#| standalone: true
#| viewerHeight: 550
from shiny import App, reactive, render, ui
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve
app_ui = ui.page_fluid(
ui.h2("Hicks Decomposition"),
ui.layout_sidebar(
ui.sidebar(
ui.input_slider("sigma", "Sigma:", min=0.1, max=2, value=1.1, step=0.1),
ui.input_select("r_change", "Interest rate change:",
choices=["Increase", "Decrease"],
selected="Increase"),
ui.input_select("income_pattern", "Income pattern:",
choices=["y1 >> y2", "y1 << y2"],
selected="y1 >> y2"),
),
ui.card(
ui.card_header("Hicks Decomposition Plot"),
ui.output_plot("hicks_plot", height="600px")
)
)
)
def server(input, output, session):
def solve_optimum(A, r, sigma, beta=0.98):
denom = 1 + beta**(1/sigma) * (1 + r)**((1/sigma) - 1)
c1 = A / denom
c2 = c1 * (beta * (1 + r))**(1/sigma)
return c1, c2
def utility(c1, c2, sigma, beta=0.98):
return (c1**(1-sigma) / (1-sigma)) + beta * (c2**(1-sigma) / (1-sigma))
@render.plot
def hicks_plot():
# Get input values
sigma = input.sigma()
r_change = input.r_change()
income_pattern = input.income_pattern()
beta = 0.98
r_old = 0.05
# Extreme change in interest rate
if r_change == 'Increase':
r_new = 1.0
else:
r_new = -0.6
if income_pattern == 'y1 >> y2':
y1, y2 = 3.0, 1.0
else:
y1, y2 = 1.0, 3.0
# Old optimum calculations
A_old = y1 + y2/(1 + r_old)
c1_old, c2_old = solve_optimum(A_old, r_old, sigma, beta)
U_old = utility(c1_old, c2_old, sigma, beta)
# New optimum calculations
A_new = y1 + y2/(1 + r_new)
c1_new, c2_new = solve_optimum(A_new, r_new, sigma, beta)
U_new = utility(c1_new, c2_new, sigma, beta)
# Find intermediate optimum for Hicks decomposition
def objective(A_sub):
c1_sub, c2_sub = solve_optimum(A_sub, r_new, sigma, beta)
return utility(c1_sub, c2_sub, sigma, beta) - U_old
A_sub_guess = A_old
A_sub_solution = fsolve(objective, A_sub_guess)
A_sub = A_sub_solution[0]
c1_sub, c2_sub = solve_optimum(A_sub, r_new, sigma, beta)
# Grid for plotting budget lines and utility curves
c1_max = max(A_old, A_new, A_sub)
c1_grid = np.linspace(0, c1_max, 200)
def budget_line_c2(c1, A, r):
return (A - c1) * (1 + r)
# Budget lines
c2_old_line = budget_line_c2(c1_grid, A_old, r_old)
c2_new_line = budget_line_c2(c1_grid, A_new, r_new)
c2_sub_line = budget_line_c2(c1_grid, A_sub, r_new)
# Helper function for a single indifference curve from utility level U
def c2_from_utility(c1_val, U_target, sigma, beta=0.98):
val = U_target - (c1_val**(1-sigma)/(1-sigma))
val *= (1-sigma)/beta
return val**(1/(1-sigma)) if val > 0 else np.nan
# Compute the utility curves for old and new optimum
c2_old_curve = [c2_from_utility(c, U_old, sigma, beta) for c in c1_grid]
c2_new_curve = [c2_from_utility(c, U_new, sigma, beta) for c in c1_grid]
fig, ax = plt.subplots(figsize=(8, 6))
# Plot budget lines
ax.plot(c1_grid, c2_old_line, 'r--', label=f'Budget old (r={r_old:.2f})')
ax.plot(c1_grid, c2_new_line, 'r-', label=f'Budget new (r={r_new:.2f})')
ax.plot(c1_grid, c2_sub_line, 'r:', label='Intermediate line')
# Plot optima
ax.plot(c1_old, c2_old, 'bo', label='Old optimum')
ax.plot(c1_sub, c2_sub, 'go', label='Intermediate optimum')
ax.plot(c1_new, c2_new, 'ro', label='New optimum')
# Plot only the main indifference curves
ax.plot(c1_grid, c2_old_curve, color='blue', label='Indifference (old)')
ax.plot(c1_grid, c2_new_curve, color='red', label='Indifference (new)')
ax.annotate('',
xy=(c1_sub, c2_sub), xytext=(c1_old, c2_old),
arrowprops=dict(arrowstyle='->', color='blue', lw=2))
ax.text((c1_old+c1_sub)/2, (c2_old+c2_sub)/2,
'substitution effect', color='blue')
ax.annotate('',
xy=(c1_new, c2_new), xytext=(c1_sub, c2_sub),
arrowprops=dict(arrowstyle='->', color='green', lw=2))
ax.text((c1_sub+c1_new)/2, (c2_sub+c2_new)/2,
'income effect', color='green')
ax.set_xlim(0, c1_max*1.05)
ax.set_ylim(0, max(c2_old_line.max(), c2_new_line.max(), c2_sub_line.max())*1.05)
ax.set_xlabel('$c_1$')
ax.set_ylabel('$c_2$')
ax.set_title(f"Hicks decomposition\n(r_old={r_old}, r_new={r_new}, sigma={sigma:.2f}, y1={y1}, y2={y2})")
ax.legend(loc='best')
ax.grid(True)
return fig
app = App(app_ui, server)Supposez qu’un ménage résout un cas particulier du problème de l’exercice 1, avec \[ a_0=\tau_1=\tau_2=0 \quad \text{et} \quad y_2=m\,y_1, \] où \(m\) est un nombre réel.
Un économiste dispose de données sur la profession, le revenu de l’année (noté \(y\)) et la consommation de l’année (notée \(c\)) d’un échantillon d’individus de 26 ans. Au sein de cet échantillon, certains sont des sportifs professionnels de haut niveau et d’autres sont des médecins en première année. [Faites toutes les hypothèses que vous jugez raisonnables et, si vous le souhaitez, reportez-vous à l’exercice 1.]
Considérons une économie correctement décrite par le modèle de croissance de Solow. La fonction de production est :
\[ Y=K^\alpha\,L^{1-\alpha} \]
La population est constante et égale à 1 et il n’y a pas de progrès technologique. Le taux d’épargne est \(s\) et le taux d’amortissement est \(\delta\).
Pour le reste des questions, supposez \[ s=0.4,\quad \alpha=0.35,\quad \delta=0.1, \] et que l’économie se trouve initialement à l’état stationnaire.
\[ u(c_1,c_2)= u(c_1)+ \beta\, u(c_2) \]
Les Friedman peuvent emprunter ou prêter au taux d’intérêt du marché. Comme ce sont les seuls à agir de cette façon et qu’ils sont petits par rapport à l’économie, nous allons supposer que l’économie globale (quantités globales, prix, etc.) reste inchangée. La consommation des Friedman sera-t-elle élevée au début puis faible à la fin, ou sera-t-elle faible au début puis élevée à la fin, ou restera-t-elle constante ?
Supposez qu’un ménage résolve la variante suivante du problème de l’exercice 1 :
\[ \max_{c_1,\, c_2,\, a} \; u(c_1)+\beta\, u(c_2) \]
subject to \[ a = y_1-\tau_1-c_1 \] \[c_2=y_2-\tau_2+(1+r)a \] \[a\geq -b \]
Supposons que nous observions que Usuria (une économie fermée) croît d’environ 6% par an, et que nous essayions de comprendre pourquoi. Nous savons que la population active est restée constante.
Conjecture 1 : L’économie est dans un état stationnaire avec progrès technologique. Il y a eu accumulation de capital simplement pour maintenir \(K\) constant, mais la cause de la croissance a été la croissance de la PTF.
Conjecture 2 : L’économie est partie d’un niveau de stock de capital très faible (en dessous de l’état stationnaire) et a connu une croissance parce qu’elle converge vers l’état stationnaire, mais la PTF est restée constante.
Idéalement, si nous voulions faire la distinction entre la conjecture 1 et la conjecture 2, nous pourrions faire un exercice de comptabilité de la croissance. Malheureusement, Usuria ne produit pas de statistiques fiables sur l’accumulation du capital qui nous permettraient de le faire. Nous disposons cependant de données sur les taux d’intérêt en Usuria.
Comment utiliserait-on ces données pour distinguer la conjecture 1 de la conjecture 2 ? Soyez aussi mathématiquement précis que possible.
