Observatorio académico

Metodología y reproducibilidad
Condición estable API JSON
Reserva SINCorte reciente · 22 Sep 2026
EmbalsesCorte reciente · 22 Sep 2026
GeneraciónDatos desactualizados · 20 Sep 2026

Protocolo público · versión 2.1.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
01Programar

El trabajador consulta cada 24 horas, revisa siete días y recupera fechas pendientes.

02Consultar

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

03Preservar

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

04Limpiar

Convierte fechas y decimales; no imputa valores faltantes.

05Transformar

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

06Validar

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

07Publicar

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

1

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"
}
2

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. 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.
  4. 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.
  5. 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.
  6. La API diaria se consulta en bloques máximos de 30 días y generación en bloques de 7 días.
  7. Una hora vacía permanece nula. Las sumas parciales se conservan y etiquetan; un cero numérico sí es observado.
  8. La mezcla y el top usan el último corte disponible; se publican cobertura y tecnologías sin registro. No se asegura cobertura nacional.
  9. 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.
  10. La oficialización de la serie no se verifica en esta API; no se deduce de tener 24 horas numéricas.

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. Estado del trabajador automático y reintento una hora después de un fallo.

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 revisa además una ventana rotativa de hasta siete días dentro de los últimos 90. Las correcciones más antiguas requieren una revisión explícita.
  3. El promedio simple de embalses no equivale a la reserva agregada ponderada del SIN.
  4. 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.
  5. 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-256Original
24 Sep 2026 · 00:46:06Gene
hourly · Recurso
1995-01-01 → 1995-01-30060e262252c9e18f2…Descargar JSON
24 Sep 2026 · 00:46:04Gene
hourly · Recurso
1995-01-31 → 1995-03-010dd85fbfd9d9aac9b…Descargar JSON
24 Sep 2026 · 00:46:03Gene
hourly · Recurso
1995-03-02 → 1995-03-31008c222fbe8e0bd16…Descargar JSON
24 Sep 2026 · 00:46:01Gene
hourly · Recurso
1995-04-01 → 1995-04-300bd763b4a3132d4cc…Descargar JSON
24 Sep 2026 · 00:45:59Gene
hourly · Recurso
1995-05-01 → 1995-05-3004209cd896ce96119…Descargar JSON
24 Sep 2026 · 00:45:57Gene
hourly · Recurso
1995-05-31 → 1995-06-29011e31ef68e60011a…Descargar JSON
24 Sep 2026 · 00:45:55Gene
hourly · Recurso
1995-06-30 → 1995-07-290499f6d5f14dd94fe…Descargar JSON
24 Sep 2026 · 00:45:54Gene
hourly · Recurso
1995-07-30 → 1995-08-2806e4d676846697c23…Descargar JSON
24 Sep 2026 · 00:45:52Gene
hourly · Recurso
1995-08-29 → 1995-09-2707f454d8ffb5469c0…Descargar JSON
24 Sep 2026 · 00:45:50Gene
hourly · Recurso
1995-09-28 → 1995-10-27011ebf0fc376c9ead…Descargar JSON
24 Sep 2026 · 00:45:48Gene
hourly · Recurso
1995-10-28 → 1995-11-260ea2f743919d3fe5b…Descargar JSON
24 Sep 2026 · 00:45:47Gene
hourly · Recurso
1995-11-27 → 1995-12-260f48530b429f88a41…Descargar JSON
3

Verificación independiente

Cómo comprobar una huella

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

Get-FileHash .\xm-lote.json -Algorithm SHA256

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

Repetición del proceso

Cómo reproducir la carga

Con la misma versión del código, parámetros y respuesta original, las transformaciones son deterministas. Los tests verifican fórmulas, API, alertas, bloqueos y vistas.

python manage.py migrate
python manage.py replay_xm --batch 9
python manage.py test

Citación sugerida

HidroCol. Metodología y reproducibilidad, versión 2.1.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.1.0

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.

La reproducción desde un lote no consulta internet. Use una copia de la base y esta versión del código. La huella verifica igualdad con el original guardado, no una firma externa de XM.

Consultar revisiones y trazabilidad por lectura