Alpha Generated from TVL and Twitter
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 a regression on excess crypto market returns, and a crypto size factor.
In this notebook I test portfolios sorted on both TVL and new X (Twitter) followers (both scaled by market cap). I find that the mean return on a new X followers and TVL sorted portfolio is not significantly positive. However, the alpha in a linear regression of the portfolio returns on a crypto two-factor model is positive and significant, as is Hansen's J-statistic. In sum, we document large positive pricing errors (alphas) for TVL and X followers multisort portfolios relative to a 2-factor model, while a significant Hansen J-stat indicates the benchmark is rejected, so we interpret these results as tentative evidence of abnormal performance.
1. TVL and X Followers 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 new X followers (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 X-activity groups — Low, Medium, and High X followers — using the 30th and 70th percentiles of the X 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 new X followers, and then build long–short factors (e.g., high-minus-low X followers controlling for TVL) to test whether these characteristics earn a risk premium.
1.1. Data
The data are weekly, and range 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 factor: Small minus Big TVL (\(SMB_{TVL}\))
The long-short \(SMB_{TVL}\) portfolio measures whether TVL is a rewarded risk factor when controlling for new X followers 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 67.00
mean 0.12
std 6.71
min -19.37
25% -4.36
50% -0.22
75% 3.53
max 19.59
The portfolio has a weekly mean return of 0.12 %, and given the result below, the mean return is not significantly different from 0 under a simple i.i.d T-test.
TtestResult(statistic=array([0.14361226]), pvalue=array([0.88624425]), df=array([66]))
1.3. X factor: High New X Followers minus Low New X Followers (\(HML_{X}\)), neutral to TVL
This long-short portfolio is long tokens with more new X followers (per market cap) and short tokens with low new X followers, while controlling for TVL.
\[\text{X}_{{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 68.00
mean 2.21
std 12.42
min -44.28
25% -4.66
50% 0.82
75% 8.65
max 44.22
The portfolio has a substantial weekly mean return of 2.21 %, however given the T-test below, the mean return is not significantly different from 0.
TtestResult(statistic=array([1.46850047]), pvalue=array([0.14664785]), df=array([67]))
2. Tests for Significant Alpha
To test whether my TVL–X 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 new X followers (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{X}_{{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.234 Model: OLS Adj. R-squared: 0.210 Method: Least Squares F-statistic: 19.61 Date: Sun, 08 Feb 2026 Prob (F-statistic): 2.28e-07 Time: 14:14:46 Log-Likelihood: -213.18 No. Observations: 67 AIC: 432.4 Df Residuals: 64 BIC: 439.0 Df Model: 2 Covariance Type: HAC ======================================================================================== coef std err z P>|z| [0.025 0.975] ---------------------------------------------------------------------------------------- Intercept 3.2450 0.853 3.805 0.000 1.574 4.916 excess_crypto_market 43.9512 7.508 5.854 0.000 29.236 58.666 single_smb_factor -0.0406 0.042 -0.972 0.331 -0.123 0.041 ============================================================================== Omnibus: 2.692 Durbin-Watson: 2.026 Prob(Omnibus): 0.260 Jarque-Bera (JB): 1.932 Skew: -0.256 Prob(JB): 0.381 Kurtosis: 3.655 Cond. No. 274. ============================================================================== Notes: [1] Standard Errors are heteroscedasticity and autocorrelation robust (HAC) using 4 lags and without small sample correction - \(X_{HML}\) Portfolio
Regressing HML portfolio returns on our two factors yields a weekly alpha of 5.68%, which is significant at the 1% level. We use Newey–West (HAC) standard errors to account for heteroskedasticity and autocorrelation in weekly returns.
Heteroscedasticity and autocorrelation robust standard errors:
OLS Regression Results ============================================================================== Dep. Variable: multi_HML R-squared: 0.228 Model: OLS Adj. R-squared: 0.204 Method: Least Squares F-statistic: 4.818 Date: Sun, 08 Feb 2026 Prob (F-statistic): 0.0112 Time: 14:14:46 Log-Likelihood: -255.05 No. Observations: 67 AIC: 516.1 Df Residuals: 64 BIC: 522.7 Df Model: 2 Covariance Type: HAC ======================================================================================== coef std err z P>|z| [0.025 0.975] ---------------------------------------------------------------------------------------- Intercept 5.6824 2.199 2.584 0.010 1.373 9.992 excess_crypto_market 55.3043 24.237 2.282 0.023 7.800 102.808 single_smb_factor -0.2229 0.126 -1.767 0.077 -0.470 0.024 ============================================================================== Omnibus: 6.407 Durbin-Watson: 1.823 Prob(Omnibus): 0.041 Jarque-Bera (JB): 10.727 Skew: -0.024 Prob(JB): 0.00468 Kurtosis: 4.960 Cond. No. 274. ============================================================================== 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.2291
No. Factors: 2 J-statistic: 15.909
No. Observations: 67 P-value 0.0004
Date: Sun, Feb 08 2026 Distribution: chi2(2)
Time: 14:14:46
Cov. Estimator: kernel
Risk Premia Estimates
========================================================================================
Parameter Std. Err. T-stat P-value Lower CI Upper CI
----------------------------------------------------------------------------------------
excess_crypto_market -0.0742 0.0091 -8.1206 0.0000 -0.0922 -0.0563
single_smb_factor -3.3428 2.1941 -1.5235 0.1276 -7.6432 0.9576
========================================================================================
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 (15.91) is a test of whether the alpha coefficients are jointly equal to 0 (the null hypothesis). We reject the null with the statistic's p-value of 0.0004. This is evidence that the two-factor model does not span the multisort portfolio returns.