How haltpredict scores a halt.

Every NASDAQ trading halt creates a five-minute window where price data freezes. We use that window to compute a directional call — UP, DOWN, or no-call — based on the historical behavior of the 71,336 halts since August 2019. This page documents how we do it, what we measure, and where we’re still uncertain.

What goes into a call.

At the moment of halt, we score five features that prior halts shared:

  • Halt number today (1st, 2nd, 3rd, 4th, 5+)
  • Price tier (<$2, $2-5, $5-10, $10+)
  • Direction at halt (UP if price moved up in the five minutes before halt, DOWN otherwise)
  • Time window (open, morning, midday, afternoon, power hour)
  • News flag (news within 1 hour, 1-4 hours, 4-24 hours, none)

Each combination of those five features is a “bucket.” There are 2,000 possible buckets; the historical corpus has populated about 1,800 of them with at least one prior halt. The bucket your halt lands in is the answer to: “What did similar halts do?”

How the lookup is computed.

For each bucket, we count how many of its prior halts reopened higher (UP) and lower (DOWN). The raw rate is naive — a bucket with three prior halts and three UP outcomes would falsely read 100% UP.

We apply Bayesian smoothing toward the population mean. The smoothed probability is:

p_up_smoothed = (n × p + k × μ) / (n + k)

Where n is the bucket’s sample size, p is its raw UP rate, μ is the population UP rate (~50%), and k=50 is the prior weight. With three samples, the smoothed estimate is pulled most of the way back to 50%; with 200 samples, the bucket’s own data dominates. This is the same shrinkage approach used by sports analytics, baseball BABIP estimates, and most modern recommendation systems.

A bucket with 100 prior halts where 67 went UP would compute:

p_up_smoothed = (100 × 0.67 + 50 × 0.50) / (100 + 50) = 60.6%

That’s the probability we report as the model’s UP confidence. It’s lower than the bucket’s raw 67% because we don’t fully trust 100 samples — but it’s well above the 50% coinflip baseline.

How the accuracy is measured.

The model’s accuracy is measured by a strict walk-forward backtest. For every halt in the corpus, we score it using only buckets built from halts that occurred strictly before its halt timestamp. No halt is scored against a bucket that includes itself or any future halt. This is the only way to simulate live performance honestly.

Aggregate accuracy on direction at reopen, across 39,939 backtested halts:

  • 56.6% directional accuracy on all calls
  • 67.0% directional accuracy on high-conviction calls (n=1,247)

A coinflip on this universe is roughly 50%. The 6.6 percentage-point lift on aggregate is small but consistent. The 17 percentage-point lift on high-conviction calls is what we charge for. High-conviction is defined as buckets where the smoothed probability deviates from 50% by at least 15 points and the bucket has at least 30 prior halts.

Direction accuracy depends only on whether the recorded reopen price was above or below the halt price — not on the precise dollar amount. We’ve verified the sign holds even on the small fraction of halts where the recorded reopen price has known integrity issues (see “Where the model is wrong” below). Worst-case impact on the 67% number is under one percentage point.

Where the model is wrong.

The model has known weak spots, and we’d rather you know about them upfront.

Cascade halts (3rd, 4th, 5+ same-ticker halts in one day) are harder to predict than first halts. The signal degrades because cascade behavior is more news-driven than pattern-driven, and bucket sample sizes shrink. We report a separate cascade probability on these calls.

Tier C buckets (fewer than 30 prior halts) are flagged as low-confidence. About 6% of live calls fall in Tier C. We don’t suppress them, but we mark them so you don’t trade them as if they had Tier A backing.

Pre-market and after-hours halts are excluded from the backtest. Their reopen behavior diverges from regular-session halts, and conflating them would inflate the headline accuracy.

Reopen-price integrity. A May 2026 audit found that 233 halts in our 39,939-halt scoring corpus (about 0.6%) have recorded reopen prices that don’t replicate against the underlying minute-bar data. The cluster is dominated by RGC’s May 2025 squeeze series, with a long tail of other micro-cap volatile tickers. Pre-market mis-capture explains only a small minority of cases; the rest look like stale values or upstream pipeline mis-matches we haven’t fully isolated. We’re shipping a quarantine column and a fixed capture pipeline next. The directional accuracy numbers above are robust to this — we verified the affected halts’ direction signs separately. But any claim we publish in absolute dollars (bot P&L, backtest profitability) is on hold until the audit closes.

What we don’t claim.

We don’t claim the model predicts price targets. The output is direction (UP, DOWN, or no-call) and a probability — not a number to enter at and a number to exit at.

We don’t claim 67% holds in real-money trading. The 67% is the historical hit rate on a large filtered sample; live trading introduces slippage, fills, and behavioral selection effects we don’t model.

We don’t claim the bot makes money. The bot is currently in paper-trading mode and its results are public. We are not publishing aggregate bot P&L numbers right now — the May 2026 reopen-price audit (see above) means our historical bot backtest is not trustworthy in absolute dollars until the data fix ships. We share the bot’s live trades for transparency, not as a track record.

We don’t claim the model improves over time without intervention. New halts are added to the corpus daily, but the lookup buckets are recomputed weekly. We do not currently retrain on a continuous basis.

Audit trail.

The model is documented in three places:

  • The corpus: 71,336 halts since August 2019, halts table in our database. Coverage and field-level integrity are tracked in the public Phase B/C backfill runbook.
  • The backtest report: docs/v2-lookup-backtest.md. Every accuracy number on this page is sourced from there.
  • The walk-forward verification: docs/v2-filter-backtest.md and docs/v2-filter-backtest-audits.md show the bucket-coverage distribution, the outlier audit, and the per-trade economics under live-fillable assumptions.

If a journalist, prospective subscriber, or skeptic asks for a number we cite on the homepage and we can’t trace it back to one of those documents, that’s a bug. Email it to support@haltpredict.com.

What this page is for.

Most prediction tools sell you a number and dare you to disprove it. We’d rather you understand the number, see how it was computed, and decide for yourself whether it earns a place in your stack. If you’ve read this far and it still seems honest, the live scoreboard is one click away.

→ See live predictions