Ahorro externo, cuenta corriente y crecimiento
El capital debería fluir de los países ricos a los pobres. No lo hace. Esta clase arma las herramientas para medir ese desacuerdo entre la teoría y los datos.
1Reglas de entrega
Integrantes
Máximo por grupo.
Carillas
A4, 12 pts. La página 13 no se corrige.
Consignas
Cada una es una sección del informe, en orden.
Copia o plagio: trabajo desaprobado y grupo fuera del régimen de promoción.
Asistentes de IA. Permitidos para programar o depurar código. Es obligatorio un párrafo final declarando qué herramientas usaron y para qué.
El grupo responde por cada línea de código y cada afirmación del texto. Una referencia que no existe, o un número que el código no reproduce, se evalúa como error propio.
Un estudio con 26.811 estudiantes secundarios y 30 meses de datos de panel encontró que adoptar IA generativa sube las notas de las tareas domiciliarias un 18% y recorta el tiempo de resolución un 30%, pero baja las notas de los exámenes a libro cerrado un 20% en seis meses. El daño se concentra en quienes entregan mucho más rápido que el resto: los que usan IA y mantienen el tiempo de trabajo sacan mejores notas en las tareas y las mismas notas en los exámenes.
La regla práctica no es sobre qué delegar sino sobre el tiempo. Si la IA les ahorra una hora, reinviértanla en el problema. El día que el trabajo salga en la mitad del tiempo y con mejor nota, ese es exactamente el patrón que el estudio identifica como costoso.
Strömberg, Lei y Wu (2026), The Generative AI Learning Penalty, SSRN 6868618. Preprint. Es secundaria en China y la fecha de adopción es autorreportada: tómenlo como evidencia sugestiva, no como una ley sobre cursos universitarios.
Reproducibilidad
Entreguen el script junto con el informe. Tiene que correr de principio a fin, desde los datos
crudos hasta las tablas finales. Si no corre, el trabajo vuelve antes de corregirse. Es la misma regla que
aplican hoy las revistas de la profesión.
2La pregunta
El modelo neoclásico tiene una predicción nítida. Si el capital es escaso donde el ingreso es bajo, su producto marginal ahí es más alto, y el capital debería fluir de los países ricos a los pobres. Esos países invertirían por encima de su ahorro, tendrían déficit de cuenta corriente y convergerían más rápido.
El problema es que no ocurre. Ni en la dirección de los flujos, ni en su asociación con el crecimiento. Ese desacuerdo entre teoría y evidencia es el tema del TP.
¿Los países que financian su inversión con ahorro externo crecen más rápido, o crecen más los que la financian con ahorro propio?
Seis trabajos para empezar
No pueden ser los únicos. La revisión de literatura tiene que organizar un debate, no encadenar resúmenes.
Lucas (1990)
Why Doesn't Capital Flow from Rich to Poor Countries?
El planteo original. Es calibración, no econometría: sirve para dimensionar cuán grande es la anomalía.
Gourinchas y Jeanne (2013)
The Allocation Puzzle
Refina el enigma: entre países en desarrollo el capital fluye menos hacia los que más crecen. Al revés de lo que predice el modelo.
Prasad, Rajan y Subramanian (2007)
Foreign Capital and Economic Growth
Estima directamente la relación del TP. Los países no industriales que recurrieron menos al ahorro externo crecieron más rápido.
Cavallo, Eichengreen y Panizza (2018)
Can countries rely on foreign saving…?
Enfoque de episodios, no de regresión promedio: los déficits grandes y persistentes rara vez terminan bien.
Blanchard y Giavazzi (2002)
Current Account Deficits in the Euro Area
La lectura benigna: el déficit refleja convergencia y suavizamiento intertemporal. Es el contraargumento que la revisión tiene que discutir.
Grigoli, Herman y Schmidt-Hebbel (2018)
Saving in the world
Determinantes del ahorro. Importa porque muestra que el ahorro externo no es una variable de política directa: se determina junto con el ahorro doméstico y la inversión.
De un lado, el déficit como señal de convergencia. Del otro, la evidencia de que los países que más recurren al ahorro externo no crecen más y son más frágiles. Si la revisión no deja clara esa tensión, no está cumpliendo su función.
3La identidad
Todo el trabajo se apoya en la identidad de cuentas nacionales de una economía abierta. Del equilibrio ahorro-inversión:
Tres cosas hay que tener claras antes de seguir:
- Es una identidad, no una relación de comportamiento. Se cumple por construcción y no dice nada sobre causalidad. Un déficit puede reflejar inversión que sube, ahorro que cae, o las dos cosas.
- El signo esperado es ambiguo. Una lectura ve convergencia; la otra ve apreciación real, pérdida de competitividad del sector transable y exposición a reversiones súbitas.
- Condicionar en $I$ cambia la pregunta. Volvemos sobre esto en la sección 7, y es el error más frecuente del trabajo.
Ahora, en los datos
La identidad dice que estas dos medidas del ahorro externo deberían ser la misma. Constrúyanlas y comparen antes de hacer cualquier otra cosa:
gen sext = -cab // via cuenta corriente
gen sext_is = inv - gns // via identidad I - S
gen disc = sext - sext_is // discrepancia
label var sext "Ahorro externo (%PIB)"
label var sext_is "Ahorro externo, medida I-S (%PIB)"
sum sext sext_is disc
pwcorr sext sext_is, sigSi es una identidad exacta, ¿por qué la discrepancia no es cero?
Por tres razones:
- Discrepancia estadística. Cuentas nacionales y balance de pagos se compilan con fuentes distintas y no cierran perfectamente.
- La discrepancia estadística del PIB. Medido por el gasto y medido por la producción, el PIB no da igual, y esa brecha se traslada a la inversión y al ahorro expresados como porcentaje.
- Capacidad estadística. La brecha no está repartida al azar: es chica en los países de ingreso alto y grande en los de ingreso bajo. No es un detalle contable, es el error de medición del que habla la sección 8.
Krugman, Obstfeld y Melitz, Economía Internacional, capítulo de contabilidad nacional y balanza de pagos. Construye la identidad partiendo de la economía cerrada, con datos reales, antes de abrir al sector externo.
4Datos
| Fuente | Qué tiene | Acceso |
|---|---|---|
| WDI · Banco Mundial | Cuenta corriente, ahorro, inversión, PIB, apertura, población, inflación | databank.worldbank.org |
| PWT · Groningen | PIB per cápita a PPA, capital, PTF. 185 países, 1950–2023 | rug.nl/ggdc |
| IFS · FMI | Estadísticas financieras internacionales, balance de pagos | data.imf.org |
5Armar el panel
Antes de importar
- Nombres de variables en minúscula y en la primera fila. Sin espacios: usen guión bajo.
- Verifiquen que el separador decimal coincida entre Excel y Stata:
set dp commaoset dp period. - Si guardan como CSV, Excel avisa que se pierden las hojas múltiples. Es lo que buscan.
import excel using datos_WB_2026.xlsx, first sheet(1) clear
label var gdp_pc2021 "PIB per capita PPA"
label var cab "Cuenta corriente (%PIB)"
label var gns "Ahorro nacional bruto (%PIB)"
label var inv "Inversion (%PIB)"
sum
save wb_data.dta, replaceimport delimited using datos_WB_2026.csv, clear
save wb_data.dta, replace* Requiere: ssc install wbopendata
wbopendata, language(en) long clear ///
indicator()
* Los nombres vienen en minuscula con guiones bajos: bn_cab_xoka_gd_zs
describeEs la vía más reproducible, pero los nombres que devuelve el paquete cambian entre versiones.
Corran describe siempre antes de renombrar.
Unir, agregar, reorganizar
use wb_data.dta, clear
merge m:1 ccode using meta.dta, keep(match master) nogenappend hace lo otro: pega bases una debajo de la otra, agrega observaciones.
collapse gdp_pc2021 (max) cab_max = cab (p50) inv_p50 = inv, by(region)
list* de largo a ancho
keep ccode year cab
rename cab cc
reshape wide cc, i(ccode) j(year)
* y de vuelta
reshape long cc, i(ccode) j(year)Definir el panel y crear variables
use wb_data.dta, clear
merge m:1 ccode using meta.dta, keep(match master) nogen
egen id = group(ccode)
order id ccode year
tsset id year, yearly
gen gdp_gr = ((gdp_pc2021 / L.gdp_pc2021) - 1) * 100
egen open = rowtotal(exports imports)
gen lny = ln(gdp_pc2021)
label var gdp_gr "Crecimiento (PIBpc)"
label var open "Apertura comercial (%PIB)"
label var lny "Log PIB per capita PPA"Efectos fijos: por qué importan
Un panel tiene varias unidades observadas en el tiempo: doble variabilidad. Eso permite controlar por efectos no observables que varían sólo por individuo. Si no los incluimos, hay sesgo por variable omitida.
La transformación within muestra qué está pasando: controlar por efectos fijos es idéntico a restarle a cada observación la media de su individuo. La identificación viene sólo de la variación dentro de cada país.
6Del dato a la evidencia
Armar la muestra
keep if inrange(year, 2000, 2024)
egen nobs = count(gdp_gr) if !missing(sext, lny), by(id)
bysort id: egen nobs_max = max(nobs)
keep if nobs_max >= 15
egen tag = tag(ccode)
count if tagEse filtro de 15 años es un criterio de exclusión. Reporten cuántos países quedan, cuáles se cayeron y por qué. Si los que se caen son sistemáticamente los más pobres, tienen un problema de selección que hay que mencionar entre las limitaciones.
Van a tener que descartar observaciones. MCO promedia distancias verticales respecto de la recta, y de ahí salen cuatro casos que conviene distinguir:
- Filtrar por una variable explicativa ($X$). No sesga $\beta$: no altera la distribución del error condicional a $X$. Cuesta precisión, porque achica la varianza de $X$. Y tiene una salvedad: si la relación no es lineal o la pendiente difiere entre grupos, recortar el rango de $X$ cambia qué están estimando, aunque el estimador siga siendo insesgado en el rango que queda.
- Filtrar por la variable dependiente ($Y$). Descartar países porque «tuvieron recesiones muy fuertes» trunca los residuos de un solo lado y aplana la pendiente. No lo hagan.
- Filtrar por un tercer criterio, que es el caso normal. «Al menos 15 años de datos», «más de un millón de habitantes». No son ni $X$ ni $Y$, y ahí está el riesgo: la disponibilidad de datos no es aleatoria. Los países sin estadísticas suelen ser los que tuvieron guerras, colapsos o Estados frágiles, es decir, países cuyo crecimiento difiere por razones que el modelo no observa. La regla general es que el criterio sea independiente del error dado $X$; cuando no puedan garantizarlo, decláremlo, reporten quiénes quedaron afuera y muestren si el resultado cambia sin ese filtro.
- Filtrar mirando los residuos: el peor caso. Sacar los puntos que «se ven raros» en el gráfico, o los que más mueven el coeficiente, es seleccionar directamente sobre el término de error. Es la forma más rápida de fabricar un resultado sin darse cuenta. Si van a excluir atípicos, definan el criterio antes de mirar cuáles son, aplíquenlo en las dos colas, y reporten la estimación con y sin ellos.
Resumido: recortar por las explicativas es caro pero honesto; recortar por el resultado o por los residuos es barato y tramposo.
Comparar grupos
table (region) (result), ///
statistic(mean gdp_gr sext gns inv) ///
statistic(n gdp_gr) nformat(%6.2f mean)
table (incomelevel) (result), ///
statistic(mean gdp_gr sext gns inv) ///
statistic(n gdp_gr) nformat(%6.2f mean)Dos gráficos que dicen cosas distintas
El primero mide diferencias entre países: un punto por país. El segundo mide la variación dentro de cada país, después de quitar las diferencias permanentes y los choques globales de cada año.
* (a) relacion ENTRE paises: un punto por pais
preserve
collapse (mean) gdp_gr sext, by(ccode incomelevel)
gen byte hic = (incomelevel == "HIC")
gen byte arg = (ccode == "ARG")
two (scatter gdp_gr sext if hic==0, msize(small) mcolor(stc1%50)) ///
(scatter gdp_gr sext if hic==1, msize(small) mcolor(stc2%50)) ///
(scatter gdp_gr sext if arg==1, msize(medium) mcolor(black) ///
msymbol(D) mlabel(ccode) mlabpos(12)) ///
(lfit gdp_gr sext, lcolor(black) lpattern(dash)), ///
legend(order(1 "En desarrollo" 2 "Ingreso alto" 3 "Argentina") ///
rows(1) pos(6)) scheme(stcolor) ///
xtitle("Ahorro externo promedio (%PIB)") ///
ytitle("Crecimiento promedio PIB pc (%)")
restore* (b) relacion DENTRO de cada pais: efectos fijos parcializados
preserve
keep if !missing(gdp_gr, sext)
qui reg gdp_gr i.id i.year
predict double g_res, resid
qui reg sext i.id i.year
predict double s_res, resid
xtile bin = s_res, nq(20)
collapse (mean) g_res s_res, by(bin)
two (scatter g_res s_res, mcolor(stc1)) ///
(lfit g_res s_res, lcolor(stc2)), ///
legend(off) scheme(stcolor) ///
xtitle("Ahorro externo (residuo de EF pais y anio)") ///
ytitle("Crecimiento (residuo de EF pais y anio)")
restoreComparen las dos pendientes. Si difieren en signo o en magnitud, expliquen por qué: es exactamente el fenómeno de la figura de efectos fijos, ahora con datos reales. Y es la mejor introducción posible a la sección siguiente.
Argentina
preserve
keep if ccode == "ARG"
two (bar sext year, color(stc1%60) yaxis(1)) ///
(line gdp_gr year, lcolor(stc2) lwidth(medthick) yaxis(2)), ///
yline(0, lcolor(gs10) axis(1)) scheme(stcolor) ///
ylabel(-12(4)12, axis(1)) ylabel(-12(4)12, axis(2)) ///
legend(order(1 "Ahorro externo (%PIB)" 2 "Crecimiento pc (%)") rows(1) pos(6)) ///
xtitle("") ytitle("%PIB", axis(1)) ytitle("% anual", axis(2))
restoreIdentifiquen los episodios de mayor ahorro externo y miren qué pasó en los años siguientes. Eso es el enfoque de episodios de Cavallo, Eichengreen y Panizza aplicado a un caso.
7Estimación
xtset id year, yearly
eststo clear
* (1) BETWEEN: la relacion ENTRE paises, un dato por pais
* Promedia cada pais a lo largo del tiempo y compara paises entre si.
* Nota: el estimador between no admite errores robustos ni cluster.
eststo m1: xtreg gdp_gr sext, be
* (2) EF de pais
eststo m2: xtreg gdp_gr sext, fe rob
* (3) EF de pais y de anio
eststo m3: xtreg gdp_gr sext i.year, fe rob
* (4) EF + controles
eststo m4: xtreg gdp_gr sext L.lny open pop_gr linfl i.year, fe robEn xtreg, fe rob Stata usa automáticamente errores estándar agrupados por
panel. No hace falta escribir vce(cluster id).
La quinta: cambiar una decisión de construcción de datos
Una de las cinco especificaciones tiene que variar una decisión sobre cómo se construyeron los datos, no un control. Acá pasamos de datos anuales a promedios quinquenales no superpuestos.
preserve
gen periodo = 2000 + 5*floor((year - 2000)/5)
bysort id periodo (year): gen lny_ini = lny[1]
collapse (mean) gdp_gr sext open pop_gr linfl (first) lny_ini, by(id periodo)
xtset id periodo, delta(5)
eststo m5: xtreg gdp_gr sext lny_ini open pop_gr linfl i.periodo, fe rob
restore¿Qué es lo que cambia?
Los datos anuales están dominados por la relación mecánica de corto plazo entre absorción y saldo externo: un año de recesión comprime importaciones y mejora la cuenta corriente sin que haya pasado nada estructural.
La pregunta del trabajo es de mediano plazo. Los promedios quinquenales filtran esa alta frecuencia.
Si el coeficiente cambia al pasar de una frecuencia a la otra, eso es un resultado, no un problema: indica que la conclusión depende de qué horizonte se considere relevante.
Un déficit externo grande puede convivir con más crecimiento en los primeros años y con menos varios años después: la absorción sube primero y el ajuste llega más tarde. Su $\beta$ es un promedio de esos tramos, con el peso que le dé la frecuencia de los datos.
Por eso no lo lean como «el efecto», sin más. Digan a qué horizonte corresponde la estimación y qué parte de la dinámica no están viendo. Parte de la literatura abandona precisamente la regresión lineal promedio y sigue a los países durante y después de los episodios de déficit: su tabla no puede replicar eso, y decirlo va en las limitaciones.
Una sola tabla
esttab m1 m2 m3 m4 m5, ///
se bracket r2 star(* 0.10 ** 0.05 *** 0.01) label ///
keep(sext L.lny lny_ini open pop_gr linfl) ///
mtitles("Between" "EF pais" "EF pais+anio" "+ controles" "Quinquenios")
esttab m1 m2 m3 m4 m5 using regs_tp1.csv, ///
se bracket r2 star(* 0.10 ** 0.05 *** 0.01) label replaceInterpreten en términos cuantitativos: cuántos puntos porcentuales de crecimiento implica un punto porcentual más de ahorro externo, y si esa magnitud es relevante frente al desvío estándar de la variable. Comparen columna contra columna explicando qué cambia y por qué.
La columna (1) y las que siguen no usan la misma variación. El estimador between promedia cada país a lo largo del período y los compara entre sí: responde si los países que en promedio recurrieron más al ahorro externo crecieron más. Las columnas con efectos fijos comparan a cada país consigo mismo en el tiempo: responden si un país crece más en los años en que recurre más al ahorro externo. Son dos preguntas distintas y no tienen por qué dar lo mismo.
Si la columna (1) difiere de las demás, eso es un resultado y hay que escribirlo, no una inconsistencia que se resuelva eligiendo una. Digan cuál de las dos preguntas es la del trabajo y por qué. Es el mismo contraste de los dos gráficos de la sección 6, ahora con controles.
La trampa de la inversión
Meter la inversión como control sin advertir lo que implica. Por la identidad $S^{ext} = I - S^{n}$, condicionar en $I$ convierte el coeficiente en el efecto de sustituir ahorro doméstico por externo manteniendo la inversión total constante.
Es una pregunta legítima, y es la que permite separar el papel del ahorro doméstico del papel del ahorro externo. Pero no es la misma pregunta, y hay que decir cuál se está respondiendo.
eststo clear
eststo sin_inv: xtreg gdp_gr sext L.lny open pop_gr linfl i.year, fe rob
eststo con_inv: xtreg gdp_gr sext L.lny inv open pop_gr linfl i.year, fe rob
esttab sin_inv con_inv, se bracket r2 label keep(sext L.lny inv) ///
mtitles("Sin inversion" "Con inversion")Si el coeficiente cambia mucho entre las dos columnas, no es un problema de robustez: son dos preguntas distintas. Escríbanlo así en el informe.
Una verificación que conviene hacer: por la identidad, el coeficiente del ahorro externo condicionado en $I$ tiene que ser igual y de signo opuesto al del ahorro doméstico condicionado en $I$. Corran las dos regresiones y compárenlos. Lo que los separe es la discrepancia de la sección 3, es decir, error de medición y nada más.
8Qué puede salir mal
Causalidad inversa
La cuenta corriente responde al crecimiento esperado tanto como podría afectarlo. Es el mecanismo mismo de la lectura benigna.
Variables omitidas
Términos de intercambio y precios de commodities mueven las dos variables a la vez. Los efectos fijos de país no los capturan: varían en el tiempo.
Error de medición
La discrepancia de la sección 3 sesga $\beta$ hacia cero. Un coeficiente no significativo puede ser uno atenuado.
Un diagnóstico rápido: estimen la persistencia del ahorro externo y comparen su dispersión entre países con su dispersión dentro de cada país. Van a encontrar que variación dentro hay de sobra. El problema no es que los efectos fijos se coman la variación, sino de qué tipo es la que queda: movimientos anuales dominados por el ciclo y la absorción, no por el patrón de mediano plazo que les interesa. Es la misma razón por la que los promedios quinquenales de la sección 7 pueden cambiar la respuesta.
xtreg sext L.sext, fe rob
xtsum sext gdp_gr9Antes de entregar
Un trabajo que concluya «la relación no es robusta» y lo demuestre bien vale tanto como uno que encuentre un efecto significativo. Se evalúa el razonamiento, no el signo del coeficiente.