Method · deterministic, versioned, published in full

How a score is built — and what it does not claim

Every number in the product is produced by a deterministic model from stored, dated evidence. No language model sets or adjusts a score. The weights, half-lives and formulas below are the ones this deployment is running right now.

Config v1Probability label: off

Read this before you read a score

A radar score is a signal score. It is not a probability.

A score from 0 to 100 measures how much dated, corroborated, source-ranked evidence of a transition exists right now. It does not measure how likely that transition is. Two companies with the same score can have very different futures; what they share is the weight of the paper trail behind them today.

Our own walk-forward validation on the IPO target is published below rather than summarised away. On that target the model does not currently beat simple baselines, and it is not calibrated. That is why probabilityLabelEnabled is false in the running configuration and the product never renders a score as a percentage likelihood.

Use the scores the way they are built: as a way to find and read evidence early. IPO Radar is a research and intelligence tool, not investment advice.

Our own results, including the unflattering ones

What the walk-forward validation actually found

Target: First-time SEC registration (private-to-public transition). Decision set 2025-01-01 → 2026-01-01, 180-day horizon, 708 observations, 76 positives, base rate 10.7%. ROC-AUC of 0.5 is chance; below 0.5 means the ranking is inverted.

ROC-AUC and precision of the active scoring configuration against four baselines, on the validation set
ModelROC-AUC95% CIPrecision @ top 10%Lift @ top 10%
IPO Radar, active configuration (v1)0.4290.355 – 0.5035.6%0.53
Baseline C — company size and funding only0.5840.514 – 0.6598.5%0.79
Baseline A — random ranking0.5450.481 – 0.60912.7%1.18
Baseline B — most-recent-evidence only0.2460.193 – 0.3137.0%0.66
Baseline D — raw event count0.1510.117 – 0.1950.0%0.00

Report of 2026-09-08, generated by scripts/model-report.ts and recorded in docs/MODEL_VALIDATION_V2_DECISION.md. These are figures from that dated report, not a live computation on this page.

Finding

The ranking is inverted on this target

Mean score separation between companies that went on to register and those that did not is −1.11 on the validation set and −4.51 on the held-out test set. The model assigns lower scores to the companies that make the transition.

The cause is cohort composition, not a bug: the model rewards size, funding, valuation and media attention, while first-time registrants are typically small and obscure.

Finding

Most transitions are invisible to us before they happen

80 of 111 first-time registration outcomes (72%) had no pre-outcome evidence at all in the system. Recall is bounded by coverage before the model gets a chance to be wrong.

Where evidence did exist, 4 of 31 covered outcomes were detected early — a median lead time of 78 days. That is the honest size of the early-warning claim.

Decision

A better candidate was still not promoted

A candidate configuration measured a real, statistically robust improvement over the active one (Δ AUC +0.024, confidence interval excluding zero) and was not promoted, because it still lost to the size-and-funding baseline.

Promoting a configuration that is measurably better at being wrong would spend a version number for no user benefit. It stays stored as an evaluated candidate.

Deterministic arithmetic

From a filed document to a number

Each stored event becomes typed signals. Each signal carries a base weight, a strength, a source-quality factor, a corroboration factor and a decay half-life. The arithmetic below is the whole of it.

Signal weight and decay

The formulas, in full

effective_weight = base_weight × strength × source_quality
                 × corroboration × confidence × direction

recency_factor   = 0                              if age > max_age (730d)
                 = max(floor, 2^(−age / half_life))   otherwise

mass             = effective_weight × recency_factor
component_score  = 100 × (1 − e^(−Σ mass / k))
dimension_score  = Σ weight_c × component_score_c
radar_score      = 0.50 × IPO + 0.35 × Tokenization
                 + 0.15 × On-chain

Component scores saturate: the tenth article about the same thing adds far less than the first filing. Dimension weights sum to 1. Decay floor 0.02.

Ipo half-life
90d
Tokenization half-life
120d
Onchain half-life
180d
Capital Markets half-life
120d
Funding half-life
365d
Valuation half-life
365d
Provenance is ranked, not averaged

Not every source counts the same

Evidence is weighted by who published it, and the tier stays visible next to the claim instead of being flattened into the score.

  • T1Official regulator — SEC EDGAR×1.00
  • T2Company official statement×0.90
  • T3Major financial publication×0.75
  • T4Secondary source / aggregator×0.50
  • T5Unknown provenance×0.25
  • A single T4/T5 source without independent corroboration is capped at ×0.50 — it can never create a strong signal on its own.
  • Each independent corroborating source adds +0.15, capped at +0.45, and raises event confidence by +0.05 up to 0.98.
  • Copies of one press release are detected by title and fingerprint similarity and do not count as independent.
Direction of travel

Momentum

momentum = (score_now − score_30d_ago)
         + 0.5 × (score_now − score_7d_ago)

ACCELERATING  momentum ≥ +8, or 7d signal mass ≥ 2× prior 7d (and ≥ 15)
COOLING       momentum ≤ −5
STABLE        otherwise
NO HISTORY    fewer than 2 score snapshots

“No history” is stated rather than shown as a flat line, so an absence of snapshots never reads as an absence of movement.

Structural, not narrative

Attribute components

  • Financial maturity — employees and company age; public companies score 100.
  • Funding maturity — log-scaled total funding on record, with a bonus for late-stage rounds (Series D+, growth, secondary, tender).
  • Valuation maturity — log-scaled valuation between typical IPO scale ($1B) and $10B.
  • Market conditions — the count of original S-1/F-1 registration statements on EDGAR in the trailing 90 days against a baseline. A measured count, not a sentiment guess.
  • IPO readiness (structural) = 0.35 × financial + 0.30 × funding + 0.35 × valuation maturity. It excludes news entirely.

The running configuration

Component weights, as this deployment is scoring today

Each dimension keeps its own components and its own decay; a composite would hide which transition is actually underway. Weights within a dimension sum to 1.

Dimension · 11 components

Ipo

  • Filing Evidence0.20
  • Regulatory Evidence0.16
  • Banking Evidence0.14
  • Funding Maturity0.08
  • Executive Evidence0.08
  • Financial Maturity0.08
  • Valuation Maturity0.08
  • Liquidity Evidence0.06
  • Corporate Restructuring0.05
  • Market Conditions0.04
  • Recency0.03
Dimension · 10 components

Tokenization

  • Explicit Statements0.18
  • Tokenization Partnerships0.17
  • Securities Infrastructure0.12
  • Blockchain Partnerships0.10
  • Executive Statements0.08
  • Regulatory Readiness0.08
  • Exchange Relationships0.08
  • Settlement Infrastructure0.08
  • Custody Infrastructure0.07
  • Recency0.04
Dimension · 8 components

On-chain readiness

  • Securities Infrastructure0.16
  • Tokenization Provider0.14
  • Custody0.12
  • Settlement0.12
  • Blockchain Integration0.12
  • Transfer Infrastructure0.12
  • Regulatory Compatibility0.12
  • Kyc Aml Readiness0.10

Kept separate everywhere they appear

FACT, INFERENCE and PREDICTION are never blended

A filed document and a model output are different kinds of thing. Mixing them is how a screener becomes a rumour mill, so the product labels them apart in every view, in every export and in every assistant answer.

FACT

A dated statement in a document we retrieved and stored: a filing on EDGAR, a company press release, an on-chain record. It carries a publication date, a retrieval date and a source URL, and it is never rewritten.

INFERENCE

Something the system concluded by combining facts — that a set of filings looks like registration preparation, for example. Always attributable to the facts underneath it.

PREDICTION

A forward-looking model output. Scores and momentum are predictions in this sense. They are labelled as such wherever they appear, and they are never presented as facts.

The research assistant is bound by the same rule: it answers from stored evidence, cites what it used, separates its facts from its inferences, and cannot write to a score.

Stated, not buried

What the system cannot see, and how it changes

A low score can mean there is no evidence of a transition, or that we have no coverage of the company. Those are different statements, and the product keeps them apart.

Known limits

Where the evidence runs out

  • A company with no coverage scores low because there is nothing to score, not because a transition is unlikely. Coverage gaps are published on the data-health page.
  • Small, private companies are close to invisible in mainstream news, and news is where most non-filing evidence comes from. That is the single largest limitation of the current model.
  • A source without credentials reports NOT CONFIGURED and produces nothing. It is never substituted with an estimate.
  • Two timestamps are always shown and always labelled: the date on the document, and the date the pipeline retrieved it. Unlabelled, correct data can look years stale.
Governance

How the configuration changes

  • Weights, half-lives, source-quality factors and corroboration bonuses live in a versioned configuration — currently v1. Changing any of them creates a new version and triggers a full rescore, so history stays comparable.
  • A candidate configuration is evaluated on a train/validation split with the test period reported once and never used to choose. Identical prediction grid, identical outcome definitions, identical information cutoffs.
  • The backtester recomputes scores as of 30/60/90/180 days before each real registration anchor date, excluding the registration signals themselves, against a control group evaluated on the same calendar dates.
  • The probability label switches on only when calibration is statistically justified on a sufficient sample. It is currently off.