Prediction markets are an order-book problem now

The discourse around prediction markets has been stuck on the wrong question for about a year.

One camp says event contracts are dressed-up gambling and should be banned. The other says informed trading is what makes prices accurate, so insiders are arguably a feature. Both arguments skip the part I actually find interesting, which is the part that happens inside the order book. If campaign staff, pollsters, or congressional aides can trade ten or thirty minutes before everyone else sees the same number, the question is not whether prediction markets are good. The question is what the book did before the public timestamp.

That is a microstructure question, and it has a real answer.

NPR ran a story last week claiming campaign staffers were using unreleased polling to make money on their own candidates. Reuters followed with a piece about Kalshi and Polymarket flagging a surge in suspicious activity as volumes climbed. The CFTC was unusually direct about all of this in its prediction-markets advisory: event contracts are not exempt from the fraud and information-misuse rules that govern other regulated markets.

I am not interested in how to front-run a poll. I am interested in how an exchange can tell when somebody else did.

Event contracts are tiny derivatives with very big information incentives

A binary event contract is mechanically simple. There is a question, like "will Candidate A win the primary?" There is a YES contract and a NO contract. If YES resolves true, it pays out one dollar. If not, it expires worthless. A market price of 0.52 says the market is implying roughly a 52% probability, before you account for spread, fees, capital costs, and all the usual mess.

That simplicity is partly why these products are so addictive to think about. You do not need a discounted cash flow model or any theory of equity risk premia. You just stare at the price and read it as a probability.

But simplicity hides the structure underneath. A prediction market is not just a probability widget. It is a limit order book with resting bids, resting asks, market makers, cancellations, queue priority, and traders who know different things at different times. Prices can move in ways that have nothing to do with anyone actually trading aggressively. Market makers can update quotes without much volume. Liquidity providers can pull, which widens the spread and means the next print moves the price more than it should.

A pre-release move does not need to look like a giant trade. It often looks like asks being lifted patiently, ask depth thinning out, bids stepping up a tick, and quote updates that drag the mid before any single "smoking gun" print appears.

So the surveillance question is not "did the price move?" It is whether price, signed flow, book imbalance, account concentration, and event timing all line up in a way you cannot explain with public information.

That is a very different question from whether prediction markets are good or bad.

The MNPI analogy works, mostly

In equities, the insider-trading conversation usually circles around material non-public information. The legal tests are messy, but the intuition is simple: if you have important information that is not public, and a duty not to use it for personal trading, you have a problem.

Prediction markets create a version of the same issue with a different asset. The trader is not buying a stock before earnings. They are buying a YES contract before a poll, a policy decision, a video upload, a personnel announcement, a sports lineup, or a government action becomes public. The edge is not "I am better at forecasting." The edge is "I know the answer path before the public timestamp."

The CFTC's whistleblower guidance already says as much. Section 6(c)(1) of the Commodity Exchange Act and Regulation 180.1 prohibit trading on MNPI in breach of a pre-existing duty, or using information obtained through fraud or deception. The CFTC's 2026 advisory reminded designated contract markets that their self-regulatory obligations around audit trails and surveillance apply to event contracts too. Kalshi is a CFTC-regulated DCM. Polymarket's structure is different, but the integrity problem is the same: somebody with privileged access can monetize that access against outsiders.

The annoying part is that prediction markets make the philosophy less clean than equities does. A purist can argue that informed trading is the whole point. If the pollster trades on the poll they have not released yet, their trading pushes the price closer to truth, and in narrow forecasting terms that is correct.

But the argument leaves something out. A market can become more accurate and more corrupt at the same time. If a staffer trades before a poll release, the price might be a better forecast at minute zero, but the profit came from counterparties who did not have the same access, using information the staffer had a duty to protect. The signal improves by laundering institutional access into personal P&L. That is a market design question, not a forecasting one.

A small synthetic leak, with two scenarios

To make this concrete I built a tiny simulator. There is a binary YES contract on a political outcome. The public market thinks it sits in the low fifties. A poll is publicly released at minute zero. After the release, fair value moves into the high sixties. Two scenarios run on top of that:

  1. A benign public release: the market mostly moves once the poll is public.
  2. A leak: informed YES buying starts thirty minutes before release and walks the price up before anyone outside the venue can see the poll.

The goal is not realism. The goal is to show what a surveillance system would actually have to look at.

YES contract mid price · benign vs leak

50¢55¢60¢65¢70¢-120-90-60-300+30+60surveillance window (−30 to 0)
leakage · drifts upward inside the window51.7¢
benign · jumps at release52.2¢

In the leak scenario, the price does not jump at zero. It starts climbing inside the surveillance window, then keeps climbing through the release. The benign scenario is flat until the release line, then catches up in a hurry. Both end at roughly the same place. That symmetry is exactly why "the price moved a lot today" is a useless signal on its own.

The order flow side is even more obvious.

Cumulative signed YES volume · the “where the buying came from” chart

-120-90-60-300+30+60surveillance windowpublic release

Signed flow is roughly flat for two hours, then turns into a steep, monotonic climb starting around t = −30. Persistent same-side aggression before the public timestamp is the part that should not look like normal trading.

Signed flow is essentially zero for two hours, then turns into a steady, one-sided climb starting around t = −30. There is no "trade of the day" you can point at. There is a sustained pattern of someone repeatedly hitting the offer, which is the kind of footprint that does not normally exist in an event contract during a slow afternoon.

If you zoom into the top of the book at specific minutes, the picture sharpens further:

Top-of-book depth · leakage scenario

t = -60 min · mid 51.5¢ · spread 3¢
50¢
2,683
49¢
4,469
48¢
5,485
47¢
5,528
46¢
5,439
bids
2,803
53¢
4,326
54¢
4,113
55¢
7,795
56¢
5,254
57¢
asks
top-of-book imbalance-0.02
pre-release. asks thin, bids step up, mid drifts before the public timestamp.

By minute −5, top-of-book asks are noticeably thinner than bids. By minute −1, the book is bid-heavy and the mid has already moved most of the way to where the public release will eventually take it. The release at zero is closer to confirmation than discovery.

In a real exchange, that view would be tied back to account identifiers, device fingerprints, funding relationships, cross-venue wallet links, and known affiliations with the campaign or pollster. That join is where the legal case begins. Without it, you have an anomalous book and nothing else.

A simple pre-announcement detector

The detector that runs against this data uses four features.

The first is whether the pre-release price moved more than baseline volatility would predict, in the eventual direction of the public release:

price_z = direction * pre_move / (sigma5 * sqrt(window_minutes / 5))

The second is whether signed order flow during the window was abnormal versus rolling thirty-minute baselines:

orderflow_z = direction * (pre_signed_flow - baseline_flow_mean) / baseline_flow_sigma

The third is whether the top of book got unusually imbalanced toward the eventual direction:

imbalance_z = direction * (pre_imbalance - baseline_imbalance_mean) / baseline_imbalance_sigma

The fourth is how much of the total price discovery happened before the public timestamp:

early_move_share = aligned_pre_move / abs(total_release_move)

The four features get combined into a bounded suspiciousness score. Each component is clamped to [0, 1], then weighted: 0.35 on the price z-score, 0.30 on order-flow z, 0.20 on imbalance z, 0.15 on early-move share. Anything above 0.60 flags for human review.

Suspiciousness score · feature breakdown

leakage
price z-score
order-flow z
imbalance z
early-move share
composite score
threshold for triage = 0.60
benign public release
price z-score
order-flow z
imbalance z
early-move share
composite score
threshold for triage = 0.60

Weighted bounded score: 0.35·zprice + 0.30·zflow + 0.20·zimb+ 0.15·earlyShare, each clamped into [0, 1]. Not a calibrated probability — a triage rule that says “look harder”.

The leak scenario flags at 0.77. The benign scenario lands at 0.05. The benign run actually has a negative order-flow z because random walk noise leaned the other way for a while, which is fine. What matters is that the score cleanly separates "this looks like normal random pre-release noise" from "this looks like someone bought the answer."

To be very clear, this is not a probability and it is not a verdict. It is a triage rule. It tells a human "this market is worth looking at," not "this account is guilty." Almost every useful surveillance system in finance is structured this way, because the alternative is either flooding humans with noise or letting actual cases through.

Why this is harder than equities surveillance

Corporate insider trading has a relatively clean perimeter. There is an issuer, with executives, employees, bankers, lawyers, board members, and vendors. The graph of who might have material information is messy, but at least it is shaped like a known graph.

Event contracts blow up the perimeter.

For an election contract, non-public information could sit with campaigns, pollsters, consultants, donors, ad buyers, party committees, field staff, or vendors running internal dashboards. For a government-policy contract, it could sit with agency staff, congressional offices, contractors, or journalists under embargo. For a sports contract, it could sit with players, coaches, medical staff, league officials, or data-feed operators. For a creator or platform contract, it could sit with editors, producers, moderation staff, or the people who actually schedule the upload.

Same trade, different access graph, different risk. A surveillance system that only knows what happened in the book is doing about half the job. It needs to know who placed the trade, and what plausible information path they had into the event, before the anomaly turns into anything actionable.

This is why the "we ban insider trading" line in a Terms of Service is mostly decorative unless the platform also has restricted-party lists, source-of-information tags, and a real way to attribute trades to humans.

Latency makes everything fuzzier

The hardest cases are not cartoon-villain insider cases. They are latency cases.

A poll might be "public" once it is on a campaign website, but not yet indexed by search. It might appear in a PDF before the social post lands. It might be available to reporters under embargo. It might hit one API endpoint before the frontend updates. It might leak through a vendor dashboard, an email list, or a cached screenshot that gets passed around.

Now layer on multiple venues. Kalshi moves first because it has more informed traders for this contract. Polymarket follows because arbitrage bots lift its stale quotes. A third venue updates because operators are watching the first two. If your detector only looks at one venue, the second one will look suspicious even though it is just reacting to a public cross-venue signal.

A serious detector needs timestamp provenance for every release: first public URL, first social post, first newswire ping, first aggregator update, first cross-venue move, first abnormal cancellation. Without that, you cannot separate actual misuse from normal information diffusion. "Poll released at noon" is not granular enough to defend a flag, and it is definitely not granular enough to defend a non-flag.

This is also why surveillance built around large trades is not enough. In a limit-order-book market, price discovery can happen almost entirely through quote updates, with relatively little volume crossed. A market maker who is suddenly less willing to offer at 53¢ is moving the price as effectively as anyone who is hitting offers, just less visibly.

What a real surveillance stack should look like

The architecture is boring, which is fine, because most useful infrastructure is boring.

event registry
  -> public timestamp service
  -> quote/trade/order-book capture (full depth)
  -> account + access graph
  -> feature store
  -> anomaly detector
  -> case management
  -> exchange discipline / regulator referral

The event registry is the part most platforms underrate. You cannot detect pre-announcement movement without a calendar of scheduled releases, embargo rules, and first-public timestamps. For polls, that means scheduled releases, pollster uploads, campaign press emails, media embargoes, and aggregator updates. For policy contracts, it means agency calendars and known release windows. None of that is exciting infrastructure to build, but without it the detector is just a rolling z-score with no event to align against.

The capture layer needs full depth, not just last trade. Quote updates matter, cancellations matter, and the rate at which liquidity disappears matters.

The account graph is where the legal work actually starts. A pre-release move by some random market maker is not the same thing as a pre-release move by a campaign staffer or a poll vendor. Same trade, very different risk. You need the join, or you do not have a case.

The features should include things like:

FeatureWhy it matters
Pre-release price z-scoreQuantifies abnormal movement vs baseline volatility.
Directional signed-flow zSeparates passive quote drift from aggressive informed buying.
Book imbalancePicks up ask depletion, bids stepping up, and liquidity-provider retreat.
Early move shareHow much of the eventual move happened before the public timestamp.
Account concentrationOne informed account is more suspicious than diffuse public updating.
Cross-venue lead-lagDistinguishes local leakage from reaction to another venue.
Access relationshipConverts a market anomaly into a possible MNPI case.
Repeat patternFinds accounts that keep winning around timestamped releases.

The last two features are the difference between analytics and enforcement. A suspicious move with no access relationship is a market anomaly, and you might just be looking at a clever discretionary trader. A suspicious move by someone with a duty to protect the information is a potential insider-trading case. Those two things should not get treated identically, and right now in some venues they basically are.

The policy answer is narrower than people think

The reflexive policy move is "ban prediction markets." That is mostly noise. The actual move is restricted lists and blackout windows.

If you work for a campaign, you should not be trading contracts on that campaign. If you work for a pollster, you should not trade contracts affected by your own unreleased polls. If you work in government on a specific policy decision, you should not trade on that decision. If you write for a media outlet that is under embargo, you should not trade ahead of publication. None of this is exotic. It is the same compliance logic financial firms already run for their employees.

The hard part is operationalizing it across event categories where the "issuer" is not a company. That means platforms need restricted-party registries, source-of-information tagging, attestation flows for vendors and partners, and account-level controls that can actually enforce the lists. It also means better release hygiene. For scheduled events, knowing the expected release timestamp and watching the pre-window. For contracts tied to private or semi-private sources, requiring attestations about who is restricted. For ambiguous events, logging the resolution path and being willing to freeze or review a market when the information environment is obviously compromised.

None of this is fun work, and most of it does not get a launch tweet. It is also what happens when a product wants to be treated like a financial exchange instead of a sports book.

So what is the actual takeaway

Prediction markets do not need more arguments about whether insiders make prices more accurate. They need order-book snapshots, signed flow, quote updates, public timestamp provenance, account identity, access graphs, and case management. They need to look at the market before the announcement, instead of debating the announcement once it is over.

Letting insiders trade can improve forecasts. It can also turn privileged access into a personal payout funded by less-informed counterparties. Both can be true at the same time. Treating that tension as a market design problem rather than a vibes problem is how grown-up exchanges have handled equities for decades, and it is the move event-contract platforms will eventually have to make if they want to be regulated like exchanges rather than like games of skill.

I do not think prediction markets are going away. They are too useful, and too much money is now flowing through them. But every time a campaign staffer makes thirty grand on a poll their boss has not released yet, the case for shutting the whole thing down gets a little louder. The fix is exchange-grade surveillance, and it is mostly engineering. Somebody just has to build it.


Sources