Instructions to use judicialmind/BharatEnergy-Chronos with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Chronos
How to use judicialmind/BharatEnergy-Chronos with Chronos:
pip install chronos-forecasting
import pandas as pd from chronos import BaseChronosPipeline pipeline = BaseChronosPipeline.from_pretrained("judicialmind/BharatEnergy-Chronos", device_map="cuda") # Load historical data context_df = pd.read_csv("https://autogluon.s3.us-west-2.amazonaws.com/datasets/timeseries/misc/AirPassengers.csv") # Generate predictions pred_df = pipeline.predict_df( context_df, prediction_length=36, # Number of steps to forecast quantile_levels=[0.1, 0.5, 0.9], # Quantiles for probabilistic forecast id_column="item_id", # Column identifying different time series timestamp_column="Month", # Column with datetime information target="#Passengers", # Column(s) with time series values to predict ) - Notebooks
- Google Colab
- Kaggle
You need to agree to share your contact information to access this model
This repository is publicly accessible, but you have to accept the conditions to access its files and content.
This model is released under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 licence (CC BY-NC-SA 4.0): research, academic, personal and other non-commercial use is permitted with attribution; adaptations must be shared under the same licence; commercial use is not permitted. The original public source data remains under the Government Open Data License - India (GODL-India). Commercial use: contact surya@judicialmind.ai or hello@judicialmind.ai.
Log in or Sign Up to review the conditions and access this model content.
BharatEnergy-Chronos
Licence: CC BY-NC-SA 4.0 — research and non-commercial use only; derivatives must be shared under the same licence. Commercial use: contact surya@judicialmind.ai or hello@judicialmind.ai
Access is approved automatically when the email you enter matches your Hugging Face account email and belongs to the organisation you name; other requests are reviewed manually.
BharatEnergy-Chronos is Chronos-2 (120M parameters) fine-tuned on train-period daily electricity generation series from India: every power station and every thermal and nuclear generating unit in the Central Electricity Authority's daily generation report. It returns nine quantiles for any horizon; it is scored on BharatEnergy-Bench at 1, 7 and 30 days.
- At 1 day, the lowest overall WQL is BharatEnergy-Chronos (
bharatenergy_chronos) (0.0897); 2.0% belowchronos2, 6.1% belownaive. - At 7 days, the lowest overall WQL is BharatEnergy-Chronos (
bharatenergy_chronos) (0.1381); 3.2% belowchronos2, 12.4% belowlightgbm. - At 30 days, the lowest overall WQL is BharatEnergy-Chronos (
bharatenergy_chronos) (0.1757); 5.3% belowchronos2, 15.3% belowlightgbm. - BharatEnergy-Chronos has the lowest WQL in 5 of 6 track x horizon tasks.
Coverage: 459 power stations and 608 generating units across 33 states/UTs and 5 regions (+ Bhutan imports), daily actual generation 2022-01-01 to 2026-01-02
Quickstart
pip install -r requirements.txt # chronos-forecasting 2.3.2, torch, pandas, pyarrow
import sys
import pandas as pd
from huggingface_hub import snapshot_download
path = snapshot_download("judicialmind/BharatEnergy-Chronos")
sys.path.insert(0, path)
from bharatenergy_chronos import BharatEnergyChronos
model = BharatEnergyChronos.from_pretrained(path) # bfloat16 on GPU, float32 on CPU
bench = snapshot_download("judicialmind/BharatEnergy-Bench", repo_type="dataset")
df = pd.read_parquet(f"{bench}/data/station_generation/series.parquet", columns=["series_id", "ts", "target"])
one = df[df.series_id == df.series_id.iloc[0]]
fc = model.predict_df(one, origin="2025-10-01", horizon=30) # long table: series_id, origin, h, ts, q0.1..q0.9
print(fc[["series_id", "h", "q0.1", "q0.5", "q0.9"]].head())
predict(contexts, horizon) takes a list of 1-D arrays (daily generation in MU on a regular daily grid ending the
day before the origin, oldest first, NaN for missing days) and returns an array (n_series, horizon, 9) of the
quantiles 0.1 ... 0.9. BharatEnergy-Bench gives every model the 512 days before the origin.
From the shell: python bharatenergy_chronos.py my_series.parquet --origin 2025-10-01 --horizon 30.
Results
BharatEnergy-Bench, overall = mean of the two daily tracks, averaged over the test origins of each track. Lower WQL and MASE are better; a calibrated 80% interval covers 0.80.
| h (days) | model | WQL | MASE | cov_80 |
|---|---|---|---|---|
| 1 | BharatEnergy-Chronos (bharatenergy_chronos) |
0.0897 | 0.5900 | 0.7380 |
| 1 | chronos2 |
0.0915 | 0.6070 | 0.7413 |
| 1 | timesfm25 |
0.0919 | 0.6060 | 0.7831 |
| 1 | naive (best baseline) |
0.0956 | 0.5955 | 0.7469 |
| 7 | BharatEnergy-Chronos (bharatenergy_chronos) |
0.1381 | 0.8812 | 0.7593 |
| 7 | chronos2 |
0.1427 | 0.9239 | 0.7560 |
| 7 | timesfm25 |
0.1453 | 0.9360 | 0.7815 |
| 7 | lightgbm (best baseline) |
0.1576 | 0.9659 | 0.7413 |
| 30 | BharatEnergy-Chronos (bharatenergy_chronos) |
0.1757 | 1.2044 | 0.7671 |
| 30 | chronos2 |
0.1855 | 1.3140 | 0.7513 |
| 30 | timesfm25 |
0.1903 | 1.3288 | 0.7800 |
| 30 | lightgbm (best baseline) |
0.2073 | 1.3566 | 0.7233 |
Per track:
| track | h | BharatEnergy-Chronos WQL | zero-shot Chronos-2 WQL | best other model (WQL) |
|---|---|---|---|---|
station_generation |
1 | 0.0855 | 0.0855 | timesfm25 0.0853 |
station_generation |
7 | 0.1261 | 0.1287 | chronos2 0.1287 |
station_generation |
30 | 0.1594 | 0.1656 | chronos2 0.1656 |
unit_generation |
1 | 0.0940 | 0.0976 | chronos2 0.0976 |
unit_generation |
7 | 0.1501 | 0.1567 | chronos2 0.1567 |
unit_generation |
30 | 0.1919 | 0.2055 | chronos2 0.2055 |
Power-station daily generation by fuel type (WQL, lower is better; best per horizon in bold)
| fuel | windows | BharatEnergy-Chronos (bharatenergy_chronos) WQL h=7 |
chronos2 WQL h=7 |
BharatEnergy-Chronos (bharatenergy_chronos) WQL h=30 |
chronos2 WQL h=30 |
|---|---|---|---|---|---|
| HYDRO | 1,268 | 0.1490 | 0.1573 | 0.2042 | 0.2458 |
| NUCLEAR | 42 | 0.0923 | 0.0926 | 0.1440 | 0.1298 |
| THER (DG) | 6 | 0.0081 | 0.0086 | 0.0100 | 0.0109 |
| THER (GT) | 230 | 0.2267 | 0.2332 | 0.3314 | 0.3307 |
| THERMAL | 1,131 | 0.1229 | 0.1245 | 0.1512 | 0.1530 |
Power-station daily generation by grid region (WQL, lower is better; best per horizon in bold)
| region | windows | BharatEnergy-Chronos (bharatenergy_chronos) WQL h=7 |
chronos2 WQL h=7 |
BharatEnergy-Chronos (bharatenergy_chronos) WQL h=30 |
chronos2 WQL h=30 |
|---|---|---|---|---|---|
| EASTERN | 336 | 0.1008 | 0.1006 | 0.1191 | 0.1249 |
| NORTH EASTERN | 141 | 0.1019 | 0.1036 | 0.1327 | 0.1440 |
| NORTHERN | 807 | 0.1328 | 0.1350 | 0.1621 | 0.1733 |
| SOUTHERN | 715 | 0.1466 | 0.1540 | 0.1979 | 0.2093 |
| WESTERN | 678 | 0.1244 | 0.1263 | 0.1582 | 0.1580 |
Generating-unit daily generation by fuel type (WQL, lower is better; best per horizon in bold)
| fuel | windows | BharatEnergy-Chronos (bharatenergy_chronos) WQL h=7 |
chronos2 WQL h=7 |
BharatEnergy-Chronos (bharatenergy_chronos) WQL h=30 |
chronos2 WQL h=30 |
|---|---|---|---|---|---|
| NUCLEAR | 126 | 0.0971 | 0.1031 | 0.1808 | 0.1687 |
| THERMAL | 3,488 | 0.1526 | 0.1592 | 0.1925 | 0.2070 |
Generating-unit daily generation by grid region (WQL, lower is better; best per horizon in bold)
| region | windows | BharatEnergy-Chronos (bharatenergy_chronos) WQL h=7 |
chronos2 WQL h=7 |
BharatEnergy-Chronos (bharatenergy_chronos) WQL h=30 |
chronos2 WQL h=30 |
|---|---|---|---|---|---|
| EASTERN | 612 | 0.1149 | 0.1180 | 0.1474 | 0.1607 |
| NORTH EASTERN | 18 | 0.0843 | 0.0844 | 0.0759 | 0.0783 |
| NORTHERN | 918 | 0.1530 | 0.1606 | 0.1919 | 0.2100 |
| SOUTHERN | 755 | 0.1852 | 0.1970 | 0.2497 | 0.2652 |
| WESTERN | 1,311 | 0.1503 | 0.1557 | 0.1884 | 0.1987 |
Files
| file | content |
|---|---|
model.safetensors, config.json |
Chronos-2 weights and configuration |
bharatenergy_chronos.py |
BharatEnergyChronos.from_pretrained, predict, predict_df and a CLI |
requirements.txt |
pinned runtime dependencies |
Source data
Fine-tuned and evaluated on BharatEnergy-Bench. Derived from the Central Electricity Authority (CEA) daily generation report (region-, state-, sector-, type-, station- and unit-wise actual and programmed generation), published on NITI Aayog's National Data and Analytics Platform (NDAP) and the Open Government Data Platform India (data.gov.in) under the Government Open Data License - India (GODL-India).
Base model: amazon/chronos-2 (Apache-2.0).
Original data: published by Central Electricity Authority (CEA), Ministry of Power on the Open Government Data Platform India (data.gov.in) and, where marked, NITI Aayog's National Data and Analytics Platform (NDAP), under the Government Open Data License - India (GODL-India). The original public data remains under GODL-India; the CC BY-NC-SA 4.0 licence of this repository covers JudicialMind's compilation, derived fields, annotations, benchmarks and models.
Citation
@misc{judicialmind2026bharatenergychronos,
title={BharatEnergy-Chronos: Chronos-2 Fine-tuned for India Power Generation Forecasting},
author={JudicialMind},
year={2026},
publisher={Hugging Face},
howpublished={\url{https://huggingface.co/judicialmind/BharatEnergy-Chronos}}
}
License
CC BY-NC-SA 4.0 (see LICENSE): research, academic, personal and other non-commercial use, with attribution to JudicialMind and to the original data publishers; adaptations must be shared under the same licence. Commercial use requires a separate licence.
Commercial use: contact surya@judicialmind.ai or hello@judicialmind.ai.
Base model(s): amazon/chronos-2 (apache-2.0). Their licence terms and notices continue to apply to the upstream components; see THIRD_PARTY_NOTICES.md.
- Downloads last month
- -
Model tree for judicialmind/BharatEnergy-Chronos
Base model
amazon/chronos-2