Bias fingerprints

A method for auditing factor research from the outside: measure what a data-handling defect does to a factor cross-section on a pipeline you own, then test for that shape in tables you cannot audit. Calibrated on a point-in-time US equity study, out-of-sample 2014-01-31 → 2026-07-31 (12.5 years).

generated from run 20260820_175632

The framework

A factor table is usually all an outside reader gets. An allocator reads a manager's IC table, a referee reads a submitted backtest, a desk prices a vendor signal. None of them can run the pipeline behind the numbers, and the literature on look-ahead and survivorship bias is written for someone who can.

A defect is not a scalar amount of inflation. It is a direction in factor space, and the direction is a property of the defect rather than of the study it damages. The framework is a generator that re-runs one study under alternative data conventions, a signature per defect, an inference model that separates signature from unknown true performance, and a validation protocol of four gates that must pass before the diagnostic reports anything.

Read the paper · method · measurements

Two signatures, calibrated

Shift in t-statistic from the point-in-time baseline, for the eight factors that move most under either defect. Both columns come from the same generator, changing one data convention at a time.

period-end joincurrent membership
amihud_illiquidity0.00+3.91
turnover_1m-0.10-2.05
idio_vol_60d0.00-2.02
operating_margin+0.35-1.88
accruals+1.77+0.02
vol_60d0.00-1.41
earnings_yield+0.98-1.28
roe+1.07-1.24
-0.088
Signature correlation
across 22 factors
11
Factors dating cannot move
exactly zero, not approximately
+59%
Mean IC inflation
period-end join, 11 fundamentals
4
False discoveries
manufactured above t = 2

The two signatures point in near-independent directions and disagree in sign on value factors, so a table cannot be explained by both. The exact zeros carry more weight than the correlation: a factor built from price and volume never reads a filed figure, so a strong illiquidity result cannot have come from a dating defect whatever else is true of the study.

Conditioning a universe on current index membership behaves in the opposite way. Mean IC falls rather than rises, while amihud_illiquidity flips from t = -1.11 to +2.80 and the low-volatility anomaly inverts. The channel is a forward-looking growth filter, not a survival filter: the biased panel wrongly includes 203 names a day that had not yet been admitted, against 88 it wrongly excludes.

Status. The framework is specified and both signatures are measured and reproducible. The three validation gates — signature stability, sampling covariance, separability under realistic noise — have not been run, and the diagnostic reports nothing until they have. A label without a calibrated reference distribution is worse than no diagnostic.

The reference study — signal

The generator the signatures are calibrated on. A 22-factor cross-section on reconstructed point-in-time index membership and SEC XBRL fundamentals keyed on filing date, over 12.5 out-of-sample years.

0.0165
Mean IC
0.164
IC info ratio
2.00
t-statistic
150 months
68 bp/mo
Decile spread
t = 3.08
24.38%
Selection turnover
67
Avg names

Factors by information coefficient

mean ICICIRt
cash_flow_yield0.01690.13881.6970
sales_to_price0.01740.13721.6780
earnings_yield0.01400.12741.5580
accruals0.00680.10021.2260
roe0.00870.09981.2210
mom_1m_reversal0.01090.07440.9100
net_share_issuance0.00450.05300.6480
book_to_market0.00670.05000.6110
idio_vol_60d0.00590.04030.4920
mom_residual_12_10.00420.02320.2830
gross_profitability0.00150.01350.1650
operating_margin0.00110.01100.1350

Equity curve, net of costs

1.001.26

Portfolio, net of costs

1.85%
CAGR
0.29
Sharpe
0.09–0.49 across seeds
-18.88%
Max drawdown
7.36%
Annualised vol
0.011
Beta vs SPY
96.38%
Day coverage
0 rebalances skipped

Cost sensitivity — Sharpe at 5bp slippage 0.30, at 10bp 0.24, at 20bp 0.12.

Two results that outlive the study

A decile spread with a t-statistic above 2 looks like a strategy. Regressing that spread on the market decides whether it is one.

43.7bp
Raw spread / mo
t = 2.11
0.218
Beta of the spread
17.7bp
Beta-adj alpha / mo
t = 0.92
59%
Of edge from beta

The long decile runs a beta of 1.10 against the short decile's 0.99, a tilt positive in 73% of months over a window in which the market compounded at 13.7%. A decile-spread t-statistic reported without its beta decomposition is not a claim about stock selection, here or anywhere.

The second result is dispersion. Across six model seeds with identical economics, IC holds at 0.0164 ± 0.0008 while Sharpe ranges from 0.09 to 0.49. A single backtest Sharpe from a stochastically fitted model is a draw from that distribution, and every performance figure above should be read against its spread.

Universe coverage

Point-in-time index membership against names that could actually be priced and traded. The gap is the residual survivorship limitation: delisted tickers are frequently unavailable from the price source, and it bounds the second signature as well as the study.

index memberspricedtradablewith fundamentals
2004351.0488.01.00000.0000
2005352.0500.0259.00.0000
2006357.0513.0272.00.0000
2007360.0527.0286.00.0000
2008368.0542.0293.00.0000
2009372.0546.0292.0106.0
2010375.0567.0315.0349.0
2011378.0580.0326.0487.0
2012383.0594.0338.0519.0
2013388.0605.0352.0530.0
2014391.0615.0361.0542.0
2015400.0625.0372.0553.0
2016414.0635.0391.0562.0
2017423.0640.0409.0572.0
2018429.0636.0419.0581.0
2019435.0636.0425.0592.0
2020448.0643.0440.0602.0
2021458.0655.0454.0614.0
2022468.0655.0465.0620.0
2023479.0659.0476.0624.0
2024486.0664.0483.0633.0
2025493.0662.0481.0639.0
2026500.0672.0489.0644.0