What I built
I built an artifact-controlled prediction-market factor research platform covering 4,000 Polymarket contracts over 574 days (including resolved contracts), with fill-derived effective spread costs and price-neutral cross-sectional evaluation.
Research question and prediction-market mechanics
Question: Do behavioral biases leave predictable cross-sectional structure in prediction-market prices once clipping, return-base, skip-day, early-settlement, and stale-quote artifacts are removed?
Prediction-market prices represent bounded probabilities p ∈ (0, 1). Percentage returns explode near zero, shorting YES requires buying NO at cost (1 − p), and return distributions near 0 or 1 are mechanically skewed. Every factor is therefore evaluated both on raw probability-point changes (Δp) and price-neutral residuals (forward Δp orthogonalized on [1, p, p²]).
Capabilities demonstrated
- Eliminate five sequential backtest artifacts: price clipping, percentage-return base distortion, shared formation-day endpoint noise, early-settlement survival bias, and forward-filled stale entry quotes.
- Residualize forward probability changes on [1, p, p²] and run Fama-MacBeth regressions with Newey-West standard errors (6 lags) to separate genuine cross-sectional alpha from boundary skewness.
- Reconstruct market-specific effective spreads directly from on-chain YES/NO taker fills (median 0.4¢, p75 1.0¢).
- Test 24-hour sibling-market lead-lag across 690 multi-leg event markets and document the negative result (IC = 0.004, t = 0.3).
What the held-out evaluation supports
| Factor | Raw Δp IC (OOS) | Price-neutral IC (OOS) | Fama-MacBeth (bp/5d) | Verdict |
|---|---|---|---|---|
| PM-LIQ (illiquidity, reversed) | −0.060 (t = −6.6) | −0.072 (t = −8.2) | −67 (t = −3.5) | Genuine illiquidity discount |
| PM-VOL (volatility, reversed) | −0.067 (t = −7.0) | −0.069 (t = −6.7) | −209 (t = −6.4) | Genuine low-volatility effect |
| PM-MOM (30d momentum, reversed) | −0.054 (t = −5.5) | −0.032 (t = −3.4) | −140 (t = −8.3) | Genuine short-horizon reversal (Sports & Politics) |
| PM-TTR (time to resolution, reversed) | −0.007 (n.s.) | −0.028 (t = −3.5) | −102 (t = −4.7) | Weak but robust after price controls |
| PM-SPREAD (spread proxy) | +0.047 (t = 5.7) | +0.026 (t = 2.7) | ~0 (n.s.) | Mostly price-level boundary effect |
| PM-EXTR (price extremity) | +0.044 (t = 4.9) | +0.021 (t = 2.9) | ~0 (n.s.) | Mostly price-level boundary effect |
| PM-DRIFT (directional drift) | −0.014 (n.s.) | −0.001 (n.s.) | ~0 (n.s.) | Artifact (collapses to zero) |
v2.0 Real CLOB Panel Validation (1,810 5-Day Observations, 70 Markets, 82 Rebalancing Dates, 2024-01 to 2026-10)
Evaluating the walk-forward expanding IC-IR composite (oeq_core.expanding_ic_ir_weights with 12-period warmup, 70 out-of-sample periods) against the fixed-sign baseline on active and resolved Polymarket CLOB histories confirms both out-of-sample sign adaptation (Rank IC +0.0671, Newey-West t = +3.24 vs −0.0240, t = −0.77 for fixed signs; gross 5-day Q3–Q1 spread +0.475 pp vs −0.290 pp) and the maker-vs-taker execution boundary:
| Order Size (USD) | Q25 Taker Cost (bp) | Passive Maker Cost (bp) | Walk-Forward Gross 5d (pp) | Walk-Forward Net Taker (pp) | Walk-Forward Net Maker (pp) |
|---|---|---|---|---|---|
| $50 | 158.73 | 26.69 | +0.475 | -0.319 | +0.341 |
| $100 | 160.28 | 27.38 | +0.475 | -0.327 | +0.338 |
| $200 | 162.46 | 28.37 | +0.475 | -0.338 | +0.333 |
| $500 | 166.80 | 30.33 | +0.475 | -0.359 | +0.323 |
| $1,000 | 171.69 | 32.54 | +0.475 | -0.384 | +0.312 |
Reproduce and inspect
Run make setup, make test, and make reproduce-sample to verify the binary-token P&L math, next-bar execution rules, cache fingerprints, and published factor tables.
Evidence boundary
- Backtest association, not live execution; candidate markets trade $1.6k–$12k daily, limiting capacity to roughly $100–$200 per position.
- Daily-close fill assumptions omit intraday order-book impact.
- The 35-combination three-factor ranking and the 50/50 combined strategy weighting were chosen on the evaluation sample and are not out-of-sample results.