📚 The Quantitative Microstructure & Cross-Market Series by FollowSM
Part 3 showed that Binance's 24/7 equity perps price the US opening gap before the bell: regressing the official gap on the perp's overnight move gives slope 1.00 and R² = 0.998$. Polymarket lists a daily "TSLA Up or Down on …" market for the same twelve tickers. Both venues price the same close, so if the perp is the better price, it should also be the better fair value for Polymarket.
This part asks whether that is tradable. Can a market maker quote Polymarket's equity books around a probability computed from the perp, and keep what it earns once fees, adverse selection, latency and a proper placebo test are included? And which of the risk tools from Parts 1–3 (session-aware σ, the early exit, the toxicity breaker) help a market maker rather than a hedger?
We used 1,537 Polymarket market-nights across 12 equity perps (January–September 2026) for the study, and 1,313 of them for a fill-by-fill backtest that replays every historical taker order against our quotes.
TL;DR
- The perp is the better probability in every session. When the perp-implied and Polymarket probabilities differ by more than 5¢, the market resolves on the perp's side 62.5% of the time during regular hours (n = 4,651) and 55–58% overnight, post-market and on weekends. Pre-market is a coin flip (51%).
- There is no multi-minute lead. Both venues move in the same minute (correlation 0.42 in regular hours, 0.13 off-hours). What remains at a one-minute lag is small (0.02–0.03). After a large perp move, Polymarket drifts a further 1.4¢ toward it over the next hour.
- In sample, quoting around the perp's fair value made money; quoting around Polymarket's own mid lost it. Same fills model, same nights (January–September): +$6.2k (Sharpe 1.7) against −$46.5k. With a 4¢ half-spread: +$7.9k (Sharpe 2.6).
- It survives placebos. All 20 seeds that quote off another night's perp path lose between −$18k and −$31k.
- Speed matters in seconds, not minutes. Quote updates at 250 ms and 1 s perform identically; at 5 s P&L falls 22%; at 60 s the book loses $19k to faster takers.
- Most of the Shield doesn't transfer. Session-aware σ was worth doing: wall-clock σ earned $0.6k; minutes-to-close σ earned $6.2k. But a perp delta hedge cost $26k–$83k and never paid for itself. The one-hour early exit lowered the tail by 15% and cost almost the entire edge. The toxicity breaker barely mattered.
- It is small and it faded. The best variant made ~$42 a trading day across 11 books. Almost all of it came before mid-June.
- It did not survive out of sample. We re-ran the unchanged backtest on the 11 trading days after the study ended (29 September – 13 October, 120 market-nights). The fair-value quoter lost $2,956 (−8.6¢ per filled share), more than quoting Polymarket's own mid (−$1,377), and 18 of 20 placebo seeds did at least as well. Read the in-sample result as history, not as a strategy.
Code repositories: tick-microstructure-research (tmr tradfi pm-fetch, tmr tradfi pm-analyze) and dynamic-inventory-hedger (research/backtest_confluence.py). Everything comes from public data.
Part 1. The Lead-Lag Discovery (and the One-Minute Lead That Wasn't)
The Data
For each Up/Down market we pulled every taker fill from Polymarket's public data API (wallet, transaction hash, size, price, side) and the CLOB's 1-minute price history, then laid both onto the perp's minute grid from the previous official close to the resolving close. These markets are small. The median night trades $1.0k–$3.0k of taker volume for single stocks and $29k for SPY. The median taker order is 15 shares (about $7).
A Trap Worth Describing
Our first pass showed the perp leading Polymarket by exactly one minute: correlation 0.41 at lag −1 and 0.01 at lag 0 during regular hours. It looked like a clean latency edge. It was a timestamp bug.
CLOB history points are stamped 3–15 seconds after each minute boundary, not on it. Taking "the last point before the minute ends" therefore reads the price from ~56 seconds earlier than the perp's close for that minute. That builds a one-minute lag into every row. Near-zero correlation at lag 0 next to a strong peak at exactly one step is the signature of an alignment error, not of a market. The fix is to sample the first history point after each minute ends; a regression test in the repo now pins this.
What the Aligned Data Says
Fig 1. Cross-correlation of Polymarket probability changes and perp returns. Negative lag = perp moves first.
| 1-minute correlation | perp first (−1) | same minute (0) | Polymarket first (+1) |
|---|---|---|---|
| regular hours (298k minutes) | 0.024 | 0.417 | 0.014 |
| off-hours (2.2M minutes) | 0.032 | 0.125 | 0.009 |
Price discovery is shared inside the minute, with a small tilt toward the perp. Event studies give the same picture:
- After a large off-hours perp move (|5 min| ≥ the symbol's 99th percentile, n = 5,268), Polymarket moves 3.0¢ in the 30 minutes up to and including the move, then drifts a further 1.4¢ [1.1, 1.7] toward it over the next 60 minutes. The adjustment is partial and slow, not delayed.
- After a Polymarket jump of ≥ 10¢ in 5 minutes (n = 6,383), the perp had already moved 10.5 bps in the preceding 30 minutes. It adds only 1.2 bps [−0.6, +3.0] afterwards, and 2 of 20 random-timing placebos did as well.
- "Whale sweeps" are rare in markets this thin. Using a $1,000 floor (which always binds), there were 159 sweeps. The perp's 60-minute move after them is +5.5 bps [−0.4, +12.3], and 3 of 20 placebos matched it.
Who Is Right When They Disagree
A perp-implied probability for an Up/Down market is a digital option: P(Up) = Φ(ln(S/K)/σ), with S the perp de-biased by its basis at the prior close, K the prior official close, and σ the standard deviation of ln(close/S) at the same time of day over the symbol's previous 20 nights. Every σ is point-in-time. We sampled every 30 minutes of every night:
| Session | Samples | Brier Perp | Brier Polymarket | Perp Side Right When They Differ > 5¢ |
|---|---|---|---|---|
| Weekend / Holiday | 25,408 | 0.250 | 0.255 | 58.3% [57.4–59.2] |
| Overnight | 21,654 | 0.230 | 0.232 | 56.6% [55.2–58.0] |
| Pre-market | 14,959 | 0.213 | 0.215 | 51.4% [49.8–53.0] |
| Regular Hours | 12,348 | 0.140 | 0.142 | 62.5% [61.1–63.9] |
| Post-market | 10,120 | 0.247 | 0.249 | 55.6% [53.3–58.0] |

Fig 2. Left: how often the market resolved on the perp's side when the two disagreed. Right: Brier difference with 95% bootstrap intervals; every session is above zero.
The Brier gaps are small (0.001–0.005) because both venues are mostly right about the easy nights. The disagreements are where the money is.
Two side findings:
- Off-hours Polymarket flow does not predict the part of the gap the perp misses: Polymarket's overnight probability change and its taker imbalance are negatively related to it (ρ −0.14 and −0.10). Polymarket follows the perp, including its overshoots.
- In 21 earnings EPS-beat markets, Polymarket was on the right side an hour before the release 18 times, but it had already priced that in. The median time for it to reach 90% on the outcome after the release was zero minutes.
Part 2. The Fair-Value Engine
The quoter needs three inputs, all available in real time:
S = last perp trade / (1 + basis at the prior 16:00 close) Binance aggTrade stream
K = prior official close known all night
σ² = variance of ln(close / S) still to come estimated from previous nights
FV = Φ( (ln(S/K) − σ²/2) / σ ) the hedger's own digital model
The only hard part is σ. We tested three versions of it:
-
Wall-clock σ, the crypto default:
natr_15mspread evenly over the remaining time. - Session σ, from Part 3: per-minute variances by session plus an opening-jump term, summed to the close.
- Minutes-to-close σ: mean ln(C/S)² at the same distance from the close over the previous 20 nights, pooled ±15 minutes.
Part 3 found session σ was the biggest lever for a hedger. For a quoter it helped (+$3.4k against +$0.6k for wall-clock σ), but it still left edge on the table in regular hours, exactly when Polymarket prices off the live stock. Measuring the remaining variance directly at each minutes-to-close doubled the result. It is also what the calibration table above uses. We chose it after seeing the session-σ backtest, so it is judged below by placebos and a split-half test, not by its total alone.
Quotes are FV ± half-spread, skewed by inventory. A fair-value quote never leans past Polymarket's last mid ± 0.5¢, so the book always rests as a maker.
Part 3. The Backtest, with Placebo Control
How Fills Work
Every historical taker order is replayed against our quotes. An order fills us only if it traded strictly through our price (its worst print below our bid or above our ask), at our price, up to 100 shares per order. An order that only touched our price never fills us: we assume we are last in the queue. Quotes are recomputed for every order using information from 250 ms before it. Makers pay no Polymarket fee. The finance-category taker fee (shares × 0.04 × p(1−p)) applies only when we flatten. The 25% maker rebate is paid pro rata from a daily pool and is not credited. Perp hedges pay 5 bps and walk the Binance tape (Part 3's IOC model). The book is fail-closed: it posts no quote without a perp print in the last 60 s or a Polymarket mid, and no hedge without a perp bar.
The inventory cap is 500 shares. The mean peak inventory was about 250 shares (~$125).
Results: 1,313 Market-Nights, 11 Symbols, 147 Trading Days
| strategy | P&L | Sharpe (daily, ×√252) | ES 5% per night | ¢ per filled share | share of taker volume |
|---|---|---|---|---|---|
| naive: quote Polymarket's own mid | −$46,495 | −14.5 | −$307 | −2.89 | 22.5% |
| fair value, wall-clock σ | +$649 | 0.2 | −$320 | +0.08 | 13.3% |
| fair value, session σ | +$3,445 | 0.9 | −$217 | +0.41 | 14.9% |
| fair value, minutes-to-close σ | +$6,211 | 1.7 | −$239 | +0.87 | 12.3% |
| … with a 4¢ half-spread | +$7,912 | 2.6 | −$222 | +1.70 | 8.0% |
Quoting around your own venue's mid is the classic losing market maker. Takers trade through you when they know better, and in these books they usually know the perp. Moving the centre to the perp's fair value changes the sign.

Fig 3. Cumulative P&L. Shaded bands: 20 placebo seeds for the full Shield + Sword system (purple) and for the minutes-to-close fair value (green).
Placebos
Each placebo seed quotes with the same strategy, but its "perp" is another night's perp path (same symbol, aligned on time to the close). That gives realistic, perp-shaped noise that carries no information about tonight. On the 1,174 nights that had enough donor history:
| system | real | 20 placebo seeds | seeds ≥ real |
|---|---|---|---|
| minutes-to-close fair value | +$5,263 | −$30,818 to −$18,015 | 0 / 20 |
| full Shield + Sword (session σ, hedged) | −$38,527 | −$72,999 to −$67,679 | 0 / 20 |
| off-hours only, flat by 09:25 | −$1,039 | −$12,873 to −$9,356 | 0 / 20 |
The information in the perp is real in every configuration. Whether a configuration makes money is a separate question.
Speed
| Quote Update Latency | 250 ms | 1 s | 5 s | 60 s |
|---|---|---|---|---|
| Minutes-to-close fair value | +$6,211 | +$6,211 | +$4,865 | −$19,355 |
The edge lives in the seconds after the perp moves. A book that refreshes once a minute is the one being picked off. Someone on Polymarket is already reacting to the perp inside a minute.
The Shield, Component by Component
| Added to the Fair-Value Book | P&L | ES 5% | P&L Std per night | Verdict |
|---|---|---|---|---|
| Nothing (minutes-to-close σ) | +$6,211 | −$239 | $115 | Benchmark |
| + Exit 1 h early + toxicity breaker | +$107 | −$204 | $90 | Tail −15%, edge gone |
| + Perp delta hedge ($5k band) | −$26,235 | −$252 | $77 | Hedge cost $26.3k |
| Full system with session σ, $500 band | −$43,612 | −$282 | $75 | Hedge cost $41.2k |
| Full system with wall-clock σ | −$91,593 | −$496 | $126 | Hedge cost $82.8k |
- Session-aware σ: yes. In both the quoter and the hedge it is the difference between losing and not losing. Wall-clock σ doubled the hedge cost, as it did in Part 3.
- Early exit: a risk dial, not free. Flattening an hour before resolution at mid ∓ 2¢ plus the taker fee cost $5.7k. It removed the expiry jump from the tail, but it gave back almost everything the book earned. It was right for Part 2's 1,000-share directional position. For a small, two-sided book it is optional.
- Perp delta hedge: no. A market maker's inventory is small, flips sign, and sits near the money, where a digital's delta is largest. Each rebalance pays 5 bps on a notional far larger than the position. Hedging cost 3–6¢ per filled share against a 0.9¢ edge, and it did not improve the 5% ES.
- Toxicity breaker: harmless, rarely binding. Pulling quotes while either side of the ±1% book is more than 2.5× the other (re-armed after 5 minutes below 2.0) tripped in about 3% of TSLA's minutes and changed P&L by +$0.7k in the session-σ system.
Stability
| Strategy | Before 11 June | After 11 June |
|---|---|---|
| Minutes-to-close fair value | +$6,105 | +$106 |
| … 4¢ half-spread | +$6,061 | +$1,851 |
| Session σ fair value | +$2,534 | +$911 |
Both halves are positive, but the second is much weaker. Either competition arrived or the edge was partly luck of the period. We can't tell which from seven months.
Out of Sample
After writing the above, we ran the same code, unchanged, on the nights after the study ended. The original period reproduces every number in this article exactly, so the only difference is the dates.
| Strategy | 28 Jan – 28 Sep (In-Sample) | 29 Sep – 13 Oct (Out-of-Sample) |
|---|---|---|
| Minutes-to-close fair value | +$6,211 (+0.87¢ / share) | −$2,956 (−8.6¢ / share) |
| … 4¢ half-spread | +$7,912 | −$2,074 |
| Session σ fair value | +$3,445 | −$2,476 |
| Quote Polymarket's own mid | −$46,495 | −$1,377 |
| Market-nights | 1,313 | 120 |
| Minutes-to-Close Fair Value vs Placebos | Real | 20 Placebo Seeds | Seeds ≥ Real |
|---|---|---|---|
| In-sample | +$5,263 | −$30,818 to −$18,015 | 0 / 20 |
| Out-of-sample | −$2,956 | −$3,359 to +$207 | 18 / 20 |
Eleven trading days is a short sample, but the sign flipped and the placebo test failed. Every fair-value variant lost, and lost more than quoting Polymarket's own mid. Together with the fade after June, the most likely reading is that faster quoters now price these books off the perp, and the edge we measured belonged to a period when nobody did.
Part 4. Production Architecture
What a live version would look like, and which parts FollowSM provides today. Given the out-of-sample result, treat it as a reference architecture to test rather than execute:
Binance equity perp aggTrades ──► Fair Value Engine: Φ((ln(S/K) − σ²/2)/σ), σ by minutes-to-close
│
Polymarket CLOB book + trades ──► Quoter: FV ± half-spread, inventory skew, post-only,
│ never past Polymarket mid ± 0.5¢
Binance ±1% depth ratio ────────► Circuit Breaker: pull quotes > 2.5, re-arm after 5 min < 2.0
-
/ws/v1/toxicity: the Shield. FollowSM streams VPIN,ob_toxicity_1pct(ask/bid notional within ±1%), volume z-scores and sweep detection for crypto pairs. The breaker in this backtest uses the sameob_toxicity_1pctdefinition, computed locally from Binance's equity-perp depth, because the stream does not cover equity perps yet. Part 3 showed which session-aware adjustments those signals need first. -
/ws/v1/confluence: the Sword, today. The confluence engine joins Polymarket probability changes (prob_delta_15m), whale sweeps and book toxicity for crypto markets. It emits a risk ladder for makers (WIDEN_SPREAD_1_5X,WIDEN_SPREAD_2X,HALT_MAKER_QUOTES), gated bydirection_confidence, and flags cross-market divergence. It is disabled by default, and it is a defensive signal, not a fair-value feed. It does not price equity Up/Down markets. The fair-value engine above is a reference design you build on top of a Binance feed; the code is in the backtest.
Caveats
- Fills are modelled, not traded. Strictly-through fills with us last in the queue are conservative on queue position. However, the counterfactual is one-sided: our resting quote might have changed taker behavior.
- Selection. Minutes-to-close σ and the off-hours variant were added after looking at initial results. Placebos and the split-half test were the in-sample check, while out-of-sample validation provided the final test.
- Capacity. $6k–$8k over seven months across 11 books represents ~$42–$54 per trading day, with ~$125 of peak inventory per book. Capacity is bounded by $1k–$3k of nightly taker flow per stock. Unmodelled maker rebates could add up to roughly a quarter of a cent per share.
- Resolution source. These markets resolve on Pyth's 1-minute close. We checked against official Yahoo closes and skipped 7 markets with discrepancies.
- QQQ had insufficient perp data history to include in the backtest.
Reproduce
git clone https://github.com/Follow-SM/tick-microstructure-research
cd tick-microstructure-research && pip install -e ".[parquet]"
tmr tradfi fetch # Binance archives + Yahoo (Part 3)
tmr tradfi pm-fetch # Polymarket markets, taker fills, 1-minute history
tmr tradfi pm-analyze # research/POLYMARKET_REPORT.md, results_polymarket.json, figures
git clone https://github.com/Follow-SM/dynamic-inventory-hedger
cd dynamic-inventory-hedger && pip install -e ".[tradfi]"
python research/backtest_confluence.py
Summary Findings across the Series
- The information is real; the edge didn't last. A Binance perp is a better probability for Polymarket's equity markets than Polymarket's own price in every session. A quoter monetised that at seconds-level latency from January to mid-June, faded after, and lost money out of sample. Information advantages vanish as execution latency across market participants compresses.
- Keep the parts of the Shield that fit the position. Session-aware σ (or time-to-close variance) matters for every strategy in this series. The early exit and perp delta hedge were effective for large directional positions (Parts 2–3) but unsuited for small, two-sided market-making books.
- Check timestamps before confirming leads. A lag that appears at exactly one sampling step with zero correlation at step zero indicates alignment join errors rather than market structure dynamics.
Resources & Repositories
- Dynamic Inventory Hedger: github.com/Follow-SM/dynamic-inventory-hedger
- Microstructure Research Toolkit: github.com/Follow-SM/tick-microstructure-research
-
Python SDK:
pip install followsm-sdk -
TypeScript SDK:
npm install @followsm/sdk - API Documentation & Keys: follow-sm.com/pricing
FollowSM streams VPIN, 1% book toxicity, sweep detection and smart-money flow for crypto markets today. This study shows what session-aware versions of those signals need before they can be trusted on equity perps.
👉 Get your API key at follow-sm.com/pricing
Academic References
- Glosten, L. R., & Milgrom, P. R. (1985). Bid, ask and transaction prices in a specialist market with heterogeneously informed traders. Journal of Financial Economics, 14(1), 71-100.
- Hasbrouck, J. (1995). One security, many markets: Determining the contributions to price discovery. The Journal of Finance, 50(4), 1175-1199.
- Brier, G. W. (1950). Verification of forecasts expressed in terms of probability. Monthly Weather Review, 78(1), 1-3.
Disclaimer: Prediction markets and perpetual futures carry substantial risk of capital loss. Content is provided for quantitative research purposes only and does not constitute financial advice.















