FactorHelm

The rules, written down before the results

Each rule below is versioned. When a rule changes, it gets a new version; records graded under the old version keep their old grade.

Outcome grading

Contract ne-grade-v1, frozen for all alerts logged after its deployment.

Timestamp
The alert's original fire time in UTC is preserved. The official NYSE calendar is used, including holidays and early closes.
Entry
The adjusted close of the first official session whose close is strictly after the fire time. An alert after the close, on a weekend or on a holiday enters at the next session's close.
Exit
The adjusted close exactly 20 official sessions after entry. A call stays open until all 21 closes exist. Missing sessions are never skipped or substituted; the call is marked data unavailable and retried.
Benchmark
SPY adjusted close over the identical entry and exit sessions.
Abnormal return
Stock return minus SPY return over the window.
Hit
A negative-overreaction call is a hit when the abnormal return is positive; a positive-overreaction call is a hit when it is negative.
Evidence stored
Methodology version, entry and exit sessions, both returns, the abnormal return, data source, retrieval time, all 21 adjusted close pairs, and a SHA-256 digest of that price payload.
Idempotence
Resolved and invalidated entries are never regraded. Monitored narratives resolve as tracked and never enter hit-rate statistics.

What makes a strict call

A company enters the official research output only when every one of these is true. If any input is missing, it fails closed.

  1. Narrative velocity, mention count, source quality, independent corroboration and direction checks all pass.
  2. The company has a sourced, human-reviewed revenue-overlap profile.
  3. The market-shock gate passes on an SPY-adjusted basis, in the same direction, after a completed official NYSE close.
  4. The call has a canonical hash.
  5. The hash has been anchored in a KMS-signed manifest in versioned S3 storage.

Negative overreactions are shown as long-reversion research positions and positive ones as short-fade research positions. These are research states, not trades. The official research basket holds at most five independent catalyst families, caps each at 20%, and keeps the rest in cash. An empty basket is a valid result: 100% cash.

When a hit rate can be published

Not before 30 independently resolved catalyst families.

Several alerts about the same catalyst count as one family, graded once, on the latest resolution date. Alerts without a real family identifier are reported separately and never promoted to independent families.

Below the floor, every surface — the Signals dashboard, the public scorecard, the email brief and the API — shows the sample count and the reason for the lock instead of a percentage. Above it, they can show the hit rate with a Wilson confidence interval, the median abnormal reversion, the maximum research drawdown, and a non-compounded cumulative outcome series, labelled as a research diagnostic and not an investable return.

Revenue-exposure profiles

Overlap is how much of a company's actual revenue is exposed to a type of AI narrative — disruption, enablement or infrastructure — from 0 (essentially none) to 1 (direct and material).

It is not model confidence, stock correlation or a probability of a price move. It comes from a maintained knowledge table, reviewed by a person against sources, with the reviewer and date recorded.

Tracked
1,022 companies, recognisable in incoming stories
Curated
258 with company-specific overlap research
Human reviewed
151, eligible to pass the overlap gate of a strict call
Provisional
107, monitored with research priors, failing closed for strict calls
No profile
Defaults to 0.50, which cannot pass the low-overlap gate

The event study

Before launch, we tested the core idea on nine 2026 events: does a sharp move on an AI story with little revenue behind it tend to reverse?

The criteria were registered before the results were computed. Day 0 is the largest abnormal session within five days of the recorded date. Only events with |z| ≥ 2 on day 0 are graded. The thesis group passes if its mean reversion is at least 0.5; the control group — events where the move had real revenue behind it — passes if its mean reversion is below 0.5. Ratios are clipped to between −3 and 3.

Event-study results, nine events
EventTickerDay 0Day 0 abnormalzGraded20-session driftReversionGroup
Old blog post presented as newsIBM23 Feb−12.1%−6.3Yes+14.7%1.22Thesis
Code-security launch, sympathy sell-offCRWD23 Feb−8.8%−3.7Yes+20.9%2.37Thesis
Same catalystOKTA20 Feb−9.9%−4.5Yes+12.4%1.25Thesis
Same catalystNET20 Feb−8.8%−2.8Yes+26.7%3.00Thesis
AI-branded layoffsXYZ27 Feb+17.3%6.5Yes−4.6%0.27Thesis
Design-tool rumourFIG15 Apr+9.6%1.9No shock−11.4%1.18Control
Same rumourADBE13 Apr+5.6%2.4Yes−4.4%0.79Control
Executive moves to an AI labWDAY8 Apr−9.1%−3.0Yes−4.0%−0.44Thesis
Product results with real revenueTEAM1 May+29.3%6.7Yes+24.1%−0.82Control

Result. Eight of nine events qualified: six thesis, two control. Mean reversion was 1.28 in the thesis group (target ≥ 0.5) and −0.02 in the control group (target < 0.5). The study passed.

Limits. One event showed no real shock. Three of the thesis events share one catalyst, so the effective sample is smaller than it looks. The events were selected by us. This is why the result is called preliminary and why no hit rate is published from it.

Day 0 dates are 2026. The table reproduces the validation report; the day 0 abnormal column is the market-adjusted move on the snapped day 0, so it can differ in sign from the headline move for events snapped to a different session.

Provenance

Provenance v1

A strict call cannot be created without a canonical SHA-256 hash of its pre-outcome record.

Each UTC day's hashes are grouped into one immutable manifest that also carries the previous manifest's hash. Adding or removing an entry after the manifest exists is refused. The manifest's digest is signed with an asymmetric AWS KMS key and written to an S3 bucket in Object Lock compliance mode, where the retention period cannot be shortened or bypassed, even by the account owner.

Every record carries one of four states, shown publicly:

Legacy, unanchored
An older record with no canonical hash. Public, but never presented as anchored.
Hash only
The call has a canonical hash; no daily manifest yet.
Manifested locally
The call is in an immutable local daily manifest.
Anchored
The manifest is signed by KMS and stored under Object Lock.

How to verify a manifest yourself