Pronósticos Documentación
Visión general
Pronóstico de ventas, ingresos, unidades, costos y demanda multi-SKU.
Esta referencia cubre 10 engines. Cada endpoint trae ruta, permiso, parámetros, respuesta y los errores posibles.
Pronóstico de costos
Propósito
Pronóstico de costos vía ExponentialSmoothing vs regresión lineal, con el mejor modelo elegido por RMSE en holdout.
¿Por qué? Proyecta costos futuros a partir del histórico, entregando pronósticos por período con análisis de tendencia y diagnósticos del ajuste. Es la base para la planificación financiera y presupuestaria, permitiendo anticipar la evolución de los costos antes de cerrar cada ciclo.
¿Cómo? Entrena ExponentialSmoothing (Holt-Winters), con componentes de tendencia y estacionalidad, y regresión lineal como modelo alternativo. Los datos se dividen en entrenamiento y holdout, y el modelo con menor RMSE se selecciona automáticamente. El pronóstico viene acompañado de análisis de tendencia y diagnósticos.
Origen Los métodos siguen la base consolidada en Hyndman y Athanasopoulos (2021), "Forecasting: Principles and Practice", 3.ª edición, OTexts.
Literatura de referencia
- Hyndman, R. J. & Athanasopoulos, G. (2021). "Forecasting: Principles and Practice." 3rd ed., OTexts.
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
forecast_horizon | integer | no | 30 | Número de períodos a pronosticar. Entero positivo. |
frequency | string | no | "D" | Frecuencia temporal de la serie: 'D' (diaria), 'W' (semanal) o 'M' (mensual). Determina el período estacional del ExponentialSmoothing. |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha de la observación (ISO 8601 u otros formatos aceptados). |
cost | number | sí | Valor del costo en la fecha. Al menos 10 observaciones. |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/cost_forecasting/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"Planificación de demanda
Propósito
Pronóstico de demanda multi-SKU con ranking por volumen y alertas de tendencia.
¿Por qué? Genera pronósticos de demanda para múltiples SKUs de una sola vez, entregando un ranking por volumen proyectado y alertas de cambio significativo de tendencia por producto. Es la herramienta indicada para la planificación de la cadena de suministro con visión consolidada, priorizando los productos de mayor impacto y señalando temprano los que cambian de comportamiento.
¿Cómo? Aplica pronóstico de series temporales (ARIMA, Holt-Winters y tendencia lineal) de forma independiente por SKU, a través del engine central de pronóstico de ventas. Los SKUs se ordenan por volumen proyectado y la tendencia de cada uno se analiza, con alertas para cambios significativos. Los resultados se agregan en una vista consolidada.
Origen Los métodos siguen la base consolidada en Hyndman y Athanasopoulos (2021), "Forecasting: Principles and Practice", 3.ª edición, OTexts.
Literatura de referencia
- Hyndman, R. J. & Athanasopoulos, G. (2021). "Forecasting: Principles and Practice." 3rd ed., OTexts.
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
forecast_horizon | integer | no | 30 | Número de períodos a pronosticar por SKU. Entero positivo. |
frequency | string | no | "D" | Frecuencia temporal de la serie: 'D' (diaria), 'W' (semanal) o 'M' (mensual). |
top_k | integer | no | 20 | Cantidad de SKUs mejor rankeados (por volumen proyectado) en la salida detallada. |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha de la observación. |
sku_id | string | sí | Identificador de SKU/producto. Acepta el alias 'product_id'. |
units_sold | number | sí | Unidades vendidas del SKU en la fecha. Acepta aliases: demand, units, value, amount, quantity. |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/demand_planning/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"Pronóstico de costos (CV)
Propósito
Pronóstico de costos con validación cruzada de ventana expansiva, comparación por MAPE e intervalos de confianza.
¿Por qué? Versión más robusta del pronóstico de costos, con validación más rigurosa y resultados acompañados de intervalos de confianza y diagnósticos de residuos. Es la opción indicada cuando la decisión presupuestaria exige mayores garantías sobre la calidad del modelo, y no solo una proyección puntual.
¿Cómo? Evalúa ExponentialSmoothing y regresión lineal como modelos base, con Prophet como modelo adicional opcional. La selección usa validación cruzada de ventana expansiva, más robusta que un holdout único, con las métricas MAPE y RMSE. El resultado incluye intervalos de confianza y análisis de residuos.
Origen Se basa en Taylor y Letham (2018), "Forecasting at Scale", The American Statistician, 72(1), 37-45, y en Hyndman y Athanasopoulos (2021), "Forecasting: Principles and Practice".
Literatura de referencia
- Taylor, S. J. & Letham, B. (2018). "Forecasting at Scale." The American Statistician, 72(1), 37-45.
- Hyndman, R. J. & Athanasopoulos, G. (2021). "Forecasting: Principles and Practice."
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
forecast_horizon | integer | no | 30 | Número de períodos a pronosticar. Entero positivo. |
frequency | string | no | "D" | Frecuencia temporal de la serie: 'D' (diaria), 'W' (semanal) o 'M' (mensual). |
n_splits | integer | no | 3 | Número de pliegues de la validación cruzada de ventana expansiva. Entero >= 2. |
use_prophet | boolean | no | true | Si además debe probar un modelo Prophet cuando el paquete esté instalado. |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha de la observación. |
cost | number | sí | Valor del costo en la fecha. Al menos 20 observaciones para la validación cruzada. |
category | string | no | Categoría de costo opcional. Si está presente, todas las filas deben compartir un único valor; mezclar categorías en una request se rechaza. |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/forecast_cost_improved/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"Pronóstico de costos (dominio)
Propósito
Pronóstico de costos de dominio con ajuste de inflación opcional y detalle por categoría.
¿Por qué? Pronóstico de costos orientado al análisis empresarial, capaz de proyectar por categoría de costo, trabajar en valores reales con ajuste de inflación y separar costos fijos de variables. Es útil para presupuestos detallados por área y para entender qué parte de la estructura de costos acompaña el volumen de operación.
¿Cómo? Se construye sobre el motor de pronóstico de costos de la plataforma como base. Aplica ajuste por la tasa de inflación para proyecciones en valores reales, agrega y pronostica por categoría de costo y descompone los costos en componentes fijos y variables.
Origen Los métodos siguen la base consolidada en Hyndman y Athanasopoulos (2021), "Forecasting: Principles and Practice", 3.ª edición, OTexts.
Literatura de referencia
- Hyndman, R. J. & Athanasopoulos, G. (2021). "Forecasting: Principles and Practice." 3rd ed., OTexts.
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
forecast_horizon | integer | no | 30 | Número de períodos a pronosticar. Entero positivo. |
frequency | string | no | "D" | Frecuencia temporal de la serie: 'D' (diaria), 'W' (semanal) o 'M' (mensual). |
inflation_rate | number | no | 0 | Tasa anual de inflación aplicada al pronóstico (ej.: 0.05 = 5%/año). Entre -0.5 y 2.0. |
group_by_category | boolean | no | false | Cuando es true, pronostica cada valor de 'category' de forma independiente y agrega en un pronóstico total. Exige la columna 'category'. |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha de la observación. |
cost | number | sí | Valor del costo en la fecha. |
category | string | no | Categoría de costo. Obligatoria solo cuando group_by_category=true; cada categoría necesita al menos 10 observaciones. |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/forecast_cost_totus/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"Pronóstico (profundo)
Propósito
Pronóstico multi-horizonte con deep learning y aceleración dedicada (N-BEATS / N-HiTS, fallback MLP).
Entrena un modelo N-BEATS o N-HiTS (con aceleración dedicada) sobre las columnas objetivo/fecha nombradas en los params, cayendo a un pronosticador MLP por ventanas cuando N-BEATS/N-HiTS no están disponibles. Produce un pronóstico por horizonte pedido, con intervalos de confianza de 80%/95% y una descomposición tendencia/estacional/residuo.
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
target_column | string | sí | Nombre de la columna numérica de 'data' a pronosticar. Sin valor por defecto; el job falla sin él. | |
date_column | string | sí | Nombre de la columna de fecha/datetime en 'data'. Sin valor por defecto; el job falla sin él. | |
horizons | array | no | [7,30,90] | Lista de horizontes de pronóstico (enteros positivos, en pasos de tiempo). Un modelo por horizonte; máximo 10 horizontes. |
frequency | string | no | "daily" | Frecuencia de la serie temporal: 'daily', 'weekly', 'monthly' u 'hourly'. |
algorithm | string | no | "auto" | Backend de pronóstico: 'auto' (N-BEATS/N-HiTS si está disponible, si no MLP), 'nbeats', 'nhits' o 'mlp_forecast'. |
epochs | integer | no | 200 | Número de épocas/pasos de entrenamiento. Entero positivo. |
exogenous_columns | array | no | [] | Lista opcional de columnas adicionales usadas como regresores exógenos. |
random_state | integer | no | 42 | Semilla aleatoria. Entero no negativo. |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha/datetime de la observación. El nombre de la columna es configurable vía date_column (este ejemplo usa 'date'). |
value | number | sí | Valor numérico a pronosticar. El nombre de la columna es configurable vía target_column (este ejemplo usa 'value'). Al menos 20 observaciones. |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/forecast_deep/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"Pronóstico de ingresos
Propósito
Pronóstico de ingresos con crecimiento YoY y descomposición opcional volumen vs precio.
¿Por qué? Proyecta los ingresos futuros, entregando pronósticos por período acompañados de métricas específicas de ingresos, como crecimiento interanual (YoY) y descomposición opcional entre volumen y precio. Da a las áreas comercial y financiera una visión anticipada de la facturación y de las fuerzas que la impulsan.
¿Cómo? Compara ARIMA con selección automática de órdenes (p, d, q), ExponentialSmoothing (Holt-Winters) con componentes de tendencia y estacionalidad, y tendencia lineal como línea base. El mejor modelo se elige por RMSE en holdout. Sobre el pronóstico se calculan las métricas específicas de ingresos, incluido el crecimiento YoY.
Origen Los métodos siguen la base consolidada en Hyndman y Athanasopoulos (2021), "Forecasting: Principles and Practice", 3.ª edición, OTexts.
Literatura de referencia
- Hyndman, R. J. & Athanasopoulos, G. (2021). "Forecasting: Principles and Practice." 3rd ed., OTexts.
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
forecast_horizon | integer | no | 30 | Número de períodos a pronosticar. Entero positivo. |
frequency | string | no | "D" | Frecuencia temporal de la serie: 'D' (diaria), 'W' (semanal) o 'M' (mensual). También determina la ventana de comparación YoY. |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha de la observación. |
revenue | number | sí | Monto de ingresos en la fecha. |
quantity | number | no | Unidades vendidas en la fecha. Junto con unit_price, habilita la descomposición volumen vs precio. |
unit_price | number | no | Precio unitario promedio en la fecha. Junto con quantity, habilita la descomposición volumen vs precio. |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/forecast_revenue/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"Pronóstico (modelo guardado)
Propósito
Pronóstico con un modelo preentrenado cargado desde el almacenamiento de objetos, o fallback ExponentialSmoothing entrenado en la entrada.
¿Por qué? Genera pronósticos a partir de un modelo preentrenado almacenado en la plataforma, permitiendo inferencia rápida sin repetir el entrenamiento en cada llamada. Es la opción indicada para flujos recurrentes donde el mismo modelo ya validado debe reutilizarse con baja latencia.
¿Cómo? Carga el modelo serializado desde la ruta indicada y ejecuta la inferencia directamente sobre él. Si no se proporciona ninguna ruta o el modelo no está disponible, entrena un ExponentialSmoothing al momento como respaldo, garantizando que el pronóstico siempre se genere.
Origen Los métodos siguen la base consolidada en Hyndman y Athanasopoulos (2021), "Forecasting: Principles and Practice", 3.ª edición, OTexts.
Literatura de referencia
- Hyndman, R. J. & Athanasopoulos, G. (2021). "Forecasting: Principles and Practice." 3rd ed., OTexts.
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
forecast_horizon | integer | no | 30 | Número de períodos a pronosticar. Entero positivo. |
model_path | string | no | Ruta (s3://bucket/clave) de un modelo preentrenado serializado. Cuando se omite, se entrena un ExponentialSmoothing de fallback sobre la propia entrada. |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha de la observación. |
value | number | sí | Valor histórico en la fecha, usado como entrenamiento del fallback (o contexto de predicción cuando se carga un modelo guardado). |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/forecast_saved/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"Pronóstico de unidades
Propósito
Pronóstico de unidades/demanda con detección de estacionalidad y clasificación de tendencia.
¿Por qué? Pronostica ventas y demanda en unidades, entregando proyecciones por período con detección de estacionalidad y clasificación de la tendencia como creciente, estable o decreciente. Es la base cuantitativa para la planificación de inventario y producción.
¿Cómo? Compara ARIMA con estacionalidad detectada vía autocorrelación, ExponentialSmoothing (Holt-Winters) con componentes estacionales aditivos o multiplicativos y tendencia lineal como línea base. El mejor modelo se selecciona por RMSE. La tendencia resultante se clasifica como creciente, estable o decreciente.
Origen Los métodos siguen la base consolidada en Hyndman y Athanasopoulos (2021), "Forecasting: Principles and Practice", 3.ª edición, OTexts.
Literatura de referencia
- Hyndman, R. J. & Athanasopoulos, G. (2021). "Forecasting: Principles and Practice." 3rd ed., OTexts.
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
forecast_horizon | integer | no | 30 | Número de períodos a pronosticar. Entero positivo. |
frequency | string | no | "D" | Frecuencia temporal de la serie: 'D' (diaria), 'W' (semanal) o 'M' (mensual). Determina el período estacional verificado (7/52/12). |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha de la observación. |
units | number | sí | Número de unidades vendidas en la fecha. |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/forecast_units/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"Pronóstico de unidades (lote)
Propósito
Wrapper de sales_forecasting ruteable por callback para envíos en lote con metadatos de entrega asíncrona.
¿Por qué? Variante de ejecución asíncrona del pronóstico de unidades: entrega los mismos pronósticos de demanda, con el resultado enrutado por callback cuando el procesamiento termina. Es la opción indicada para integraciones donde la respuesta no necesita ser inmediata y el resultado se entrega de forma asíncrona al sistema que llama.
¿Cómo? Usa los mismos algoritmos del engine central de pronóstico de ventas (ARIMA, ExponentialSmoothing y tendencia lineal), con selección de modelo por RMSE. La diferencia es la capa de metadatos asíncronos adjunta al resultado, que permite enrutar la respuesta por callback.
Origen Los métodos siguen la base consolidada en Hyndman y Athanasopoulos (2021), "Forecasting: Principles and Practice", 3.ª edición, OTexts.
Literatura de referencia
- Hyndman, R. J. & Athanasopoulos, G. (2021). "Forecasting: Principles and Practice." 3rd ed., OTexts.
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
forecast_horizon | integer | no | 30 | Número de períodos a pronosticar. Entero positivo. |
frequency | string | no | "D" | Frecuencia temporal de la serie: 'D' (diaria), 'W' (semanal) o 'M' (mensual). |
callback_queue | string | no | Nombre opcional de la cola donde debe publicarse el resultado asíncrono. String no vacío si se entrega. | |
batch_id | string | no | Identificador opcional del lote para seguimiento (string o entero). | |
batch_position | integer | no | Posición opcional (base cero) de este job dentro del lote. Entero no negativo. | |
batch_total | integer | no | Total opcional de ítems en el lote. Entero positivo. |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha de la observación. |
value | number | sí | Valor de ventas en la fecha. Acepta aliases: units, revenue, amount, sales, quantity. |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/forecast_units_asyncio/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"Pronóstico de ventas
Propósito
Pronóstico de ventas multi-modelo (ExponentialSmoothing, ARIMA, tendencia lineal) con selección automática del mejor.
¿Por qué? Engine central de pronóstico de ventas de la plataforma: proyecta las ventas futuras y entrega los pronósticos acompañados de intervalos de confianza. El enfoque multimodelo maximiza la precisión sin exigirle elegir el método, sirviendo de base para metas comerciales y decisiones de planificación.
¿Cómo? Entrena ARIMA con selección automática de orden por criterio de información, ExponentialSmoothing (Holt-Winters) con optimización de parámetros y tendencia lineal como línea base. El mejor modelo se elige automáticamente por el menor RMSE en holdout. Los intervalos de confianza son paramétricos.
Origen Se fundamenta en la obra clásica de Box, Jenkins y Reinsel (2015), "Time Series Analysis: Forecasting and Control", 5.ª edición, Wiley.
Literatura de referencia
- Box, G. E. P., Jenkins, G. M. & Reinsel, G. C. (2015). "Time Series Analysis: Forecasting and Control." 5th ed., Wiley.
Parámetros (params)
| Campo | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
forecast_horizon | integer | no | 30 | Número de períodos a pronosticar. Entero positivo. |
frequency | string | no | "D" | Frecuencia temporal de la serie: 'D' (diaria), 'W' (semanal) o 'M' (mensual). |
Columnas de data[]
| Columna | Tipo | Obligatoria | Descripción |
|---|---|---|---|
date | string | sí | Fecha de la observación. |
value | number | sí | Valor de ventas en la fecha. Acepta aliases: units, revenue, amount, sales, quantity. No puede contener nulos/NaN. Al menos 10 períodos tras el remuestreo. |
Respuesta
En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).
Errores
403- la engine no está enallowed_enginesde tu suscripción.413- subida por encima demax_upload_mb.422- engine desconocida o inactiva en el catálogo.429- cuota diaria (max_jobs_per_day) o por minuto excedida.
La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.
curl -X POST "https://intelligence.echosistema.live/api/v1/sales_forecasting/process?dry_run=true&playground=true" \
-H "X-TENANT-KEY: $TENANT_KEY"