Abstract. A factor risk model splits a stock’s return into common drivers plus a residual, and the residual is the only part that counts as genuine stock selection. I built the same class of model a vendor sells, from public daily price data, down to the factor covariance matrix and the portfolio risk decomposition. Two of sixteen factors clear a naive Newey-West t-stat of 2; none clears a bar deflated for having run sixteen tests.
1. What this is not
MSCI Barra and Qontigo/Axioma do not publish their factor definitions or estimation weights, and I have not reproduced them. This is the same class of model, smaller and cruder on purpose, with every mechanic inspectable.
2. Method
Each stock gets a score on five style factors, z-scored across the cross section each date using only data available then, plus one industry dummy for its sector.
| Component | Definition |
|---|---|
| Exposures | Z-scored, that is rescaled to mean zero and unit spread, point-in-time |
| Size | Log price level, a scale proxy; the panel has no field for shares outstanding, a declared limitation |
| Beta | Rolling beta to SPY, an S&P 500 exchange-traded fund, over 252 days; how much the stock moves with the market |
| Momentum | 12-1 month, the return over the past 12 months excluding the most recent 1 month |
| Value (proxy) | Mean reversion over 252 days, not a true book-to-price ratio, book value divided by price |
| Volatility | Realised over 60 days |
| Industry | One 0/1 indicator per name, from a sector map built by correlation to sector ETFs |
| Estimation | Cross-sectional regression, at each date, of the next day’s returns on that day’s exposures, weighted by the square root of the price-level scale proxy and stabilised by ridge, a penalty that damps unstable coefficients |
| Specific risk | The part of a stock’s risk the shared factors do not explain, approximated from residual variance after removing the average factor effect |
| Portfolio risk | σp² = xp′Fxp + w′Δw, factor variance plus specific variance, the equation every risk desk actually runs |
| Sample | 436 US names (stocks), 2020 to 2026, 331 sampled dates |
The coefficients are the factor returns for that day, so each series comes from every name’s exposure rather than a long-short quintile spread. The vendor step weights by the square root of true market cap; lacking that field, this model uses a price-level proxy.
3. What came out
| Factor | Ann. return | Ann. vol | NW t-stat |
|---|---|---|---|
| Size | 0.94% | 0.95% | 2.64 |
| Energy (industry) | 9.60% | 12.53% | 2.25 |
| Utilities (industry) | 7.74% | 12.28% | 1.62 |
| Consumer Staples (industry) | 5.83% | 9.80% | 1.55 |
| Financials (industry) | 6.22% | 10.69% | 1.66 |
| Beta | 1.84% | 3.98% | 1.14 |
| Momentum | -1.48% | 6.53% | -0.65 |
| Value (proxy) | -0.30% | 7.59% | -0.11 |
| Volatility | 0.24% | 2.37% | 0.26 |
| Bar | Threshold | What clears |
|---|---|---|
| Naive Newey-West t | 2 | Size 2.64, Energy 2.25 |
| This pipeline’s hurdle of t = 2.5, deflated for a family of sixteen | 3.36 | None |
| Bonferroni, 5% two-sided | 2.96 | None |
| Holm and Benjamini-Hochberg, 5% | First-step allowance p = 0.0031 | None; both stop at Size, two-sided p = 0.0083 |
Sixteen factors were tested as one family, and each added test is another chance to get lucky, so the evidence demanded of each rises with the count (Harvey, Liu and Zhu, 2016). The naive count of two stands as a naive count. Under every correction, zero of the sixteen clears. Size is the closest miss; everything else sits inside noise, Momentum, Value and Beta included. A model is only useful if it tells you that as readily as the opposite, starting with its own factors.
4. Decomposition
On an equally weighted book (portfolio) of 100 names as of 29 July 2026, factor risk is 98.3% of total portfolio variance. Nearly 98% of what the manager carries is not stock selection. The stock-specific bet is diversified away, leaving near-pure exposure to Financials, Health Care, Beta and Technology. Once a book is diversified, profit and loss (P&L) comes from factor exposure he may not have chosen on purpose. That is the conversation this model exists to have.
| Component | Limitation |
|---|---|
| Specific risk | A shortcut, not a regression residual taken name by name |
| Covariance matrix | A simple sample estimator, with no exponential weighting and no eigenfactor adjustment for bias in small eigenvalues, both of which a vendor model applies and which I would want before trusting this at real capital |
| Value factor | A proxy built from returns, not fundamental book-to-price |
| Universe | Survivorship biased; it contains only names that survived to the end of the sample |