mrkeyoor.com_
Thu 17 Sept 22:01 UTC
Dataevaluationupdated 27 Aug 2026

Kronos review

Kronos is a family of Python models built to forecast financial candlestick sequences such as open, high, low, close, and volume data. It tokenizes continuous market values and feeds those tokens to an autoregressive Transformer, with published checkpoints for direct forecasting and scripts for fine-tuning on a team's own data.

+236stars / 7d
Verdict

Our Kronos environment occupied 4,791 MB, and pytest passed 4 tests before a fifth file failed during collection because parametrize received a zip. Use it as a research candidate when candlestick tokenization is relevant and you can run strict out-of-sample, cost-aware comparisons. Do not treat the demo forecast or top-K backtest as evidence of tradable returns.

We ran it

Lab card: what happened when we ran KronosScreenshot of Kronos (github.com/shiyu-coder/Kronos)
Install✓ · 49s78 packages · 4791 MB
Build✓ · 6s
Tests✗ · 113s4 passed · 0 failed · 1 errors of 5 (pytest)
Known vulns0(pip-audit)
Repo92 files~11,260 lines of source · 16.8 MB · 0 CI workflows · tests dir

Answers from our run

Does Kronos build from source?

Dependencies installed in 49 seconds (78 packages), and the build succeeded in 6 seconds. We cloned commit 67b630e into a clean Debian container with 3 CPUs and no project-specific setup.

Do Kronos's tests pass?

Yes: 4 of 5 passed when we ran the project's own test command (pytest), with 1 collection error. Some failures need services or credentials a bare container does not have.

Does Kronos have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use Kronos?

Anyone seeking a production trading system: the README calls its Qlib pipeline a simplified demonstration and lists portfolio, risk, cost, slippage, and market-impact work still required.

What are the alternatives to Kronos?

Chronos Forecasting, TimesFM, Qlib. Our Kronos environment occupied 4,791 MB, and pytest passed 4 tests before a fifth file failed during collection because parametrize received a zip.

Setup2/549-second install expands to 4,791 MB and needs model downloads
Docs4/5Clear inference, batching, fine-tuning, and trading caveats
Community4/537,973 stars and 267 issues or PRs; last push April 2026
Maturity2/5No release or CI workflow, and our test collection failed

Who it’s for

Quantitative researchers comparing learned candlestick forecasts with simpler baselines.
Python teams that already prepare clean OHLCV data and can validate predictions out of sample.
Researchers with GPU capacity for the documented two-stage fine-tuning workflow.
Qlib users who want an example connecting model fine-tuning to a basic backtest.

Who it’s NOT for

Anyone seeking a production trading system: the README calls its Qlib pipeline a simplified demonstration and lists portfolio, risk, cost, slippage, and market-impact work still required.
Users who need the 499.2M-parameter Kronos-large weights: the model table marks that checkpoint as not open source.
Teams unable to maintain market-specific data preparation: the README says other sources and formats require adapting its example QlibDataset.
Buyers who require a clean test collection and CI before financial research use: our run ended with a pytest collection error, and the repository had no CI workflows.

Setup reality

Our sandbox installed 78 Python packages in 49 seconds, occupying 4,791 MB, and the build succeeded in 6 seconds. Tests exited 1 after 113 seconds: pytest reported 4 passed, 0 failed, and 1 collection/setup error out of 5. Pip-audit found 0 known vulnerabilities.

Basic inference needs Python 3.10 or newer plus model and tokenizer downloads from Hugging Face. Fine-tuning adds pyqlib, prepared market data, configured paths, checkpoints, and multi-GPU torchrun commands. Comet logging is optional and must be disabled when unused.

The collection error came from finetune/qlib_test.py: pytest said a zip passed to parametrize must be converted to a list or tuple. The log also showed 17 warnings. The repository has no Dockerfile and no CI workflow files, so environment parity is left to the user.

Kronos treats candlesticks as a sequence of tokens

Kronos is designed around financial K-lines, the sequences commonly represented by open, high, low, close, volume, and amount. A specialized tokenizer converts continuous, multidimensional values into hierarchical discrete tokens. An autoregressive Transformer then predicts token sequences that can be converted back into forecast values. The authors describe training data from more than 45 global exchanges, though that is their dataset claim rather than a result from our sandbox.

The model family targets a narrower domain than general time-series foundation models. That can help when the data really is candlestick-shaped, but it also means evaluation should include simple market baselines and broader forecasting models. A specialized representation is only useful if it improves the exact horizon, asset universe, and decision rule a team cares about.

Three open checkpoints cover 4.1M to 102.3M parameters

The README lists Kronos-mini at 4.1 million parameters with a 2,048-token context, Kronos-small at 24.7 million, and Kronos-base at 102.3 million. Small and base use a 512-token context. Kronos-large is listed at 499.2 million parameters but marked unavailable as open-source weights. Users should not plan around that largest checkpoint unless its status changes.

Inference loads a tokenizer and model from the NeoQuasar Hugging Face account, then constructs KronosPredictor. Input data must contain open, high, low, and close; volume and amount are optional. Historical and future timestamps are separate inputs. The predictor truncates contexts beyond its configured maximum, so a long lookback does not automatically give small or base more than 512 usable steps.

What happened when we ran it

Our sandbox installed 78 Python packages in 49 seconds. The environment occupied 4,791 MB on disk, which is a large local cost for a repository whose checkout was only 16.8 MB. The build succeeded in 6 seconds. Pip-audit found 0 known vulnerabilities in the installed dependency set at commit 67b630e.

Pytest exited with code 1 after 113 seconds. It reported 4 passed, 0 failed, and 1 collection or setup error out of 5. The error came from finetune/qlib_test.py, where a parametrized test supplied a zip object. Pytest required a list or tuple instead. Because collection stopped that file, the result is not a clean suite even though no executed assertion failed.

The log also recorded 17 warnings, including a Hugging Face Hub deprecation notice for hf_xet.download_files(). Our run used Python 3.12 in a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets. The repository had 92 files, about 11,260 source lines, a tests directory, no Dockerfile, and 0 CI workflow files.

Basic inference is shorter than responsible evaluation

The example forecast path is direct: read a CSV, choose a lookback and prediction length, load the tokenizer and checkpoint, and call the predictor. Sampling temperature, top-p probability, and sample count control probabilistic output. Batch prediction accepts several series but requires the same historical and prediction lengths across the batch. It uses GPU parallelism and normalizes each series separately.

A generated DataFrame is only a forecast, not a trading decision. Market data has leakage traps, changing regimes, survivorship effects, and transaction costs that a few lines of inference do not address. The live demo shows a 24-hour BTC/USDT forecast, which is useful for understanding output shape. It is not a documented live trading record or a comparison against a baseline.

Fine-tuning assumes Qlib data and multiple GPUs

The provided pipeline uses Qlib with a Chinese A-share example. Users configure the Qlib data path, processed dataset directory, checkpoint location, pretrained model names, instrument, time ranges, epochs, and batch size. Data preparation creates train, validation, and test pickle files. Separate torchrun commands fine-tune the tokenizer and predictor, and both are presented as multi-GPU jobs.

That workflow is useful source material for researchers already operating Qlib. It is not a portable data pipeline for every exchange. The README says other formats require changes to QlibDataset. It also warns that many comments in the fine-tuning directory were generated by Gemini 2.5 Pro and may be inaccurate, naming the code itself as the source of logic. Read the implementation before trusting an explanatory comment.

The included backtest is explicitly a demonstration

The final example converts forecasts into signals and runs a simple top-K strategy. The project plainly says this is not a production-ready quantitative system. It calls out portfolio optimization, factor neutralization, position sizing, risk management, transaction costs, slippage, and market impact as missing concerns. That warning should travel with any screenshot or return curve produced by the script.

A serious evaluation needs chronological splits, repeated market regimes, fees, liquidity constraints, and comparisons with naive forecasts. It should measure whether the model improves a decision after costs, not whether predicted candles look plausible. Financial losses are possible even when forecast error improves, so model selection and trading validation must remain separate steps.

April activity and no releases call for pinned research use

GitHub showed 37,973 stars and 267 combined issues and pull requests. The last push was April 13, 2026. No GitHub release has been published, though the README records fine-tuning scripts from August 2025 and paper acceptance at AAAI 2026. Users should pin a commit and the exact Hugging Face checkpoint revisions they evaluate.

Kronos is an interesting research artifact with clear domain choices and unusually direct warnings about production trading. The 4,791 MB environment, missing CI workflows, unavailable largest model, and pytest collection error keep it below plug-in maturity. Try it beside Chronos, TimesFM, statistical baselines, and your current signal process, then keep it only if out-of-sample evidence survives costs.

Alternatives

ProjectWhat it isPick it when
Chronos ForecastingA pretrained probabilistic time-series forecasting family built around tokenized values.pick this instead when you need a general time-series model rather than one centered on candlesticks.
TimesFM gh↗Google Research's pretrained time-series forecasting model and inference library.pick this instead when broad univariate forecasting and its checkpoint ecosystem fit the task.
Qlib gh↗A quantitative research platform for data processing, models, backtests, and portfolio research.pick this instead when the full research workflow matters more than adopting one forecasting model.

What people are saying

  1. [github-trending] shiyu-coder/Kronos

Sources

  1. Kronos repository
  2. Kronos README
  3. Kronos paper
  4. Kronos model collection

More data reviews

zenoh · fonts · cockroach · dbt · GeoLibre · TradingView-API · the whole board →