AI-powered forecasting assistant built on top of skforecast.
Project description
skforecast-ai is an AI forecasting assistant that pairs a deterministic engine, powered by skforecast, with an LLM reasoning layer. Simply provide a time series, and the assistant automatically profiles the data, selects a model using established best practices, and evaluates its performance. It returns both the final forecast and the runnable skforecast script that produced it.
Table of contents
- Why skforecast-ai?
- Installation
- Quickstart (Python)
- Quickstart (CLI)
- How it works
- Documentation
- Contributing
- Citation
- License
✨ Why skforecast-ai?
- 🎯 Deterministic by design: built as a strict rule-based engine to guarantee absolute consistency, same input always means the same output.
- 🔍 Code you can inspect: the script you see is the code that ran. Inspect it, version it, or run it standalone with plain skforecast.
- ⚡ From data to forecast in one call: automatic data profiling, model and estimator selection, lag/feature engineering, and backtest evaluation.
- 💻 Python or terminal: drive the full pipeline from a few lines of Python or from the command line.
- 💬 LLM reasoning layer: explains the engine's decisions in plain language, helps you improve the configuration, and lets you ask for advice. This layer is entirely optional; the core forecasting pipeline can run fully offline.
- 🏗️ Built on skforecast: recursive & direct forecasters, multi-series, statistical, and foundation models (Chronos-2, TimesFM, Moirai, and more).
📦 Installation
Requires Python ≥ 3.10.
pip install skforecast-ai
To enable the optional LLM reasoning layer:
pip install "skforecast-ai[llm]"
Install from source (for development)
git clone https://github.com/skforecast/skforecast-ai.git
cd skforecast-ai
pip install -e ".[dev]"
🚀 Quickstart (Python)
From raw data to a validated forecast, and the code behind it, in a few lines:
import pandas as pd
from skforecast_ai import ForecastingAssistant
from skforecast.datasets import load_demo_dataset
data = load_demo_dataset(verbose=False)
assistant = ForecastingAssistant()
result = assistant.forecast(data=data, target="y", steps=12)
print(result.predictions) # forecast for the next 12 steps
print(result.metrics) # evaluation metrics: MAE, MSE, MASE
print(result.code) # the exact skforecast script that produced this result
That single forecast() call profiled the data, chose a forecaster and estimator, generated a skforecast script, and executed it. result.code is the script that ran.
The returned ForecastResult exposes everything the pipeline produced:
| Attribute | What it holds |
|---|---|
result.predictions |
Forecast for the requested horizon (includes interval columns when interval is requested) |
result.metrics |
Backtest evaluation metrics (MAE, MSE, MASE) |
result.code |
The runnable skforecast script that produced the result |
result.profile |
What profiling detected about your data |
result.plan |
The forecaster, estimator, lags, and metrics that were chosen |
👉 New here? Walk through it step by step in Your first forecast.
💻 Quickstart (CLI)
The same pipeline runs from the terminal. Point it at a CSV file or URL:
# End-to-end forecast (profile → plan → code → forecast)
skforecast-ai forecast data.csv --target y --date-column datetime --steps 12
# Just inspect the data
skforecast-ai profile data.csv --target y --date-column datetime
# Generate a standalone, runnable script without executing it
skforecast-ai forecast-code data.csv --target y --date-column datetime --steps 12 --output forecast.py
Run skforecast-ai --help or skforecast-ai <command> --help for inline documentation on any command.
👉 Full command reference in CLI usage.
🧠 How it works
skforecast-ai supports two distinct workflows using the same underlying forecasting engine:
-
The Fast Path: Use this when you want a forecast or backtest result in a single call. The assistant profiles the data, builds the modeling plan, executes the workflow, and returns the results alongside the reproducible
skforecastcode. -
The Step-by-Step Path: Use this when you want granular control to inspect or adjust intermediate decisions. You can manually create a profile, build a plan, optionally refine it with the LLM, define a validation strategy, evaluate the model, and then generate the forecast.
A useful mental model is that forecasting and validation are separate branches. Once you have a profile and a plan, you can use forecast() to produce future predictions directly, or backtest() to evaluate the model's performance on historical data.
The ask() method is available in both workflows. It can explain a profile, plan, validation setup, backtest result, or answer general forecasting questions, but it will never execute the workflow or modify your parameters without explicit instruction.
Read more in Introduction to agentic forecasting.
📚 Documentation
Explore the full capabilities of skforecast-ai with our comprehensive documentation:
:books: https://ai.skforecast.org
| Documentation | |
|---|---|
| :rocket: Quick start | Get started quickly with skforecast |
| :book: Introduction to agentic forecasting | Basics of forecasting concepts and methodologies |
| :books: API Reference | Comprehensive reference for skforecast functions and classes |
| :memo: Releases | Keep track of major updates and changes |
| :mag: More | Discover more about skforecast and its creators |
🤝 Contributing
Contributions are welcome, whether it's a bug report, a feature idea, or a pull request. Please see the Contributing Guide and our Code of Conduct to get started.
📖 Citation
If you use skforecast-ai in your work, please cite the underlying skforecast library:
Zenodo
Amat Rodrigo, Joaquin, & Escobar Ortiz, Javier. (2026). skforecast (v0.23.0). Zenodo. https://doi.org/10.5281/zenodo.8382787
APA:
Amat Rodrigo, J., & Escobar Ortiz, J. (2026). skforecast (Version 0.23.0) [Computer software]. https://doi.org/10.5281/zenodo.8382787
BibTeX:
@software{skforecast,
author = {Amat Rodrigo, Joaquin and Escobar Ortiz, Javier},
title = {skforecast},
url = {https://skforecast.org/},
doi = {10.5281/zenodo.8382787}
}
View the citation file.
📄 License
Licensed under the Apache License 2.0 (see LICENSE for details).
Built with ❤️ on top of skforecast.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skforecast_ai-0.1.0.tar.gz.
File metadata
- Download URL: skforecast_ai-0.1.0.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1a41faf3a8d2ad2b4a57dd50c296b276e71cecf5649613f55207fb0780f4c8d
|
|
| MD5 |
5c1da1d86f5ab2f4ef230df39a101f0a
|
|
| BLAKE2b-256 |
7570a59f2aeec1b6e498e2cb52b6a626e05ee0c2b75e7e8b3bfa9ab01005a848
|
File details
Details for the file skforecast_ai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: skforecast_ai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 229.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27b678c3be51cf995f00dd668295729e405d7dc66cb4fc215617cfc65c02f500
|
|
| MD5 |
f572a583ad6de707c29af3982dc96fc9
|
|
| BLAKE2b-256 |
1f3da7b9254b08d1ce486701f1ebfbf6a53cb0df00b0b922fb0edbbb9369693b
|