Kronos, the free "stock AI": it did not beat a moving average
"A free GitHub repo replaced $30,000 Wall Street software." I tested it on data it could not have seen. Not financial advice.
- Kronos is real research, from Tsinghua University, with open weights. The "$30,000 software" line is the poster's, not the paper's.
- On unseen data it got the direction right 45% of the time on SPY. Always guessing "up" got 56.5%.
- After costs it did not beat the naive baselines. Rejected as a trading edge; kept as a research curiosity.
What the post claims
A free GitHub repo from "Qinghua University" replaced $30,000 Wall Street software. It is "the first foundation model that reads the market like a language", trained on 45 exchanges.
What it really is
Kronos is MIT-licensed with about 41,000 stars. The paper (arXiv 2508.02739, AAAI 2026) is from Tsinghua University. The weights are on Hugging Face under MIT: mini (4.1M parameters), small (24.7M) and base (102M). The large model (499M) has not been released.
The paper's real claims are 12 billion candlestick records from 45 exchanges. Its pre-training data ends in June 2024 and its own tests start in July 2024. The repo itself says its backtest demo is "not a production-ready quantitative trading system".
What I ran
A Docker image with CPU PyTorch, Kronos at one pinned commit, weights at pinned revisions, telemetry off, and Hugging Face set to offline at run time. I read the model source first: no network calls. Data came from Yahoo's public chart endpoint for SPY, a FTSE 100 ETF (ISF.L) and BTC-USD, from 2021 to 16 October 2026, prices only. No broker, no money, no accounts.
The test was a rolling forecast. Every five bars, give the model a 400-bar window ending at that point and ask for the next five closes (Kronos-small, five samples averaged). That gave 398 blocks from the unseen period, plus 173 blocks from data it had been trained on as a control. The baselines were "same as the last close" and a 20-day moving average. The strategies were Kronos long-or-flat, a 20-day moving-average trend rule, and buy and hold, with costs of 0 and 10 basis points per position change.
Guarding against cheating: every target date is after the stated training cut-off, the window ends at the origin, and tests prove the window ignores future prices. There was also a shuffle test of 1,000 permutations on the signal, and 17 unit tests overall.
What happened
Unseen period, July 2024 to October 2026, 10 basis points of costs:
| Asset | Direction right (%): Kronos / MA20 / always up | Error (%): Kronos / MA20 / last value | Return (%): Kronos / MA20 trend / buy and hold |
|---|---|---|---|
| SPY | 45.2 / 53.0 / 56.5 | 2.49 / 2.04 / 1.17 | +11.1 / +5.2 / +41.1 |
| FTSE 100 ETF | 44.0 / 46.6 / 56.9 | 2.42 / 1.56 / 0.90 | +12.4 / +8.1 / +31.2 |
| BTC-USD | 54.5 / 53.9 / 55.1 | 4.79 / 5.34 / 2.91 | +19.2 / -6.2 / +32.3 |
On the trained-on control period (July 2023 to June 2024) Kronos called direction right 46.0%, 36.0% and 46.6% of the time across the three assets, which is also no better than chance.
On every asset, the model that "reads the market like a language" lost to "tomorrow looks like today".
The only bright spot is Bitcoin, where Kronos beat the moving-average rule on return. It still trailed buy and hold, and its direction accuracy was within a point of guessing.
What this does not show
- The training cut-off is the paper's statement. I cannot inspect the corpus.
- Only five-day blocks, one model size and one setting. I did not try Kronos-base or fine-tuning.
- Three assets over about two years is a small sample.
Verdict
Reject as a trading edge. It did not beat the naive baselines after costs. As a research curiosity it is well made and genuinely open, and worth a look if you want to study time-series foundation models. Not financial advice.
Draft status: one afternoon, three assets. If you think I got something wrong, tell me and I will correct the post and say so at the top.