Docs

Cross-venue matching

Most whales trade on Polymarket. If your live portfolio runs on Kalshi, copying one means finding the same bet on a different exchange, under a different name. This is how that is decided, and how often it refuses.

Why it is needed#

A Polymarket market and a Kalshi market can describe the same real-world event with entirely different wording, different ticker conventions and different ways of splitting the outcomes. There is no shared identifier to join on.

Getting this wrong does not produce a slightly worse fill. It produces a real order on the wrong contract. So the matcher is built to refuse.

What has to agree#

Five independent checks all have to pass. Any one failing means no match, and the copy is skipped with no venue match.

  • The market has to parse as a recognisable game, with two identifiable sides.
  • The league has to be one on the verified table. An unrecognised league is a refusal, not a guess.
  • The bet has to be a moneyline or a draw. Spreads, totals and props are out of scope.
  • Both sides have to be present on the Kalshi side for the same day.
  • The implied probabilities have to be close enough. Two markets on the same game at very different prices are more likely to be different markets than a free lunch.

Note

Team codes only partly agree between the two venues, which is why the league table is maintained by hand rather than inferred. That is also why coverage is narrower than you might expect.

When it refuses#

A refusal shows up in the auto-copy decision log. If a Kalshi portfolio is copying a Polymarket whale and almost nothing is getting through, cross-venue matching is usually why, and the honest fix is to run the portfolio on the same venue as the whale rather than to loosen anything.