TL;DR

Kronos (shiyu-coder/Kronos) is a family of decoder-only Transformer models trained only on financial candlestick data, the open/high/low/close/volume bars that traders call K-lines. You give it a few hundred past bars and it generates the next ones, bar by bar, the way a language model generates text. It was built by researchers at Tsinghua University. The paper (arXiv 2508.02739) was accepted at AAAI 2026, according to the README.

Facts as of November 5, 2026:

  • 46,902 GitHub stars and 7,742 forks. It is on GitHub’s weekly Python trending list again this week, more than a year after the repo was created on July 1, 2025.
  • 220 open issues (issues only; there are 77 more open pull requests).
  • License: MIT for the code and the published model weights.
  • No tagged releases. You install from the repository. The last commit to the main branch was on April 13, 2026.
  • Three of the four model sizes are public on Hugging Face: Kronos-mini (4.1M parameters), Kronos-small (24.7M) and Kronos-base (102.3M). Kronos-large (499.2M) is not released.
  • Hugging Face reports about 2.3 million downloads in the last month for Kronos-small alone.

Not run by us: our hands-on lab (a throwaway GitHub Actions container) could not start today because the job was blocked by a billing limit on the account. Everything below comes from the repository, the paper, the model cards and public issue reports. We did not install Kronos or generate a forecast with it.

Our verdict: Kronos is the most usable open model for research on candlestick data. It is small enough to run on a laptop, the API is four lines, and the code and weights are MIT. As a trading signal, the evidence from people who tested it is poor: several long issue threads report direction accuracy close to a coin flip, a bias toward mean reversion, and a data-leakage bug in the fine-tuning pipeline that the author has acknowledged. Treat it as a research baseline and a feature generator, not as a strategy.

Quick Reference

FieldValue
What it isPre-trained Transformer that forecasts OHLCV candlestick sequences
Built byYu Shi and co-authors, Tsinghua University
Installgit clone + pip install -r requirements.txt (Python 3.10+, PyTorch 2.0+)
Public modelsKronos-mini (4.1M, context 2048), Kronos-small (24.7M, context 512), Kronos-base (102.3M, context 512)
HardwareCPU, CUDA or Apple MPS (picked automatically)
InputDataFrame with open, high, low, close; volume and amount optional
OutputDataFrame of predicted OHLCV for the timestamps you request
ExtrasBatch prediction, fine-tuning scripts (Qlib and plain CSV), a Flask web UI
LicenseMIT

What Kronos Actually Is

General time-series foundation models such as Amazon’s Chronos, Google’s TimesFM and Salesforce’s Moirai train on mixed data (weather, electricity, sales). The Kronos paper argues that this mix does poorly on noisy market data with several linked series per bar, and trains on market data alone.

Kronos works in two stages:

  1. A tokenizer turns each candlestick, all six numbers, into discrete tokens. The paper describes the tokens as hierarchical: a coarse token and a fine token per bar, so the model first predicts the broad shape of the next bar and then the detail.
  2. An autoregressive Transformer is trained to predict the next token from the previous ones, exactly like a language model predicts the next word.

Because it generates rather than regresses, you control it with LLM knobs: temperature T, top_p and top_k.

The training set, according to the paper, is more than 12 billion K-line records from 45 exchanges, covering stocks, futures, crypto and forex at frequencies from minutes to days. The training data itself is not published; an issue asking for it has been open since September 2025.

What the Paper Claims

All figures in this section are the authors’ own, from the paper abstract:

  • In a zero-shot setting, Kronos improves price forecasting RankIC by 93% over the leading general time-series foundation model and by 87% over the best model that was not pre-trained.
  • 9% lower MAE in volatility forecasting.
  • 22% better generative fidelity when producing synthetic K-line sequences.

Keep in mind that RankIC is a ranking metric: it measures whether the model orders a set of assets correctly by future return, not whether it gets one asset’s price right. A large relative gain on a small absolute RankIC can still be a weak signal in money terms. None of the published results is a live trading record.

Getting Started

Kronos is not on PyPI. You clone the repo and import from its model package:

git clone https://github.com/shiyu-coder/Kronos
cd Kronos
pip install -r requirements.txt   # torch>=2.0, pandas, einops, huggingface_hub, safetensors...

Then the README’s forecast, cut to the essentials:

import pandas as pd
from model import Kronos, KronosTokenizer, KronosPredictor

tokenizer = KronosTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base")
model = Kronos.from_pretrained("NeoQuasar/Kronos-small")
predictor = KronosPredictor(model, tokenizer, max_context=512)

df = pd.read_csv("./data/XSHG_5min_600977.csv")
df["timestamps"] = pd.to_datetime(df["timestamps"])

lookback, pred_len = 400, 120
x_df = df.loc[:lookback-1, ["open", "high", "low", "close", "volume", "amount"]]
x_timestamp = df.loc[:lookback-1, "timestamps"]
y_timestamp = df.loc[lookback:lookback+pred_len-1, "timestamps"]

pred_df = predictor.predict(
    df=x_df,
    x_timestamp=x_timestamp,
    y_timestamp=y_timestamp,
    pred_len=pred_len,
    T=1.0,          # sampling temperature
    top_p=0.9,      # nucleus sampling
    sample_count=1, # number of paths to sample and average
)
print(pred_df.head())

A few details the snippet hides:

  • You must supply future timestamps. Kronos encodes minute, hour, weekday, day and month as extra inputs, so y_timestamp has to contain the actual bar times you want predicted. For forecasting the real future you generate them yourself, skipping weekends and market holidays for stocks.
  • The CSV in the README is not in the repo. ./data/XSHG_5min_600977.csv is referenced by examples/prediction_example.py, but the repository today ships only tests/data/regression_input.csv and a fine-tuning sample (finetune_csv/data/HK_ali_09988_kline_5min_all.csv). Point the example at one of those, or at your own data.
  • Context is 512 bars for small and base. Longer inputs are truncated from the front. Kronos-mini uses a different tokenizer (Kronos-Tokenizer-2k) and a 2,048-bar context.
  • Normalisation is per input window, so the model never sees absolute price levels.
  • Missing volume is fine. Leave out volume and amount and they are filled with zeros; there is a dedicated prediction_wo_vol_example.py.

For many series at once, predict_batch takes lists of DataFrames and timestamps. All series in a batch must share the same lookback length and pred_len. Setting sample_count above 1 averages several sampled paths; if you want the spread (more useful for risk work), call it repeatedly with different seeds and keep the paths.

The Web UI and Fine-Tuning

The repo includes a Flask web UI (cd webui && python run.py, then http://localhost:7070) that loads CSV or Feather files and plots a 120-bar forecast from 400 bars of history against real data.

There are two fine-tuning paths:

  • finetune/ uses Microsoft’s Qlib to prepare Chinese A-share daily data, fine-tunes the tokenizer and then the predictor with torchrun on multiple GPUs, and runs a simple top-K backtest. The README says plainly that this is a demonstration and “not a production-ready quantitative trading system”. It also warns that many code comments in that folder were written by Gemini 2.5 Pro and “may contain inaccuracies”.
  • finetune_csv/ fine-tunes on any CSV with timestamps, open, high, low, close, volume, amount columns, driven by a YAML config, with train_sequential.py running tokenizer and predictor training in order.

What Users Report

Kronos has a large and very active issue tracker, mostly in Chinese, and it is the best evidence available about real-world use. Every claim below is a user’s or the maintainer’s, linked in Sources.

Direction accuracy near a coin flip. In issue #325 (June 2026), a user benchmarked Kronos-base on predicting price direction for BTCUSDT and HYPEUSDT over several horizons, and also pulled 4,682 hourly “probability up” forecasts from the history of the project’s own public BTC demo and scored them against Binance prices. Their conclusion: at the base size, directional accuracy is “close to random” and the probabilities look overconfident. Issue #299 (May 2026) is titled, in translation, “the algorithm is suited to looking back, not predicting; worse than a coin toss” after a month of tuning. A commenter who trained it on 15-minute crypto bars reported the same coin-flip accuracy for next-bar direction.

Mean reversion bias. Issue #33 reports that predictions lean toward reversal and “lose badly” in trends. The maintainer agreed that the signal behaves like other data-driven statistical models, with reversal-like features, and that losses come mainly from trending markets. He added that Kronos is at roughly the “GPT-2 stage” of financial pre-training, without post-training or reasoning, and that a profitable strategy still needs signal filtering, entry and exit rules and risk management on top. Issue #46 (“the always-bullish model”) reports the opposite symptom on other instruments.

A data-leakage bug in fine-tuning. Issue #228 (March 2026) traced future information leaking into the fine-tuning dataset: dataset.py normalises each training window using the mean and standard deviation of the full window, including the bars the model is supposed to predict. The author replied that this is a real problem in the fine-tuning code that hurts results on a true test set, and that the statistics should come from the lookback window only. If you fine-tune, fix that line before you trust any validation number. The reporter asked whether the pre-trained models were affected; that question is still open.

Architecture questions. Issue #219 points out that the tokenizer builds n - 1 encoder and decoder blocks rather than n; it is unresolved.

The pattern is familiar: the paper’s metrics are relative and cross-sectional, and traders who expected a directional edge on one chart did not get one.

Things to Check Before You Use It

  • No releases, no package. Pin a commit hash yourself. The regression tests pin exact Hugging Face model revisions (MODEL_REVISION and TOKENIZER_REVISION in tests/test_kronos_regression.py); copy that approach so a re-upload cannot silently change your forecasts.
  • Maintenance has slowed. The last commit was April 13, 2026, and 220 issues are open, including the acknowledged leakage bug.
  • Your backtest is the real test. Score forecasts walk-forward on data after the model’s training cut-off, include costs and slippage, and compare against naive baselines (repeat the last close, a moving average). The paper’s benchmarks do not tell you whether it beats those on your instrument and frequency.
  • Stars are not validation. A comment under issue #299 put it bluntly: the star count reflects bookmarking more than satisfaction.
  • Not financial advice. Kronos is research software. Nothing in the repo is a trading system, and the authors say so.

Who Should Use It

  • Quant researchers who want a pre-trained baseline for OHLCV data, to compare against their own models or to use embeddings and forecasts as features in a larger model.
  • People generating synthetic market data for stress tests or for training other models. That is one of the paper’s three headline tasks and is less sensitive to directional accuracy.
  • ML engineers who want to see how the LLM recipe (tokenise, then predict the next token) transfers to numeric data.

Skip it if you want a ready-made buy/sell signal. Nothing in the evidence supports using its raw forecast that way.

Alternatives

ModelBuilt byTrained onFits when
KronosTsinghua UniversityFinancial candlesticks onlyOHLCV forecasting, synthetic K-lines, finance research
Chronos / Chronos-BoltAmazonMixed public time seriesGeneral univariate forecasting, strong zero-shot baseline
TimesFMGoogleMixed time seriesLong horizons, general business data
MoiraiSalesforceMixed, multivariateMultivariate series of any frequency
Classical models (ARIMA, GARCH, gradient boosting)n/aYour dataYou need an explainable baseline, and you should run one anyway

The honest first comparison is Kronos against a naive “no change” forecast and a GARCH model for volatility.

Community Reactions

Kronos spread through GitHub and Reddit rather than Hacker News; its only HN submission we found, in October 2026, got 2 points. r/LocalLLaMA covered it in September 2025, and r/quant asked in August 2025 “How well does Kronos function in reality?”, the question that now fills the GitHub issues. One r/alpacamarkets user logs every Kronos close prediction and later scores it against the real close, which is the right way to evaluate it.

FAQ

What is Kronos?

Kronos is an open-source family of Transformer models from Tsinghua University, pre-trained on more than 12 billion candlestick (OHLCV) records from 45 exchanges, according to its paper. It tokenises price bars and predicts future bars the way a language model predicts text.

Is Kronos free to use?

Yes. The code and the three public model weights (mini, small and base) are MIT-licensed on GitHub and Hugging Face. The largest model, Kronos-large, has not been released.

Can Kronos predict stock or crypto prices accurately?

The paper reports large relative gains on ranking and volatility benchmarks. Users who tested direction prediction on single assets, including a 4,682-forecast check of the project’s own BTC demo, report accuracy close to random. The maintainer describes the model as early-stage and says it needs filtering and risk management to become a strategy.

Does Kronos need a GPU?

No. KronosPredictor picks CUDA, Apple MPS or CPU automatically, and Kronos-small has 24.7 million parameters, small enough for CPU inference. The fine-tuning scripts in finetune/ are written for multi-GPU training with torchrun.

Can I fine-tune Kronos on my own data?

Yes, with finetune_csv/ for plain CSV files or finetune/ for Qlib data. Before you trust validation results, fix the normalisation leak reported in issue #228: statistics must come from the lookback window only.

Bottom Line

Kronos is a well-packaged research model: a clean idea (tokenise candlesticks, predict the next token), small open weights, a four-line API and MIT licensing. That is why it has 46.9K stars. What it is not, on the evidence available, is a trading edge. Use it as a baseline, a feature source or a synthetic-data generator, pin the model revision, fix the fine-tuning leak, and judge it only by walk-forward results against a naive forecast on your own data.

Sources