HidroCol

Observatorio académico

Metodología y reproducibilidad
Condición estable API JSON
Reserva SINReservaCorte reciente · 6 nov 20266 nov
EmbalsesEmbalsesCorte reciente · 6 nov 20266 nov
GeneraciónGeneraciónDatos desactualizados · 4 nov 20264 nov

Protocolo público · versión 2.2.0

Del dato original a la visualización

Este documento describe exactamente cómo se solicitan, conservan, limpian, transforman y publican los datos. El objetivo es que otra persona pueda repetir el proceso, verificar una respuesta original y obtener el mismo resultado.

Zona horaria
America/Bogota
Metodología en JSON

HidroCol · Observatorio del agua y la energía en Colombia

Sobre el proyecto

HidroCol es un observatorio académico público de la reserva energética del Sistema Interconectado Nacional (SIN), el volumen útil de los embalses y la generación eléctrica observada en Colombia. Permite consultar históricos, fechas de corte, cobertura y trazabilidad en vistas y una API pública de lectura.

Las series energéticas proceden de la API de XM. Sus respuestas originales, huellas SHA-256 y revisiones se conservan para comprobar las transformaciones. Las consultas almacenadas permiten explorar el histórico aunque la fuente externa esté temporalmente fuera de servicio.

El módulo de agua potable de Medellín se mantiene separado de la reserva energética. Las lecturas oficiales se identifican con su fuente y los datos faltantes no se estiman. Las alertas son académicas y exploratorias: HidroCol no es una autoridad de alertas ni reemplaza las publicaciones de XM/EPM.

Para citar una consulta, use la citación sugerida y conserve la fecha observada, la fuente y el lote original cuando esté disponible. Este protocolo publica las fórmulas y limitaciones para facilitar su revisión.

Flujo de procesamiento

  1. Programar

    El trabajador consulta a las 06:00 en America/Bogota, sin deriva; revisa siete días y recupera fechas pendientes. Cada 7 días vuelve a consultar los últimos 90 días completos. Los parciales de XM esperan el siguiente horario; solo los fallos reales se reintentan, hasta 3 veces, con espera exponencial desde 60 minutos y tope de 360 minutos.

  2. Consultar

    Envía solicitudes POST deterministas a la API de XM.

  3. Preservar

    Guarda la respuesta gzip y calcula su huella SHA-256.

  4. Limpiar

    Convierte fechas y decimales; no imputa valores faltantes.

  5. Transformar

    Aplica fórmulas explícitas de porcentaje y generación.

  6. Validar

    Comprueba rangos, unidades, unicidad y resultado de la carga.

  7. Publicar

    Sirve vistas y API desde la misma base histórica.

Adquisición

Solicitud reproducible a XM

Cada petición conserva endpoint, cuerpo JSON, rango temporal y hora de recepción. Las consultas diarias se dividen en bloques de 30 días; la generación, en bloques de 7 días.

POST https://servapibi.xm.com.co/daily
{
  "MetricId": "PorcVoluUtilDiar",
  "StartDate": "2026-08-22",
  "EndDate": "2026-08-29",
  "Entity": "Sistema"
}

Evidencia primaria

Original comprimido + SHA-256

Antes de transformar, los bytes exactos recibidos se comprimen con gzip. La huella SHA-256 permite comprobar que el archivo descargado no cambió.

respuesta_original.json.gzSHA-256(bytes originales)La descarga pública se descomprime como JSON y expone la misma huella en el encabezado X-Content-SHA256.

Diccionario de transformación

Métricas, unidades y fórmulas

Sin operaciones ocultas
ConjuntoEndpointMetricId / entidadUnidad de entradaUnidad públicaFórmula
Reserva agregada del SIN/dailyPorcVoluUtilDiar
Sistema
razón respecto a la capacidad de referencia; puede superar 1%porcentaje = Value × 100
Volumen útil por embalse/dailyPorcVoluUtilDiar
Embalse
razón respecto a la capacidad de referencia; puede superar 1%porcentaje útil = Value × 100
Generación por recurso/hourlyGene
Recurso
kWh por horaGWh por díaGWh observados = suma de horas numéricas válidas ÷ 1.000.000; cobertura = horas válidas / 24
Catálogo de recursos/listsListadoRecursos
—
catálogocatálogoCode enlaza cada lectura con Name y Type
Participación por tecnologíaderivado de /hourly + /listsGene agrupada por Type
Tecnología
GWh por recurso y día% y GWh por tecnología% tecnología = Σ GWh de la tecnología ÷ Σ GWh de todas las tecnologías × 100

Limpieza determinista

Reglas aplicadas

  1. La fecha se interpreta desde los primeros 10 caracteres ISO (AAAA-MM-DD).
  2. Los números se convierten con Decimal finito; NaN, infinito y valores fuera de rango se marcan inválidos.
  3. La aritmética usa Decimal con 28 dígitos significativos y redondeo al par más próximo (half-even). El porcentaje publicado se redondea a 0,001 y la generación a 0,000001 GWh; el valor crudo conserva sus dígitos originales.
  4. Los porcentajes útiles de XM son finitos y no negativos; pueden superar 100%. Se limita solo la precisión representable (9999,999%). La generación debe ser no negativa.
  5. Los recursos usan su código XM. Los embalses usan el nombre normalizado; los originales conservan la grafía de fuente y los cambios de nombre requieren correspondencias verificadas.
  6. Las claves únicas evitan duplicados. Repeticiones idénticas se consolidan; valores contradictorios para la misma entidad y fecha quedan inválidos, sin seleccionar un ganador por orden.
  7. La API diaria se consulta en bloques máximos de 30 días y generación en bloques de 7 días.
  8. Una hora vacía permanece nula. Las sumas parciales se conservan y etiquetan; un cero numérico sí es observado.
  9. La mezcla y el top usan el último corte disponible; se publican cobertura y tecnologías sin registro. No se asegura cobertura nacional.
  10. Las lecturas nuevas conservan lote, ejecución y versión; el histórico legacy puede carecer de original. Antes de corregir se conserva la revisión previa.
  11. La oficialización de la serie no se verifica en esta API; no se deduce de tener 24 horas numéricas.
  12. Un corte preliminar de la reserva SIN no encabeza el sitio ni alimenta las señales si varía más de 5 pp por día frente al último corte aceptado o si XM reportó menos del 80 % de los embalses habituales (máximo de los 14 días previos). Se conserva en el histórico y en la API, marcado como retenido, y vuelve a evaluarse cuando XM lo revisa.
  13. La portada y las señales usan el último corte de embalses con al menos el 80 % de los embalses habituales; los cortes incompletos siguen consultables por fecha.

Control de calidad

Comprobaciones

  1. Restricciones únicas en la base de datos.
  2. Validadores de rango y unidad.
  3. Registro de inicio, fin, resultado y filas procesadas en cada sincronización.
  4. Respuesta original comprimida con gzip y huella SHA-256 calculada sobre los bytes recibidos.
  5. Horario anclado en America/Bogota; los datos parciales no activan reintentos. Solo los errores reales usan espera exponencial limitada.
  6. Respuestas idénticas a la última solicitud equivalente reutilizan su lote original y registran la hora de verificación sin otro blob.

Transparencia

Limitaciones conocidas

  1. La fecha de publicación de XM puede ser posterior a la fecha observada.
  2. Se recargan siete días inclusivos y se recuperan huecos o rechazos. Cada semana se vuelven a consultar los últimos 90 días completos. Las correcciones más antiguas requieren una revisión explícita.
  3. La hipótesis de que una cadena vacía de generación representa cero no está confirmada por la documentación pública de XM. Se conserva nula hasta obtener confirmación explícita de la fuente.
  4. El promedio simple de embalses no equivale a la reserva agregada ponderada del SIN.
  5. Los umbrales son académicos, sin calibración o eficacia predictiva demostrada; el percentil es un rango histórico, no una probabilidad de crisis. No sustituyen declaraciones oficiales.
  6. Los lotes anteriores a la versión metodológica 1.0.0 no conservan respuesta original ni huella.

Registro auditable

Últimos lotes preservados

Consultar hasta 50 lotes en JSON
RecepciónMétricaRangoÍtemsSHA-256Verificaciones sin cambiosOriginal
7 nov 2026 · 06:03Gene
hourly · Recurso
31 oct 2026 → 6 nov 20262746e546f03d51c76a7f…0
Última 7 nov 2026 · 06:03
Descargar JSON
7 nov 2026 · 06:03ListadoRecursos
lists · catálogo
— → —25081c8ffb3305d772da…0
Última 7 nov 2026 · 06:03
Descargar JSON
7 nov 2026 · 06:03PorcVoluUtilDiar
daily · Embalse
31 oct 2026 → 6 nov 2026149667f4dd029473f6f…0
Última 7 nov 2026 · 06:03
Descargar JSON
7 nov 2026 · 06:03PorcVoluUtilDiar
daily · Sistema
31 oct 2026 → 6 nov 202679e4a165c1b2530ba…0
Última 7 nov 2026 · 06:03
Descargar JSON
6 nov 2026 · 06:04Gene
hourly · Recurso
30 oct 2026 → 5 nov 20262754211cdf609c096e55…0
Última 6 nov 2026 · 06:04
Descargar JSON
6 nov 2026 · 06:03ListadoRecursos
lists · catálogo
— → —2502f642e17389731660…0
Última 6 nov 2026 · 06:03
Descargar JSON
6 nov 2026 · 06:03PorcVoluUtilDiar
daily · Embalse
30 oct 2026 → 5 nov 202614857a403e6718a1441…0
Última 6 nov 2026 · 06:03
Descargar JSON
6 nov 2026 · 06:03PorcVoluUtilDiar
daily · Sistema
30 oct 2026 → 5 nov 202670a98dcf1672fcf1e…0
Última 6 nov 2026 · 06:03
Descargar JSON
5 nov 2026 · 06:03Gene
hourly · Recurso
29 oct 2026 → 4 nov 202627528b413f71bd454244…0
Última 5 nov 2026 · 06:03
Descargar JSON
5 nov 2026 · 06:03ListadoRecursos
lists · catálogo
— → —2502b7f014c7423d5b11…0
Última 5 nov 2026 · 06:03
Descargar JSON
5 nov 2026 · 06:03PorcVoluUtilDiar
daily · Embalse
29 oct 2026 → 4 nov 2026149550340161e537776…0
Última 5 nov 2026 · 06:03
Descargar JSON
5 nov 2026 · 06:03PorcVoluUtilDiar
daily · Sistema
29 oct 2026 → 4 nov 202673c801a7fc4c6bad9…0
Última 5 nov 2026 · 06:03
Descargar JSON

Verificación independiente

Cómo comprobar una huella

Descarga un lote desde la tabla y calcula su SHA-256. El resultado debe coincidir con la huella completa publicada en el JSON metodológico.

# Windows (PowerShell)
Get-FileHash .\xm-lote.json -Algorithm SHA256
# Linux
sha256sum xm-lote.json
# macOS
shasum -a 256 xm-lote.json

# Debe coincidir con:
GET /api/v1/metodologia/ → recent_batches[].sha256

Especificación pública

Cómo reproducir una cifra

El código del aplicativo no es público; está disponible para revisión académica bajo solicitud.

  1. Elige una lectura en el verificador independiente.
  2. Descarga su original y compara SHA-256.
  3. Consulta su ruta exacta, valor original y fórmula; recalcula la salida.
  4. Contrasta tu cálculo con los casos de referencia públicos y, si quieres, consulta XM directamente.
  5. Consulta el manifiesto diario y su enlace al anterior.

El cálculo del verificador ocurre en tu navegador; su JavaScript legible puede revisarse. Esto verifica datos y transformaciones, sin demostrar todos los comportamientos del código privado.

Citación sugerida

HidroCol. Metodología y reproducibilidad, versión 2.2.0.

Incluya fecha de consulta, URL de la vista o API, fecha observada del dato, fuente XM/EPM y SHA-256 del lote cuando esté disponible.

Documentación de la API XM ↗
Política de evaluación 2.2.0 · build ab8e495822ae

La reserva debe tener como máximo 3 días de antigüedad. La comparación de 30 días admite 3 días de tolerancia; se muestra el intervalo real. El percentil necesita 30 observaciones de al menos 2 años anteriores.

SHA-256 acredita igualdad con el original archivado. La cadena de manifiestos requiere una huella anclada externamente para acreditar una fecha anterior.

Consultar revisiones y trazabilidad por lectura

Autoría y reutilización

Licencia de los materiales propios

HidroCol · Juan Camilo Muñoz.

CC BY 4.0: textos, metodología y materiales originales de HidroCol; atribuir a HidroCol y Juan Camilo Muñoz e indicar cambios. Consultar CC BY 4.0.

Los originales de XM conservan la titularidad y condiciones de su fuente; esta licencia no los relicencia ni abarca el código privado del aplicativo. Condiciones de XM.

Visitas al sitio

Datos y privacidad

HidroCol puede habilitar Google Analytics 4 para conocer cuántas visitas recibe, qué páginas se consultan, de dónde proceden y cómo se usa el sitio. Esta medición es opcional: Google Analytics sólo se carga cuando aceptas. Rechazar no cambia el acceso a los datos, gráficos o descargas.

Si aceptas, Google recibe información de la visita, como la ruta de la página, el sitio de procedencia, características del navegador y dispositivo y duración de la interacción. La integración elimina parámetros de consulta y fragmentos de las direcciones enviadas; no envía campos de formularios ni identificadores de usuarios de HidroCol. Google también recibe la dirección IP al establecer la conexión con sus servidores.

Google Analytics utiliza cookies con nombres _ga y _ga_* para distinguir visitas. HidroCol guarda tu elección en el almacenamiento local del navegador. Puedes cambiarla en Privacidad de visitas, disponible en las páginas con medición habilitada. Al rechazar, se detiene la medición y se eliminan estas cookies del sitio; esto no borra información ya recibida por Google. Si tu navegador impide guardar la elección, ésta sólo se aplica a la página abierta.

La integración mantiene desactivadas las señales de Google y la personalización publicitaria. Consulta la política de privacidad de Google y cómo utiliza Google la información de sitios que usan sus servicios.

Las tipografías se alojan en HidroCol; cargarlas no envía solicitudes a Google. Google Analytics sólo se solicita tras aceptar la medición.