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.
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
- 01
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.
- 02
Consultar
Envía solicitudes POST deterministas a la API de XM.
- 03
Preservar
Guarda la respuesta gzip y calcula su huella SHA-256.
- 04
Limpiar
Convierte fechas y decimales; no imputa valores faltantes.
- 05
Transformar
Aplica fórmulas explícitas de porcentaje y generación.
- 06
Validar
Comprueba rangos, unidades, unicidad y resultado de la carga.
- 07
Publicar
Sirve vistas y API desde la misma base histórica.
1Adquisició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"
}
2Evidencia 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
Limpieza determinista
Reglas aplicadas
- La fecha se interpreta desde los primeros 10 caracteres ISO (AAAA-MM-DD).
- Los números se convierten con Decimal finito; NaN, infinito y valores fuera de rango se marcan inválidos.
- 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.
- 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.
- 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.
- 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.
- La API diaria se consulta en bloques máximos de 30 días y generación en bloques de 7 días.
- Una hora vacía permanece nula. Las sumas parciales se conservan y etiquetan; un cero numérico sí es observado.
- La mezcla y el top usan el último corte disponible; se publican cobertura y tecnologías sin registro. No se asegura cobertura nacional.
- 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.
- La oficialización de la serie no se verifica en esta API; no se deduce de tener 24 horas numéricas.
- 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.
- 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
- Restricciones únicas en la base de datos.
- Validadores de rango y unidad.
- Registro de inicio, fin, resultado y filas procesadas en cada sincronización.
- Respuesta original comprimida con gzip y huella SHA-256 calculada sobre los bytes recibidos.
- Horario anclado en America/Bogota; los datos parciales no activan reintentos. Solo los errores reales usan espera exponencial limitada.
- 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
- La fecha de publicación de XM puede ser posterior a la fecha observada.
- 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.
- 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.
- El promedio simple de embalses no equivale a la reserva agregada ponderada del SIN.
- 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.
- Los lotes anteriores a la versión metodológica 1.0.0 no conservan respuesta original ni huella.
3Verificació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
4Especificació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.
- Elige una lectura en el verificador independiente.
- Descarga su original y compara SHA-256.
- Consulta su ruta exacta, valor original y fórmula; recalcula la salida.
- Contrasta tu cálculo con los casos de referencia públicos y, si quieres, consulta XM directamente.
- 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 ab8e495822aeLa 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.