ConvexPi

Open Replication Library

Which strategies survive out of sample?

Each strategy below is recomputed from its building blocks— reconstructing the Fama-French factors from their component portfolios, forming long-short books by ranking assets — never read off a finished factor. Then it is scored honestly out of sample by splitting at the paper's publication year (the McLean & Pontiff test). The library is open source: every result is reproduced by CI, runnable in Colab, and open to your contributions.

14of 18 cross-checked against OSAP
median agreement 0.50
2 clear9 partial3 weak

Each cross-sectional replication is independently checked against the Open Source Asset Pricing single-name long-short returns (Chen & Zimmermann). We report the magnitude of agreement: a different construction of the same anomaly, so 0.4–0.8 is a genuine match. This runs automatically alongside the leaderboard.

StrategyPub.ISOOSDecayVerdictvs OSAPRun
Idiosyncratic volatility puzzle
Univariate residual-variance sort (value-weighted quintiles). The puzzle is stronger with equal weighting and among small, illiquid names; this is the value-weighted spread, gross of transaction costs.
20060.16+0.0191%dormantclear 0.93Colab·code
Asset-class momentum
Cross-sectional 12-1 momentum across a fixed ETF basket (histories begin mid-2000s, so the sample is short), a practical proxy for the paper's broad cross-asset universe; gross of transaction costs.
20130.28+0.55improvedaliveColab·code
MAX effect (lottery stocks)
Uses a fixed basket of surviving Yahoo Finance large caps (history since ~2000), not the paper's full CRSP universe, so it is survivorship-biased and understates the effect, which is strongest in small, illiquid names. A faithful-but-limited proxy; gross of transaction costs.
2011-0.11-0.29dormantColab·code
Earnings yield (P/E effect)
Univariate earnings-yield sort (value-weighted quintiles); firms with negative earnings are excluded from the sort. Overlaps with the book-to-market value factor; gross of transaction costs.
19770.74+0.2567%dormantpartial 0.68Colab·code
Investment (CMA)
20080.71+0.0395%dormantweak 0.38Colab·code
Long-term reversal
19850.20+0.0766%dormantpartial 0.67Colab·code
Value (HML)
19930.49+0.2158%decayedpartial 0.55Colab·code
Size (SMB)
19810.20-0.01108%dormantpartial 0.63Colab·code
Betting against beta
Beta-rescaling uses a simple rolling 60-month market beta of each leg, not the paper's exact (1-year vol x 5-year correlation) estimator, and rescales the two quintile legs rather than every security. Gross of the (high) financing and turnover costs that leverage entails.
20140.28+0.0487%dormantpartial 0.41Colab·code
Pairs trading (distance)
Distance method on a fixed large-cap Yahoo basket (history since ~2000), not the paper's full CRSP universe, so it is survivorship-biased and understates an effect that lives in smaller names; equal-weight long/short per pair, gross of the high transaction costs pairs trading incurs.
2006-0.05+0.06dormantColab·code
Short-term reversal
Extremely high turnover and heavily driven by microstructure (bid-ask bounce). The gross Sharpe shown is not achievable net of realistic transaction costs.
19905.12+1.2975%decayedpartial 0.44Colab·code
Momentum (WML)
19930.63+0.3840%aliveclear 0.74Colab·code
Cash-flow yield (value)
Univariate cash-flow-to-price sort (value-weighted quintiles); firms with negative cash flow are excluded. Highly correlated with book-to-market and earnings-yield value; gross of transaction costs.
19940.58-0.06110%dormantweak 0.34Colab·code
Industry momentum
19990.47+0.3135%alivepartial 0.45Colab·code
Trend (time-series momentum)
Uses Yahoo Finance continuous front-month futures, which begin ~2000 (vs the paper's 1985) and carry roll artifacts — a faithful but data-limited proxy for the paper's 58-instrument universe.
20120.34+0.42improvedaliveColab·code
Profitability (RMW)
20130.58+0.2459%decayedpartial 0.46Colab·code
Net share issuance
Univariate net-issuance sort (value-weighted quintiles). The effect is stronger with equal weighting and among small caps; gross of transaction costs.
20080.45+0.0394%decayedpartial 0.53Colab·code
Accruals anomaly
Univariate accruals sort (value-weighted quintiles), available from 1963. The anomaly is concentrated in small, hard-to-arbitrage names and has weakened since publication; gross of transaction costs.
19960.63+0.2363%decayedweak 0.30Colab·code

IS / OOS are annualized Sharpe ratios in-sample (pre-publication) and out-of-sample (post-publication);vs OSAP is the magnitude of correlation between our (Ken-French-built) factor and the Open Source Asset Pricing single-name long-short returns — a different construction of the same anomaly, so 0.4–0.8 is a genuine match (an external check on top of CI). A few predictors (e.g. beta) are signed by OSAP in the opposite direction, so we show |correlation|. Decay is the fraction of in-sample Sharpe lost after publication. Verdicts fall out of the numbers, not editorial judgement.

Add your own replication

Recompute a strategy from building blocks, score it out of sample, and open a pull request. CI checks the contract and that your result reproduces; a maintainer merges it. Multiple takes on the same paper are welcome — the disagreement is the lesson.