Backtest study
We backtested our own scoring method. Here's what didn't work.
We ran our scoring method through a survivorship-corrected backtest and published the result in full, including the parts that found nothing.
After correcting for overlapping windows with Newey–West standard errors, no single factor clears the usual significance bar (|t| ≥ 2) at any horizon. Our composite score's 12-month rank information coefficient is -0.027 (t = -1.00, 16 quarters): a small negative point estimate, and no edge we can detect.
01 · The test
What we tested
We ran our own scoring method through a backtest and are publishing the result, the data, and the method, including the part that found nothing.
The universe is a sample of the S&P 500: 170 current members on the survivors panel, and 188 names once a delisted supplement is added. Two tickers (IPG, HES) were dropped in de-duplication. We form portfolios at 20 quarterly dates and measure forward excess return against SPY at six and twelve months.
The method under test is our sector-relative composite score (four axes weighted 30/30/20/20) plus 24 individual factor signals: the F-Score, ROIC, margins, leverage and liquidity, growth, momentum, earnings yield, and earnings-surprise and PEAD measures. Six insider Form-4 signals had no usable history over the window and are marked as missing. The forward outlook axis is neutralized here: it would need analyst consensus for a past quarter, which we do not store.
02 · Method
How we measured it
For each factor we rank every ticker in the cross-section and take the Spearman rank correlation with forward excess return, the rank information coefficient (IC). A positive IC means higher-ranked names did better; zero means the ranking carried no information.
Overlapping forward windows make the quarterly IC estimates autocorrelated, which flatters a naive t-statistic. We correct for it with Newey–West standard errors (Bartlett kernel, lag = ceil(months / 3) − 1) and de-duplicate overlapping observations. The composite score and its axes are set out in full on the methodology page.
03 · Results
Results
The tables below give the rank IC, its Newey–West t-statistic, and the quarter count for each factor, at six and twelve months. The all-names panel comes first; the survivors-only panel is folded below it. The composite and F-Score rows are set apart.
| Factor | Mean IC | t (NW) | Quarters |
|---|---|---|---|
| Composite score | -0.002 | -0.06 | 18 |
| F-Score | 0.011 | 0.32 | 18 |
| ROIC | 0.008 | 0.17 | 18 |
| Operating margin | -0.010 | -0.37 | 18 |
| FCF margin | -0.013 | -0.43 | 18 |
| Gross margin | -0.023 | -0.72 | 18 |
| Net margin | -0.050 | -1.61 | 18 |
| Debt / EBITDA | 0.004 | 0.09 | 18 |
| Net debt / EBITDA | -0.010 | -0.18 | 18 |
| Current ratio | 0.064 | 0.95 | 18 |
| Revenue growth (YoY) | 0.032 | 0.79 | 18 |
| EPS growth (YoY) | -0.016 | -0.33 | 18 |
| Momentum (12−1) | 0.035 | 0.79 | 18 |
| Earnings yield | 0.020 | 0.65 | 18 |
| FCF yield | 0.029 | 0.79 | 18 |
| Earnings surprise (SUE, 8q) | 0.003 | 0.11 | 18 |
| SUE drift | 0.012 | 0.65 | 18 |
| PEAD (CAR ±3d) | 0.003 | 0.12 | 18 |
| PEAD (CAR ±1d) | -0.002 | -0.08 | 18 |
| Factor | Mean IC | t (NW) | Quarters |
|---|---|---|---|
| Composite score | -0.027 | -1.00 | 16 |
| F-Score | -0.021 | -0.51 | 16 |
| ROIC | 0.041 | 0.56 | 16 |
| Operating margin | -0.001 | -0.03 | 16 |
| FCF margin | -0.009 | -0.19 | 16 |
| Gross margin | -0.025 | -0.87 | 16 |
| Net margin | -0.054 | -1.40 | 16 |
| Debt / EBITDA | -0.018 | -0.27 | 16 |
| Net debt / EBITDA | -0.041 | -0.62 | 16 |
| Current ratio | 0.095 | 1.13 | 16 |
| Revenue growth (YoY) | 0.045 | 0.87 | 16 |
| EPS growth (YoY) | -0.029 | -0.56 | 16 |
| Momentum (12−1) | -0.012 | -0.27 | 16 |
| Earnings yield | 0.016 | 0.51 | 16 |
| FCF yield | 0.009 | 0.20 | 16 |
| Earnings surprise (SUE, 8q) | -0.003 | -0.09 | 16 |
| SUE drift | 0.023 | 0.68 | 16 |
| PEAD (CAR ±3d) | -0.019 | -0.72 | 16 |
| PEAD (CAR ±1d) | -0.028 | -1.01 | 16 |
Six insider Form-4 factors are left out of the tables: they had no usable history over the window.
Survivors-only panel (170 current members)
| Factor | Mean IC | t (NW) | Quarters |
|---|---|---|---|
| Composite score | -0.005 | -0.20 | 18 |
| F-Score | 0.003 | 0.10 | 18 |
| ROIC | -0.002 | -0.05 | 18 |
| Operating margin | -0.029 | -1.05 | 18 |
| FCF margin | -0.027 | -0.76 | 18 |
| Gross margin | -0.043 | -1.23 | 18 |
| Net margin | -0.055 | -1.73 | 18 |
| Debt / EBITDA | 0.004 | 0.09 | 18 |
| Net debt / EBITDA | -0.021 | -0.36 | 18 |
| Current ratio | 0.059 | 0.80 | 18 |
| Revenue growth (YoY) | 0.032 | 0.83 | 18 |
| EPS growth (YoY) | -0.014 | -0.28 | 18 |
| Momentum (12−1) | 0.020 | 0.37 | 18 |
| Earnings yield | 0.022 | 0.66 | 18 |
| FCF yield | 0.023 | 0.67 | 18 |
| Earnings surprise (SUE, 8q) | -0.005 | -0.16 | 18 |
| SUE drift | 0.006 | 0.24 | 18 |
| PEAD (CAR ±3d) | -0.002 | -0.09 | 18 |
| PEAD (CAR ±1d) | -0.008 | -0.36 | 18 |
| Factor | Mean IC | t (NW) | Quarters |
|---|---|---|---|
| Composite score | -0.029 | -1.06 | 16 |
| F-Score | -0.026 | -0.63 | 16 |
| ROIC | 0.026 | 0.38 | 16 |
| Operating margin | -0.029 | -1.00 | 16 |
| FCF margin | -0.027 | -0.57 | 16 |
| Gross margin | -0.048 | -1.32 | 16 |
| Net margin | -0.063 | -1.53 | 16 |
| Debt / EBITDA | -0.017 | -0.25 | 16 |
| Net debt / EBITDA | -0.054 | -0.81 | 16 |
| Current ratio | 0.093 | 1.02 | 16 |
| Revenue growth (YoY) | 0.052 | 1.00 | 16 |
| EPS growth (YoY) | -0.022 | -0.42 | 16 |
| Momentum (12−1) | -0.032 | -0.58 | 16 |
| Earnings yield | 0.017 | 0.52 | 16 |
| FCF yield | 0.001 | 0.03 | 16 |
| Earnings surprise (SUE, 8q) | -0.011 | -0.26 | 16 |
| SUE drift | 0.016 | 0.35 | 16 |
| PEAD (CAR ±3d) | -0.022 | -0.85 | 16 |
| PEAD (CAR ±1d) | -0.029 | -1.07 | 16 |
04 · Limits
What this does not mean
A null result is easy to over-read in either direction. A few things this study does not establish.
Partial survivorship correction
The all-names panel adds a delisted supplement, but the EDGAR filing wall means not every delisted name can be recovered. Some survivorship bias remains, so treat the correction as partial.
One sample, one short period
This is a single S&P 500 sample over 20 quarterly dates, and the twelve-month horizon rests on fewer of them still. That is a short record and one regime; the confidence intervals are correspondingly wide.
IC is not a portfolio return
A rank IC measures ranking information, not the return of a tradable strategy. It ignores turnover, capacity, and the transaction costs a real portfolio pays (we assume 20 basis points a side).
Not a refutation of the F-Score literature
Piotroski's 2000 F-Score, and later replications, generally find an effect, often concentrated in small, cheap, or distressed names. This test is our own composite, out of that period and on a large-cap sample: a different instrument, and no overturning of that work. And the composite is not the F-Score; the F-Score is one of its inputs.
05 · Consequence
What it means for this site
This is why the site's verdict is written as a classification, not a forecast. The composite sorts a company against its sector by a fixed rule; the backtest is the reason we attach no return promise to that sort.
We will claim predictive power only once a backtest shows a durable, out-of-period edge. So far it has not.
Rule-based classification of fundamentals against the sector. Not a price forecast and not investment advice.
06 · Data
Data and reproducibility
Both files below are the full run: every factor, horizon, and panel, including the empty insider rows. The JSON is the raw harness artifact; the CSV is the flat factor-IC table.
Derived from SEC EDGAR filings (public domain) and our own computed statistics; released to the public domain under CC0.
2026-07-10