Realized results. Losing buckets included.
File · track record
Every number below is computed from signals that reached their horizon. No backtests, no cherry-picking. Alpha is the signal's stock return minus its sector ETF over the 60 trading days after the event. We lead with the median and publish the mean and worst decile beside it; medians alone hide the tail. Data revalidates hourly.
The contract-award universe is a trap.
Exhibit A
Before any claim about picking winners: here is what the average contract signal does, unfiltered, and by company size. Most government-contract news is noise, and the typical signal underperforms its sector. This table is why the product exists: the value is knowing which slice isn't this table.
| Population | Median α (60d) | Mean | p10 | Hit rate | n |
|---|---|---|---|---|---|
| All contract signals | -2.91% | -0.9% | -35.1% | 44% | 1131 |
| nano <$50M | -4.67% | +1.6% | -53.2% | 41% | 360 |
| micro $50M-300M | -3.58% | -5.5% | -30.3% | 39% | 269 |
| small $300M-2B | -2.41% | +0.0% | -25.2% | 46% | 263 |
| mid+ >$2B | +0.02% | -1.8% | -25.8% | 50% | 206 |
The filter: top rank vs everything else.
Exhibit B
The separation our evidence supports is binary: the top rank clears the universe; the rest doesn't. Against 2,000 random draws matched to the top rank's size mix, the top-rank 60-day median (+0.6%) beat 98.0% of draws (n=280; computed 2026-08-01, seeded and reproducible). The out-of-sample hit rate with its base rate is in Exhibit C. Tiers below the top do not currently rank against each other; the full grid is further down, because we publish everything.
| Rank | Median α (60d) | Mean | p10 | Hit rate | n |
|---|---|---|---|---|---|
| Top rank | +0.59% | +2.9% | -24.8% | 51% | 291 |
| Below top | -3.56% | -2.2% | -39.6% | 42% | 840 |
High-conviction actions only fire in the top rank.
Out of sample, and what survives it.
Exhibit C
The test that matters: freeze everything, then score a future the model has never seen. In the 2025-26 out-of-sample window, top-ranked signals beat their sector 53% of the time against a 47% base rate, median +3.1% over 60 trading days. That edge is attributable to award size, not the ML layer. Dispersion is wide (worst decile -25.7%); this is a thin, real tilt, not a money machine, and we won't sell it as one.
The frozen model is dead. We publish the corpse.
Exhibit D
We froze a linear model on our 9 score components using only data through 2023, then scored 2024-2026 untouched, scaling bounds included. Result: out-of-sample rank correlation of 0.003, statistically nothing. That number is the floor. The live score's better-looking numbers are the ceiling: its training is not provably free of hindsight, so we treat them as an upper bound, never a claim. What survives between floor and ceiling is award size, which is why the shipped score is exactly that, published openly.
| Quintile | Mean (w) | Median | sd | p10 | Hit | n |
|---|---|---|---|---|---|---|
| Q1 | -2.5% | -3.6% | +27% | -23.2% | 40% | 124 |
| Q2 | +1.8% | -1.2% | +40% | -32.3% | 49% | 124 |
| Q3 | +4.2% | -0.3% | +41% | -28.1% | 49% | 123 |
| Q4 | +6.0% | -2.7% | +59% | -56.2% | 48% | 124 |
| Q5 (top) | +2.3% | -5.1% | +39% | -27.3% | 45% | 123 |
| top decile | +7.8% | -1.8% | +38% | -19.4% | 49% | 61 |
| ALL test | +2.4% | -2.7% | +42% | -32.9% | 46% | 618 |
Horizon decay, top rank (median α · hit · n): 7d -0.3% 47% · 327 · 20d -0.7% 46% · 318 · 60d +0.6% 51% · 291 · 90d -1.0% 47% · 280. The tilt concentrates at 60-90 trading days; at 7-20 days the top rank is indistinguishable from chance, and we say so.
The full rank grid, published anyway.
Exhibit E
A ranking should degrade monotonically down the ranks. Below the top tier, ours currently doesn't: ranks two through four are statistically indistinguishable. We could hide that; instead it's Exhibit E. A tool that claims everything works is a tool you can't trust about anything.
| Rank | Median α (60d) | Mean | p10 | Hit rate | n |
|---|---|---|---|---|---|
| Top rank | +0.59% | +2.9% | -24.8% | 51% | 291 |
| High | -2.00% | +0.4% | -33.6% | 45% | 343 |
| Mid | -4.46% | -3.1% | -41.4% | 40% | 398 |
| Low | -5.98% | -7.6% | -41.2% | 35% | 99 |
Event signals, by source.
Exhibit F
Post-announcement events (M&A, FDA approvals) are largely efficient by the time they print, and the table says so. Sources marked early don't yet have enough long-horizon outcomes to be judged (n < 100 at 60 and 90 days); they are hypotheses we track openly, not evidence we sell.
| Source | Median α (60d) | Mean | p10 | Hit rate | n |
|---|---|---|---|---|---|
| M&A announcement | -1.55% | -0.4% | -23.3% | 45% | 3550 |
| FDA approval | -0.49% | +0.7% | -13.1% | 48% | 1654 |
| Contract 8-Kearly · tracking openly | -6.19% | -4.2% | -35.6% | 36% | 138 |
| Recompeteearly · tracking openly | - | - | - | - | 0 |
| Sentiment spikeearly · tracking openly | - | - | - | - | 0 |
| Federal grant | -3.52% | -3.9% | -45.4% | 44% | 153 |
| Subcontractearly · tracking openly | -11.36% | -16.4% | -51.0% | 15% | 78 |
| Budget lineearly · tracking openly | - | - | - | - | 0 |
Method, in one paragraph
When a signal fires, we record the stock's price and its sector ETF's price. Sixty trading days later we take the difference in returns; that's the alpha. Hit rate is the share of signals with positive alpha. Buckets are fixed score ranges assigned at signal time, never re-labeled after the fact. Outcomes accrue as signals reach their horizon, so recent signals aren't counted until their window closes. Outcomes are winsorized at ±150% to keep unrealizable microcap prints from distorting the means we now publish alongside the medians. Out-of-sample results come from committed, seeded, reproducible artifacts, not from a notebook we can quietly re-run.
Audit it yourself, live.
Your feed is the same feed these outcomes came from. Watch it, check the record against what you see, then decide.
Get startedSignal infrastructure, not investment advice · past performance does not guarantee future results