¿Qué parte del movimiento conjunto de las series podemos atribuir a un choque económico concreto?
Plantear el problema de identificación con precisión y contar cuántas restricciones hacen falta.
Identificar los choques por orden recursivo, por efectos de largo plazo o por signos, y leer las respuestas, la varianza y la historia que resultan.
Reconocer qué parte de la incertidumbre reportan las bandas y cuál no.
Requisitos previos.Capítulo 3; descomposición de Cholesky; nociones de identificación en modelos de ecuaciones simultáneas.
Serie
Fuente
Frecuencia
Transformación
Inflación (\(\pi_t\))
BEA
trimestral
\(400\ln(P_t/P_{t-1})\), deflactor del PBI
Desempleo (\(u_t\))
BLS
trimestral
tasa civil, promedio del trimestre
Tasa de fondos federales (\(R_t\))
Reserva Federal
trimestral
promedio del trimestre
Los datos de Estados Unidos entre 1960Q1 y 2000Q4 son los del material de replicación de Stock y Watson (2001): data/raw/SW2001_Data.xlsx. El Sección 4.8 usa además la muestra de Blanchard y Quah (1989) (data/raw/BQ1989_Data.xlsx). Ambos CSV los construye code/python/build_us_data.py.
4.1 De los residuos a los choques
El Capítulo 3 terminó en un callejón deliberado. La forma reducida describe bien la dinámica conjunta, pronostica de manera razonable y no permite responder la pregunta que interesa a quien decide la política: qué pasa con la inflación y el producto si la tasa sube por una decisión propia del banco central y no como respuesta a lo que el banco central observa. El obstáculo es que los residuos \(\mathbf{u}_t\) son errores de pronóstico correlacionados entre sí, no experimentos.
La salida es suponer que esas sorpresas observadas son combinaciones lineales de un número igual de choques no observados con significado económico.
Supuesto 4.1 · Choques estructurales Existe una matriz \(S\) de \(n \times n\), invertible, y un vector de choques estructurales \(\varepsilon_t\) tal que
\[ \mathbf{u}_t = S \varepsilon_t, \qquad \mathbb{E}[\varepsilon_t] = 0, \qquad \mathbb{E}[\varepsilon_t \varepsilon_t'] = I_n, \qquad \mathbb{E}[\varepsilon_t \varepsilon_s'] = 0 \ \text{ para } t \neq s. \]
Los choques son ortogonales entre sí y están normalizados a varianza unitaria, de modo que mover uno dejando los demás en cero es una operación bien definida. La columna \(k\) de \(S\) recoge el efecto contemporáneo del choque \(k\) sobre cada variable.
La normalización a varianza unitaria no tiene contenido: reescalar \(\varepsilon_{kt}\) y dividir la columna \(k\) de \(S\) por el mismo número deja el modelo igual. Lo que sí tiene contenido es la ortogonalidad, porque es la que permite hablar de un choque a la vez, y es también la que hace falta interpretar: dos choques ortogonales en el modelo son dos fuerzas que en la economía no se mueven juntas por construcción, y eso hay que argumentarlo.
Sustituyendo el supuesto en la forma reducida,
\[ \mathbf{y}_t = c + \Phi_1 \mathbf{y}_{t-1} + \cdots + \Phi_p \mathbf{y}_{t-p} + S \varepsilon_t . \tag{4.1}\]
La Ecuación 4.1 es el VAR estructural. Tiene dos piezas con estatus distinto. Las matrices \(\Phi_\ell\) son la dinámica, y se estiman por mínimos cuadrados como en el Sección 3.7. La matriz \(S\) es el impacto, no se estima con los datos solos y es donde entra la economía.
El SVAR puede leerse como una aproximación lineal a la solución de un modelo estructural: la dinámica resume cómo se propagan las perturbaciones y la matriz de impacto dice quién empuja a quién en el momento cero. La diferencia con un DSGE es de dónde vienen las restricciones: allá, de la forma completa del modelo; aquí, de unos pocos supuestos que se declaran uno por uno.
4.2 El problema de identificación
Los datos informan sobre \(\Sigma\), no sobre \(S\). La relación entre ambos sale del supuesto:
\[ \Sigma = \mathbb{E}[\mathbf{u}_t \mathbf{u}_t'] = \mathbb{E}[S \varepsilon_t \varepsilon_t' S'] = S\, \mathbb{E}[\varepsilon_t \varepsilon_t']\, S' = S S' . \tag{4.2}\]
Identificar es resolver la Ecuación 4.2 para \(S\). El problema es de conteo.
Proposición 4.1 · Grados de libertad de la identificación\(\Sigma\) es simétrica, de modo que aporta \(n(n+1)/2\) ecuaciones distintas, mientras que \(S\) tiene \(n^2\) incógnitas. Hacen falta
\[ n^2 - \frac{n(n+1)}{2} = \frac{n(n-1)}{2} \]
restricciones adicionales para que la solución sea única, y esas restricciones no pueden venir de los datos: cualquier \(\tilde{S} = S Q\) con \(Q\) ortonormal reproduce exactamente la misma \(\Sigma\) y, por lo tanto, la misma verosimilitud.
Con dos variables falta una restricción; con tres, como en el sistema de este capítulo, faltan tres; con siete variables, veintiuna. El último punto de la Proposición 4.1 es el que conviene grabar: el conjunto de matrices de impacto compatibles con los datos no es pequeño ni raro, es una variedad continua del mismo tamaño que el grupo ortogonal, y todos sus elementos ajustan los datos igual de bien. Ninguna prueba estadística puede escoger entre ellos.
Que dos modelos ajusten igual no significa que digan lo mismo. Dos matrices de impacto distintas compatibles con la misma \(\Sigma\) pueden implicar que la política monetaria contrae el producto o que lo expande. La elección entre ellas es un supuesto económico que el investigador declara y defiende, no un resultado que los datos entreguen. Por eso un SVAR se reporta siempre junto con su esquema de identificación, y por eso la sensibilidad a ese esquema es parte del resultado.
Las secciones siguientes recorren los tres esquemas más usados: restricciones de cero contemporáneas, restricciones de cero de largo plazo y restricciones de signo. Cada uno aporta la información que falta de una manera distinta, y cada uno cuesta algo.
El sistema de trabajo
El Capítulo 3 trabajó con datos peruanos para mostrar cómo se estima y se pronostica un VAR. Para el análisis estructural conviene un sistema con historia publicada, donde los resultados se puedan contrastar con los de otros, así que este capítulo replica el ejemplo de Stock y Watson (2001): inflación, desempleo y tasa de fondos federales de Estados Unidos, datos trimestrales de 1960Q1 a 2000Q4, cuatro rezagos. Los ejercicios del final vuelven sobre los datos peruanos.
import numpy as npimport pandas as pdfrom macrobook import data_path, var, svarcsv = data_path("sw2001.csv")data = pd.read_csv(csv, index_col="date")data.index = pd.PeriodIndex(data.index, freq="Q")order = ["infl", "unemp", "ff"]sample = data[order]dates = sample.index.to_timestamp(how="end")y = sample.to_numpy()n, p =len(order), 4fit = var.ols(y, p)max_root = np.abs(var.roots(fit["B"], n, p)).max()print("muestra:", sample.index[0], "a", sample.index[-1])print("observaciones:", len(sample))print("módulo máximo de las raíces:", max_root.round(3))
muestra: 1960Q1 a 2000Q4
observaciones: 164
módulo máximo de las raíces: 0.969
Figura 4.1: Las tres series del sistema de Stock y Watson (2001), 1960Q1 a 2000Q4.
La muestra cubre la Gran Inflación de los años setenta, la desinflación de Volcker y la larga expansión de los noventa. El módulo máximo de las raíces, 0.97, avisa de entrada que el sistema es muy persistente: las respuestas van a decaer despacio y las bandas a horizontes largos serán anchas.
La matriz de covarianzas de los residuos vuelve a ser el objeto central. Conviene mirarla en correlaciones, que se leen más rápido.
La correlación relevante es la de \(-0.45\) entre la sorpresa de desempleo y la sorpresa de tasa: cuando el desempleo sorprende al alza, la tasa sorprende a la baja. Eso es exactamente lo que se espera de una regla de política que reacciona al ciclo, y es también la razón por la que esa correlación no se puede leer como el efecto de la política sobre el desempleo.
4.3 Identificación recursiva
El esquema más antiguo y todavía el más usado impone ceros en la matriz de impacto (Sims 1980; Christiano et al. 1999). La idea es ordenar las variables de la más lenta a la más rápida en reaccionar dentro del período, y suponer que cada variable no responde contemporáneamente a los choques de las que vienen después.
Con el orden \((\pi_t, u_t, R_t)\) de Stock y Watson (2001) la matriz de impacto es triangular inferior:
Los tres ceros son exactamente las \(n(n-1)/2 = 3\) restricciones que faltaban, y dicen dos cosas distintas. Hacia abajo: la tasa de fondos federales responde dentro del trimestre a la inflación y al desempleo, que es lo que hace un banco central que mira los datos al decidir. Hacia arriba: el choque de política no mueve la inflación ni el desempleo dentro del mismo trimestre, porque los precios y las decisiones de gasto y contratación tardan en reaccionar. El supuesto es fuerte en frecuencia mensual y bastante cómodo en frecuencia trimestral.
Proposición 4.2 · Identificación recursiva Si \(S\) es triangular inferior con diagonal positiva, entonces \(S\) es el único factor de Cholesky de \(\Sigma\), esto es, la única matriz triangular inferior con diagonal positiva que cumple \(\Sigma = S S'\).
Ejemplo 4.1 · Cholesky a mano Con \(\hat{\Sigma} = \begin{bmatrix} 4 & 2 \\ 2 & 10 \end{bmatrix}\), igualar \(\hat{\Sigma} = S S'\) con \(S\) triangular inferior da tres ecuaciones:
Resolviendo en cadena, \(s_{11} = 2\), \(s_{21} = 1\) y \(s_{22} = 3\). Tres ecuaciones y tres incógnitas: la triangularidad convirtió un problema indeterminado en uno exactamente identificado.
La tercera columna es el choque de política: eleva la tasa de fondos federales en 0.78 puntos porcentuales en el trimestre del choque y, por construcción, no toca a la inflación ni al desempleo en ese momento. El elemento \(s_{32} = -0.40\) es el que da contenido al orden: ante un choque de desempleo, la tasa baja cuatro décimas dentro del mismo trimestre. Los dos primeros choques llevan el nombre de la variable que encabezan, no el de una interpretación económica, y conviene que sea así: el orden elegido identifica con un argumento defendible el choque de política, y deja a los otros dos como las combinaciones que quedan. Ponerles nombre de choque de oferta o de demanda exigiría un argumento adicional que este esquema no aporta.
El orden de las variables es una restricción económica, no una convención de programación. Cambiarlo cambia los choques y puede cambiar las conclusiones. La práctica mínima es reportar el orden elegido, justificarlo y mostrar qué pasa con otro orden razonable. Cuando el resultado depende del orden, lo que hay que reportar es esa dependencia, no el orden más favorable.
4.4 Funciones de impulso-respuesta
Identificada la matriz de impacto, el resto es aritmética de la forma companion.
Definición 4.1 · Función de impulso-respuesta La respuesta de las variables al choque estructural \(k\) al cabo de \(h\) períodos es
donde \(F\) es la matriz companion y \(J\) el selector del Sección 3.5. El elemento \((i,k)\) de \(\Theta_h\) es la respuesta de la variable \(i\) al choque \(k\) en el horizonte \(h\), manteniendo los demás choques en cero.
La derivación es la sustitución recursiva de siempre. Partiendo de \(\mathbf{y}_t = \Phi_1 \mathbf{y}_{t-1} + S\varepsilon_t\) e iterando hacia adelante, el término que sobrevive del choque de hoy en \(t+h\) es \(\Phi_1^h S \varepsilon_t\); con \(p > 1\), la potencia de la companion hace el mismo trabajo.
Ejemplo 4.2 · Una respuesta calculada a mano Con \(\hat{\Phi} = \begin{bmatrix} 0.5 & 0.1 \\ 0.2 & 0.4 \end{bmatrix}\) y \(\hat{S} = \begin{bmatrix} 2 & 0 \\ 1 & 3 \end{bmatrix}\), un choque unitario al primer elemento da
La respuesta decae porque el sistema es estable. En un sistema inestable esta misma recursión explota, que es la razón práctica por la que la estabilidad se verifica antes de graficar nada.
La escala del choque es una convención más. Un choque de una desviación estándar es el tamaño natural en los datos; un choque unitario, que se obtiene dividiendo la columna \(k\) de \(S\) por \(s_{kk}\), hace que el choque mueva a su propia variable exactamente un punto porcentual y es más fácil de comunicar. Stock y Watson (2001) usan el segundo y aquí se hace lo mismo.
def responses(B, S, n, p, h):"""Theta_j = Psi_j S para j = 0, ..., h."""return var.ma_weights(B, n, p, h) @ SS_unit = S / np.diag(S) # un choque de un punto porcentualtheta = responses(fit["B"], S_unit, n, p, 24)pd.DataFrame(theta[:5, :, 2].round(3), columns=order)
infl
unemp
ff
0
0.000
0.000
1.000
1
0.158
0.005
0.946
2
0.109
0.062
0.531
3
-0.006
0.109
0.444
4
-0.012
0.140
0.496
theta_package = svar.responses(fit["B"], svar.unit_scale(S), n, p, 24)np.allclose(theta, theta_package)
True
4.5 Bandas de confianza
Las respuestas son funciones no lineales de los coeficientes estimados, así que su distribución muestral no tiene forma cerrada útil. La práctica estándar es el bootstrap (Kilian 1998; Kilian y Lütkepohl 2017, cap. 12).
Algoritmo 4.1: Bandas bootstrap para las respuestas estructurales
Estimar el VAR y guardar \(\hat{B}\), \(\hat{\Sigma}\) y los residuos \(\hat{\mathbf{u}}_t\).
Remuestrear con reemplazo los residuos para obtener \(\hat{\mathbf{u}}_t^{*}\), y construir una muestra artificial recursivamente, con las mismas \(p\) observaciones iniciales:
Reestimar el VAR sobre \(\mathbf{y}^{*}\), volver a identificar y calcular \(\Theta_h^{*}\). Repetir \(N\) veces.
Reportar los percentiles \(2.5\) y \(97.5\) de los \(\Theta_h^{*}\) en cada horizonte.
El paso 2 es el que suele salir mal. La muestra artificial tiene que generarse iterando el modelo, no sumando residuos remuestreados a los valores ajustados: si los regresores se dejan en sus valores originales mientras la variable dependiente se construye con ruido nuevo, los rezagos y la variable dependiente dejan de corresponderse y el estimador bootstrap queda sesgado hacia cero en la persistencia.
lower, upper = svar.bootstrap_bands( y, p, h=24, draws=2000, level=0.95, unit=True, seed=7)print("respuesta del desempleo en h=8:")print(" punto %.2f"% theta[8, 1, 2])print(" banda [%.2f, %.2f]"% (lower[8, 1, 2], upper[8, 1, 2]))
respuesta del desempleo en h=8:
punto 0.20
banda [0.11, 0.30]
resp = [[theta[:, i, k] for k inrange(n)] for i inrange(n)]bands = [[[(lower[:, i, k], upper[:, i, k])] for k inrange(n)]for i inrange(n)]fig, axes = charts.irf_grid(resp, labels, shocks, bands=bands)axes[-1][1].set_xlabel("trimestres")plt.show()
Figura 4.2: Respuestas a un choque unitario bajo identificación recursiva, con bandas bootstrap al 95 %. Las filas son variables y las columnas, choques. Replica la Figura 1 de Stock y Watson (2001).
La columna de la derecha es el choque de política monetaria y reproduce el resultado central de Stock y Watson (2001). Un aumento de un punto porcentual en la tasa de fondos federales eleva el desempleo, que alcanza un máximo de 0.20 puntos a los ocho trimestres con una banda de 0.11 a 0.30, y luego vuelve a cero hacia el sexto año. El signo, la forma de joroba y el rezago de dos años son los hechos estilizados que la literatura de política monetaria reporta desde entonces.
La respuesta de la inflación es el punto incómodo: sube un par de décimas durante el primer año antes de volverse negativa, y su banda contiene al cero durante todo el recorrido. Es el price puzzle del Sección 3.8, que aparece aquí a pesar de haber identificado. La lectura estándar es que el banco central reacciona a información sobre precios futuros que el sistema no contiene, de modo que parte de lo que el esquema llama choque de política es en realidad la respuesta a una presión inflacionaria que el VAR no ve (Christiano et al. 1999). El remedio usual es ampliar el sistema con un índice de precios de materias primas, que actúa como indicador adelantado de la inflación.
La banda bootstrap recoge la incertidumbre de estimación de \(\hat{B}\) y \(\hat{\Sigma}\), y nada más. La incertidumbre sobre el esquema de identificación, que suele ser mayor, queda fuera por construcción: la banda se calcula manteniendo fijo el supuesto de triangularidad. Una banda estrecha alrededor de una respuesta mal identificada es precisión sobre el objeto equivocado.
4.6 Descomposición de varianza
La impulso-respuesta dice cómo se mueve el sistema ante un choque. La descomposición de varianza dice cuánto importa ese choque en promedio.
La descomposición de varianza no depende de cómo se escale el choque, así que aquí se vuelve a las respuestas de una desviación estándar.
Definición 4.2 · Descomposición de varianza del error de pronóstico El error de pronóstico a \(h\) períodos es \(\mathbf{y}_{t+h} - \mathbb{E}_t[\mathbf{y}_{t+h}] = \sum_{j=0}^{h} \Theta_j \varepsilon_{t+h-j}\). Como los choques son ortogonales y de varianza unitaria, la varianza del error de la variable \(i\) se parte sin residuo entre los choques:
size = figsize(0.40)fig, axes = plt.subplots(1, 3, sharey=True, figsize=size)horizons = np.arange(shares.shape[0])for i, (ax, name) inenumerate(zip(axes, names)): ax.stackplot(horizons, shares[:, i, :].T *100, colors=PALETTE["fills"][:n], labels=shocks, edgecolor="white", lw=0.4) ax.set_title(name, fontsize=8.5) ax.set_xlabel("trimestres") ax.set_ylim(0, 100) ax.grid(False, axis="x")axes[0].set_ylabel("% de la varianza")charts.legend_outside(axes[1], ncol=3)plt.show()
Figura 4.3: Descomposición de la varianza del error de pronóstico por horizonte. Cada panel reparte el 100 % de la varianza de una variable entre los tres choques.
El cuadro es el de Stock y Watson (2001) y sirve de verificación de la replicación. A doce trimestres el artículo reporta 82, 16 y 2 por ciento para la inflación y 16, 59 y 25 para la tasa de fondos federales, cifras que coinciden con las de arriba; para el desempleo reporta 16, 66 y 18 frente a 21, 60 y 19 aquí, una diferencia de unos pocos puntos que probablemente venga de la versión de la serie de desempleo, revisada desde 2001. Vale la pena registrar que una replicación puede ser correcta y aun así no coincidir en el último dígito.
La lectura económica es la misma en ambos casos. El choque de política explica alrededor de una quinta parte de la varianza del desempleo a tres años y casi nada de la inflación. Es poco, y es un resultado repetido en la literatura: los choques de política monetaria, entendidos como desviaciones respecto de la regla sistemática, explican una fracción pequeña de las fluctuaciones (Christiano et al. 1999; Ramey 2016). La afirmación no es que la política monetaria sea irrelevante, sino que casi todo lo que hace es sistemático, y lo sistemático no es un choque.
4.7 Descomposición histórica
La descomposición de varianza es un promedio sobre toda la muestra. La descomposición histórica baja al detalle de cada trimestre: qué choques explican que la inflación de 1980 haya estado donde estuvo.
Definición 4.3 · Descomposición histórica Usando la representación de Wold estructural, cada observación se escribe como la suma de las contribuciones de los choques pasados más un término determinista y la condición inicial:
\[ \mathbf{y}_t = \underbrace{\text{base}_t}_{\text{media e inicio}} + \sum_{k=1}^{n} \underbrace{\sum_{j=0}^{t-1} \theta_{\cdot k, j}\, \varepsilon_{k,t-j}}_{\text{aporte del choque } k} . \tag{4.6}\]
Los choques se recuperan invirtiendo la matriz de impacto sobre los residuos estimados, \(\hat{\varepsilon}_t = S^{-1}\hat{\mathbf{u}}_t\).
Figura 4.4: Descomposición histórica de la inflación: aporte de cada choque a la desviación respecto de la base del modelo. La línea es la desviación observada.
La Gran Inflación se lee con claridad. Entre 1979 y 1981 la inflación estuvo cinco puntos por encima de la base del modelo, y el gráfico reparte esa desviación entre el choque propio de los precios, que aporta entre dos y tres puntos y medio, y el choque de política, que aporta cerca de dos. Ese segundo término es una afirmación fuerte y hay que leerla con cuidado: el modelo dice que las desviaciones acumuladas respecto de la regla estimada, es decir una política sistemáticamente más laxa de lo que la propia regla habría indicado, sostuvieron alrededor de dos puntos de inflación. Hacia 1983 esa contribución desaparece, que es como se ve la desinflación de Volcker desde este modelo.
Conviene mirar también las décadas completas: el aporte medio del choque de política a la inflación es de \(+0.8\) puntos en los setenta y de \(-0.2\) en los noventa. Con los mismos coeficientes, el mismo choque cambia de papel según la época.
Las tres lecturas de un SVAR responden preguntas distintas sobre el mismo objeto. La impulso-respuesta es un experimento: qué pasaría si. La descomposición de varianza es un promedio: cuánto importa este choque en general. La descomposición histórica es un relato: qué pasó en este trimestre concreto. Las tres se calculan con las mismas matrices \(\Theta_j\).
4.8 Restricciones de largo plazo
La identificación recursiva restringe el momento cero. Hay supuestos económicos que no tienen forma de restricción contemporánea pero sí de restricción sobre el efecto acumulado: la neutralidad del dinero en el largo plazo es el ejemplo canónico (Blanchard y Quah 1989; Galí 1999).
Si el VAR es estable, la suma de todas las respuestas de un choque converge. Sumando la Ecuación 4.4 sobre todos los horizontes,
\[ \Theta_{\infty} \;=\; \sum_{h=0}^{\infty} \Psi_h S \;=\; \big(I_n - \Phi_1 - \cdots - \Phi_p\big)^{-1} S \;=\; A^{-1} S , \tag{4.7}\]
donde \(A = I_n - \Phi_1 - \cdots - \Phi_p\) es conocida una vez estimada la dinámica. El elemento \((i,k)\) de \(\Theta_\infty\) es el efecto acumulado del choque \(k\) sobre la variable \(i\), y sobre él se imponen los ceros.
Proposición 4.3 · Identificación por restricciones de largo plazo Si \(\Theta_\infty = A^{-1} S\) es triangular inferior con diagonal positiva, entonces es el factor de Cholesky de
que es observable. La matriz de impacto queda identificada como \(S = A \cdot \operatorname{chol}(\Omega)\).
La matriz \(S\) que resulta no es triangular: los efectos contemporáneos quedan libres y las restricciones actúan sobre el acumulado. Ese es justamente el atractivo del esquema y también su costo, porque el efecto de largo plazo es la parte del modelo peor estimada.
El ejercicio clásico es el de Blanchard y Quah (1989), y aquí se replica con su propia muestra: crecimiento trimestral del PBI y tasa de desempleo de Estados Unidos entre 1948Q2 y 1987Q4, ambos ya sin tendencia como en el artículo, con ocho rezagos. La única restricción es que el segundo choque no tenga efecto permanente sobre el nivel del producto. El primero queda sin restringir y se interpreta como choque de oferta; el segundo, como choque de demanda.
La normalización de la última línea fija el signo de cada choque, que la identificación no determina: se eligen los dos choques que elevan el producto al impacto. Hecho eso, el resto lo dicen los datos, y lo que dicen es el resultado que hizo famoso al artículo. El choque de demanda eleva el producto y baja el desempleo; el choque de oferta eleva el producto pero también el desempleo durante los primeros trimestres. Ese segundo hecho es el llamado puzzle de la productividad, y reaparece en la literatura posterior (Galí 1999).
Figura 4.5: Réplica de Blanchard y Quah (1989): respuesta acumulada del nivel del producto y respuesta del desempleo. El choque de demanda no tiene efecto permanente sobre el producto por construcción.
El panel izquierdo reproduce la figura del artículo. El choque de oferta lleva el nivel del producto a un máximo cercano a 0.8 % y lo deja permanentemente medio punto por encima; el de demanda produce una joroba que se agota y vuelve a cero, que es la restricción impuesta. El panel derecho muestra el puzzle: el desempleo sube dos décimas tras un choque de oferta favorable antes de empezar a caer.
La crítica seria a este esquema no es la aritmética sino la estadística: \(A^{-1}\) depende de la suma de todos los coeficientes, que en muestras cortas se estima con poca precisión, y pequeñas diferencias en esa suma mueven mucho la matriz de impacto. Las restricciones de largo plazo son las más exigentes con los datos de los tres esquemas de este capítulo.
4.9 Restricciones de signo
Los dos esquemas anteriores imponen ceros, que son afirmaciones fuertes. Las restricciones de signo imponen algo más débil y a menudo más creíble: la dirección del efecto (Faust 1998; Canova y De Nicoló 2002; Uhlig 2005). Volviendo al sistema de Stock y Watson (2001), un choque contractivo de política monetaria sube la tasa de fondos federales y baja la inflación; sobre el desempleo no se impone nada, porque es precisamente lo que se quiere averiguar. Es la estrategia agnóstica de Uhlig (2005), que en su artículo deja libre la respuesta del producto.
La mecánica se apoya en el resultado de la Proposición 4.1. Si \(P\) es el factor de Cholesky de \(\Sigma\) y \(Q\) es ortonormal, entonces
\[ \tilde{S} = P Q \quad\Longrightarrow\quad \tilde{S}\tilde{S}' = P Q Q' P' = P P' = \Sigma , \]
de modo que toda \(\tilde{S}\) así construida es un candidato válido. El conjunto de candidatos se recorre muestreando \(Q\) y quedándose con los que cumplen los signos.
Algoritmo 4.2: Identificación por restricciones de signo
Extraer una matriz ortonormal \(Q\) de dimensión \(n \times n\) de manera uniforme, por ejemplo con la descomposición QR de una matriz de normales estándar.
Formar el candidato \(\tilde{S} = P Q\) y calcular sus respuestas \(\Theta_h = \Psi_h \tilde{S}\) en los horizontes donde se imponen los signos.
Verificar el patrón de signos, permitiendo multiplicar una columna por \(-1\), porque \(\varepsilon\) y \(-\varepsilon\) son el mismo choque con el nombre cambiado. Si se cumple, guardar \(\tilde{S}\); si no, descartarla.
Repetir hasta reunir \(N\) matrices aceptadas y reportar el conjunto completo de respuestas.
signs = np.zeros((n, n))signs[0, 2] =-1# la inflación bajasigns[2, 2] =+1# la tasa subeaccepted = svar.sign_restricted_impacts( fit["Sigma"], fit["B"], n, p, signs, horizons=(0, 1), draws=1000, seed=5)set_irf = np.array([svar.responses(fit["B"], Si, n, p, 24)for Si in accepted])share =100* (set_irf[:, 8, 1, 2] >0).mean()print("matrices aceptadas:", len(accepted))print("desempleo en h=8: sube en %.0f%% de los modelos"% share)
matrices aceptadas: 1000
desempleo en h=8: sube en 46% de los modelos
median = np.median(set_irf, axis=0)q05 = np.quantile(set_irf, 0.05, axis=0)q95 = np.quantile(set_irf, 0.95, axis=0)size = figsize(0.40)fig, axes = plt.subplots(1, 3, figsize=size)steps = np.arange(set_irf.shape[1])for i, (ax, name) inenumerate(zip(axes, names)): ax.fill_between(steps, q05[:, i, 2], q95[:, i, 2], color=PALETTE["bands"][1], lw=0, alpha=0.5, label="conjunto (5 a 95 %)") ax.plot(steps, median[:, i, 2], lw=1.2, label="mediana", color=PALETTE["accent_dark"]) ax.plot(steps, theta_sd[:, i, 2], lw=1.0, ls=(0, (3, 2)), color=PALETTE["steel"], label="recursiva") charts.zero_line(ax) ax.set_title(name, fontsize=8.5) ax.set_xlabel("trimestres")charts.legend_outside(axes[1], ncol=3)plt.show()
Figura 4.6: Respuestas al choque contractivo de política bajo restricciones de signo: mediana del conjunto identificado y rango del 5 al 95 %. La línea punteada es la respuesta recursiva. Las dos están en unidades de una desviación estándar del choque.
El resultado reproduce el hallazgo de Uhlig (2005) con los datos de Stock y Watson (2001): una vez que se deja libre la respuesta de la variable real, el conjunto de modelos admisibles no se pone de acuerdo sobre su signo. A dos años, sólo el 46 % de los modelos aceptados implica un aumento del desempleo, y el rango va de \(-0.12\) a \(+0.10\) puntos. La identificación recursiva daba un aumento nítido de dos décimas. La diferencia entre ambos resultados no está en los datos, que son los mismos, sino en cuánta información extra se estuvo dispuesto a imponer.
Conviene mirar también el panel izquierdo. La inflación baja durante los dos trimestres en que se le impuso bajar y se recupera apenas se suelta la restricción. Las restricciones de signo no arreglan el price puzzle: lo desplazan al primer horizonte no restringido. Imponerlas por más períodos lo empujaría más lejos, a costa de un supuesto cada vez más fuerte.
Una advertencia de escala: el tamaño del choque no es comparable entre esquemas. Cada matriz aceptada implica un impacto distinto sobre la tasa, de modo que la figura usa desviaciones estándar y no puntos porcentuales. Lo que sí es comparable, y lo que importa, es el signo y la fracción del conjunto que lo sostiene.
Un conjunto de modelos no tiene mediana en ningún sentido útil. La mediana punto a punto de las respuestas aceptadas no corresponde en general a ninguna matriz de impacto del conjunto, así que reportarla como si fuera “el” resultado es un error frecuente (Fry y Pagan 2011). Además, muestrear \(Q\) uniformemente induce un prior sobre las respuestas que no es plano y que puede dominar al dato cuando las restricciones son pocas (Baumeister y Hamilton 2015). Lo honesto es reportar el rango y decir qué fracción del conjunto sostiene cada conclusión.
4.10 Proyecciones locales
Hay una manera distinta de estimar la misma respuesta: en lugar de iterar un modelo, correr una regresión por horizonte (Jordà 2005).
Definición 4.4 · Proyección local Dado un choque identificado \(\hat{\varepsilon}_{kt}\), la respuesta de la variable \(i\) en el horizonte \(h\) es el coeficiente \(\beta_{i,h}\) de
con \(\mathbf{w}_t\) un vector de controles, típicamente los rezagos del sistema. Se estima una regresión por cada horizonte y los errores estándar se corrigen por autocorrelación.
Las dos estrategias estiman el mismo objeto poblacional: con los mismos controles y sin restricciones, VAR y proyecciones locales tienen el mismo límite (Plagborg-Møller y Wolf 2021). Difieren en muestras finitas, y la diferencia es un intercambio conocido. El VAR impone la estructura dinámica en todos los horizontes, lo que lo hace eficiente si el modelo está bien especificado y sesgado si no lo está; la proyección local no extrapola, lo que la hace robusta a la mala especificación y bastante más ruidosa a horizontes largos.
policy = eps[:, 2] * S[2, 2] # en puntos porcentualesshock_series = np.r_[np.full(p, np.nan), policy]grid = np.arange(0, 17)lp = np.array([svar.local_projection(y, shock_series, h, lags=p)for h in grid], dtype=object)point = np.array([row[0][1] for row in lp])low = np.array([row[1][1] for row in lp])high = np.array([row[2][1] for row in lp])size = figsize(0.42)fig, ax = plt.subplots(figsize=size)ax.fill_between(grid, low, high, color=PALETTE["bands"][1], lw=0, alpha=0.5, label="IC 95 % (proyección local)")ax.plot(grid, point, lw=1.2, color=PALETTE["accent_dark"], label="proyección local")ax.plot(grid, theta[grid, 1, 2], lw=1.2, ls=(0, (4, 2)), color=PALETTE["ink"], label="VAR estructural")charts.zero_line(ax)ax.set_xlabel("trimestres")ax.set_ylabel("desempleo (%)")charts.legend_outside(ax, ncol=3)plt.show()
Figura 4.7: Respuesta del desempleo a un choque de política de un punto porcentual: VAR estructural y proyección local con intervalo al 95 %.
Las dos estimaciones coinciden en el signo y en el perfil: el desempleo no se mueve en el trimestre del choque, sube a lo largo de los dos años siguientes y después vuelve. Difieren en la magnitud del pico, que la proyección local sitúa en 0.40 puntos frente a 0.20 del VAR, y en la suavidad, porque la forma companion obliga a la respuesta del VAR a decaer de manera regular mientras que la proyección local no impone nada entre horizontes. Cuál de las dos creer depende de qué se esté dispuesto a suponer: la proyección local no extrapola y paga el precio en varianza, el VAR extrapola y cobra el precio en sesgo si la estructura que impone es falsa.
4.11 Otros esquemas y temas
Los tres esquemas anteriores cubren la mayor parte de la práctica, pero no agotan la literatura. Lo que sigue es un mapa mínimo, con la referencia donde estudiarlos.
Instrumentos externos
Si existe una variable observable correlacionada con el choque de interés y no con los demás, sirve de instrumento y evita restringir toda la matriz \(S\): basta con identificar una columna. Los ejemplos típicos son las sorpresas de alta frecuencia alrededor de los anuncios de política monetaria y las series narrativas de cambios impositivos (Mertens y Ravn 2013; Stock y Watson 2018; Gertler y Karadi 2015). Es el enfoque dominante hoy cuando hay un instrumento creíble disponible.
Restricciones de signo con ceros y restricciones narrativas
Se pueden combinar signos con ceros exactos (Arias et al. 2018) o exigir que los choques recuperados sean consistentes con episodios históricos conocidos, por ejemplo que el choque de política de un trimestre determinado haya sido contractivo (Antolín-Díaz y Rubio-Ramírez 2019). Ambas cosas reducen el conjunto identificado con información que el investigador tiene y el modelo no.
Identificación por heterocedasticidad
Si la varianza de los choques cambia entre regímenes conocidos y la matriz de impacto no, los distintos regímenes aportan ecuaciones adicionales y la identificación puede lograrse sin restricciones de signo ni de cero (Rigobon 2003). El supuesto que se paga es la estabilidad de \(S\) entre regímenes.
Invertibilidad
Todo lo anterior supone que los choques estructurales se pueden recuperar de los residuos del VAR, es decir, que la información del econometrista incluye la de los agentes. Cuando no es así, por ejemplo con noticias sobre el futuro que los agentes ven y el sistema no, ningún esquema de identificación recupera el choque verdadero. El problema se conoce como no invertibilidad o no fundamentalidad, y es una razón adicional para preferir instrumentos externos cuando existen (Ramey 2016).
Tamaño del sistema y frecuencia
Los supuestos contemporáneos son más creíbles cuanto más corto el período: una restricción de que la política no afecta a los precios dentro del trimestre es cómoda, dentro del mes es más fuerte. Y los sistemas grandes, que permitirían incluir los controles que evitarían el price puzzle, chocan con el conteo de parámetros del Capítulo 3. Esa tensión es la que resuelve el Capítulo 5.
Ideas clave
Los datos determinan \(\Sigma\) y nada más: toda la variedad de matrices \(S\) con \(SS' = \Sigma\) ajusta igual de bien, así que la identificación es un supuesto económico que se declara, se defiende y se somete a sensibilidad.
Faltan exactamente \(n(n-1)/2\) restricciones. Los ceros contemporáneos las aportan con un orden, los ceros de largo plazo con la neutralidad de un choque y los signos con la dirección de un efecto.
Las tres lecturas del SVAR (respuestas, varianza, historia) se construyen con las mismas matrices \(\Theta_j = \Psi_j S\) y responden preguntas distintas.
Las bandas bootstrap cubren la incertidumbre de estimación, no la de identificación. Las restricciones de signo hacen lo contrario: describen la incertidumbre de identificación con los parámetros fijos.
Proyecciones locales y VAR estiman la misma respuesta poblacional; la elección entre ambos es un intercambio entre eficiencia y robustez a la mala especificación.
Lecturas recomendadas
Kilian y Lütkepohl (2017)
el tratamiento moderno y completo del análisis SVAR, con la inferencia hecha en serio.
Christiano, Eichenbaum y Evans (1999)
la referencia sobre choques de política monetaria identificados recursivamente y sobre el price puzzle.
Blanchard y Quah (1989)
el artículo que introdujo las restricciones de largo plazo.
Uhlig (2005)
el enfoque agnóstico y la incomodidad de sus resultados.
Ramey (2016)
el estado del arte sobre identificación de choques macroeconómicos, incluidos los instrumentos externos.
Plagborg-Møller y Wolf (2021)
proyecciones locales y VAR estiman la misma respuesta poblacional.
Ejercicios
Ejercicio 4.1 Reestime el SVAR recursivo con los seis órdenes posibles de las tres variables y grafique las seis respuestas del desempleo al choque que eleva la tasa. ¿Qué conclusiones sobreviven a todos los órdenes y cuáles dependen de uno en particular?
Ejercicio 4.2 Verifique numéricamente la Proposición 4.1: genere cien matrices ortonormales \(Q\), calcule \(\tilde{S} = PQ\) en cada caso y confirme que \(\tilde{S}\tilde{S}'\) reproduce \(\hat{\Sigma}\) hasta el error de redondeo. Grafique las cien respuestas de la inflación al tercer choque.
Ejercicio 4.3 La banda bootstrap del Algoritmo 4.1 usa el diseño recursivo. Implemente la variante equivocada que remuestrea los residuos sobre los valores ajustados sin iterar el modelo, y compare la persistencia de las respuestas medianas con la del diseño correcto. ¿En qué dirección se sesga?
Ejercicio 4.4 Agregue un índice de precios de materias primas al sistema, ordenado en primer lugar, y repita la identificación recursiva. ¿Desaparece el price puzzle? Discuta si el resultado justifica el supuesto de que ese índice no responde contemporáneamente a nada.
Ejercicio 4.5 Repita el capítulo con los datos peruanos del Capítulo 3, tomando actividad, inflación y tasa de referencia entre 2003Q4 y 2017Q4 con dos rezagos. Compare la respuesta del producto al choque de política con la del desempleo estadounidense y discuta qué diferencias vienen de los datos y cuáles del tamaño de la muestra.
Ejercicio 4.6 En el ejercicio de restricciones de signo, agregue la exigencia de que el desempleo suba en los dos primeros trimestres. ¿Qué fracción de las matrices candidatas sobrevive ahora? Compare el conjunto resultante con la respuesta recursiva y explique por qué la comparación no es una prueba de nada.
Ejercicio 4.7 Calcule la descomposición histórica del desempleo y localice el trimestre en que el choque de política hizo su mayor aporte. ¿Coincide con la recesión de 1981-1982?
Antolín-Díaz, Juan, y Juan F. Rubio-Ramírez. 2019. «Narrative Sign Restrictions for SVARs». The American Economic Review 109 (7): 2802-29.
Arias, Jonas E., Juan F. Rubio-Ramírez, y Daniel F. Waggoner. 2018. «Inference Based on Structural Vector Autoregressions Identified with Sign and Zero Restrictions: Theory and Applications». Econometrica 86 (2): 685-720.
Baumeister, Christiane, y James D. Hamilton. 2015. «Sign Restrictions, Structural Vector Autoregressions, and Useful Prior Information». Econometrica 83 (5): 1963-99.
Blanchard, Olivier Jean, y Danny Quah. 1989. «The Dynamic Effects of Aggregate Demand and Supply Disturbances». The American Economic Review 79 (4): 655-73.
Canova, Fabio, y Gianni De Nicoló. 2002. «Monetary Disturbances Matter for Business Fluctuations in the G-7». Journal of Monetary Economics 49 (6): 1131-59.
Christiano, Lawrence J., Martin Eichenbaum, y Charles L. Evans. 1999. «Monetary Policy Shocks: What Have We Learned and to What End?» En Handbook of Macroeconomics, editado por John B. Taylor y Michael Woodford, vol. 1. Elsevier.
Faust, Jon. 1998. «The Robustness of Identified VAR Conclusions about Money». Carnegie-Rochester Conference Series on Public Policy 49: 207-44.
Fry, Renée, y Adrian Pagan. 2011. «Sign Restrictions in Structural Vector Autoregressions: A Critical Review». Journal of Economic Literature 49 (4): 938-60.
Galí, Jordi. 1999. «Technology, Employment, and the Business Cycle: Do Technology Shocks Explain Aggregate Fluctuations?»The American Economic Review 89 (1): 249-71.
Gertler, Mark, y Peter Karadi. 2015. «Monetary Policy Surprises, Credit Costs, and Economic Activity». American Economic Journal: Macroeconomics 7 (1): 44-76.
Jordà, Òscar. 2005. «Estimation and Inference of Impulse Responses by Local Projections». The American Economic Review 95 (1): 161-82.
Kilian, Lutz. 1998. «Small-Sample Confidence Intervals for Impulse Response Functions». The Review of Economics and Statistics 80 (2): 218-30.
Kilian, Lutz, y Helmut Lütkepohl. 2017. Structural Vector Autoregressive Analysis. Cambridge University Press.
Mertens, Karel, y Morten O. Ravn. 2013. «The Dynamic Effects of Personal and Corporate Income Tax Changes in the United States». The American Economic Review 103 (4): 1212-47.
Plagborg-Møller, Mikkel, y Christian K. Wolf. 2021. «Local Projections and VARs Estimate the Same Impulse Responses». Econometrica 89 (2): 955-80.
Ramey, Valerie A. 2016. «Macroeconomic Shocks and Their Propagation». En Handbook of Macroeconomics, editado por John B. Taylor y Harald Uhlig, vol. 2. Elsevier.
Rigobon, Roberto. 2003. «Identification through Heteroskedasticity». The Review of Economics and Statistics 85 (4): 777-92.
Sims, Christopher A. 1980. «Macroeconomics and Reality». Econometrica 48 (1): 1-48.
Stock, James H., y Mark W. Watson. 2001. «Vector Autoregressions». Journal of Economic Perspectives 15 (4): 101-15.
Stock, James H., y Mark W. Watson. 2018. «Identification and Estimation of Dynamic Causal Effects in Macroeconomics Using External Instruments». The Economic Journal 128 (610): 917-48.
Uhlig, Harald. 2005. «What Are the Effects of Monetary Policy on Output? Results from an Agnostic Identification Procedure». Journal of Monetary Economics 52 (2): 381-419.