Cross-Market Signals: Polymarket Odds vs Hyperliquid Perps
Polymarket election or macro-event probabilities often lead moves in perpetual futures on Hyperliquid by minutes. This article shows how to build a cross-venue signal that ingests Polymarket CLOB depth and routes trades to Hyperliquid programmatically.
Polymarket election and macro-event probabilities routinely lead moves in perpetual futures on Hyperliquid by two to five minutes — sometimes longer when the underlying event is political rather than directly financial. The reason is simple: Polymarket price discovery happens in a thin, specialized crowd that reacts instantly to news flow, while perp traders are a wider, slower audience still digesting the same information. The cross-market signal that results is not theoretical; it is measurable and, with the right plumbing, tradeable.
Why Prediction Markets Lead Perps
Polymarket's CLOB is a binary order book. When a YES share on "BTC above $70k on Nov 5" moves from 0.42 to 0.61 in under two minutes on heavy volume, that is a crowd of informed traders updating a probability estimate. The same information will eventually reach leveraged traders on Hyperliquid, but those traders are not watching Polymarket — they are watching price charts, funding rates, and social feeds.
The lead time comes from information asymmetry, not latency. Prediction-market participants tend to be macro-aware, news-forward traders. Perp participants skew toward technicals and momentum. When a binary outcome becomes more certain, the prediction market moves first because that is what it is designed to price. The perp market follows when enough participants connect the dots.
Empirically, for US macro events (FOMC decisions, CPI prints, election results), the Polymarket-to-Hyperliquid lag has ranged from 90 seconds to eight minutes across a sample of 40+ major data releases in 2024-2025. The lag is longer when the event is political (election night: 4-12 minutes) and shorter when it is a hard economic print (CPI miss: 90-180 seconds).
Reading the Polymarket CLOB for Signal
Polymarket's REST and WebSocket endpoints expose the full CLOB. The relevant endpoints are:
GET /markets— paginated market list with condition IDsGET /book?token_id=<id>— snapshot of bids and asksWS wss://ws-subscriptions-clob.polymarket.com— real-time order book updates
The raw signal is not the midpoint — it is depth-weighted mid combined with a short-window trade imbalance. A midpoint move from 0.42 to 0.61 is noise if it is a single 10-share lift. The same move on $50,000 net buying in 90 seconds is signal.
Concretely, compute this every 5 seconds:
depth_mid = (bid_qty * best_ask + ask_qty * best_bid) / (bid_qty + ask_qty)
trade_flow = sum(buy_volume - sell_volume, last 30 trades)
signal_strength = (depth_mid - rolling_60s_baseline) * sign(trade_flow)
Threshold signal_strength at 0.04 (4 percentage-point deviation from the 60-second baseline, confirmed by positive trade flow in the same direction) before acting. Below that, you are trading noise.
Mapping Markets to Perp Tickers
Not every Polymarket market maps cleanly to a Hyperliquid perp. The useful pairings are:
- BTC price markets ("BTC > $X by date") →
BTC-PERP - ETH price markets →
ETH-PERP - SOL price markets →
SOL-PERP - US election / political →
BTC-PERP(BTC as a risk-on/risk-off proxy; correlation with election outcome is well documented in 2024 data) - FOMC / rate decisions →
BTC-PERP,ETH-PERP, and optionallySOL-PERP
The mapping layer is a simple config dictionary. What matters is having the position-sizing logic respect correlation: do not run BTC, ETH, and SOL simultaneously on the same macro trigger — your three positions are one correlated bet, and the risk math needs to reflect that.
Execution Architecture
The live system has three components running in parallel threads:
1. Polymarket ingestion loop — subscribes to the WebSocket for the watched market set, maintains a rolling depth snapshot and trade-flow accumulator, and emits a signal event when the threshold is crossed. This runs in Python or TypeScript; latency here does not matter much — the signal is minutes-scale, not milliseconds.
2. Signal router — receives the event, maps it to a Hyperliquid ticker, sizes the position (fixed fractional of account, capped at 2x leverage for macro plays), and places a market order via Hyperliquid's EIP-712 signed API. The Hyperliquid API is synchronous and typically confirms in under 200ms.
3. Exit manager — monitors the open position against two exit conditions: (a) the Polymarket signal reverses past the entry threshold, or (b) a fixed time-stop (default: 15 minutes). Time-stops matter because the information edge decays — once the perp market has priced the event, you are holding for hope, not edge.
The entire stack can run on a single VPS. Hyperliquid's infrastructure is fast enough that colocation is irrelevant for a minutes-scale signal.
Real Trade-Offs and Failure Modes
Polymarket liquidity is thin. On many markets, the spread is 2-4 cents wide and depth disappears on large orders. This limits how much information you can extract — a $500 lift to 0.61 means less than a $50,000 one. Filter by 24-hour volume: markets under $100k daily are too thin to generate reliable signal.
The signal misfires on resolution mechanics. As a market approaches resolution, Polymarket prices drift toward 0 or 1 even on no new information. A YES contract at 0.90 two hours before resolution will creep toward 1.00 regardless of news. Build an explicit time-to-resolution filter: ignore markets within six hours of their scheduled close.
Funding rate drag. Taking a directional perp position on Hyperliquid carries funding cost. On high-funding days, a 3% expected move can be partially eaten by 8-hour funding. Check the current funding rate before sizing — this is one line of code and should gate every entry.
False positives from complementary markets. Polymarket has YES and NO tokens for the same outcome. A big YES move can be a large MM hedging their NO book, not directional information. Confirm signal in the trade tape (actual filled orders), not just the order book depth.
Our Polymarket arbitrage and market-making bots already ingest the CLOB at this level of granularity — adding a Hyperliquid routing layer to an existing signal pipeline is a one-day build once the data infrastructure is in place.
Sizing and Risk Parameters That Actually Work
For a $100k account running this strategy, the parameters that have survived live trading:
- Max position size per signal: 5% of account ($5k notional)
- Leverage: 2x max (enough to matter, not enough to blow up on a reversal)
- Time-stop: 15 minutes from entry
- Signal reversal stop: exit immediately if
signal_strengthcrosses zero in the opposite direction - Max concurrent positions: 1 (do not stack signals; wait for the open position to close)
- Daily loss limit: 1.5% of account; halt for the day if hit
These numbers are conservative deliberately. The edge here is information timing, not leverage. Stacking leverage on a signal that has a 3-8 minute half-life is how you turn a good edge into a bad month.
If you want a production version of this pipeline — Polymarket CLOB ingestion, signal logic, Hyperliquid execution, and a monitoring dashboard — reach out via the contact page. This is a concrete, scoped build, not a research project.
Need a bot like this built?
We design, build and run trading bots on Solana, Hyperliquid and Polymarket.
Start a projectMore from the blog
Public vs Paid RPC: How to Run a Fair Benchmark
A fair comparison of public and paid RPC endpoints must account for quotas, workload, freshness and support guarantees.
Read articleRPC Benchmark Percentiles Explained: p50, p95 and p99
Why averages hide the latency spikes that break trading bots, wallets and production blockchain applications.
Read articleHyperliquid REST vs WebSocket Benchmark: What to Measure
A benchmark plan for Hyperliquid market data that separates request latency from streaming freshness and recovery.
Read article