Pigglet ranks stocks, and the ranking has no measurable ability to predict returns. That is not a disclaimer bolted on at the end — it is the finding. This page is the whole evidence base: first every hypothesis behind our own model and how each one died, then the wider sweep — every textbook strategy and the prediction markets — tested the same unforgiving way. Read it and judge the funnel for what it is: a way to narrow ~2,000 names down to a few worth an hour's reading, and nothing more.
Composite backtest of 113 months, 2017-01-31 to 2026-05-29, on survivorship-free point-in-time data. Last run 2026-07-14. Every composite figure below is read from that run, not typed in.
The four-factor composite the funnel actually runs, and every story we told ourselves about why it might work — each one tested to destruction.
Momentum (12-1), value (book-to-market + earnings yield), quality (ROE) and low volatility, equally weighted, rebalanced monthly across ~2,000 liquid US names.
Top-minus-bottom quintile spread of +0.173%/mo (t = 0.35). Mean information coefficient 0.0168 (t = 1.21). The top quintile is INDISTINGUISHABLE from a plain equal-weight portfolio even before any trading cost (+0.029%/mo (t = 0.14)).
The oldest factor in the book: buy what is cheap relative to its assets and earnings.
Appeared to work — IC 0.032 (t = 3.11) — until a look-ahead bug was fixed. Market cap was being computed from a split-ADJUSTED price, which made stocks that later split (i.e. stocks that had already risen a lot) look artificially cheap. Remove the bug and value's IC collapses to 0.0025 (t = 0.20). The signal WAS the bug.
105,887 filings, sorted by how the stock moved in the filing window, then tracked for the next 40 trading days.
Spread of 0.29% (t = 0.81). Nothing — and nothing in either half of the sample.
The classic anomaly, keyed on the earnings press release itself rather than the later 10-Q — the event that actually moves the price.
t = 0.74. Nothing.
Value, ROE and low volatility all load on REITs, banks and utilities. Perhaps the model was ranking sectors, not stocks. Tested by ranking each factor within its own sector.
The tilt is real — banks, real estate, insurance, utilities and brokers make up 47% of the top quintile against a 26% baseline, while tech is badly underweighted. But ranking within sector does not rescue the model: the top quintile goes from −0.047%/mo (t = −0.23) to +0.077%/mo (t = 0.46), still nowhere near significant, and 2016–2020 stays negative. It was never a sector bet — there is no edge hiding under the tilt.
The story we told ourselves for most of this project: the model does nothing before 2021, then works as speculative names collapse — so it is a bet on that continuing.
An artifact. On clean data 2021–2026 is t = 1.53 — not significant. The "junk" that appeared to collapse was largely reverse-split penny stocks that a broken liquidity screen was wrongly admitting. There was no regime bet, because there was no signal to have a regime.
Two confident claims we made about which factors were doing the work — quality (ROE) supposedly contributing an IC of 0.0003, i.e. nothing at all.
Both were artifacts of a factor-scaling bug. Winsorising before z-scoring left value capped at +7σ while the other factors spanned ±2–4, so value silently dominated a composite that was nominally equal-weighted. On clean data quality is IC 0.0149 (t = 1.61) and low-vol is IC 0.0082 (t = 0.52) — neither significant, but neither the story we told. We were wrong about WHY it failed, not about whether.
Honesty cuts both ways. This sample is too short to detect a realistic edge even if one existed. With 113 months of data, the smallest active premium we could distinguish from noise at conventional significance is about 0.41%/month — roughly 4.9% a year, which would be an enormous edge. Real factor premia are a fraction of that. Detecting a realistic 0.25%/month properly would need around 303 months. We have 113.
So the honest claim is not "we proved there is no edge". It is that we cannot find one, this data could not detect a modest one anyway, and the point estimates sit within a rounding error of zero — the top quintile does no better than just holding everything. (Its sign has actually flipped once, when 393 wrongly-excluded mega-caps were recovered into the universe — which is what a sign that means nothing does.) That is enough to refuse to tell you what to buy. It is not enough to tell you nothing is there.
It is also why the sub-periods are reported and not buried. 2017–2020 is −1.017%/mo (t = -1.49) and 2021–2026 is +1.051%/mo (t = 1.53). A model that is flat in the first half and positive in the second has not found an edge; it has found a period. Neither half clears the bar, and we are not going to quote you the good one.
Everyone's heard the strategies — buy momentum, buy cheap, follow the trend, back the favorite. So we built them and tested them the same way, on survivorship-free data, net of costs, with a significance bar that rises for every strategy tried. 31 equity strategies across 5 families over 113 months, plus ~34k resolved prediction markets. Winners that survive proper testing: 0. That is not a failure of effort. It is what an efficient market looks like when you stop flattering yourself.
Don't take our word for it — go find a winner. Each try re-scores the real graded panel in your browser and reports the strategy's actualt-stat. Try enough and one will cross the "looks significant" line. The machine draws the line that actually matters right beside it: the best t-stat that many random tries produces by pure luck. Your best hugs it and never gets away. That gap is why every strategy below is dead.
The whole documented anomaly canon, on ~2,000 liquid US names. The strongest single result — risk-adjusted momentum — reaches a tradeable significance of 1.85 against a bar of 2, and it is the best of 31. With 113 months of data the smallest edge we could even distinguish from noise is about 0.41%/month; real premia are a fraction of that. The math was always going to win.
The one family with a pulse. Every literature-endorsed refinement of price momentum, long-only, net of realistic costs, judged in both halves of the sample.
Rank names by 12-1 return divided by trailing volatility; hold the top quintile.
The strongest single result in the entire stock study — and it still fails. Tradeable net-of-cost, it is below the significance bar, weak in the first half, and nowhere near the threshold that ~22 tried strategies demand.
net long-only t = 1.85 (bar: >2, and >3 after multiple-testing correction)
Classic and refined momentum sorts across the liquid US universe.
All land in the same place: a faint long-short pulse that dies the moment you demand it be tradeable long-only, net of costs, and present in both halves. Momentum-consistency's second-half t of 3.12 is a mirage — its first half is dead flat.
best tradeable t ≈ 1.4; none clears both halves
The oldest factor, and its famous pairing with momentum — the single most-replicated combination in factor investing.
Blend rank(value) + rank(momentum); hold the top bucket.
A textbook regime flip. Every blend is significantly NEGATIVE in 2016-2020 and significantly POSITIVE in 2021-2026. The full-sample number averages those to roughly zero — which is exactly what a regime bet dressed as an edge looks like.
half-sample t: −2.81 then +2.59
Buy what is cheap relative to book and earnings.
Dead on clean data, and slightly negative — the well-documented 'value winter'. (It once appeared to work, at IC 0.032 / t=3.11, until a split-adjusted-price look-ahead bug was removed. The signal was the bug.)
long-short t ≈ −0.2
The anomaly that decayed least post-publication — tested on the axis it actually claims: risk-adjusted return, not raw return.
Weight the whole universe by 1/volatility instead of equally.
It flagged as a Sharpe win — until the correct test. The Sharpe improvement isn't statistically distinguishable from noise given how many strategies were tried, and the excess return is zero and flips sign between halves. The gain is pure volatility-denominator, not edge.
ΔSharpe +0.10, but JKM z = 2.00 < the 2.55 multiple-testing bar
Not stock-picking: timing the whole market. Two of the most durable ideas in the literature, on our decade.
Hold the market when it is in an uptrend; go to cash when it isn't.
No risk-adjusted improvement. The SMA rule cuts drawdown but sacrifices more return than risk, so its Sharpe is lower. 2016-2026 was trend's worst regime — whipsawed by the V-shaped 2018 and 2020 recoveries.
Sharpe 0.62 vs 0.69 for buy-and-hold
Scale exposure down when last month's realised volatility was high.
Worse than doing nothing. De-risking on the 2020 volatility spike meant cutting exposure at the exact bottom and missing the rebound. The mechanism (volatility is persistent) is real; this decade punished it.
Sharpe 0.42 vs 0.57 for buy-and-hold
Genuinely distinct from price signals: named, pre-registered, historically-robust edges from the fundamentals — point-in-time.
Sloan, Pontiff-Woodgate, Cooper-Gulen-Schill, Novy-Marx — the canonical fundamental sorts.
All null. Nothing near significance; gross profitability and net issuance flip sign between halves. These are among the oldest, most-published anomalies — which is precisely why they have decayed the most.
every long-only net t below 0.6
Stocks give you 12 rebalances a year; sports markets resolve in days, so a few months buys thousands of scored predictions and real statistical power. If an edge were reachable anywhere, it would show up here fastest. It doesn't — Polymarket prices its markets, sharp and thin alike, at least as well as a competent model, and carries no free arbitrage. The full investigation, with the calibration charts and per-league numbers, is on the arena page.
A Poisson goals model prices sports fixtures from team strength, scored by Brier against the market's own price — the honest test of whether a public-data model out-predicts the crowd. It resolves in days, so the sample has real statistical power.
Forecast each fixture point-in-time; compare to the Polymarket price at kickoff.
The model loses. Out-forecasting a liquid, attended market with public data is hard, and a competent Poisson model doesn't manage it. (A single game where the model won by 0.18 was pure n=1 luck — it vanished under 44 fixtures.)
fixture-clustered t = −1.73 (market better)
Same model on thinly-traded leagues (Sweden, Colombia, Japan…) priced by fewer bettors.
Also loses. The reasonable hope was that softer markets are beatable where sharp ones aren't. They aren't — even Sweden, the best obscure sample, the market out-prices the model. Polymarket is well-calibrated even where it is thin.
overall clustered t = −2.45 across 36 fixtures
You don't have to predict better than anyone — you can exploit a pricing bias or a two-venue disagreement. If one exists.
Back heavy favorites; documented across betting markets to be underpriced.
Real but untradeable. Across 33,226 markets in five sports the prices are near-perfectly calibrated (a 0.765 favorite wins 0.767 of the time). Back-the-favorite is net-negative after cost. A promising small-sample flicker regressed exactly to zero at full power.
back-the-favorite net EV: −1.35c/$1, t ≈ 0.6
Buy every outcome of a market for < $1 total; one leg is guaranteed to pay $1.
None available. Every complete outcome set — binary YES+NO, and three-way moneylines — costs at least $1 at the ask. The market carries a normal positive spread; there is no riskless lock right now.
0 of 243 markets scanned
When two venues price the same contract differently, the gap is edge.
The real place +EV lives — but it needs the same contract on two venues. Right now they barely overlap: Polymarket lists obscure leagues no sportsbook prices, and Kalshi's open API is deprecated. The scanner is built and fires the moment overlap appears.
0 shared contracts this week
Every promising lead collapsed at the same place: the moment it was tested properly. The stock momentum flickers, the risk-parity Sharpe, the one game the forecaster won, the favorite-longshot bias that looked real at 37 fixtures and vanished at 3,000. That is not bad luck repeated a dozen times. It is a single fact wearing a dozen costumes: liquid markets are priced well enough that a public-data strategy cannot reliably beat them after costs.
The honest positive version: the two things that are real here are the discipline and the tools. Beating a market takes private data, a speed advantage, or a genuine mispricing — not a textbook and a laptop. Knowing exactly which games have no edge, and walking away, is the whole skill. The strategies above are where you walk away.