Each thesis enters the ledger with a creation timestamp and a fixed horizon (1 week / 1 month / 3 months / 6 months). The claim's resolution window starts at its commit time. What you see in the ledger is the original wording; resolved claims are never reworded, re-dated, or removed.
Directional (long/short) claims are scored on the market-adjusted return: realized − β·SPY over the same window, where β comes from ~120 trading days of daily returns before the claim. A LONG claim is a HIT when the adjusted move clears +2%, a MISS beyond −2%, and PARTIAL in the dead zone between.
Range-bound claims are scored against the stock's own volatility: the band is 0.674·σ·√t (the median expected move), so a skill-less "it'll stay flat" caller converges to ~50% — the same coin-flip baseline as directional claims.
Catalyst scenarios are written as branches ("if X, then up; if Y, then down") and every branch is logged. When the event resolves, only the branch whose condition fired is scored; the others are stamped VOID and excluded from every statistic — in both directions. Dead branches are not wins, and they are not misses either.
Hits, misses, partials, voids and pending claims are all counted and all visible in the ledger. Nothing resolved is ever unpublished.
Headline accuracy always carries a 95% Wilson confidence interval. Each claim states an explicit probability (P of scoring a HIT under these rules), and those probabilities are graded with a Brier score against the 0.25 no-edge baseline — overconfidence is penalized quadratically.
Every research cycle feeds the resolved scorecard back into the model: directional accuracy by setup, calibration of its stated probabilities, and its systematic biases. The misses are not just published; they are the training signal.
A small sample is suggestive, not proof. We will not dress it up as one. Until the ledger is hundreds of decided claims deep, the honest statement is the interval, not the point estimate — and we print the interval everywhere.