Factor Zoo and Beyond: Which Factors Actually Survive Transaction Costs
Beyond Fama-French: of ~200 published factors, maybe twenty or thirty survive costs, crowding, and regime change. Which ones, and why they exist.
There are at least 200 academic factors published since 1980. Most don’t survive transaction costs. Maybe twenty or thirty do.
Fama-French gave us the three-factor model in 1993 and a lot of people stopped reading there. They shouldn’t have. The factor zoo kept growing, and a meaningful chunk of it does contain signal — gross of costs. Those three words are the spine of this article: for a factor to deserve your money it has to clear three gates. It has to (a) still pay after you subtract 30–50 bps per round trip, (b) not crash when everyone piles in at once, and (c) hold up across regimes rather than only through the 1990s. Every factor below gets measured against those three.
Four Equity Factors After Fama-French
Start with equities. These four hold up best beyond the three-factor model, and two of them were eventually absorbed into Fama-French’s own five-factor model.
Quality
High return on equity, low debt, stable earnings, high profit margins. You buy the profitable, well-managed companies and short the junk.
Sharpe in academic papers runs roughly 0.4–0.6; realized post-publication is more like 0.3–0.5 depending on the variant. Quality is among the most robust factors in the literature — Novy-Marx (2013) showed it works back to 1963 and through every major regime. Robert Novy-Marx, The Other Side of Value, Journal of Financial Economics, 2013, ISSN 0304-405X.
Its mechanism makes sense, which matters, because a factor with no articulable mechanism usually fails the third gate too. Profitable companies are scarce. Investors overpay for growth stories and underpay for boring cash generation, and the mispricing closes slowly because most active managers are explicitly forbidden from buying “boring” stocks — they need narrative for their clients. In other words, what sustains this premium is an institutional constraint, and institutions don’t change because someone published a paper.
Low Volatility / Betting Against Beta (BAB)
Low-vol stocks beat high-vol stocks on a risk-adjusted basis. Risk-adjusted is the operative phrase — in absolute terms they underperform in bull markets. In Sharpe terms, you’re paid more per unit of risk.
AQR made this their flagship. Frazzini, Kabiller, and Pedersen, Betting Against Beta, Journal of Financial Economics, 2014. Sharpe historically around 0.5–0.7. The leverage-constrained BAB version does a bit better than naive low-vol because it explicitly scales positions to equalize risk.
The intuition runs on the same rails as quality: most investors are leverage-constrained, so they overpay for high-beta stocks (which give them “free” leverage) and underpay for low-beta ones. The arbitrage is to buy low-beta and lever up. Simple to state — and “lever up” is the whole game, because it means you need cheap financing, which is exactly where the first gate eliminates most people.
Profitability (RMW)
High gross profit divided by assets. Strong since 1963. Fama and French added it as their fifth factor in 2015 specifically because the original three-factor model couldn’t explain profitability-driven returns. Eugene Fama and Kenneth French, A Five-Factor Asset Pricing Model, Journal of Financial Economics, 2015, ISSN 0304-405X.
The implementation: rank stocks by gross profitability (revenue minus cost of goods sold, divided by assets), long the top quintile, short the bottom. The premium runs 3–5% annually gross in US data. Turnover is low, since fundamentals move slowly, which makes the first gate comparatively easy for it.
Investment (CMA)
Low investment over assets. Companies that grow their asset base slowly tend to outperform asset-growth monsters. Fama-French’s other 2015 addition.
The story: managers overinvest when they have cash, building new factories, acquiring competitors, doing leveraged buyouts, and destroying value along the way, while conservative-growth firms compound book value quietly.
What makes this one interesting is that it correlates with quality (good companies don’t overinvest) without being the same trade. That distinction matters in a portfolio: put two highly correlated factors together and you think you’ve diversified when you’ve really placed the same bet twice.
Three Cross-Asset Premia
The four above are equity factors. Three more live outside equities but leave traces everywhere, usually filed under “alternative risk premia”.
Term premium. Long-term bonds beat short-term bonds over long horizons, roughly 1–2% annualized historically in US data. The mechanism is plain enough to barely look like a factor: investors demand extra yield to lock up money for longer, and they get it.
Credit premium. High-yield bonds beat investment-grade, about 2–4% annualized historically. Default risk is higher, but the spread more than compensates on average — and “on average” carries all of the risk, because the compensation’s distribution is left-skewed.
Currency carry. Borrow low-yielding currencies (JPY, CHF), buy high-yielding ones (BRL, MXN, AUD), earn the differential. Sharpe around 0.4–0.6, and it blows up every five to ten years when central banks pivot: 1998 (LTCM), 2008, 2014, 2022. The left tail is painful, and it usually arrives while your other positions are also losing — which is why it scores worst of all of these on the second gate.
What the Fama-French Five-Factor Model Is For
The current standard academic model is:
The five are market excess return (MKT), small minus big (SMB), high minus low book-to-market (HML), robust minus weak profitability (RMW), and conservative minus aggressive investment (CMA).
The model has exactly one practical use for you, and it’s an important one: regress your strategy’s returns against all five and see whether alpha survives. If it does, you might have something. If it doesn’t, you’re holding either leveraged beta or a factor bet in a costume — you thought you found alpha and you reimplemented HML. The test is cheap to run and blocks a surprising amount of self-deception.
AQR’s Four-Factor Style Premia
On the cross-asset side, AQR’s published research (Asness, Moskowitz, Pedersen, Value and Momentum Everywhere, Journal of Finance, 2013, ISSN 0022-1082) distills all of the above into four buckets: value (cheap vs expensive — equity book-to-market, rate levels, credit spreads, FX PPP deviation), momentum (winners vs losers, 12-month return skipping the most recent month), carry (high-yielding vs low-yielding instruments), and defensive (low-volatility, high-quality, low-beta).
These four hold globally across equities, fixed income, currencies, and commodities, and each does something different. Their mutual correlations are low, which is the entire point: blended, they produce a much smoother return stream than any single factor. Note that this framework doesn’t compete with the four equity factors above — quality and low-vol land inside “defensive”, and profitability and investment are two specific measures of quality. It’s a coarser layer, meant for cross-asset allocation rather than stock selection.
Actually Running a Factor on the Platform
The built-in price/volume factors (momentum_20, momentum_60, reversal_5, volatility_20) evaluate in one call:
from apexquant.notebook import evaluate_factor
report = evaluate_factor(bars, "momentum_60", quantiles=5, periods=(1, 5, 21))
report["ic_summary"]
PROMPT
Use Arithmion’s notebook.evaluate_factor to score the built-in 60-day momentum factor across 5 quantiles at 1/5/21-bar forward horizons.
But quality, profitability, and investment are fundamentals-driven, and the platform has no built-in version of them — you compute the score yourself and then put it into the canonical shape. That shape is a factor panel: a two-level MultiIndex (timestamp, tz-aware UTC, and symbol), one column per factor, numeric values, and no duplicate (timestamp, symbol) pairs. In apexquant.core.panel, validate_panel enforces it and panel_to_factor_series converts one column into the stacked Series evaluate_factor wants:
from apexquant.core.panel import panel_to_factor_series, validate_panel
from apexquant.bundled.analytics.factor_eval import evaluate_factor
validate_panel(quality_panel)
factor = panel_to_factor_series(quality_panel, "quality")
report = evaluate_factor(prices, factor, quantiles=5, periods=(21,), cost_bps=10.0)
PROMPT
Shape a self-computed quality score into an Arithmion factor panel, validate it, convert to a stacked series, and evaluate at 5 quantiles with monthly forward returns and 10bp one-way costs.
That cost_bps argument deserves a pause, because it speaks directly to this article’s first gate. The function defaults to cost_bps=0.0, an explicit gross-of-cost baseline; at that setting the quantile curves rebalance every bar for free, and the resulting number is not a tradeable return. So the right way to judge whether a factor survives costs is to run both and read them together: the zero-cost version tells you whether there is signal at all, and the realistic-cost version tells you whether there’s enough of it. A factor showing Sharpe 0.9 at 0 bp and 0.2 at 10 bp is not a 0.9 factor.
Turning it into a long-short book to backtest takes a different route: subclass PortfolioStrategy (apexquant.core.portfolio_strategy), return {ticker: target weight} against current equity from on_rebalance(view), and run run_backtest. Quantile ranking, target weights, and T+1 fill matching each belong to their own layer. Don’t hand-roll them inside on_bar.
What Multi-Factor Diversification Actually Does
Single-factor Sharpe runs roughly 0.3–0.7 depending on the factor and the period. A four-factor blend (value + momentum + quality + low-vol), equal-weight or risk-parity, is commonly reported in the 1.0–1.5 range in both literature and practitioner writeups — though that number depends heavily on the sample period and the cost assumptions, so whenever you see it, ask which decade and whether costs were subtracted.
Nothing mysterious sits behind it. It’s math. When factors have low correlation to each other, blending them reduces variance faster than it reduces expected return, so the blend’s Sharpe exceeds any single component’s. Which is also why the earlier point about quality and investment being correlated-but-not-identical mattered: the entire diversification benefit comes from the correlations, and if your four factors are really two, the improvement isn’t there.
But They Crash Together
Here’s the part left out of most abstracts. When 50 quant funds pile into the same factor, the premium shrinks; when they all rush the exit at once, you get a factor crash. Momentum fell roughly 50% over twelve months in 2009. In 2020 growth crushed value in a way that hadn’t happened in decades.
The crucial detail is that the low-correlation assumption from the previous section fails exactly during those episodes — correlations spike under stress, and your carefully assembled four-factor blend behaves like a single factor at the precise moment you needed it to diversify. So treat diversification as a tool that works in normal times and gets marked down in extreme ones. It isn’t insurance.
Quality and low-vol are less crowded than momentum and value, for very concrete reasons: they’re harder to implement at scale, needing reliable fundamentals data, longer holding periods, and lower turnover. The barrier keeps people out and the premium stays. That’s the general rule behind the second gate — anything easy to do gets done to saturation.
So if you’re running a long-short equity book, don’t load up on one factor. Blend four or five, and use risk-parity weighting so you don’t drift into being 60% momentum and 40% everything else. How to keep measuring crowding over time is a separate article’s job.
Closing
If I were building a factor book today, it would go roughly like this: pick four to six factors with low mutual correlation (value, momentum, quality, low-vol, size), establish each one’s IC and Sharpe both gross and net of costs before combining anything, weight by risk contribution, target 10–12% annualized vol, rebalance monthly, and keep crowding signals running the whole time.
The last item is expectation management, and I think it’s the most important one: any single factor will have two or three bad years per decade. That isn’t an accident, it’s the factor’s normal shape. If your holding plan can’t survive two consecutive years of underperformance, you aren’t doing factor investing — you’re doing timing, which is a much harder problem.
The premium is real. It’s smaller than the 1990s academic papers suggest, and it decays, but it hasn’t decayed to zero.
References
- Fama, E. & French, K. (2015). A Five-Factor Asset Pricing Model. Journal of Financial Economics. ISSN 0304-405X.
- Novy-Marx, R. (2013). The Other Side of Value. Journal of Financial Economics. ISSN 0304-405X.
- Frazzini, A., Kabiller, D., & Pedersen, L. (2014). Betting Against Beta. Journal of Financial Economics.
- Asness, C., Moskowitz, T., & Pedersen, L. (2013). Value and Momentum Everywhere. Journal of Finance. ISSN 0022-1082.
- AQR Capital Management. Style Premia: An Alternative Approach to Alternative Investments. Research paper, 2017.