Two of three settlements matched what the models found to the cent. The third was off by a dollar. All three were asked at almost the same moment, about similarly liquid assets. The gap had nothing to do with which model was used — it was a bug in our own tool, and even now that it is fixed, there is a piece of it we cannot fully close.
| Symbol | Settled baseline | What the models found | Gap |
|---|---|---|---|
| SOXL | $112.41 | $111.34 (4 of 5 models) | $1.07 — 0.96% |
| SPY | $769.38 | $769.35 (4 of 5 models) | $0.03 — 0.004% |
| IONQ | $39.18 | $39.20 (3 of 5 models) | $0.02 — 0.05% |
"Settled baseline" is the number a member read off our TradingView script and typed into the settlement form. "What the models found" is model_reported_price — see our first post on why we ask for that number at all. When almost every model independently lands on the same figure, that figure is a strong signal of what the asset actually cost. SOXL's own models agreed with each other to the cent. They just didn't agree with our chart.
What the chart script was actually doing
All three forecasts were created within minutes of each other, at 03:00–03:36 UTC on a Monday — which is 11pm Sunday night, US Eastern time. The market had been closed since Friday afternoon and would not open again for another ten hours.
Our chart script reads the "price when asked" off the daily bar that first satisfies time >= startTime. On a daily chart, closed over a weekend, that bar does not exist yet at 03:36 UTC Sunday night — it is Monday's regular session, which does not open until 13:30 UTC. So the script waited for it, and read that bar's opening print.
Ten hours is a long time to wait when you asked a question at 11pm. SOXL moved about 1% in pre-market Monday morning, after the AI had already answered and before the chart's number existed. SPY and IONQ happened to move very little in that same window, which is the only reason their numbers looked fine — the mechanism that produced them was exactly as wrong.
That is a look-ahead bug, not a rounding error: the script was reading a price from after the moment it was supposed to describe. We fixed it the same day we found it — the script now uses the last close before the window opened, rather than the next bar's open, whatever "next" happens to mean on a quiet weekend.
The part the fix does not solve
Reading backward instead of forward removes the look-ahead. It does not give the script a view of anything that happened while the market was open but the chart's bar had not printed yet — after-hours and pre-market trading, specifically.
A live quote — which is what a model reaches for when it searches — reflects a trade that happened five minutes ago, extended hours included. A daily bar does not. If a stock moves during the 4pm–8pm after-hours session, that move is invisible on a standard daily chart until the next bar prints, at which point it shows up as a gap, not as the continuous move that actually happened. Our script now reads backward far enough to avoid grabbing tomorrow's price, but it still cannot see forward into an after-hours session that is genuinely in progress when a window opens.
This is not a bug we can patch away. It is what a bar chart is: a report of trades that happened inside a session, sampled at session boundaries. The finer the sampling, the smaller the blind spot — which is exactly why TradingView lets you turn on extended hours in a chart's session settings. With it on, pre-market and after-hours prints become part of the bar data instead of disappearing into the next gap.
What this means for settling a forecast
Three practical rules come out of this, and none of them require trusting us on faith — you can check all three yourself, the same way we did.
- Inside regular trading hours, expect close agreement. A forecast created 10am–4pm ET should have its chart price and its models' reported price agree to a few cents, the way SPY and IONQ did here.
- Outside regular trading hours, expect some daylight — and don't assume the chart wins. A forecast created evenings or weekends can show a real gap, and a bar chart's number is not automatically more correct than four models that independently agree with each other. If they agree and the chart disagrees, that is information, not noise.
- Turn on extended hours before you settle, if the window opened outside RTH. It costs one click in the chart's session settings and it directly narrows the gap this post is about, because the bar data starts including the trades a live quote already saw.
This is also, concretely, why settlement is a step a person takes rather than a number we compute for you. A model that cannot tell the difference between "the market was quietly closed" and "the market moved and the chart hasn't caught up yet" would settle SOXL exactly as wrong as our old script did — confidently, and without telling anyone.
👉 How a forecast is scored, in full
👉 Run this on your own symbols — 15 prompts a month, free
Content on ForecastNest Insights is for research, educational and informational purposes only. Nothing here is financial, investment, legal or tax advice, and nothing here is a recommendation to buy or sell anything. We publish how models perform on a disclosed task; we do not publish price targets or trading signals.
