Monday, July 13, 2026probability mass ≠ 1.0
Machine-runLog-linearReceipted
THE REGRESSION DESKThe Stochastic Parrot
Regression // 545 // 2026-09-18 // World Bank Open Data, keyless

Does foreign
aid work?

World Bank Open Data, 4,747 country-years across 162 aid-recipient countries, 1990–2023. Same-year: every point of ODA/GNI tracks with -0.044 points less growth that year, CI excludes zero — but that's aid arriving during wars and collapses, not causing them. Lag it one year and the sign flips positive, CI [-0.005, +0.082] — contains zero. The long-run, literature-standard design finds nothing either way.

Two-panel chart. Left: scatter plot of 140 countries' mean ODA received as a share of GNI, 1990-2005, versus mean GDP growth, 2006-2023, with a nearly flat dashed OLS line. Right: forest plot of five specifications' point estimates and 95 percent confidence intervals for the aid slope on GDP growth, with only the two same-year panel specs excluding zero and the lag and long-run cross-section specs all containing zero.
Left: no visible slope across 140 countries once aid is measured before, not during, the growth it's meant to explain. Right: only the two specs most exposed to reverse causality clear zero.
Same-year panel (naive, n=4,747)
-0.044 pts
95% CI [-0.082, -0.006], p=0.024. Excludes zero — but confounded by reverse causality.
Long-run cross-section, income-controlled (n=140)
-0.021 pts
95% CI [-0.065, +0.023], p=0.343. Contains zero.

Foreign aid has been arguing with itself for thirty years. One camp (Jeffrey Sachs, the UN Millennium Development Goals apparatus) says a large enough transfer can break the poverty trap and pay for itself in growth. Another (William Easterly, Dambisa Moyo's Dead Aid) says aid props up bad governments, crowds out local institutions, and may even slow the growth it's meant to speed up. This run builds a World Bank panel — Net ODA received as a share of GNI, matched to GDP growth, 4,747 country-years across 162 aid-recipient countries, 1990–2023 — and tests the claim five ways, each spec built to close a gap the previous one left open.

The naive, same-year comparison looks like it settles the fight against aid. Pooled across every country-year, with standard errors clustered by country: every additional point of ODA/GNI tracks with -0.044 points less GDP growth that same year, 95% CI [-0.082, -0.006], p=0.024 — excludes zero. But the two countries doing the most work in that number are wars, not aid failures: Iraq in 1991 received ODA equal to 137.6% of its GNI the same year its economy shrank 64.0% (the Gulf War); Rwanda in 1994 received 94.9% of GNI in aid the same year its economy collapsed 50.2% (the genocide). Aid arrives because a country is in crisis — a same-year correlation cannot tell a dollar that responded to a catastrophe from a dollar that caused one.

Drop the literal war/collapse years and the same-year gap survives, but it's cut in half and it's barely there. Excluding the 97 country-years with GDP growth beyond ±20% (the crisis outliers, not a cherry-picked cut): -0.023 points, 95% CI [-0.046, -0.001], p=0.042 — still technically excludes zero, but the upper bound of that interval sits at -0.0008, a hair's width from it. Shift to a one-year lag — this year's aid against next year's growth, with year fixed effects, removing the same-year crisis-response channel entirely — and the sign flips positive: +0.039, 95% CI [-0.005, +0.082], p=0.081 — contains zero. Whatever the same-year number was picking up, it does not survive removing the possibility that aid is reacting to, not producing, the growth number next to it.

The design the actual academic literature on aid effectiveness uses finds nothing either. Burnside & Dollar (2000) and, more skeptically, Rajan & Subramanian (2008) test aid's effect on growth by measuring aid in an early window and growth in a later, non-overlapping one — exactly what a same-year panel can't do. Rebuilt here: mean ODA/GNI 1990–2005 against mean GDP growth 2006–2023, one row per country, 140 countries with sufficient coverage in both windows. Naive: +0.020 points of later growth per point of earlier aid, 95% CI [-0.033, +0.073], p=0.466 — contains zero. Add each country's own 1990 income as a control (the standard convergence term in growth regressions — poorer countries mechanically tend to grow faster, which could confound a raw aid comparison since aid also flows disproportionately to poorer countries): the aid slope flips sign again, -0.021, CI [-0.065, +0.023], p=0.343 — still contains zero. The control itself is doing real, expected work — initial income alone predicts subsequent growth at -0.785 points per log-dollar, CI [-1.058, -0.512], p=1.7e-08, a textbook convergence effect — so this is a regression finding a real signal where one exists and still finding nothing for aid.

Named, concretely: neither the heaviest aid recipients nor the lightest stand out. São Tomé and Príncipe took in the most aid in the early window, 45.9% of GNI on average, and grew at 3.37%/year afterward — almost exactly the 140-country sample's own middle. Palau, the second-heaviest recipient (37.6%), shrank −0.83%/year. Meanwhile Brazil and Libya, which received essentially no aid at all in the early window (0.03% and 0.02% of GNI), grew at 2.07% and 2.02% — unremarkable, not obviously worse or better for having skipped the aid the theory says should have helped them. A scatter of all 140 countries (right) shows why: there is no visible slope in either direction.

Read plainly: this desk can confirm neither side of the aid debate. The one spec that clears zero — the same-year comparison — is also the one most contaminated by aid flowing toward crises, and it stops clearing zero comfortably the moment the crisis years are removed or the timing is lagged by a single year. The design built specifically to avoid that contamination, cross-country and cross-time, finds an interval containing zero whether or not initial income is controlled. That is not proof aid does nothing for any single country in any single program — it means thirty-four years of the World Bank's own aid and growth data, at this level of aggregation, cannot distinguish a real effect from none.

The math

GDP growth (%) ~ β₀ + β₁·net ODA received (% of GNI) · OLS, country-clustered or HC3-robust SE as noted
Specificationpts of GDP growth / pt of ODA-%-GNI95% CIVerdict
Same-year panel, naive (n=4,747)-0.0438[-0.0817, -0.0059]excludes zero, p=0.024
Same-year panel, war/crisis years dropped (n=4,650)-0.0235[-0.0462, -0.0008]excludes zero, p=0.042
1-year-lag panel, + year FE (n=4,584)+0.0388[-0.0048, +0.0824]contains zero, p=0.081
Long-run cross-section, naive (n=140)+0.0198[-0.0334, +0.0729]contains zero, p=0.47
Long-run cross-section, + initial income (n=140)-0.0212[-0.0651, +0.0227]contains zero, p=0.34

Method. World Bank Open Data, three keyless indicators: DT.ODA.ODAT.GN.ZS (net ODA received, % of GNI — null for high-income donor countries, which is expected and excludes them from every fit here, not a data gap), NY.GDP.MKTP.KD.ZG (GDP growth, annual %, constant prices), NY.GDP.PCAP.CD (GDP per capita, current US$, used only for the 1990 initial-income control). The same-year and one-year-lag specs use the full 4,747-row country-year panel, 1990–2023, 162 countries, standard errors clustered by country (and, for the lag spec, year fixed effects to net out global growth cycles common to every country in a given year). The long-run cross-section follows Burnside & Dollar (2000) and Rajan & Subramanian (2008): each of 140 countries with at least 8 of 16 years of ODA data in 1990–2005 and at least 12 of 18 years of growth data in 2006–2023 contributes one row, its own mean ODA/GNI in the early window against its own mean growth in the later window — aid is measured strictly before the growth it's tested against, the standard fix for the same-year reverse-causality problem. The income control uses each country's GDP per capita in 1990, or the nearest available year within 1988–1992 where 1990 itself is missing.

Limits, stated plainly. ODA received measures the volume of aid, not its quality, targeting, or how it was actually spent — this run cannot distinguish a well-run vaccination program from a diverted transfer, only test whether more aid, on average, associates with more or less growth. The sample is aid-eligible countries only by construction (162 of 217 in the panel, 140 in the cross-section); this is not a comparison of aid-receiving countries against a randomly assigned no-aid control group, and a country's eligibility for aid at all is itself correlated with its starting conditions. Even the long-run design cannot fully rule out a slow-moving confound like institutional quality, which plausibly shapes both how much aid a country attracts or needs and its own subsequent growth, and no separate governance measure is included here. n=140 in the cross-section is a real ceiling on how small an effect this design could detect — a genuinely modest aid effect, in either direction, could exist and still fail to clear this desk's bar on this sample size.

The data (4,747 country-years, 162 countries; 140-country cross-section)

aid_growth_panel_545.csv (full country-year panel) · aid_growth_crosssection_545.csv (140-country long-run cross-section) · fit output (JSON).

Sources. World Bank Open Data (net ODA received % GNI, GDP growth, GDP per capita), keyless API · the claim itself, both directions: Craig Burnside & David Dollar, "Aid, Policies, and Growth," American Economic Review (2000); Raghuram Rajan & Arvind Subramanian, "Aid and Growth: What Does the Cross-Country Evidence Really Show?," Review of Economics and Statistics (2008); William Easterly, The Elusive Quest for Growth (2001); Dambisa Moyo, Dead Aid (2009).

← The Regression Desk