We tested the viral AI chart model on dates it can't have seen. No edge.
Everyone is sharing a free AI model for stock charts. We tested it the boring way, on dates it cannot have seen, against rules a beginner could write.
A post going around X says an AI model "outperforms every model by 93%." It is called Kronos. It is free, it reads price charts the way a language model reads text, its paper went to AAAI 2026, and its GitHub repo has more than 40,000 stars. The conversation around it is roughly "a hedge fund in a free repo."
We tested it on the only dates that can settle that: dates after its weights were published, which it cannot have seen.
It found no edge.
The short version
53 weekly dates, October 1, 2025 to October 15, 2026, the 500 most-traded US stocks on each date:
- Buying its top 50 picks each week lost 0.46 percentage points a week to SPY after costs.
- Its price forecasts were less accurate than assuming nothing changes. One day out it missed by 2.75% on average; "tomorrow = today" missed by 2.02%. Five days out, 8.62% against 4.60%.
- Its up-or-down calls were right 50.8% of the time one day out and 50.9% five days out. The share of stocks that actually rose was 49.6% and 50.6%.
- 0 of 4 pre-planned tests passed.
What "93%" actually measures
It isn't returns. It is a ranking score called RankIC, where 1 means the forecast ordered everything perfectly and 0 means no relationship. The paper's own tables give the numbers behind the headline:
| Model | Average RankIC, price forecasting |
|---|---|
| Kronos-large | 0.0267 |
| Kronos-small | 0.0254 |
| TimesNet (best conventional model) | 0.0143 |
| Time-MOE-base (best rival foundation model) | 0.0138 |
0.0267 over 0.0138 is the 93%. Two things to know about it.
The 93% belongs to a model you can't download. The README's model table marks Kronos-large as not open source. The largest versions you can get are Kronos-base and Kronos-small. Small's gain works out to 84%, so this is not a scandal, but it is not the model people are running.
It's 93% of a small number. The move is from 0.014 to 0.027. That doesn't make it worthless: small scores can make money when they hold up across many bets and survive costs. It only means the score can't tell you whether they do. A money test can.
The paper has one, on Chinese A-shares: Kronos-small averaged 17.9% a year above the index, against 16.8% for the next-best comparison model, at 0.15% per trade. We did not test Chinese stocks, so that result stands untouched here. We asked the question people on X are asking, which is about US stocks.
The test
We wrote the plan down before running anything.
- Model: Kronos-small with its published tokenizer, 512 days of price history per stock, temperature 1.0, top-p 0.9, 5 forecast paths averaged. The README's example uses 1 path, so this gave the forecast more smoothing, not less.
- Dates: The paper says training data ends June 2024, but the published weight files were last changed September 9, 2025, and we can't verify what they saw in between. So the main test starts October 1, 2025. The earlier window is reported separately and labelled "may overlap training."
- Stocks: the 500 most-traded US common stocks on each date, price at least $5, chosen with only what was known that day. Stocks that died during a holding period were scored at their delisting return, not dropped.
- Yardsticks, same stocks and same days: no change, one-day reversal, 20-day momentum, random ranks.
- Money: rank by the 5-day forecast, buy the top 50 at the next day's close, hold 5 trading days, charge 0.10% per side on what changed. Compared against the equal-weight 500 and against SPY.
- Statistics: four primary tests, corrected for running more than one. Every result was logged, pass or fail.
The results
| After release (53 weeks) | Kronos-small | One-day reversal | 20-day momentum | Random |
|---|---|---|---|---|
| Ranking score, next day | +0.026 | -0.015 | +0.002 | -0.003 |
| Ranking score, next 5 days | -0.010 | +0.006 | -0.009 | +0.003 |
| Top 50 vs SPY after costs, points per week | -0.46 | -0.44 | -0.33 | - |
| Top 50 vs equal-weight after costs, points per week | -0.33 | -0.30 | -0.19 | - |
The simple rules lost to SPY too, so none of these columns is a strategy. The point is that Kronos didn't separate from them.
It had one bright spot: the next-day ranking score of +0.026 has a p-value of 0.05 on its own. After correcting for four tests it has a q-value of 0.42, and its gap over 20-day momentum has a p-value of 0.25. It also didn't turn into money.
Why the dates matter, and what I can't claim
On the earlier window, July 2024 to September 2025, which may overlap training, the same top 50 beat SPY by 0.31 points a week before costs (p 0.04) and 0.21 after costs (p 0.11). Same model, same code. After release: -0.46.
The tempting story is that the model remembered. I can't tell you that, because 20-day momentum made the same trip: +0.30 points a week after costs on the earlier window, -0.33 on the later one. That window was kinder to simple rules as well.
That is the reason to count only dates the weights can't have seen. If your backtest includes the others, a good number could be skill, memory or a friendly market, and you have no way to separate them.
We never ran their code
Viral trading repos ask for broker and API keys and pull in long dependency lists. So we read the source as text, wrote our own inference code from the paper and that source (MIT licence, with credit), and loaded the weights as plain data from safetensors files, a format that can't carry executable code.
The check that made this worth anything: our code had to reproduce the authors' published reference outputs before we could quote a single number. It matched to within 0.0002%.
What this doesn't show
- Kronos-small only. We didn't test Kronos-base, and Kronos-large isn't available.
- No fine-tuning. We used the published weights as they are. Fine-tuning on US stocks might change things, and we didn't test it.
- Daily US stocks only. Not intraday, crypto, forex or Chinese A-shares.
- One sampling setting, 53 weeks. That is a small sample, and one that may have been unkind to everything we tested.
So the honest claim is "we could not find an edge here," not "it can never work." The authors published a paper, weights and reference outputs you can check yourself against, which is more than most in this genre do, and it's the reason this test was possible at all.
Three questions for the next viral model
- Which dates could the weights have seen? Count only the ones after that.
- Better than what? Test it against "nothing changes," a couple of simple rules and the index, on the same stocks and days.
- 93% of what? Ask for the number before the percentage.
A question for you
Has anyone gotten Kronos to hold up on US stocks after fine-tuning, on dates after the training cut-off? Link it and I'll credit you.
Want this checked on your own data or backtest? Backtest & Data Audit, one-week pilot: https://altdataforge.com/audit
Research and education only - not investment advice. Paper: Shi et al., "Kronos: A Foundation Model for the Language of Financial Markets," arXiv 2508.02739. Model and reference outputs: github.com/shiyu-coder/Kronos (MIT). Prices: US daily stock prices as of October 27, 2026; rechecked against November 2 data before publishing, and none of the 943,228 daily returns in the test had moved.