Event Horizon IQ

Audit us

Every number we publish about our record can be recomputed by you, from the same file, using the same query. This page gives you both. If your number matches ours, you’ve verified us. If it doesn’t, you’ve caught us — either way, tell us.

1. Download the tape.

TAPE_v0_2026-09-10.json — our complete prediction registry as of September 10, 2026: 148 calls, every field needed to score them, nothing silently edited.

row count: 148 · integrity hash (SHA-256): 35e06618c9c5d9ce

2. Run the query.

This is the exact query our site runs — the same string, byte for byte. Paste it against the tape (or any Postgres you load the tape into) and count.

You don’t need to understand the text below. Load the file into any Postgres tool, press run, and count. If your count matches ours, you’ve verified us.

HIT_RATE_QUERY_v1 + the companion void-count query
-- HIT_RATE_QUERY_v1 · 2026-09-10 · binds to the level chosen in §4
-- VOID RULE: verdict-bearing resolved rows only; voids excluded by construction,
--            void COUNTS reported alongside (second query below).
SELECT
  COUNT(*) FILTER (WHERE hit = true)::int  AS hits,
  COUNT(*)::int                            AS n
FROM prediction_calls
WHERE status = 'resolved'
  AND hit IS NOT NULL                       -- void rule: no verdict, no seat
  AND is_backtest = false                   -- retrospective-row rule (live-only)
  AND opened_at >= '2026-01-01'::timestamptz
  AND resolved_at >= '2026-04-15'::timestamptz
  -- STRICTNESS LEVEL: RULED (d) 2026-09-10-B — the strict block is ACTIVE:
  AND market_source NOT IN ('unrecorded','none','no_free_source')
  AND (
        (market_prob_at_open IS NOT NULL AND market_source_at_open IS NOT NULL
           AND market_source_at_open <> 'none')
     OR (market_source_at_open IS NOT NULL AND market_source_at_open <> 'none')
     OR criterion_stamped_at IS NOT NULL
     OR (ehiq_prob_at_open IS NOT NULL AND market_prob IS NOT NULL))
  AND market_source_at_open IS DISTINCT FROM 'no_market'   -- absolute track never mixes
;
-- companion VOID-COUNT query (published next to n, every time):
SELECT
  COUNT(*) FILTER (WHERE status='withdrawn')::int AS withdrawn,
  COUNT(*) FILTER (WHERE status='duplicate')::int AS duplicate,
  COUNT(*) FILTER (WHERE status='closed')::int    AS closed,
  COUNT(*) FILTER (WHERE status='resolved' AND hit IS NULL)::int AS resolved_no_verdict
FROM prediction_calls WHERE is_backtest = false;
GATE_QUERY_v1 (the November gate count)
-- GATE_QUERY_v1 · 2026-09-10 · "resolved calls that declared a market at creation"
-- The gate binds to the SAME strictness level as HIT_RATE_QUERY_v1 (§4), counted
-- here as the resolved subset; the 75 target is REGISTRATIONS by 2026-11-03 with
-- creation-time declaration (R1–R4), i.e. same predicate without status='resolved'.
SELECT COUNT(*)::int AS gate_resolved
FROM prediction_calls
WHERE status = 'resolved'
  AND hit IS NOT NULL
  AND is_backtest = false
  AND opened_at >= '2026-01-01'::timestamptz
  AND resolved_at >= '2026-04-15'::timestamptz
  AND market_source NOT IN ('unrecorded','none','no_free_source')
  AND ( (market_prob_at_open IS NOT NULL AND market_source_at_open IS NOT NULL
           AND market_source_at_open <> 'none')
     OR (market_source_at_open IS NOT NULL AND market_source_at_open <> 'none')
     OR criterion_stamped_at IS NOT NULL
     OR (ehiq_prob_at_open IS NOT NULL AND market_prob IS NOT NULL) )
  AND market_source_at_open IS DISTINCT FROM 'no_market';
-- result on 2026-09-10 pull (level d, verdict-bearing, absolute-track excluded):
-- 30 resolved / 20 hits (verified two ways, macmini; delta rows 147, 254, 16 named in §4)
-- REGISTERED (same predicate, all statuses, no verdict clause): 76 (31 resolved, 33 active)

3. Match our figure.

figurefrom the tape (you)live from /api/gate (us)
strict resolved3031
strict hits2021
official resolved3637
official hits2526
voids (withdrawn / duplicate / closed / no-verdict)11 / 3 / 1 / 111 / 3 / 1 / 1
registered, market declared at creation7682

If every row matches, the audit passes. The six-row difference between strict and official is named in full on /gate.

n=30 resolved · 16 void: 11 withdrawn, 3 duplicate, 1 closed, 1 resolved-no-verdict

Calls that ended without a verdict never enter the score. The count of them is published next to every score, so a track can’t be flattered by voiding the calls that were going wrong.

Known anomalies

  • scotus-louisiana-v-callais-2026 (id 24): resolution date precedes its open date — logged, not fixed by the contract.
  • dave-q1-fy26 (id 16): resolved without a verdict — excluded from all rates by the void rule.
  • 16 resolved rows carry free-text in the resolution field instead of the standard vocabulary.
  • updated_at is unreliable and nothing on this site derives from it.

This is v1, frozen September 10, 2026. If the query ever changes, the change ships as v2 with a changelog and a restatement of every figure v1 produced. The denominator is never edited silently.