0.148 log-HAR, 4 parameters 0.591 Kronos-small, 24.7M parameters Pooled QLIKE loss on variance over five days. Lower is better. HAR won on 21 tickers of 21.

1. The test

Kronos is a decoder-only transformer for financial time series. Its one credible published edge is realized volatility. I pre-registered a falsification before running anything: Kronos-small zero shot against the log heterogeneous autoregressive regression of Corsi 2009 fitted on Parkinson range volatility. The decision rule was locked in the same document, and any outcome other than a clean sweep of its three conditions rejects the model.

Table 1. The pre-registration, filed 21 July 2026, before the first run.

ItemAs locked
ChallengerKronos-small, AAAI 2026, 32.3 thousand GitHub stars at 21 July 2026
Pretraining corpus12 billion candlesticks
Edge its paper claimsRealized volatility, R-squared 0.249
IncumbentLog-HAR, Parkinson range volatility, Corsi 2009
UniverseTwenty US large caps plus SPY, the S&P 500 exchange-traded fund
TargetRealized volatility five days ahead
Forecast origins1 August 2025 to 30 June 2026, eleven months
Model's arXiv posting2 August 2025
Forecasts4,809
Sampled paths per origin15
Kronos wins only ifPooled QLIKE improves, pooled DM p below 0.05, positive median improvement per ticker
Drop the 21 forecasts from the one overlapping dayDM t = -12.3, verdict unchanged

The start was locked one calendar day before the model's arXiv posting because its training window is undisclosed. Any earlier origin is potentially in-sample for Kronos and out-of-sample for HAR.

2. The method note that decides the answer

The repository's predict() averages its Monte Carlo paths before returning them. Realized volatility computed on an averaged path is biased low, because averaging cancels the variation being measured. I pulled the sampled paths for each origin, computed Parkinson volatility on each path's own generated highs and lows, and took the median, with random seeds pinned per ticker and origin.

3. What happened

Log-HAR Kronos-small
Free parameters 4 per ticker 24,700,000
Pooled QLIKE (variance over 5 days) 0.148 0.591
Tickers won 21 of 21 0 of 21
Won significantly 19 0

Pooled Diebold-Mariano t = -12.4, and the foundation model's loss is roughly four times the regression's. Under the locked decision rule the Kronos volatility hypothesis is rejected and HAR survives.

4. What it leaves behind

Pretraining breadth is not a substitute for a conditional mean aimed at the target. Volatility is persistent, HAR is three lagged averages of exactly that persistence, and it is fitted on the asset's own history. Kronos has to infer the same structure from a general representation of everything.

When a training window is undisclosed, the honest backtest starts the day after release, and everything before that date is a claim about memory. That constraint is why this verdict took the better part of a year to become available, and that window is short. I publish it with the caveat attached rather than wait for a cleaner one.

Reproduction settings, kept so the run can be repeated exactly.
SettingValue
Kronos-small context window400 daily bars
Sampling temperature1.0
Top-p0.9
Benchmark refit start2015, refit monthly

5. Scope

Zero shot, daily bars, repository default sampling. I did not test intraday bars, where the model's pretraining is densest, so this verdict covers realized volatility from daily bars and nothing wider. A fine-tuned variant is a separate study with its own pre-registration, and I am not running it. The 2025 and 2026 literature already reports that fine-tuning does not rescue foundation models for time series on equities, and re-running this one with tuned temperature, top-p or context length would be metric shopping against a decision rule I have already locked.

Educational research only. Not investment advice.