Point-in-time equity factor research

A cross-sectional US equity signal on reconstructed point-in-time index membership and SEC XBRL fundamentals keyed on filing date. Out-of-sample 2014-01-31 → 2026-07-31 (12.5 years), monthly rebalance, 1bp commission and 5bp slippage.

generated from run 20260820_175632

Signal — 150 independent out-of-sample months

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.

Where the edge comes from

A decile spread with a t-statistic above 2 looks like a strategy. Regressing that spread on the market is what 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%. Once it is removed, what remains is not statistically separable from zero.

Across six model seeds with identical economics, IC holds at 0.0164 ± 0.0008 while Sharpe ranges from 0.09 to 0.49. The signal is stable; the Sharpe is a draw from a distribution, and every performance figure above should be read against that 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.

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