[polymarket][tsstat] realised volatility cross-sectional rank — FAIL

active
polymarkettsstatvolatilityrvolfail   Priority: 3   Source: polymarket-tsstat   Created: 2026-05-20   Updated: 2026-05-20

Hypothesis

Markets with high realised volatility over the past 24h will continue to have higher expected absolute returns (volatility clustering), so going long high-rvol markets and short low-rvol markets captures a volatility risk premium or persistence effect.

Data used

Method

$$\text{rvol_24h}t = \text{std}\left({r{t-23}, r_{t-22}, \ldots, r_t}\right), \quad r_s = \text{logit}(p_s) - \text{logit}(p_{s-1})$$ Long top quintile (highest rvol), short bottom quintile (lowest rvol) at each hour.
Transaction cost: $2\text{c}$ half-spread per new position leg, approximated in logit-space as $0.02 / (p(1-p)) \approx 0.08$ at $p=0.5$.
Net PnL = gross logit L/S spread minus TC on turnover.

Result

Metric Value
Cross-sec IC mean +0.006
Rank-IC mean +0.020
AC(1) of IC series 0.843
Effective N (AR1) 44.9
t_AR1 +0.16
Gross L/S PnL (22d) +1.64 logit units
Avg turnover 5.8% / period
TC drag −5.21 logit units
Net PnL −3.57 logit units
Ann. Sharpe (net) −4.35
Hit rate (net) 0.449

Verdict: FAIL. IC is positive but not significant (t = 0.16). Gross PnL is the only bright spot: +1.64 logit units over 22 days with low turnover (5.8%). However, transaction costs of 2c/leg eat the entire gross profit, leaving net = -3.57.

The rvol persistence idea is plausible (volatility clustering is real in other asset classes), but the signal:cost ratio is too low for hourly rebalancing.

Reproduction

source ~/.pmvenv/bin/activate
python /mnt/projects/tnt_85c10df4451042ca/prj_c7cb91b70b2f42ac/d4_tsstat.py
# See: /tmp/pm_data/d4_results_final.json, factor=rvol_24h

Failure mode / next step

  1. 2c spread is too high for this signal size. At daily rebalance (not hourly), TC drops by ~24x. If gross PnL scales with fewer trades but same signal quality, daily rebalance might break even.
  2. Signal direction is ambiguous: long high-rvol bets on continuation of active trading. But high-rvol markets may also be noisy rather than informative. Need to distinguish between rvol from price trend (directional) vs rvol from noise.
  3. Cross-sectional IC AC1 = 0.843: The rvol ranking is very persistent — same markets lead volatility day after day. This is selection-bias-like: a few markets with structural uncertainty (elections, news events) dominate the top quintile always.
  4. Next: Decompose rvol into trend-driven vs noise-driven components using realized skewness or autocorrelation of intraday returns.
Edit this Idea