<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Gonzalo Llamosas</title>
<link>https://gonzalollamosas.com/blog/</link>
<atom:link href="https://gonzalollamosas.com/blog/index.xml" rel="self" type="application/rss+xml"/>
<description>Short writing on fiscal policy, behavioural economics, AI and methods — in English or Spanish, depending on the audience.</description>
<image>
<url>https://gonzalollamosas.com/images/profile.jpg</url>
<title>Gonzalo Llamosas</title>
<link>https://gonzalollamosas.com/blog/</link>
</image>
<generator>quarto-1.9.38</generator>
<lastBuildDate>Wed, 10 Jun 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>¿Reduce la consolidación fiscal la deuda pública? Lo que dicen los datos de la UE</title>
  <dc:creator>Gonzalo Llamosas-García</dc:creator>
  <link>https://gonzalollamosas.com/blog/posts/consolidacion-fiscal-deuda.html</link>
  <description><![CDATA[ 




<p><img src="https://gonzalollamosas.com/blog/posts/images/irf-deuda.png" class="post-banner img-fluid" alt="Respuesta del ratio deuda/PIB a la entrada en consolidación fiscal. Los puntos de los horizontes 0 y 1 son significativos al 5%."></p>
<p>La intuición es sencilla. Si un país recorta su déficit, su deuda debería crecer menos y el ratio deuda/PIB debería bajar. Esa intuición sostiene buena parte del diseño de la política fiscal europea desde hace décadas. En un <a href="https://www.researchgate.net/publication/403998208_Does_Fiscal_Consolidation_Reduce_Public_Debt_Evidence_from_the_European_Union_Using_Local_Projections">working paper reciente</a>, con Cristina Mazas Pérez-Oleaga y José M. Domínguez Martínez, ponemos esa intuición frente a los datos de la UE-27. El resultado incomoda: entrar en consolidación fiscal no reduce el ratio de deuda y, a corto plazo, lo aumenta.</p>
<section id="qué-hicimos" class="level2">
<h2 class="anchored" data-anchor-id="qué-hicimos">Qué hicimos</h2>
<p>Estudiamos los 27 países de la UE entre 1996 y 2024. Definimos un episodio de consolidación como el año en que el saldo primario estructural mejora al menos un punto porcentual del PIB potencial, una definición estándar que captura el esfuerzo fiscal discrecional y no el ciclo. Eso da 126 episodios utilizables. Para estimar sus efectos usamos proyecciones locales con la metodología de diferencias en diferencias de Dube y coautores (2025), que evita un problema clásico de este tipo de estudios, el de comparar países que consolidan con países que también están consolidando un poco más tarde o un poco antes. Solo comparamos cada episodio con países limpios, que no consolidan en la ventana relevante.</p>
</section>
<section id="qué-encontramos" class="level2">
<h2 class="anchored" data-anchor-id="qué-encontramos">Qué encontramos</h2>
<p>En el año de entrada, el ratio deuda/PIB sube 0,86 puntos respecto a los países comparables. Al año siguiente, 1,35 puntos. Ambos efectos son estadísticamente significativos. En horizontes más largos las estimaciones puntuales siguen creciendo, hasta unos 2,5 puntos a cinco años, aunque pierden precisión, algo esperable con 27 países.</p>
<p>Lo interesante no es el titular sino el porqué. Descomponemos la dinámica de la deuda y encontramos cuatro mecanismos que operan a la vez.</p>
<p>El primero es el producto. El PIB real cae de forma persistente tras la entrada en consolidación, alrededor de un 1,6 por ciento en el impacto y un 3 por ciento acumulado a tres años. Como el ratio de deuda tiene el PIB en el denominador, parte del aumento es pura aritmética.</p>
<p>El segundo es la inversión pública, que cae de forma monótona durante todo el horizonte. Es la partida más fácil de recortar políticamente y la que más daño hace al crecimiento futuro.</p>
<p>El tercero son los ajustes stock-flujo, esa categoría residual que recoge todo lo que mueve la deuda sin pasar por el déficit. Lejos de ser ruido, encontramos que se mantienen elevados y significativos en todos los horizontes tras una consolidación.</p>
<p>El cuarto es el que más cuestiona el relato convencional. Si los mercados premiaran el esfuerzo fiscal, las primas de riesgo deberían bajar tras una consolidación. No bajan. El diferencial soberano sube en el impacto y después simplemente vuelve a su nivel. No hay dividendo de credibilidad.</p>
<p>Conviene subrayar que el esfuerzo fiscal es real. El saldo primario mejora en torno a tres puntos de PIB y se mantiene. El problema no es que los gobiernos no consoliden, es que la aritmética de la deuda se come el esfuerzo por las otras tres vías.</p>
</section>
<section id="no-todas-las-consolidaciones-son-iguales" class="level2">
<h2 class="anchored" data-anchor-id="no-todas-las-consolidaciones-son-iguales">No todas las consolidaciones son iguales</h2>
<p>El resultado medio esconde una asimetría importante. Cuando el diferencial entre el tipo de interés y el crecimiento es desfavorable, consolidar empeora claramente el ratio, 1,7 puntos en el impacto y 3,2 al año siguiente. Cuando el diferencial es favorable, las estimaciones cambian de signo, aunque son imprecisas. Dicho de otro modo, consolidar en el peor momento macroeconómico es precisamente cuando más se autolesiona la política.</p>
<p>El diseño también importa. Las consolidaciones que protegen la inversión pública muestran mejores resultados de deuda que las que la recortan, y es el rasgo de diseño más robusto que encontramos.</p>
</section>
<section id="por-qué-importa-ahora" class="level2">
<h2 class="anchored" data-anchor-id="por-qué-importa-ahora">Por qué importa ahora</h2>
<p>El marco fiscal europeo reformado en 2024 introduce sendas de ajuste específicas por país y un tratamiento especial para la inversión. Nuestros resultados respaldan empíricamente ambas decisiones. Y operacionalizan para la UE-27 el debate que abrió Blanchard sobre la deuda con tipos bajos: en regímenes macroeconómicos adversos, la austeridad puede subir el ratio de deuda que pretendía bajar.</p>
<p>El paper completo, con la estrategia empírica y todas las robusteces, está disponible en <a href="https://www.researchgate.net/publication/403998208_Does_Fiscal_Consolidation_Reduce_Public_Debt_Evidence_from_the_European_Union_Using_Local_Projections">ResearchGate</a> y en la página de <a href="../../research.html">Research</a>.</p>
</section>
<section id="la-figura-de-cabecera-en-unas-líneas-de-r" class="level2">
<h2 class="anchored" data-anchor-id="la-figura-de-cabecera-en-unas-líneas-de-r">La figura de cabecera, en unas líneas de R</h2>
<p>Una manía de la casa: las figuras de este blog se generan con código reproducible. La de arriba son las estimaciones puntuales del paper, nada más, y se dibuja así.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ggplot2)</span>
<span id="cb1-2"></span>
<span id="cb1-3">irf <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(</span>
<span id="cb1-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">h    =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">beta =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.86</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.35</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.45</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.54</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.37</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.56</span>),</span>
<span id="cb1-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sig  =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>, <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>, <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>, <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>, <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>, <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>)</span>
<span id="cb1-7">)</span>
<span id="cb1-8"></span>
<span id="cb1-9"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ggplot</span>(irf, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(h, beta)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb1-10">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_hline</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yintercept =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">colour =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#c9c2b4"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb1-11">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_line</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">colour =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#E6AA04"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">linewidth =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.4</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb1-12">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_point</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> sig), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">shape =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">21</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">size =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.5</span>,</span>
<span id="cb1-13">             <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">colour =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#E6AA04"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">stroke =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.6</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb1-14">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_fill_manual</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">values =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#FBFAF7"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#E6AA04"</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">guide =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb1-15">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">labs</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Horizonte (años desde la entrada)"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">expression</span>(beta[h])) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb1-16">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">theme_minimal</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">base_size =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">16</span>)</span></code></pre></div></div>
<div class="post-signature">
  
  <span class="sig-name">Gonzalo Llamosas · Málaga</span>
</div>


</section>

 ]]></description>
  <category>español</category>
  <category>fiscal policy</category>
  <category>public debt</category>
  <guid>https://gonzalollamosas.com/blog/posts/consolidacion-fiscal-deuda.html</guid>
  <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
  <media:content url="https://gonzalollamosas.com/blog/posts/images/irf-deuda.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>Clean controls in practice: estimating debt effects with LP-DiD</title>
  <dc:creator>Gonzalo Llamosas-García</dc:creator>
  <link>https://gonzalollamosas.com/blog/posts/lp-did-clean-controls.html</link>
  <description><![CDATA[ 




<p><img src="https://gonzalollamosas.com/blog/posts/images/clean-controls.png" class="post-banner img-fluid" alt="Schematic of the clean-control rule. The treated unit enters at year t with a window to t plus h; a unit that treats inside the window is excluded; the remaining rows are clean controls."></p>
<p>Event studies on macro panels have a quiet problem. In a standard two-way fixed effects setup, countries that treated earlier serve as controls for countries that treat later, and vice versa. When treatment effects are heterogeneous or dynamic, those comparisons contaminate the estimates, a point the difference-in-differences literature has made forcefully over the last few years. Fiscal policy applications are especially exposed, because consolidation episodes cluster in time, think 2010 to 2013, and their effects build slowly.</p>
<p>The Local Projections Difference-in-Differences estimator of Dube, Girardi, Jordà and Taylor (2025, <em>Journal of Applied Econometrics</em>) addresses this with two design choices that are easy to state and easy to audit. In a <a href="https://www.researchgate.net/publication/403998208_Does_Fiscal_Consolidation_Reduce_Public_Debt_Evidence_from_the_European_Union_Using_Local_Projections">recent working paper</a> with Cristina Mazas Pérez-Oleaga and José M. Domínguez Martínez, we apply it to 126 fiscal consolidation episodes in the EU-27. A few practical lessons follow.</p>
<section id="the-two-design-choices" class="level2">
<h2 class="anchored" data-anchor-id="the-two-design-choices">The two design choices</h2>
<p>First, treatment is defined as entry. The treatment indicator switches on in the year a country crosses the consolidation threshold, an improvement of at least one percentage point of potential GDP in the structural primary balance, and what is estimated is the effect of entering an episode, horizon by horizon.</p>
<p>Second, and this is the core of the method, the control group at each horizon contains only clean observations, meaning countries that are not treated anywhere in the window from the entry year to the horizon of interest. No forbidden comparisons enter the estimate. The outcome is a long difference from the pre-treatment year, and the specification adds country fixed effects, year-by-horizon fixed effects, two lags of the outcome change and lagged macro controls.</p>
<p>The cost is transparency about sample loss. Of 135 episodes in our panel, 126 survive the clean-control requirement at the impact horizon, and the effective sample shrinks as the horizon lengthens. We report the counts at every horizon, and we would encourage anyone using the method to do the same, because the estimand quietly changes with the surviving sample.</p>
</section>
<section id="the-estimator-in-a-few-lines-of-r" class="level2">
<h2 class="anchored" data-anchor-id="the-estimator-in-a-few-lines-of-r">The estimator in a few lines of R</h2>
<p>Stripped to its essentials, the whole procedure fits on one screen. For each horizon, build the long difference, flag the units that stay untreated through the window, keep entries and clean controls only, and run the fixed-effects regression.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(dplyr)</span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(fixest)</span>
<span id="cb1-3"></span>
<span id="cb1-4">lpdid_h <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(panel, h) {</span>
<span id="cb1-5">  df <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> panel <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-6">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">group_by</span>(country) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-7">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(</span>
<span id="cb1-8">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">d_y   =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lead</span>(debt_gdp, h) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lag</span>(debt_gdp, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>),           <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># long difference</span></span>
<span id="cb1-9">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">clean =</span> slider<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">slide_dbl</span>(entry, max, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">.after =</span> h) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># untreated in [t, t+h]</span></span>
<span id="cb1-10">    ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-11">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ungroup</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-12">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(entry <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> clean)                                <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># no forbidden comparisons</span></span>
<span id="cb1-13"></span>
<span id="cb1-14">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">feols</span>(d_y <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> entry <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> d_debt_l1 <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> d_debt_l2 <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> x_l1 <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> country <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> year,</span>
<span id="cb1-15">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> df, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cluster =</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span>country)</span>
<span id="cb1-16">}</span>
<span id="cb1-17"></span>
<span id="cb1-18">irf <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lapply</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(h) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lpdid_h</span>(panel, h))</span>
<span id="cb1-19"></span>
<span id="cb1-20"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 27 clusters: complement with a wild cluster bootstrap (Webb weights)</span></span>
<span id="cb1-21">fwildclusterboot<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">boottest</span>(irf[[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]], <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">param =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"entry"</span>,</span>
<span id="cb1-22">                           <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">B =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">999</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">type =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"webb"</span>)</span></code></pre></div></div>
<p>Each element of <code>irf</code> is one point of the impulse response, and the header figure of this post was drawn with the same logic. The real code adds the placebo horizons, the trimming and the robustness battery, but nothing conceptually new.</p>
</section>
<section id="what-we-learned-applying-it" class="level2">
<h2 class="anchored" data-anchor-id="what-we-learned-applying-it">What we learned applying it</h2>
<p>Inference with 27 clusters deserves more care than the default. We cluster at the country level and complement the usual standard errors with a wild cluster bootstrap using six-point Webb weights, which behaves better with few clusters. Conclusions that survive both are worth keeping; one of our headline results, the short-run increase in the debt ratio, does.</p>
<p>Pre-trends are testable and worth showing in three flavours. We report placebo coefficients at one, two and three years before entry for the baseline specification, for a conditional parallel-trends version and for a propensity-score trimmed sample restricted to common support. All three come out flat, which is what gives the post-treatment estimates their credibility.</p>
<p>Power, not bias, is the binding constraint at long horizons. Our point estimates grow with the horizon while their precision falls, and the honest reading is that the short-run effects are the reliable evidence. Writing that sentence in the paper, rather than hoping a referee will not notice, turned out to be the better strategy.</p>
<p>The full paper, including the debt decomposition that explains why consolidations fail to reduce the ratio, is on <a href="https://www.researchgate.net/publication/403998208_Does_Fiscal_Consolidation_Reduce_Public_Debt_Evidence_from_the_European_Union_Using_Local_Projections">ResearchGate</a> and summarised on the <a href="../../research.html">Research</a> page.</p>
<div class="post-signature">
  
  <span class="sig-name">Gonzalo Llamosas · Málaga</span>
</div>


</section>

 ]]></description>
  <category>english</category>
  <category>methods</category>
  <category>fiscal policy</category>
  <guid>https://gonzalollamosas.com/blog/posts/lp-did-clean-controls.html</guid>
  <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
  <media:content url="https://gonzalollamosas.com/blog/posts/images/clean-controls.png" medium="image" type="image/png" height="76" width="144"/>
</item>
</channel>
</rss>
