Testing for Alpha in TVL and DEX Volume Multisort Portfolios
Table of Contents
Using TVL sorted portfolios, Brigida (2025)1 found no evidence that TVL can generate alpha. Returns on TVL-sorted portfolios are linear functions of crypto market returns. These results also imply TVL-sorted portfolios do not proxy an investment intensity or value effect. In a follow on series of blog posts I am testing whether portfolios sorted on both TVL and other factors can generate alpha. Specifically, I test the multisort portfolios for significant alpha in regression on excess crypto market returns, and a crypto size factor.
In this notebook I test portfolios sorted on both TVL and DEX volume (both scaled by market cap). I initially find that the mean return on a DEX and TVL sorted portfolio is significantly positive. Moreover, the alpha in a linear regression of the portfolio returns on a crypto two-factor model is positive and significant. However, once controlling for residual serial correlation the alpha becomes insignificant, so ultimately I do not find evidence that sorting on these measures generates alpha. However, this may be due to the sample period, and despite the following results I think DEX volume controlling for TVL levels may be a promising approach to generating alpha in crypto markets.
1. TVL and DEX Volume Multisort Portfolios
In my tests I follow the standard Fama–French 2×3 portfolio construction, adapted to crypto. Each period I rank all eligible tokens on two characteristics measured in the prior period: total value locked (TVL) and DEX volume (scaled by market cap). First, I split tokens into Small TVL and Big TVL groups using the median TVL. Independently, I sort tokens into three DEX-activity groups — Low, Medium, and High DEX volume — using the 30th and 70th percentiles of the DEX measure. Taking the intersection of these two independent sorts gives six portfolios: Small–Low (SL), Small–Medium (SM), Small–High (SH), Big–Low (BL), Big–Medium (BM), and Big–High (BH). I then track the value-weighted returns of these six portfolios over the next period. This 2×3 design lets me see how returns vary jointly with TVL and DEX activity, and then build long–short factors (e.g., high-minus-low DEX controlling for TVL) to test whether these characteristics earn a risk premium.
1.1. Data
Our data is sampled at the weekly frequency, and ranges from 1/3/2022 to 7/28/2025. We include all coins that were in the top 100 over any part of the sample period, though we exclude Bitcoin and all stablecoins. Returns are quoted in percentage points.
1.2. TVL (size) factor: Small minus Big TVL (\(SMB_{TVL}\))
The long-short \(SMB_{TVL}\) portfolio measures whether TVL is a rewarded risk controlling for DEX volume to market cap.
\[\text{TVL}_{{SMB}_t} = \frac{1}{3}\bigl(R_{SL,t} + R_{SM,t} + R_{SH,t}\bigr) - \frac{1}{3}\bigl(R_{BL,t} + R_{BM,t} + R_{BH,t}\bigr)\]
Descriptive statistics.
0
count 130.00
mean 0.56
std 6.33
min -21.84
25% -2.45
50% 0.23
75% 3.79
max 33.61
The portfolio has a weekly mean return of 0.56 %, and given the T-test below, the mean return is not significantly different from 0.
TtestResult(statistic=array([1.00698739]), pvalue=array([0.31582595]), df=array([129]))
1.3. DEX factor: High DEX Volume minus Low DEX Volume (\(HML_{DEX}\)), neutral to TVL
This long-short portfolio is long tokens with more DEX volume (per market cap) and short tokens low DEX volume, while controlling for TVL.
\[\text{DEX}_{{HML}_t} = \frac{1}{2}\bigl(R_{SH,t} + R_{BH,t}\bigr) - \frac{1}{2}\bigl(R_{SL,t} + R_{BL,t}\bigr)\]
Descriptive statistics. Data is weekly, and in percentage points.
0
count 130.00
mean 1.85
std 9.67
min -31.74
25% -2.86
50% 0.14
75% 6.54
max 53.01
The portfolio has a weekly mean return of 1.85 %, and given the T-test below, the mean return is significantly different from 0. This simple t-test assumes i.i.d. returns however. Inference weakens under HAC/Newey–West adjustments.
TtestResult(statistic=array([2.17655566]), pvalue=array([0.03133462]), df=array([129]))
2. Tests for Significant Alpha
To test whether my TVL–DEX portfolios earn any abnormal returns (alpha), I use a t-test on the intercept of a standard linear factor model and Hansen’s J-statistic2 for a joint alpha test.
I start from a 2×3 sort on lagged total value locked (TVL) and DEX volume (both scaled by market cap), which gives me two test portfolios. For each portfolio, I ask whether its average excess return can be explained by two simple crypto risk factors:
- \(R_{M_t} - R_{F_t}\): excess return on the broad crypto market
- \(Market\ Cap\ SMB_t\): a "small minus big" size factor that goes long small-cap tokens and short large-cap tokens
That is, I estimate both:
\(\text{TVL}_{{SMB}_t} = \alpha_1 + \beta_{M,1}\bigl(R_{M_t} - R_{F_t}\bigr) + \beta_{S,1} Market\ Cap\ SMB_t + \epsilon_t\)
and
\(\text{DEX}_{{HML}_t} = \alpha_2 + \beta_{M,2}\bigl(R_{M_t} - R_{F_t}\bigr) + \beta_{S,2} Market\ Cap\ SMB_t + \epsilon_t\)
and then test whether \(\alpha_1\) and \(\alpha_2\) are individually and jointly equal to 0 via t-tests and Hansen's J-Statistic.
2.1. Results
2.1.1. Single Portfolio Tests
- \(TVL_{SMB}\) Portfolio
OLS Regression Results ============================================================================== Dep. Variable: multi_SMB R-squared: 0.013 Model: OLS Adj. R-squared: -0.003 Method: Least Squares F-statistic: 0.4733 Date: Tue, 20 Jan 2026 Prob (F-statistic): 0.624 Time: 15:54:20 Log-Likelihood: -422.93 No. Observations: 130 AIC: 851.9 Df Residuals: 127 BIC: 860.5 Df Model: 2 Covariance Type: HAC ======================================================================================== coef std err z P>|z| [0.025 0.975] ---------------------------------------------------------------------------------------- Intercept 1.2985 1.134 1.145 0.252 -0.924 3.522 excess_crypto_market 9.8127 10.379 0.945 0.344 -10.530 30.155 single_smb_factor -0.0049 0.039 -0.126 0.900 -0.081 0.071 ============================================================================== Omnibus: 38.279 Durbin-Watson: 1.738 Prob(Omnibus): 0.000 Jarque-Bera (JB): 200.994 Skew: 0.841 Prob(JB): 2.26e-44 Kurtosis: 8.855 Cond. No. 193. ============================================================================== Notes: [1] Standard Errors are heteroscedasticity and autocorrelation robust (HAC) using 4 lags and without small sample correction - \(DEX_{HML}\) Portfolio
Regressing HML portfolio returns on our two factors yields a weekly alpha of 2.15%, however this alpha is insignificant. Using conventional (nonrobust) OLS standard errors, the alpha is marginally significant (10% level). However, when we compute Newey–West (HAC) standard errors to account for heteroskedasticity and autocorrelation in weekly returns, the alpha is no longer statistically significant. Accordingly, the evidence for abnormal returns is not robust to standard time-series inference.
Non-robust standard errors:
OLS Regression Results ============================================================================== Dep. Variable: multi_HML R-squared: 0.016 Model: OLS Adj. R-squared: 0.001 Method: Least Squares F-statistic: 1.062 Date: Tue, 20 Jan 2026 Prob (F-statistic): 0.349 Time: 15:54:20 Log-Likelihood: -477.84 No. Observations: 130 AIC: 961.7 Df Residuals: 127 BIC: 970.3 Df Model: 2 Covariance Type: nonrobust ======================================================================================== coef std err t P>|t| [0.025 0.975] ---------------------------------------------------------------------------------------- Intercept 2.1522 1.231 1.748 0.083 -0.284 4.589 excess_crypto_market 4.9902 11.714 0.426 0.671 -18.189 28.170 single_smb_factor -0.0831 0.061 -1.364 0.175 -0.204 0.038 ============================================================================== Omnibus: 48.487 Durbin-Watson: 1.755 Prob(Omnibus): 0.000 Jarque-Bera (JB): 338.992 Skew: 1.035 Prob(JB): 2.45e-74 Kurtosis: 10.635 Cond. No. 193. ============================================================================== Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.Heteroscedasticity and autocorrelation robust standard errors:
OLS Regression Results ============================================================================== Dep. Variable: multi_HML R-squared: 0.016 Model: OLS Adj. R-squared: 0.001 Method: Least Squares F-statistic: 0.8613 Date: Tue, 20 Jan 2026 Prob (F-statistic): 0.425 Time: 15:54:20 Log-Likelihood: -477.84 No. Observations: 130 AIC: 961.7 Df Residuals: 127 BIC: 970.3 Df Model: 2 Covariance Type: HAC ======================================================================================== coef std err z P>|z| [0.025 0.975] ---------------------------------------------------------------------------------------- Intercept 2.1522 1.745 1.233 0.218 -1.269 5.573 excess_crypto_market 4.9902 16.886 0.296 0.768 -28.106 38.087 single_smb_factor -0.0831 0.072 -1.162 0.245 -0.223 0.057 ============================================================================== Omnibus: 48.487 Durbin-Watson: 1.755 Prob(Omnibus): 0.000 Jarque-Bera (JB): 338.992 Skew: 1.035 Prob(JB): 2.45e-74 Kurtosis: 10.635 Cond. No. 193. ============================================================================== Notes: [1] Standard Errors are heteroscedasticity and autocorrelation robust (HAC) using 4 lags and without small sample correction
2.1.2. Joint Test
TradedFactorModel Estimation Summary
================================================================================
No. Test Portfolios: 2 R-squared: 0.0154
No. Factors: 2 J-statistic: 1.6169
No. Observations: 130 P-value 0.4456
Date: Tue, Jan 20 2026 Distribution: chi2(2)
Time: 15:54:20
Cov. Estimator: kernel
Risk Premia Estimates
========================================================================================
Parameter Std. Err. T-stat P-value Lower CI Upper CI
----------------------------------------------------------------------------------------
excess_crypto_market -0.0758 0.0071 -10.754 0.0000 -0.0896 -0.0620
single_smb_factor -0.8643 1.2586 -0.6867 0.4923 -3.3312 1.6026
========================================================================================
Covariance estimator:
KernelCovariance, Kernel: bartlett, Bandwidth: 4.0
See full_summary for complete results
See the results above, estimated via the Traded Factor Model method from the linearmodels python package. Hansen's J-Statistic (1.62) is a test of whether the alpha coefficients are jointly equal to 0 (the null hypothesis). We do not reject the null with the statistics p-value of 0.45.