< Back to Blog

Kronos: What NVIDIA's 12-Billion-Candlestick Foundation Model Actually Is (And Isn't)

TL;DR / Key Takeaways

  • Kronos is a time-series foundation model from NVIDIA trained on 12 billion financial candlesticks, designed for zero-shot and fine-tuned forecasting of financial time series, not for generating buy/sell signals.
  • The published benchmarks show Kronos outperforming classical baselines on several financial forecasting tasks, but the gap narrows or reverses on datasets far outside its training distribution.
  • "Foundation model" means general-purpose representation learning, not alpha generation. A model that predicts where a price might go and a trading system that bets on that prediction are two completely different problems.
  • The Predict & Profit bots use publicly available government data (NOAA, Cleveland Fed, BLS, BEA) as trading signals because the signal-to-market-price gap is observable and measurable. Kronos does not replace that. It is a different class of tool entirely.

I have seen Kronos show up in three different Discord servers and a handful of Reddit threads in the last couple months. Most of the commentary falls into two camps. Camp one: "NVIDIA built an AI that can trade financial markets." Camp two: "LLMs for stocks, another grift." Both camps are wrong.

So let me just tell you what Kronos actually is, what the paper actually shows, and where the real limits are. No hype in either direction.


What Kronos Is

Kronos is a time-series foundation model released by NVIDIA in 2025. The full name is Kronos-F. It was trained on a dataset of roughly 12 billion financial candlesticks spanning equities, futures, forex, and crypto across multiple timeframes and markets.

The model architecture is a transformer trained on financial time-series data with the goal of learning general temporal representations. The idea is the same as what happened with NLP: instead of training a model from scratch on your specific dataset, you start with a foundation model that already understands the structure of the domain, then either use it zero-shot or fine-tune it on your specific task.

For financial time series, "the domain" is candlestick sequences: open, high, low, close, volume. Kronos learns patterns across thousands of instruments and timeframes so that representations useful for one task (say, predicting next-period volatility on SPY) can transfer to another task (predicting next-period volatility on a mid-cap stock with two years of history).

That transfer capability is the actual value proposition. Not "the AI knows where the market is going."


What the Benchmarks Show

The NVIDIA paper evaluates Kronos against several baselines including statistical models (ARIMA family), classical ML approaches, and task-specific neural networks. The benchmark tasks include next-period return direction, volatility forecasting, and anomaly detection on held-out financial time series.

On those benchmarks, Kronos performs competitively and often ahead of task-specific baselines, particularly in low-data regimes where you have limited history on a specific instrument. This is the zero-shot and few-shot case. The foundation model's broad pretraining gives it an advantage when there is not enough per-instrument data to train something from scratch.

On instruments with deep history where a task-specific model can be fully trained, the gap shrinks. In some cases the purpose-built model wins. This is not a surprise. It mirrors exactly what happened with foundation models in NLP and vision: general-purpose models are strongest when domain-specific training data is scarce.

Where I cannot give you specific numbers is where I need to be honest. The published benchmarks compare Kronos against a defined set of baselines on a defined set of tasks. I have not seen independent third-party replications at the time I am writing this. The numbers in the paper are NVIDIA's numbers. That does not make them wrong, but it does mean you should treat them as a starting point for evaluation, not gospel.


The Foundation Model vs. Trading Signal Distinction

This is where most of the confused takes originate.

A foundation model is a general-purpose learned representation. It captures structure in data. It can be adapted to downstream tasks. What it produces is a prediction: a probability distribution over future values, a directional forecast, a volatility estimate.

A trading signal is a decision input: here is evidence that edge exists against the current market price, by this much, with this confidence, and this is why.

Those are not the same thing.

A candlestick forecast from Kronos telling you "next period close is likely higher than current close" is not a trading signal until you know:

  • What the market is already pricing in
  • How often this forecast is right versus how often the market implied probability is right
  • What the edge is net of transaction costs
  • Whether the signal is stable out of sample

Kronos gives you the first part. You still have to build everything else. The model is an input to a pipeline, not the pipeline itself.

I have heard people describe this as "Kronos is useless for trading." That is also wrong. A good return direction forecast is a legitimate input to a quant strategy. The research groups at major trading firms are absolutely paying attention to foundation models. But there is a long road between "the foundation model has predictive power on benchmarks" and "I have a deployable strategy with positive expected value."


What Kronos Is Not

It is not a trading bot. NVIDIA did not release a product that generates buy and sell orders.

It is not a market inefficiency detector. The benchmarks measure forecasting accuracy, not alpha against market implied prices.

It is not trained on order book data, news, macroeconomic indicators, or any signal outside of the candlestick data itself. Price and volume, full stop. This is both a strength (clean, consistent inputs) and a meaningful limitation (markets move on information that never touches a candlestick until after the fact).

It is not publicly available as a free API at the time of writing. NVIDIA has not released Kronos as an open-weights model the way Meta released LLaMA. Access is through NVIDIA's AI Enterprise offering. This is a real barrier for individual developers.

If that changes I will update this post. But as of now, Kronos is not something you pull off Hugging Face and drop into your trading pipeline over a weekend.


A Sanity Check From First Principles

Here is the question I always ask about any forecasting model applied to trading: what is the signal-to-market gap?

A forecast is only tradeable if the market has not already priced in what the model knows. In liquid equity markets, the information in historical candlesticks is exactly the information that market participants have been arbitraging for decades. The efficient market hypothesis is not perfectly true, but it is close enough in liquid markets that pure price-history models face a steep headwind.

This is why the bots I actually run look at data sources that are not price history. The Weather Bot pulls from numerical weather models that the Kalshi temperature market has not fully priced in. The Econ Bot uses the Cleveland Fed nowcast, BLS subcomponents, and BEA PCE data. These are real-world signals with a measurable lag between when the data exists and when the market reflects it.

That gap is the edge. Kronos does not give you that gap. It gives you a very sophisticated model of price history. Whether price history alone contains exploitable signals in the markets you want to trade is a question you have to answer separately.


Where Kronos Is Actually Interesting

I do not want to undersell the legitimate research contribution here.

Training a transformer on 12 billion candlesticks and demonstrating transfer learning across financial instruments is real work. The low-data regime performance is the most commercially interesting result: if you are trying to build a model for a thinly traded instrument or a new market with limited history, starting from Kronos and fine-tuning beats starting from scratch.

Prediction markets are a real example of this problem. Kalshi temperature markets have months of history, not decades. If NVIDIA's model produces useful priors for short-horizon price behavior in thin markets, that is worth paying attention to. I cannot tell you it does because I have not tested it on Kalshi data. But the architecture is pointed at exactly the kind of problem where foundation model pretraining has the most to offer.

The anomaly detection results are also worth reading. Identifying regime changes or abnormal price behavior is a different task from directional forecasting and one where a model trained on broad historical patterns arguably has more signal to work with.


What a Real Integration Would Look Like

If I were going to experiment with Kronos as one signal in a larger system, here is roughly how I would structure it:

# Hypothetical Kronos signal module (not production code)
# Assumes access to Kronos inference endpoint

import requests
import pandas as pd
from typing import Optional

KRONOS_ENDPOINT = "https://your-nvidia-enterprise-endpoint/kronos/predict"

def get_kronos_directional_signal(
    ohlcv_df: pd.DataFrame,
    horizon: int = 1,
    api_key: Optional[str] = None
) -> dict:
    """
    Submit recent candlestick history to Kronos and get a directional forecast.
    Returns a dict with predicted direction, confidence, and raw logits.
    
    ohlcv_df: DataFrame with columns [open, high, low, close, volume]
              Expects recent history, typically 60-252 bars depending on timeframe
    horizon: forecast horizon in bars
    """
    if api_key is None:
        raise ValueError("Kronos requires NVIDIA AI Enterprise credentials")
    
    payload = {
        "data": ohlcv_df[["open", "high", "low", "close", "volume"]].to_dict(orient="list"),
        "horizon": horizon,
        "task": "direction"
    }
    
    response = requests.post(
        KRONOS_ENDPOINT,
        json=payload,
        headers={"Authorization": f"Bearer {api_key}"},
        timeout=10
    )
    response.raise_for_status()
    result = response.json()
    
    # Do NOT use this as a standalone trading signal.
    # This is one input. Compare against market implied probability.
    # Edge = kronos_prob - market_implied_prob. Trade only if edge > threshold.
    return {
        "direction": result.get("predicted_direction"),   # "up" or "down"
        "kronos_prob_up": result.get("probability_up"),   # 0.0 to 1.0
        "confidence": result.get("confidence_score"),
        "horizon_bars": horizon
    }

def compute_edge(kronos_prob_up: float, market_yes_price: float) -> float:
    """
    Convert Kronos output into edge against Kalshi market price.
    market_yes_price: current Kalshi YES price in cents (0-99)
    Returns edge as a fraction. Positive means Kronos says market is underpriced.
    """
    market_implied_prob = market_yes_price / 100.0
    edge = kronos_prob_up - market_implied_prob
    return edge

Notice what this does not do. It does not say "Kronos predicts up, therefore buy." It frames Kronos as a probability estimate and computes edge against market price. Then you still need a minimum edge threshold, a position sizing model, transaction cost accounting, and out-of-sample validation before you put a dollar on it.

The compute_edge function is the part most people building "AI trading bots" skip. Kronos might say 60% probability up on a contract where the market is already at 58 cents. That is two cents of gross edge before fees and slippage. It is probably not a trade.


Honest Assessment

Kronos is a serious research effort from NVIDIA and the underlying idea is well-grounded. Foundation models have delivered real gains in NLP and vision by doing exactly what Kronos attempts in finance: learn general representations from massive data, transfer to specific tasks.

Whether those gains replicate in financial time series at production trading quality is still an open question. The benchmark results are promising on the terms the paper sets. Independent validation at scale has not happened yet, at least not in anything publicly available as of mid-2026.

The access barrier is real. If Kronos were open-weights tomorrow, I would probably spend a weekend testing it on Kalshi temperature market history just to see what it does. At NVIDIA Enterprise pricing, individual developers and small operations are not the target customer.

And the fundamental point stands regardless of benchmark quality: a time-series forecast model and a trading system are different things. The gap between them is where most AI trading hype collapses. Kronos does not close that gap. It gives you better raw material to work with, if you can access it and if you build the rest of the system correctly.

That is the honest read. Make of it what you will.