Methodology
We evaluate each factor parameter configuration using the Gibbons et al. (1989) test (GRS), which tests whether all intercepts (alphas) from time-series regressions of test portfolio returns on the factor model are jointly zero.
\[F_{\text{GRS}} = \frac{T - N - K}{N} \cdot \frac{\hat{\alpha}' \hat{\Sigma}^{-1} \hat{\alpha}}{1 + \hat{\mu}_f' \hat{\Sigma}_f^{-1} \hat{\mu}_f} \sim F(N, T - N - K)\]
A higher GRS p-value indicates the factor model better prices the cross-section (we fail to reject \(H_0\): all \(\alpha_i = 0\)).
Test Assets
Following Liu, Tsyvinski & Wu (2022, Tables III–VI), we form quintile (5-way) value-weighted portfolios sorted on 8 characteristics, yielding 40 test assets:
| Market capitalisation |
MCAP |
III |
Prior-week market cap |
| Price level |
PRC |
III |
Prior-week closing price |
| Dollar volume |
PRCVOL |
V |
Prior-week mean daily volume |
| 1-week return |
\(r_{1,0}\) |
IV |
Return over prior 1 week |
| 2-week return |
\(r_{2,0}\) |
IV |
Return over prior 2 weeks |
| 3-week return |
\(r_{3,0}\) |
IV |
Return over prior 3 weeks (baseline) |
| 4-week return |
\(r_{4,0}\) |
IV |
Return over prior 4 weeks |
| Skip-week return |
\(r_{4,1}\) |
IV |
Return over 3 weeks, skipping most recent |
All sort variables are lagged by one week relative to the portfolio return period to avoid look-ahead bias. Test portfolios are always value-weighted quintile sorts regardless of the factor model’s weighting scheme.
Factor Configurations Tested
Each factor model is characterised by 6 parameters. We test all 288 combinations:
| Exclusions |
All (stables + wrapped + derivs), Stablecoins only, None |
| Calendar |
Sharp year (Liu et al., 2022), Monday–Monday |
| Weighting |
Equal-weighted, Value-weighted |
| Size breakpoints |
Median (2), Tercile (3), Quintile (5), Decile (10) |
| Momentum lookback |
2, 3, 4 weeks |
| Delisting returns |
Off, On (-100%) |
The test portfolios (LHS) share the same exclusion, calendar, and delisting settings as the factor model (RHS) to ensure a consistent universe.
Results
Results are generated by scripts/test_factor_pricing_liu.R and will be updated after each pipeline run. The table below shows the most recent results.
Top 20 Configurations
| 1 |
none |
mon |
On |
VW |
5 |
4 |
1.72 |
0.0045 |
0.00782 |
0.607 |
| 2 |
nostable |
mon |
On |
VW |
5 |
4 |
1.80 |
0.0021 |
0.00782 |
0.612 |
| 3 |
none |
mon |
On |
VW |
5 |
3 |
1.83 |
0.0016 |
0.00781 |
0.611 |
| 4 |
none |
mon |
On |
VW |
2 |
4 |
1.84 |
0.0015 |
0.00712 |
0.664 |
| 5 |
none |
mon |
On |
VW |
3 |
3 |
1.85 |
0.0015 |
0.00727 |
0.644 |
| 6 |
nostable |
mon |
Off |
VW |
10 |
4 |
1.86 |
0.0014 |
0.00711 |
0.531 |
| 7 |
none |
mon |
On |
VW |
3 |
4 |
1.86 |
0.0013 |
0.00743 |
0.643 |
| 8 |
nostable |
mon |
Off |
EW |
10 |
4 |
1.87 |
0.0012 |
0.00693 |
0.581 |
| 9 |
none |
mon |
On |
VW |
2 |
3 |
1.89 |
0.0010 |
0.00713 |
0.666 |
| 10 |
none |
mon |
On |
VW |
10 |
4 |
1.90 |
0.0009 |
0.00738 |
0.516 |
| 11 |
none |
mon |
On |
VW |
3 |
2 |
1.91 |
0.0008 |
0.00706 |
0.648 |
| 12 |
nostable |
mon |
On |
VW |
5 |
3 |
1.91 |
0.0008 |
0.00778 |
0.617 |
| 13 |
all |
mon |
On |
VW |
5 |
4 |
1.91 |
0.0008 |
0.00793 |
0.612 |
| 14 |
nostable |
mon |
On |
VW |
3 |
3 |
1.92 |
0.0008 |
0.00722 |
0.648 |
| 15 |
none |
mon |
Off |
VW |
10 |
4 |
1.92 |
0.0007 |
0.00716 |
0.522 |
| 16 |
none |
mon |
Off |
EW |
10 |
4 |
1.93 |
0.0007 |
0.00709 |
0.574 |
| 17 |
nostable |
mon |
On |
VW |
2 |
4 |
1.94 |
0.0006 |
0.00706 |
0.668 |
| 18 |
all |
mon |
Off |
VW |
10 |
4 |
1.95 |
0.0006 |
0.00732 |
0.532 |
| 19 |
nostable |
mon |
On |
VW |
2 |
3 |
1.95 |
0.0005 |
0.00707 |
0.670 |
| 20 |
all |
mon |
Off |
EW |
10 |
4 |
1.96 |
0.0005 |
0.00726 |
0.583 |
Marginal Effects by Parameter Dimension
Exclusion
|
Exclusion
|
Mean GRS p
|
Median GRS p
|
Mean |α|
|
Mean R²
|
n
|
|
none
|
0.000175
|
0.000010
|
0.00743
|
0.645
|
96
|
|
nostable
|
0.000118
|
0.000015
|
0.00729
|
0.649
|
96
|
|
all
|
0.000046
|
0.000004
|
0.00746
|
0.653
|
96
|
Calendar
|
Calendar
|
Mean GRS p
|
Median GRS p
|
Mean |α|
|
Mean R²
|
n
|
|
mon
|
0.000214
|
0.000037
|
0.00772
|
0.641
|
144
|
|
sharp
|
0.000012
|
0.000000
|
0.00707
|
0.657
|
144
|
Delist Return
|
Delist Return
|
Mean GRS p
|
Median GRS p
|
Mean |α|
|
Mean R²
|
n
|
|
TRUE
|
0.000160
|
0.000001
|
0.00738
|
0.666
|
144
|
|
FALSE
|
0.000066
|
0.000016
|
0.00741
|
0.633
|
144
|
Weighting
|
Weighting
|
Mean GRS p
|
Median GRS p
|
Mean |α|
|
Mean R²
|
n
|
|
vw
|
0.000184
|
0.000008
|
0.00750
|
0.637
|
144
|
|
ew
|
0.000042
|
0.000008
|
0.00729
|
0.662
|
144
|
Size Breakpoints
|
Size Breakpoints
|
Mean GRS p
|
Median GRS p
|
Mean |α|
|
Mean R²
|
n
|
|
5
|
0.000157
|
0.000007
|
0.00764
|
0.643
|
72
|
|
10
|
0.000125
|
0.000027
|
0.00715
|
0.602
|
72
|
|
3
|
0.000100
|
0.000008
|
0.00746
|
0.671
|
72
|
|
2
|
0.000071
|
0.000002
|
0.00732
|
0.681
|
72
|
Mom Lookback
|
Mom Lookback
|
Mean GRS p
|
Median GRS p
|
Mean |α|
|
Mean R²
|
n
|
|
4
|
0.000217
|
0.000020
|
0.00732
|
0.641
|
96
|
|
3
|
0.000089
|
0.000008
|
0.00737
|
0.648
|
96
|
|
2
|
0.000034
|
0.000002
|
0.00749
|
0.659
|
96
|
Best Configuration per Exclusion Level
| all |
mon |
On |
VW |
5 |
4 |
1.91 |
0.000782 |
0.00793 |
0.612 |
| none |
mon |
On |
VW |
5 |
4 |
1.72 |
0.004464 |
0.00782 |
0.607 |
| nostable |
mon |
On |
VW |
5 |
4 |
1.80 |
0.002143 |
0.00782 |
0.612 |
Interpretation
The GRS test evaluates whether a given three-factor model (CMKT, CSMB, CMOM) can fully explain the cross-sectional return variation across the 40 test portfolios. Key metrics:
- GRS F-statistic: lower is better (smaller unexplained alpha)
- GRS p-value: higher is better (fail to reject H₀ that all alphas = 0)
- Mean |α|: average absolute pricing error across test assets (lower is better)
- Avg R²: average time-series explanatory power (higher is better)
References
Gibbons, M. R., Ross, S. A., & Shanken, J. (1989). A test of the efficiency of a given portfolio.
Econometrica,
57(5), 1121–1152.
https://doi.org/10.2307/1913625
Liu, Y., Tsyvinski, A., & Wu, X. (2022). Common risk factors in cryptocurrency.
The Journal of Finance,
77(2), 1133–1177.
https://doi.org/10.1111/jofi.13119