Why models hallucinate market statistics
Large language models are trained on a fixed corpus up to a cutoff date. Ask one "how has AAPL historically behaved after a setup like this" and it has two options:
The second option is where hallucination comes from — not malice or carelessness, but the model doing exactly what it's built to do: produce a plausible continuation of the prompt.
The output can look completely credible. A confident sentence like "similar setups have historically shown a 65% positive rate over the next week" reads identically whether it's grounded in a real computation or invented to match the shape of a plausible-sounding answer. There's no signal in the text itself that distinguishes the two. The model isn't lying — it doesn't have access to the actual historical record for that specific symbol, that specific date, and that specific price condition, so it produces its best approximation instead.
This is a structural limitation, not a model quality problem. A better model trained on more data still has the same gap: it has broad knowledge about markets in general, but no live computation of what a specific symbol's price action actually looked like relative to its own history, and no record of what happened next in genuinely comparable historical conditions.
What "grounded" actually means
Grounding means the model isn't asked to recall or estimate a statistic — it's given the statistic directly, in the prompt, and asked to reason from it.
The distinction matters because it changes what the model is doing at the point of generation. Instead of completing a pattern from training data, it's reading a number that was computed upstream and reporting or interpreting that number.
Konseki's output is built for exactly this. Each response includes a commentary object with pre-written natural language fields — headline, summary, risk, takeaway — alongside the raw numeric data they're derived from. A model can quote these directly, rephrase them, or use them as reasoning scaffolding, but in every case the underlying claim traces back to a real computation rather than the model's own estimate.
When an assistant says "similar setups had a worst historical outcome of −7.6% over five trading days," that number isn't generated by the model — it's read directly from the response:
// what the model is given, not what it generates
"forward_outcome": {
"5": {
"returns": {
"worst_return": -0.076
}
}
The number is verifiable, sourced, and specific — not a statistical generalization the model produced from pattern-matching its training data.
Why this needs to be pre-computed, not fetched live
Grounding only works if the data injected into the prompt is actually correct for the specific symbol and date being discussed. That requires the same cross-market historical search described in the precomputation piece — comparing a symbol's current price path against a decade of history across hundreds of symbols, scored across seven structural dimensions. An AI assistant calling this kind of system needs the answer in milliseconds, at the moment a user asks a question, not after a multi-hour batch computation.
This is why Konseki's snapshot architecture matters specifically for the AI-builder use case. The expensive search already happened after the prior market close. What the assistant calls at request time is a stored result, not a live computation — so the grounding data arrives fast enough to sit inside a normal conversational response.
What the model still has to get right
Grounding removes one failure mode, not all of them. A model given accurate historical data can still misinterpret it, overstate its confidence, or drop important caveats when summarizing. This is why Konseki's output doesn't just include raw numbers — it includes the qualifiers that prevent a model from accidentally manufacturing false confidence on top of real data.
| Field | What it gives the model |
|---|---|
analysis.evidence_count | How many historical matches were actually found, so a model reasoning from five matches sounds different than one reasoning from fifty. |
reliability tag | Reflects evidence count and match diversity together, so a thin or concentrated match set doesn't get reported with the same confidence as a broad one. |
commentary language | Written in confidence-hedged language — "historically leaned," "tended to" — for the model to draw on directly rather than inventing hedged phrasing itself. |
None of this prevents a model from being careless with the data it's given. But it means the data it's given is honest about its own limitations, which gives a well-prompted model the material it needs to be honest too.
What this looks like in practice
In each case, the mechanism is the same: the model is reasoning over evidence it was handed, not recalling a pattern it half-remembers from training.
That's the actual difference between a hallucinated statistic and a grounded one — not how confident the sentence sounds, but whether a real computation sits behind it.