---
title: "Situación actual: episodio 2026-2027"
date: last-modified
date-format: "D [de] MMMM [de] YYYY"
---
Página de **seguimiento del episodio de El Niño en curso (2026-2027)**. Reúne en
un solo lugar el estado del fenómeno, el pronóstico para Paraguay y la exposición
de la población. Para el registro de episodios pasados, ver
[Antecedentes históricos](../amenazas/inundacion-fluvial/index.qmd).
::: {.callout-important}
## Estado al día (23 de septiembre de 2026)
**El Niño en curso y en fortalecimiento.** NOAA/CPC mantiene el **Aviso de El Niño**:
según el último boletín (10-sep-2026) el Niño 3.4 subió a **+1,8 °C** (valores de agosto),
con **más del 90 %** de probabilidad de alcanzar categoría *muy fuerte* en el verano boreal
2026-27 y un **75 %** de que octubre-diciembre sea un evento **histórico** —el mayor desde
1950 (RONI ≥ +2,5 °C)— [@noaa_enso_disc_2026]. En Paraguay, el Gobierno se prepara para un El Niño de
**"fuerte intensidad"** entre **agosto de 2026 y marzo de 2027**, con lluvias intensas
y crecidas de los ríos [@infobae_nino_fuerte2026]; la DINAC prevé **precipitaciones por
encima del promedio** hacia la primavera [@abc_dmh_2026].
:::
::: {.callout-tip}
## Informe descargable
**[⬇ El Niño 2026-2027: situación, evolución y recomendaciones para la Facultad de
Ciencias Sociales (UNA) — Word](../informes/informe-elnino-facso-una.docx)** —
síntesis del estado y la evolución del fenómeno con **pronóstico de lluvias** (una
página, con fuentes enlazadas) y recomendaciones para la comunidad académica de la
FACSO (INEE, Marco de Sendai).
:::
## Cota actual del río Paraguay
```{python}
#| echo: false
import json
from IPython.display import HTML
d = json.load(open("datos/nivel-rio-actual.json", encoding="utf-8"))
crit, pico, esc = d["critica_asuncion_m"], 7.84, 8.0
asu = next((e for e in d["estaciones"] if e["nombre"] == "Asunción"), None)
def flecha(c):
if c is None: return ""
if c > 0: return f"<span style='color:#8a1c1c'>▲ +{c} cm</span>"
if c < 0: return f"<span style='color:#1b5e7a'>▼ {c} cm</span>"
return "= 0 cm"
def pos(v): return min(v / esc, 1) * 100
barra = ""
if asu:
nivel = asu["nivel_m"]; margen = round(crit - nivel, 2)
barra = f"""
<div style="max-width:560px">
<div style="font-size:15px;margin-bottom:.2em">Asunción: <b style="font-size:22px">{nivel} m</b>
{flecha(asu['cambio_cm'])}
<span style="color:#555">— a {margen} m del nivel crítico</span></div>
<div style="position:relative;height:30px;background:#e8eef2;border-radius:6px;margin:1.6em 0 .4em">
<div style="position:absolute;left:0;top:0;height:100%;width:{pos(nivel):.1f}%;background:#2b6cb0;border-radius:6px 0 0 6px"></div>
<div style="position:absolute;left:{pos(crit):.1f}%;top:-6px;height:42px;border-left:2px dashed #b26a00"></div>
<div style="position:absolute;left:{pos(crit):.1f}%;top:-22px;font-size:11px;color:#b26a00;transform:translateX(-50%)">crítico 5,5 m</div>
<div style="position:absolute;left:{pos(pico):.1f}%;top:-6px;height:42px;border-left:2px dashed #8a1c1c"></div>
<div style="position:absolute;left:{pos(pico):.1f}%;top:-22px;font-size:11px;color:#8a1c1c;transform:translateX(-50%)">pico 2016: 7,84 m</div>
</div>
<div style="font-size:11px;color:#888">0 m escala hasta 8 m</div>
</div>"""
filas = "".join(
f"<tr><td style='padding:3px 10px 3px 0'>{e['nombre']}</td>"
f"<td style='padding:3px 10px;text-align:right'><b>{e['nivel_m']} m</b></td>"
f"<td style='padding:3px 0;text-align:right'>{flecha(e['cambio_cm'])}</td></tr>"
for e in d["estaciones"])
tabla = (f"<table style='font-size:14px;border-collapse:collapse;margin-top:1em'>"
f"<tr style='color:#555;border-bottom:1px solid #ddd'><th style='text-align:left'>Estación (norte→sur)</th>"
f"<th style='text-align:right'>Nivel</th><th style='text-align:right'>Variación</th></tr>{filas}</table>")
pie = (f"<div style='font-size:12px;color:#888;margin-top:.8em'>Cota del <b>{d['fecha']}</b> · "
f"fuente: DINAC (meteorologia.gov.py), actualizada a diario.</div>")
HTML(barra + tabla + pie)
```
::: {.callout-note appearance="minimal"}
Al día de hoy el río está **muy por debajo del nivel crítico** (invierno seco); el
pronóstico de El Niño anticipa el ascenso hacia la primavera. Para refrescar la
cota: correr `scripts/actualizar_nivel_rio.py` y re-renderizar.
:::
## Lluvia actual (estaciones automáticas de la DMH)
La amenaza **pluvial** (raudales por lluvia) no depende del río sino de la
intensidad de la lluvia. Este panel lee la red **nacional** de Estaciones
Meteorológicas Automáticas (EMAs) de la DMH [@dmh_emas], con el acumulado del día, y
lo ubica en la [escala de colapso pluvial](../amenazas/inundacion-pluvial/index.qmd#cuánta-lluvia-colapsa-la-ciudad-escala-e-idf).
```{python}
#| echo: false
import json, os
from IPython.display import HTML
p = "datos/estaciones-dmh-metro.json"
if not os.path.exists(p):
salida = "<div class='vacio'>Datos de estaciones DMH pendientes de generar.</div>"
else:
d = json.load(open(p, encoding="utf-8"))
act = [e for e in d["estaciones"] if e["activa"] and e["precip_dia_mm"] is not None]
prio = [e for e in act if e["prioritario"]]
def banda(mm):
if mm >= 150: return ("colapso / catástrofe", "#7a1f2b")
if mm >= 80: return ("anegamiento urbano extendido", "#d1495b")
if mm >= 40: return ("encharcamientos y raudales localizados", "#e8842c")
if mm > 0: return ("bajo el umbral de afectación", "#2a9d3f")
return ("sin lluvia significativa", "#2a9d3f")
top = max(act, key=lambda e: e["precip_dia_mm"], default=None)
r = d.get("resumen", {})
if top is None:
head = "<i>sin estaciones activas con dato de lluvia ahora mismo.</i>"
else:
etq, col = banda(top["precip_dia_mm"])
head = (f"Máximo hoy en el país: <b style='font-size:20px'>{top['precip_dia_mm']} mm</b> "
f"({top['ciudad']}) → <b style='color:{col}'>{etq}</b><br>"
f"<span style='font-size:13px;color:#555'>{r.get('activas','?')} estaciones activas "
f"({r.get('activas_prioritarias','?')} en departamentos prioritarios).</span>")
filas = "".join(
f"<tr><td style='padding:2px 12px 2px 0'>{e['ciudad']}</td>"
f"<td style='padding:2px 12px 2px 0;color:#666'>{e['departamento']}</td>"
f"<td style='padding:2px 0;text-align:right'><b>{e['precip_dia_mm']} mm</b></td></tr>"
for e in sorted(prio, key=lambda e: (-e["precip_dia_mm"], e["ciudad"] or "")))
detalle = (f"<details style='margin:.6em 0'><summary style='cursor:pointer;color:#2b6cb0'>"
f"Ver estaciones activas en zonas prioritarias ({len(prio)})</summary>"
f"<table style='font-size:13px;border-collapse:collapse;margin:.5em 0'>"
f"<tr style='color:#555;border-bottom:1px solid #ddd'><th style='text-align:left'>Ciudad</th>"
f"<th style='text-align:left'>Departamento</th><th style='text-align:right'>Acum. día</th></tr>"
f"{filas}</table></details>")
upd = (d.get("actualizado") or {}).get("local", "s/f")
pie = (f"<div style='font-size:12px;color:#888'>Feed DMH/DINAC (EMAs), acumulado del día, "
f"orientativo · actualizado {upd} · regenerar con <code>scripts/estaciones_dmh.py</code>.</div>")
salida = f"<div style='max-width:620px'>{head}{detalle}{pie}</div>"
# HTML() debe ir a nivel superior (dentro de if/else no se auto-muestra)
HTML(salida)
```
::: {.callout-note appearance="minimal"}
Acumulado **del día en hora local** (orientativo). Subestima el riesgo de **raudal**,
que depende de la intensidad en minutos: ver la
[escala intensidad-duración](../amenazas/inundacion-pluvial/index.qmd#el-eje-de-duración-idf-simplificada).
:::
## 1. El fenómeno hoy
| Autoridad | Diagnóstico (mediados de 2026) |
|---|---|
| **NOAA/CPC** | Aviso de El Niño; Niño 3.4 +1,8 °C; >90 % *muy fuerte* (verano 2026-27); 75 % evento histórico en oct-dic [@noaa_enso_disc_2026] |
| **IRI (Columbia)** | ~100 % de probabilidad de El Niño hasta fin de 2026 [@iri_enso_2026] |
| **OMM** | 80 % para jun-ago 2026, ≥90 % en los trimestres siguientes [@wmo_update_2026] |
Impactos regionales de episodios pasados en
[América Latina](../contexto-america-latina/index.qmd).
## 2. Qué se espera en Paraguay
La **DINAC/DMH** (director Eduardo Mingo) estima **80 %** de probabilidad de que
El Niño domine entre julio y agosto de 2026, y anticipa una **primavera lluviosa**
con riesgo de **lluvias intensas e inundaciones hacia finales de 2026**, tendencia
que podría intensificarse en el primer trimestre de 2027 [@abc_dmh_2026].
Detalle y episodios previos en [Paraguay](../contexto-paraguay/nacional.qmd).
## 3. Quién está expuesto
La exposición estructural que este episodio pondría a prueba (evidencia empírica +
población, salud y educación):
```{python}
#| echo: false
import json
from IPython.display import Markdown
r = json.load(open("datos/exposicion/resumen.json", encoding="utf-8"))
p = r["departamentos_prioritarios"]; g = r["en_riesgo"]
Markdown(
f"""| Indicador | Valor |
|---|---:|
| Población en departamentos ribereños prioritarios | **{p['poblacion']:,}** |
| — de ella, niñez (0-14) | {p['ninez']:,} |
| — de ella, adultos mayores (65+) | {p['mayores']:,} |
| **Población dentro de la zona de inundación** | **{g['poblacion']:,}** |
| Servicios de salud expuestos | **{g['salud']}** |
| Centros educativos expuestos | **{g['escuelas']}** (matrícula {g['matricula']:,}) |
""")
```
Mapa completo e interactivo en
[Exposición y población en riesgo](../exposicion/index.qmd).
## 4. Escenarios de riesgo (2026-2027)
A partir del pronóstico (§2) y de la exposición (§3), el sitio define **tres escenarios
plausibles** para el Gran Asunción —*esperado* (pluvial), *severo* (crecida ~2019) y
*extremo* (~2015-16)—, con su **metodología**, la **población expuesta desagregada** por
edad y las **medidas a tomar** en cada uno.
➡️ **[Ver los escenarios de riesgo completos](../escenarios/index.qmd)**
## 5. Cómo se compara con episodios pasados
El episodio en curso se lee sobre el registro de 1997-98, 2015-16, 2018-19 y
2023-24. La comparación de intensidad (ONI) está en el
[marco](../marco/index.qmd#umbrales-de-clasificación-oni); las huellas de
inundación derivadas de satélite, en el
[mapa histórico de inundaciones](../amenazas/inundacion-fluvial/index.qmd).
::: {.callout-note}
Página viva: se actualiza con cada nuevo boletín de la DINAC y de NOAA/OMM. La
fecha de arriba indica la última actualización.
:::