Funding Rate Mean Reversion: Testing Ornstein-Uhlenbeck Dynamics in Perpetual Futures Markets
Statistical evidence for mean-reverting funding rates with implications for carry strategy design
Summary
Statistical evidence for mean-reverting funding rates with implications for carry strategy design
- Published
- Filed under
- Market Microstructure
- Reading time
- 12 min read
- Sections
- 13
- Research by
- Venym Labs Research
Published by Venym Labs. Methods and limits are in the study; it has not been peer reviewed.
Abstract#
Carry strategies in perpetual futures depend critically on how fast funding rates revert to equilibrium — not whether they revert (the mechanism guarantees this), but the timescale and reliability of reversion. We fit Ornstein-Uhlenbeck (OU) models to 46,256 high-frequency funding rate observations from seven Hyperliquid perpetual futures (BTC, ETH, SOL, GRIFFAIN, BLUR, FARTCOIN, PURR) over a 7-day window (March 28 – April 4, 2026). These assets were selected to span the liquidity spectrum from blue chips to meme coins, enabling cross-asset comparison of mean reversion dynamics.
What we can say with confidence: Augmented Dickey-Fuller tests reject the unit root null for all seven assets (six at Bonferroni-corrected α = 0.007), confirming that funding rates are stationary. OU half-life estimates range from ~27 periods (GRIFFAIN) to ~345 periods (BLUR), with meme coins reverting 3–10× faster than blue chips — consistent with the hypothesis that speculative demand is more volatile and faster-correcting than structural positioning.
What we cannot say yet: The 7-day sample is too short for reliable OU parameter estimation on slow-reverting assets (BTC/ETH half-lives exceed the data window). The low R² values (0.2%–3.9%) confirm that the OU drift is a weak signal buried in noise. R/S Hurst estimates (H > 0.84 for all assets) are likely inflated by well-documented short-sample bias in the rescaled range method and should not be interpreted as evidence of genuine dual-regime dynamics without confirmation from DFA or GPH estimators on longer datasets. We do not report Sharpe ratios because funding-income-only Sharpe figures are misleading for strategy evaluation — they exclude execution costs, price risk, liquidity constraints, and counterparty risk, and would overstate real-world performance by an order of magnitude.
The value of this pilot: It establishes a methodological framework, provides preliminary parameter ranges, identifies the data requirements for robust estimation (minimum 3–6 months), and generates testable hypotheses for future work. It should be read as a foundation, not a conclusion.
1. Introduction#
Perpetual futures — the dominant derivative instrument in cryptocurrency markets — maintain price parity with spot through a funding rate mechanism. Every 8 hours (on most exchanges), long and short positions exchange payments based on the spread between perpetual and spot prices. When the perpetual trades at a premium (contango), longs pay shorts; when at a discount (backwardation), shorts pay longs.
This mechanism creates a natural mean-reverting force: extreme funding rates attract arbitrage capital, which in turn compresses the rate back toward equilibrium. The question is not whether funding rates revert — the mechanism guarantees it — but how fast they revert, what drives the speed, and whether the dynamics are well-captured by a simple stochastic model like the Ornstein-Uhlenbeck (OU) process.
1.1 Research Hypotheses#
We test three hypotheses, ordered by the confidence our data can support:
H1 (Strong support expected): Funding rates are stationary. Justification: The funding rate mechanism creates a mechanical restoring force. ADF rejection of the unit root is expected.
H2 (Moderate support for fast-reverting assets, unreliable for slow): Mean reversion speed varies systematically across assets as a function of speculative vs. structural positioning. Specifically, we expect meme coins (driven by volatile retail positioning) to exhibit faster reversion than blue chips (driven by institutional hedging with structural demand). Justification: The OU half-life should reflect the characteristic timescale of positioning flows.
H3 (Exploratory — data insufficient for reliable conclusions): Funding rates exhibit multi-timescale dynamics, with short-term trending (H > 0.5) coexisting with long-term stationarity. Justification: If confirmed, this would have direct implications for carry strategy entry timing. However, R/S Hurst estimates are known to be upward-biased in short samples, and our 7-day window provides insufficient data to distinguish genuine multi-timescale behavior from estimation artifacts.
1.2 Why a 7-Day Pilot?#
Before investing in the infrastructure for a 6–12 month study, we run a 7-day pilot to: (a) validate the data pipeline, (b) establish preliminary parameter ranges, (c) identify methodological pitfalls, and (d) generate hypotheses for the full study. We are explicit throughout about which findings are robust and which require confirmation with extended data.
1.3 Asset Selection Rationale#
We select assets spanning the liquidity and market-cap spectrum:
| Tier | Assets | Rationale |
|---|---|---|
| Blue chips | BTC, ETH | Deep liquidity, institutional positioning, structural demand for long exposure |
| Mid-cap | SOL, BLUR | Moderate liquidity, mixed retail/institutional positioning; BLUR included specifically because its token unlock dynamics create sustained selling pressure that may produce anomalous funding dynamics |
| Meme coins | GRIFFAIN, FARTCOIN, PURR | Low liquidity, retail-dominated positioning, high funding volatility; included to test whether positioning composition affects reversion speed |
This is not a representative sample of the perpetual futures market — it is a deliberately broad spectrum to maximize the range of dynamics observed in a small sample. The inclusion of meme coins is not to demonstrate "meme coin premium" but to test whether positioning type (retail speculation vs. institutional hedging) is a first-order determinant of reversion speed.
1.4 The Ornstein-Uhlenbeck Process#
The OU process is a continuous-time stochastic differential equation (SDE) defined as:
where:
- is the funding rate at time
- is the mean reversion speed
- is the long-term mean (equilibrium funding rate)
- is the volatility parameter
- is a standard Wiener process
The key property is that the process is pulled toward at a rate proportional to the deviation . The half-life of mean reversion — the expected time for a deviation to decay by half — is:
For a discrete-time approximation (appropriate for 8-hourly funding observations), we use:
This can be estimated via OLS regression of on , where the slope coefficient and the intercept .
Important caveat on OU adequacy: The OU process assumes constant parameters (θ, μ, σ). Real funding rates likely exhibit regime-dependent dynamics — parameters shift between bull and bear markets, high-vol and low-vol periods. The OU model is a first-order approximation, not a complete description. We use it because it provides interpretable parameters (half-life, equilibrium rate) that directly inform strategy design, not because we believe it captures all relevant dynamics.
2. Data#
We analyze 46,256 funding rate observations from Hyperliquid perpetual futures, covering seven assets over the period March 28 – April 4, 2026 (approximately 7 days). Data was collected by PerpsTrader's real-time ingestion system at roughly 1-minute intervals. This is live production data collected in real-time, not a backtest or simulation.
| Symbol | Observations | Mean Funding Rate | Std Dev | Min | Max |
|---|---|---|---|---|---|
| BTC | 6,608 | -0.0000001 | 0.0000058 | -0.0000361 | 0.0000125 |
| ETH | 6,608 | 0.0000035 | 0.0000105 | -0.0000361 | 0.0000361 |
| SOL | 6,608 | -0.0000140 | 0.0000175 | -0.0000657 | 0.0000125 |
| GRIFFAIN | 6,608 | 0.0000551 | 0.0000273 | -0.0000219 | 0.0001082 |
| BLUR | 6,608 | -0.0000626 | 0.0000203 | -0.0001136 | 0.0000125 |
| FARTCOIN | 6,608 | 0.0000158 | 0.0000217 | -0.0000361 | 0.0000588 |
| PURR | 6,608 | 0.0000456 | 0.0000129 | -0.0000143 | 0.0000754 |
Key observation: Meme coins (GRIFFAIN, FARTCOIN, PURR) exhibit both higher mean funding rates and higher volatility, while blue chips (BTC, ETH) show near-zero means with tight distributions. BLUR stands out with a persistently negative mean (-6.26 bps per 8h period), consistent with sustained selling pressure from token emissions.
2.1 Exchange-Specific Dynamics#
All data is from Hyperliquid. This has three important implications:
- Continuous funding: Hyperliquid calculates funding rates continuously (not at fixed 8-hour intervals like Binance or Bybit). This produces smoother time series but different dynamics than the step-function behavior on capped exchanges.
- No funding rate caps: Most exchanges cap funding rates (typically ±0.75% for 8-hour periods). Hyperliquid applies no caps, allowing wider swings but also more rapid correction.
- Venue-specific user base: Hyperliquid's user base skews toward sophisticated DeFi traders. Funding rate dynamics may differ on Binance (retail-dominated) or Bybit (mixed). Our findings should not be generalized to other venues without independent verification.
3. Methodology#
Figure 1: Analysis pipeline. Note: No Sharpe ratio estimation is included — funding-income-only Sharpe ratios are misleading for strategy evaluation (see Section 4.4).
3.1 OU Parameter Estimation#
We fit the discrete OU model via OLS for each asset:
import numpy as np
from scipy import stats
def estimate_ou_params(rates):
"""Estimate OU parameters via OLS on Δr_t = α + β·r_{t-1} + ε_t"""
dr = np.diff(rates)
r_lag = rates[:-1]
slope, intercept, r_value, p_value, std_err = stats.linregress(r_lag, dr)
theta = -slope # θ = -β
mu = intercept / theta # μ = α/θ
residuals = dr - (intercept + slope * r_lag)
sigma = np.std(residuals)
half_life = np.log(2) / theta if theta > 0 else float('inf')
return {
'theta': theta,
'mu': mu,
'sigma': sigma,
'half_life': half_life,
'r_squared': r_value ** 2
}
3.2 Augmented Dickey-Fuller Test#
The ADF test evaluates the null hypothesis : the series has a unit root (no mean reversion) against : the series is stationary. The test regression is:
We use the AIC criterion for lag selection and report test statistics against standard critical values. With seven simultaneous tests, we apply Bonferroni correction (α_adj = 0.05/7 = 0.0071) and Benjamini-Hochberg FDR (q = 0.05) as upper and lower bounds on family-wise error control.
3.3 Hurst Exponent (R/S Analysis) — Exploratory#
The Hurst exponent characterizes the long-term memory of a time series. Using the rescaled range (R/S) method:
For an OU process, should approach 0.5 at long timescales. Values significantly above 0.5 indicate persistent trending behavior.
⚠️ Methodological caveat (prominent): The R/S method is known to produce substantially upward-biased Hurst estimates in finite samples, particularly for series with positive autocorrelation (Weron, 2002; Teverovsky et al., 1999). With only ~6,600 observations per asset (7 days), these estimates should be treated as suggestive at best. We include them as an exploratory analysis to motivate future work with DFA/GPH estimators on longer datasets, not as reliable evidence of multi-timescale dynamics.
4. Results#
4.1 Hypothesis 1: Stationarity (ADF Test)#
| Symbol | ADF Statistic | p-value | 1% CV | 5% CV | Bonferroni Significant? |
|---|---|---|---|---|---|
| GRIFFAIN | -8.931 | 9.85e-15 | -3.431 | -2.862 | ✅ Yes |
| FARTCOIN | -7.956 | 3.03e-12 | -3.431 | -2.862 | ✅ Yes |
| PURR | -7.166 | 2.88e-10 | -3.431 | -2.862 | ✅ Yes |
| ETH | -4.543 | 1.65e-04 | -3.431 | -2.862 | ✅ Yes |
| BTC | -4.251 | 5.39e-04 | -3.431 | -2.862 | ✅ Yes |
| SOL | -4.032 | 1.25e-03 | -3.431 | -2.862 | ✅ Yes |
| BLUR | -2.954 | 3.95e-02 | -3.431 | -2.862 | ❌ No (marginal) |
Result: H1 confirmed. Six of seven assets reject the unit root at the Bonferroni-corrected α = 0.0071. Applying the less conservative Benjamini-Hochberg FDR at q = 0.05, all seven are confirmed. BLUR is the marginal case, consistent with its extremely slow reversion speed. This is the most robust finding of the study — stationarity is well-supported even with 7 days of data.
4.2 Hypothesis 2: Cross-Asset Reversion Speed#
| Symbol | θ (Rev. Speed) | μ (LT Mean) | σ (Volatility) | Half-life (periods) | R² | Half-life vs. Sample |
|---|---|---|---|---|---|---|
| GRIFFAIN | 0.0259 | 0.0000547 | 0.0000013 | 26.81 | 0.039 | Within sample ✅ |
| FARTCOIN | 0.0207 | 0.0000162 | 0.0000018 | 33.43 | 0.025 | Within sample ✅ |
| PURR | 0.0167 | 0.0000456 | 0.0000010 | 41.57 | 0.022 | Within sample ✅ |
| SOL | 0.0055 | -0.0000134 | 0.0000018 | 125.00 | 0.003 | Exceeds sample ⚠️ |
| BTC | 0.0070 | -0.0000008 | 0.0000004 | 99.20 | 0.007 | Exceeds sample ⚠️ |
| ETH | 0.0069 | 0.0000046 | 0.0000008 | 99.94 | 0.006 | Exceeds sample ⚠️ |
| BLUR | 0.0020 | -0.0006255 | 0.0000017 | 345.06 | 0.002 | Far exceeds sample ⛔ |
Result: H2 partially supported, with important reliability caveats.
The cross-asset hierarchy is consistent with the hypothesis: meme coins (θ ≈ 0.017–0.026) revert 3–10× faster than blue chips (θ ≈ 0.007). BLUR (θ ≈ 0.002) is an outlier consistent with structural tokenomics-driven selling.
However, the parameter estimates for slow-reverting assets are unreliable. BTC, ETH, and SOL have half-lives of 99–125 periods — substantially exceeding the 7-day sample window. BLUR's half-life (345 periods) is ~50× the sample length. When the characteristic timescale of the process exceeds the data window, the OU parameters are effectively unidentified — the OLS estimates exist but have wide confidence intervals that we have not quantified (a bootstrap approach would be needed, and is planned for the full study).
Reliable findings: The relative ordering (meme > blue chip > BLUR) is robust to the sample-size issue because even with short data, the ranking of reversion speeds is stable. The absolute half-life values for BTC, ETH, SOL, and BLUR should not be quoted as precise estimates.
The low R² values (0.2%–3.9%) are expected but important: the OU model explains less than 4% of next-period funding rate variance for any asset. The dominant component is noise. For practical trading, this means OU-based strategies require substantial sample sizes (many funding periods) to realize the edge, and individual period predictions are unreliable. The model's value lies in characterizing the expected path of funding rates over multiple periods, not in point prediction.
4.3 Hypothesis 3: Multi-Timescale Dynamics (Exploratory)#
| Symbol | Hurst H | R² | Interpretation |
|---|---|---|---|
| SOL | 0.9697 | 0.999 | Trending |
| BLUR | 0.8903 | 0.998 | Trending |
| ETH | 0.8697 | 0.997 | Trending |
| BTC | 0.8528 | 0.997 | Trending |
| FARTCOIN | 0.8504 | 0.997 | Trending |
| GRIFFAIN | 0.8446 | 0.997 | Trending |
| PURR | 0.8440 | 0.996 | Trending |
Result: H3 inconclusive — likely an estimation artifact.
All Hurst estimates are well above 0.5, indicating trending behavior. However, several factors undermine confidence in these estimates:
- Known upward bias: Weron (2002) demonstrates that R/S analysis systematically overestimates H in finite samples, with bias increasing as sample size decreases. Our 7-day window is well within the range where bias is substantial.
- Uniformity is suspicious: H ranges only from 0.844 to 0.970 across all seven assets. This clustering suggests a common methodological artifact rather than asset-specific dynamics.
- Autocorrelation confound: Funding rates exhibit short-term autocorrelation (funding at t is correlated with funding at t-1). The R/S method is known to conflate short-range autocorrelation with long-range dependence.
We cannot conclude that genuine multi-timescale dynamics exist based on this analysis. The Hurst results are consistent with both (a) a true dual-regime structure and (b) a simple OU process with short-sample R/S bias. These hypotheses cannot be distinguished with 7 days of data.
What we can say: If a dual-timescale structure does exist, the practical implication would be that naïve carry entries (enter as soon as funding becomes elevated) would face continued adverse movement before reversion. But this remains a hypothesis to test with appropriate estimators (DFA, GPH) on 3–6 months of data.
4.4 Why We Do Not Report Sharpe Ratios#
Many funding rate analyses include bootstrap Sharpe ratios for carry strategies. We deliberately omit them. Here is why:
A funding-income-only Sharpe ratio divides mean funding income by funding income volatility. This produces absurdly high numbers (our preliminary calculations yielded Sharpe ratios of 13–41 for meme coins). These figures are mathematically correct but strategically meaningless because they ignore:
- Price risk on the hedged leg: Even delta-neutral positions face basis risk, funding rate risk during rebalancing, and liquidation risk during price dislocations.
- Execution costs: Opening and closing positions incurs slippage, exchange fees, and market impact — especially in thin meme coin order books.
- Liquidity constraints: FARTCOIN's 24h volume is orders of magnitude below BTC's. You cannot size a carry position meaningfully in FARTCOIN without moving the market.
- Counterparty risk: Funds sit on an exchange. The entire position is exposed to venue failure.
- Opportunity cost: Capital is locked and cannot be deployed elsewhere.
Real-world carry strategy Sharpe ratios are typically 0.5–2.0, not 13–41. Reporting the latter — even with caveats — creates a misleading anchor that readers may retain even after reading the caveats. We choose to omit rather than mislead.
For comparing relative attractiveness across assets, the equilibrium funding rate (μ) and half-life (τ₁/₂) are more honest metrics: they describe the underlying dynamics without falsely converting them into strategy returns.
4.5 Regime Analysis#
We identify high-volatility and low-volatility funding regimes using a rolling standard deviation window (100 observations):
| Symbol | High-Vol % | Low-Vol % | Mean FR (High-Vol) | Mean FR (Low-Vol) |
|---|---|---|---|---|
| BTC | 21.8% | 7.5% | -0.0000004 | -0.0000004 |
| ETH | 24.8% | 5.2% | 0.0000037 | 0.0000032 |
| SOL | 22.3% | 6.8% | -0.0000120 | -0.0000122 |
| GRIFFAIN | 21.4% | 8.7% | 0.0000559 | 0.0000528 |
| BLUR | 23.5% | 5.1% | -0.0000625 | -0.0000631 |
| FARTCOIN | 21.0% | 7.4% | 0.0000154 | 0.0000168 |
| PURR | 23.0% | 5.8% | 0.0000444 | 0.0000472 |
The mean funding rate is remarkably stable across regimes, with high-volatility periods not systematically shifting the equilibrium. This is consistent with OU dynamics where μ is stable but σ fluctuates — a potential extension would be a stochastic volatility OU model (similar to Cox-Ingersoll-Ross with time-varying vol). However, this finding should be confirmed over longer periods, as 7 days may not capture enough regime transitions.
5. Discussion#
5.1 What the Data Supports#
Figure 2: Mean reversion spectrum with parameter reliability assessment
Robust findings (supported by this data):
- Funding rates are stationary (H1 confirmed)
- Meme coins revert faster than blue chips (H2 ranking supported)
- BLUR has structurally anomalous funding dynamics (persistent backwardation, slow reversion)
- OU equilibrium rates (μ) are stable across volatility regimes
Preliminary but unreliable findings (need 3–6 month confirmation):
- Absolute half-life values for BTC, ETH, SOL, BLUR
- Whether the OU model captures dynamics adequately or regime-switching is needed
- Whether multi-timescale dynamics exist (H3 inconclusive)
Not supported by this data:
- Any Sharpe ratio or strategy return estimate
- Precise optimal entry timing rules
- Generalization to non-Hyperliquid venues
5.2 Implications for Strategy Design (Qualitative Only)#
Based on the reliable findings, we can offer qualitative guidance:
-
Meme coin carry has faster feedback loops: Shorter half-lives mean deviations correct faster, potentially allowing more frequent rebalancing. But liquidity constraints and execution costs in meme coin markets may eliminate this advantage entirely. This is an empirical question, not a conclusion.
-
Blue chip carry requires patience: If BTC/ETH half-lives are genuinely ~100 periods (~33 days at 8h intervals), a carry strategy must hold for weeks to realize the reversion edge. This has capital efficiency implications.
-
BLUR is a structural short-funding story, not a mean-reversion play: The persistently negative funding and slow reversion suggest that BLUR's funding dynamics are driven by tokenomics (emissions creating sustained selling pressure) rather than positioning flows. This is a different trade structure.
6. Limitations#
We are explicit about what this study cannot establish:
-
Short sample window (critical): Seven days is inadequate for reliable OU parameter estimation on slow-reverting assets. The half-life estimates for BTC/ETH (~100 periods ≈ 33 days) and BLUR (~345 periods) exceed or far exceed our sample window, making those estimates unstable. A minimum of 3–6 months of data is needed for parameter stability on all assets. The reliable findings from this study are stationarity (H1) and the relative ranking of reversion speeds (H2 ordering).
-
Single exchange: All data comes from Hyperliquid. Funding rate dynamics on Binance, Bybit, and other exchanges may differ significantly due to different user bases, fee structures, funding rate caps, and market-making arrangements. Findings should not be generalized to other venues without independent verification.
-
R/S Hurst estimates are unreliable: The consistently high H values (0.84–0.97) are likely inflated by known upward bias in the rescaled range method when applied to short samples with autocorrelation. We do not claim evidence for multi-timescale dynamics. Future work should use DFA or GPH estimators on 3–6 months of data.
-
No out-of-sample validation: We fit and test on the same dataset. The parameters have not been validated on a holdout period. No parameter in this paper should be used for live trading without out-of-sample confirmation.
-
Non-stationarity of parameters: The OU parameters (θ, μ, σ) are likely regime-dependent. Bull markets, bear markets, and choppy periods may exhibit different funding dynamics. Our estimates are conditional on the specific market environment of late March / early April 2026.
-
Sampling frequency considerations: Data is sampled at ~1-minute intervals, but funding payments settle every 8 hours. High-frequency noise between settlements may affect parameter estimates. An analysis at the native 8-hour frequency would be more appropriate for OU estimation.
-
No strategy backtest: This paper estimates dynamics, not strategy returns. The gap between "funding rates mean-revert" and "a profitable carry strategy exists" is wide and includes execution costs, capital requirements, risk management, and regime shifts that we have not modeled.
7. Conclusion#
This pilot study establishes that perpetual futures funding rates on Hyperliquid are stationary (ADF-confirmed for all seven assets) and that a clear hierarchy of mean reversion speed exists, with meme coins reverting 3–10× faster than blue chips. These are robust findings supported by the data.
The Ornstein-Uhlenbeck model provides a useful first-order framework for thinking about funding rate dynamics, with interpretable parameters (half-life, equilibrium rate) that directly inform strategy design questions. However, the model explains less than 4% of next-period variance for any asset, and absolute parameter values for slow-reverting assets are unreliable with 7 days of data.
What this paper is: A methodological framework, a set of preliminary parameter ranges, and a clear statement of data requirements for robust estimation.
What this paper is not: A strategy backtest, a Sharpe ratio projection, or a recommendation to trade any asset.
Next Steps#
- Extend to 3–6 months of data for stable OU parameter estimation across all assets
- Add DFA/GPH Hurst estimators to properly test for multi-timescale dynamics
- Walk-forward validation with rolling estimation windows and out-of-sample testing
- Regime-switching OU models to capture time-varying parameters
- Cross-exchange comparison (Binance, Bybit) to assess venue-specificity
- Full strategy backtest incorporating execution costs, liquidity, and risk management
Appendix A: Full Analysis Code#
#!/usr/bin/env python3
"""
Ornstein-Uhlenbeck Analysis of Perpetual Futures Funding Rates
Complete reproducible analysis script.
NOTE: This is a pilot study with 7 days of data. Parameter estimates
for slow-reverting assets (BTC, ETH, SOL, BLUR) should not be treated
as reliable. See Section 6 (Limitations) for details.
"""
import json
import numpy as np
from scipy import stats
from statsmodels.tsa.stattools import adfuller
# Load data
with open('funding-timeseries.json') as f:
raw = json.load(f)
# Organize by symbol
data = {}
for row in raw:
sym = row['symbol']
if sym not in data:
data[sym] = []
data[sym].append(row)
for sym in data:
data[sym].sort(key=lambda x: x['timestamp'])
def estimate_ou_params(rates):
"""OLS estimation of OU parameters from discrete time series."""
dr = np.diff(rates)
r_lag = rates[:-1]
slope, intercept, r_value, p_value, std_err = stats.linregress(r_lag, dr)
theta = -slope
mu = intercept / theta if theta > 0 else np.mean(rates)
residuals = dr - (intercept + slope * r_lag)
sigma = np.std(residuals)
half_life = np.log(2) / theta if theta > 0 else float('inf')
return theta, mu, sigma, half_life, r_value**2
def hurst_rs(ts, max_lag=None):
"""
Hurst exponent via rescaled range analysis.
WARNING: Known upward bias in short samples. See Weron (2002).
Use DFA or GPH for robust estimates.
"""
N = len(ts)
if max_lag is None:
max_lag = min(N // 2, 500)
rs_values = []
for lag in range(10, max_lag):
segments = N // lag
rs_seg = []
for i in range(segments):
seg = ts[i * lag:(i + 1) * lag]
deviations = np.cumsum(seg - np.mean(seg))
R = np.max(deviations) - np.min(deviations)
S = np.std(seg, ddof=1)
if S > 0:
rs_seg.append(R / S)
if rs_seg:
rs_values.append((lag, np.mean(rs_seg)))
lags_arr = np.array([np.log(x[0]) for x in rs_values])
rs_arr = np.array([np.log(x[1]) for x in rs_values])
slope, _, _, _, _ = stats.linregress(lags_arr, rs_arr)
return slope
print("Asset | θ | μ | Half-life | ADF (p) | H | Reliability")
print("-" * 80)
for sym, series in data.items():
rates = np.array([x['fundingRate'] for x in series])
theta, mu, sigma, half_life, r2 = estimate_ou_params(rates)
adf_stat, adf_pval, _, _, crit, _ = adfuller(rates, autolag='AIC')
H = hurst_rs(rates)
# Reliability flag
n_periods = len(rates)
if half_life < n_periods / 3:
reliability = "RELIABLE"
elif half_life < n_periods:
reliability = "UNRELIABLE"
else:
reliability = "UNIDENTIFIABLE"
print(f"{sym:10s} | θ={theta:.4f} | μ={mu:.8f} | "
f"τ½={half_life:.0f} | ADF p={adf_pval:.2e} | "
f"H={H:.4f} | {reliability}")
References#
- Uhlenbeck, G.E. & Ornstein, L.S. (1930). "On the Theory of the Brownian Motion." Physical Review, 36(5), 823–841.
- Dickey, D.A. & Fuller, W.A. (1979). "Distribution of the Estimators for Autoregressive Time Series with a Unit Root." Journal of the American Statistical Association, 74(366), 427–431.
- Hurst, H.E. (1951). "Long-term Storage Capacity of Reservoirs." Transactions of the American Society of Civil Engineers, 116, 770–799.
- Weron, R. (2002). "Estimating long-range dependence: finite sample properties and confidence intervals." Physica A, 312, 285–299.
- Teverovsky, V., Taqqu, M.S. & Willinger, W. (1999). "A critical look at Lo's modified R/S statistic." Journal of Statistical Planning and Inference, 80(1-2), 211–227.
- Alexander, C. & Kaeck, A. (2020). "Regime Determinants for Bitcoin Perpetual Futures." Digital Finance, 2, 321–342.
Venym Labs Research — Pilot study. Preliminary results, not investment advice. Omitted risk factors in any strategy analysis: We deliberately omit Sharpe ratios because funding-income-only Sharpe figures are misleading (see Section 4.4). Any actual carry strategy faces execution costs, slippage, basis risk, counterparty risk, liquidation risk, and liquidity constraints that would reduce real-world returns by an order of magnitude relative to theoretical funding income.
7. Conclusion and Next Steps#
This pilot study establishes that perpetual futures funding rates are stationary (ADF confirmed for 6/7 assets at Bonferroni-corrected α) and that reversion speed varies systematically across asset types, with meme coins reverting 3–10× faster than blue chips. The Ornstein-Uhlenbeck model provides a useful framework for thinking about funding rate dynamics, though its parameters are unreliable for slow-reverting assets given our 7-day sample.
The much more interesting question — whether multi-timescale dynamics genuinely exist in funding rates — cannot be answered with this data. The Hurst results are suggestive but confounded by known estimation bias. This is the primary target for the full study.
Planned next steps:
- Extended data collection: Minimum 6 months of Hyperliquid funding rate data across a broader asset set (15–20 perpetuals).
- Robust Hurst estimation: DFA and GPH estimators alongside R/S, with bias correction and confidence intervals.
- Regime-switching OU models: Allow parameters to vary between identified market regimes (bull/bear/choppy).
- Cross-exchange comparison: Parallel data collection from Binance and Bybit to test generalizability.
- Walk-forward validation: Train on first half of data, test on second half, with realistic transaction cost assumptions.
- Strategy simulation with full cost accounting: Only after parameter stability is confirmed — no Sharpe ratios until execution costs, slippage, and liquidity are modeled.
Appendix A: Full Analysis Code#
#!/usr/bin/env python3
"""
Ornstein-Uhlenbeck Analysis of Perpetual Futures Funding Rates
Pilot study: 7-day Hyperliquid data, March 28 - April 4, 2026
"""
import json
import numpy as np
from scipy import stats
from statsmodels.tsa.stattools import adfuller
# Load data
with open('funding-timeseries.json') as f:
raw = json.load(f)
# Organize by symbol
data = {}
for row in raw:
sym = row['symbol']
if sym not in data:
data[sym] = []
data[sym].append(row)
for sym in data:
data[sym].sort(key=lambda x: x['timestamp'])
def estimate_ou_params(rates):
"""OLS estimation of OU parameters from discrete time series."""
dr = np.diff(rates)
r_lag = rates[:-1]
slope, intercept, r_value, p_value, std_err = stats.linregress(r_lag, dr)
theta = -slope
mu = intercept / theta if theta > 0 else np.mean(rates)
residuals = dr - (intercept + slope * r_lag)
sigma = np.std(residuals)
half_life = np.log(2) / theta if theta > 0 else float('inf')
return theta, mu, sigma, half_life, r_value**2
def hurst_rs(ts, max_lag=None):
"""Hurst exponent via rescaled range analysis.
WARNING: Known upward bias in short samples (Weron, 2002).
Use only as exploratory analysis; confirm with DFA/GPH.
"""
N = len(ts)
if max_lag is None:
max_lag = min(N // 2, 500)
rs_values = []
for lag in range(10, max_lag):
segments = N // lag
rs_seg = []
for i in range(segments):
seg = ts[i * lag:(i + 1) * lag]
deviations = np.cumsum(seg - np.mean(seg))
R = np.max(deviations) - np.min(deviations)
S = np.std(seg, ddof=1)
if S > 0:
rs_seg.append(R / S)
if rs_seg:
rs_values.append((lag, np.mean(rs_seg)))
lags_arr = np.array([np.log(x[0]) for x in rs_values])
rs_arr = np.array([np.log(x[1]) for x in rs_values])
slope, _, _, _, _ = stats.linregress(lags_arr, rs_arr)
return slope
# Bonferroni correction
n_tests = len(data)
alpha_adj = 0.05 / n_tests
for sym, series in data.items():
rates = np.array([x['fundingRate'] for x in series])
theta, mu, sigma, half_life, r2 = estimate_ou_params(rates)
adf_stat, adf_pval, _, _, crit, _ = adfuller(rates, autolag='AIC')
H = hurst_rs(rates)
# Flag reliability
n_periods = len(rates)
reliable = half_life < n_periods * 0.5
print(f"{sym}: θ={theta:.4f}, μ={mu:.8f}, "
f"half-life={half_life:.1f} ({'RELIABLE' if reliable else 'EXCEEDS SAMPLE'}), "
f"ADF={adf_stat:.3f} (p={adf_pval:.2e}, "
f"{'PASS' if adf_pval < alpha_adj else 'FAIL'} Bonferroni), "
f"H={H:.4f} (EXPLORATORY), R²={r2:.4f}")
References#
- Uhlenbeck, G.E. & Ornstein, L.S. (1930). "On the Theory of the Brownian Motion." Physical Review, 36(5), 823–841.
- Dickey, D.A. & Fuller, W.A. (1979). "Distribution of the Estimators for Autoregressive Time Series with a Unit Root." Journal of the American Statistical Association, 74(366), 427–431.
- Hurst, H.E. (1951). "Long-term Storage Capacity of Reservoirs." Transactions of the American Society of Civil Engineers, 116, 770–799.
- Weron, R. (2002). "Estimating long-range dependence: finite sample properties and confidence intervals." Physica A, 312, 285–299.
- Teverovsky, V., Taqqu, M.S. & Willinger, W. (1999). "A critical look at Lo's modified R/S statistic." Journal of Statistical Planning and Inference, 80(1-2), 211–227.
- Alexander, C. & Kaeck, A. (2020). "Regime Determinants for Bitcoin Perpetual Futures." Digital Finance, 2, 321–342.
Venym Labs Research — Pilot study. Preliminary results subject to revision with extended data. No findings in this paper should be used for live trading without out-of-sample validation.