Edge.
Your model vs the market. The runtime kills the weak ones.
Adversarial edge detection across Kalshi and Polymarket. Each candidate runs a disprove-the-thesis search loop, gets walked through the orderbook for your size, classified into one of four edge classes, and ranked by post-slippage realized edge. What you see has already survived the kill chain.

Tycho Brahe · Uraniborg 1585 — patient measurement against the mural quadrant; the consensus said "fixed stars," he said no.
Edges that survived the loop
Updated every 15 minutes · data from Kalshi and Polymarket
What rides on every candidate
Seven fields. Adversarial search runs continuously.
Edge detection on prediction markets is not a single number. It is a tree of conditional probabilities, walked through the orderbook, under attack from a search loop trying to disprove the thesis. What survives is what surfaces.
thesisPriceProbability your causal tree assigns to the contract resolving YES.
marketPriceCurrent ask price for YES buyers (or bid for NO buyers).
edgethesisPrice − marketPrice; positive means buy, negative means short or skip.
depthAdjustedEdgeEdge after walking the orderbook for your size — what you actually realize.
edgeClassconsensus / attention / timing / risk-premium — drives the sizing rule.
adversarialResultSurvived / downgraded / killed by the disprove-the-thesis search loop.
killChainPrice gates, news patterns, time windows that auto-cancel the candidate.
Why adversarial search beats screening
Eyeballing the screener
Visible mispricing on a tab
No thesis math, no adversarial search, no depth math, no kill chain
Bloomberg news scrape
Best news terminal money buys
No probability decomposition, no contract mapping, no execution path
Generic alpha screener
Cross-asset coverage
Wrong probability calculus for binary event contracts; no settlement awareness
SimpleFunctions Edge
Thesis tree + adversarial + depth + kill
Surfaces only what survives the disprove loop and clears the depth floor
Who runs edge discovery
Six recurring shapes. Same loop, different cadence and acceptance threshold.
Discretionary PMs
Run your thesis through; see which contracts survive adversarial search before you trade.
Quant funds
Edge feed plus depth + regime + flow toxicity = drop-in features for your sizing model.
Stat-arb desks
Cross-venue timing gaps and matched-pair edges; same event, two prices.
Macro researchers
Test a macro thesis end-to-end: tree → mapped contracts → edge → execution path.
Agent-managed books
LLM agent reads context + edges, picks survivors, declares intents through MCP.
Event-driven traders
Earnings, M&A, geopolitical, regulatory — adversarial scan + matched outcome contracts.
Edge endpoints
Same shape across CLI, REST/API, and MCP adapter. Pull live edges, submit a thesis, or let an agent stream the feed.
Live edges with depth
GET /api/public/edges?minEdge=8&depth=highopenEdges by class
GET /api/public/edges?class=consensus,attentionopenPer-thesis edges
GET /api/public/edges?thesis={id}openSubmit thesis
POST /api/thesis { description, horizon, kill_conditions }openMCP — sf.edges (agent)
mcp call simplefunctions.edges { thesis: "...", min_edge: 8 }openAn edge, end-to-end
From thesis sentence to ranked candidate. Five panels.
Causal tree (sf thesis create ...)
Hormuz closure persists 85%
Oil stays above $100 91%
→ WTI peaks above $150 74% (thesis)
Kalshi:
KXWTIMAX-26DEC31-T150 YES 38¢ (market)
Edge = +36¢
Class = consensusDisprove queries:
"iran ceasefire 2026" → no path
"hormuz reopening timeline" → insurers stalled
"spr release march 2026" → ⚠ possible
n2 (oil > $100): 91% → 84%
edge: 36¢ → 29¢ — still viable
"trump iran exec order" → no signal
Result: SURVIVED · downgradedOrderbook walk · size 200
ask 39¢ × 1500
ask 40¢ × 600
ask 41¢ × 300
→ avg fill 39.4¢
slippage 0.4¢
depth at fill: $2,400
liquidity score: ★high
depthAdjustedEdge = 28.6¢Edge class: CONSENSUS · high conviction
Kelly size: 280 (half-Kelly · 25% depth cap)
Kill chain:
market above 60¢ (price gate)
news 'iran ceasefire' (news trigger)
news 'spr release > 1Mb/d'
time > 2026-09-30 (window)
Final rank: #2 of 19 surviving edgesFAQ
What counts as an edge in prediction markets?
A pricing gap between thesis-implied probability and market price that survives spread, slippage, and adversarial search. Concretely: thesisPrice − askPrice for YES buyers, walked through the orderbook for your size, debited for worst-case slippage, then run through a search loop designed to disprove the thesis. What survives is a candidate edge.
What are the four edge classes?
Consensus gaps: your model says a different probability than the crowd. Attention gaps: a sub-claim is true and observable but the market has not noticed. Timing gaps: news propagates between Kalshi and Polymarket at different speeds. Risk premiums: the market is correct in expectation but pays you to hold an unloved tail. Each gets a different sizing rule.
How does adversarial search work?
For each candidate edge, the runtime generates 4-8 search queries designed to disprove the underlying thesis claims (e.g., "iran ceasefire negotiations 2026", "hormuz strait reopening timeline", "trump executive order oil"). It scrapes credible sources, checks for evidence, and adjusts node probabilities. Edges that survive adversarial search are higher quality.
How is edge size adjusted for liquidity?
Theoretical edge minus half-spread is the textbook number. We then walk the orderbook for your intended size, score depth (high/medium/low), and emit depth-adjusted edge — the realized edge after slippage. Sizing recommendation is half-Kelly on the depth-adjusted number, capped at 25% of orderbook depth at fill price.
Cross-venue edge — what does that catch?
Same event repriced differently on Kalshi and Polymarket. Common causes: regulatory flow asymmetry (US persons on Kalshi, USDC on Polymarket), settlement risk premium, attention timing. Surfaced as matched contract pairs with the spread, both books scored, and a recommended cross-venue intent (long the cheap leg, short the rich leg).
How often does the edge feed refresh?
Heartbeat 15 minutes for the curated edge list. Sub-second refresh on orderbook depth via WebSocket /v1/ws. News-driven adversarial search runs continuously; a kill or downgrade triggers an immediate edge re-rank. Out-of-band ticks fire on FOMC, CPI, NFP, OPEC, geopolitical breaks.
What kills a candidate edge?
Adverse evidence from search loop, an explicit kill condition firing (price gate, news pattern, time window), depth collapsing below your size, spread widening past floor, or thesis-tree falsification. Each kill is logged with reason and timestamp.
Can I run my own thesis through edge discovery?
Yes. POST your thesis as plain English to /api/thesis; the runtime decomposes into a causal tree, maps to contracts, computes thesis-implied prices, runs the edge loop, and returns ranked candidates with depth + kill conditions. CLI: sf thesis create + sf edges --thesis ID.
How does this differ from a screener?
A screener filters by spread, volume, liquidity. Edge discovery filters by thesis-vs-market mispricing — you need a model. The two are complementary: screener narrows the universe, edge discovery picks the actionable subset. Most workflows run them in series.
How accurate is the edge detection?
Live calibration is published at /calibration: Brier scores by venue, category, and price bucket. Edges that survived adversarial search outperform raw thesis edges in realized P&L by ~30% (sample-size caveat — calibration is an honest dashboard, not a sales pitch).
Related surfaces
Taker strategy
Cross the spread on news-driven directional moves with depth-real edges.
Maker strategy
Quote inside the spread, skew toward conviction side, manage adverse selection.
Calibration
Live Brier scores by venue / category / price bucket — auditable accuracy.
Heartbeat engine
24/7 monitoring + thesis re-evaluation on news and orderbook ticks.
Quant trading
Microstructure features, regime detection, depth-adjusted edge.
Portfolio Autopilot
LLM agent that picks survivors and runs the loop on a schedule.
Prediction market API
CLI, REST/Data API, real-time WebSocket streams, MCP adapter.