Engineering
Matching a bet on Polymarket to the same bet on Polymarket US
Updated 5 October 2026 · written after this went wrong in production
Copying a trader across two exchanges is a market-identification problem, not a trading problem. Get it wrong and you place real money on a different question — which we did, and which cost us roughly $22 before we caught it.
The two slug schemes
International Polymarket names a market in a single slug. Polymarket US splits the same game into separate instruments, each with a prefix:
| US prefix | Instrument | Example |
|---|---|---|
aec | Game winner (two-way) | aec-nfl-sea-was-2026-09-27 |
atc | Three-way soccer, one market per outcome | atc-epl-liv-ful-2026-09-12-liv |
asc | Spread | asc-nfl-sea-was-2026-09-27-neg-7pt5 |
tsc | Total | tsc-nfl-kc-mia-2026-09-27-total-45pt5 |
Matching therefore means parsing league, both team codes and the date out of one slug, then finding the game on the other exchange and picking the right instrument and side within it.
The trap that cost us money: periods
A single NFL game on Polymarket US lists spreads and totals for the full game and for each half, each quarter, each team individually, and in esports each map. They share the prefix and often the exact line:
| Slug | Line | What it really is |
|---|---|---|
asc-nfl-sea-was-…-neg-7pt5 | −7.5 | Full game — the one we want |
asc-nfl-sea-was-…-1h-neg-7pt5 | −7.5 | First half only |
asc-nfl-sea-was-…-1q-neg-7pt5 | −7.5 | First quarter only |
tsc-nfl-…-tt1h-phi-6pt5 | 6.5 | One team's first-half total |
Match on league, teams, date and line alone — which is the obvious implementation — and a full-game bet silently lands on a first-half market. In our logs the tell was unmistakable: the trader paid 79¢ for the Rams to cover, and the copy filled at 3¢.
The fix is a whitelist, not a blacklist. Only
pos|neg-N spreads and total-N, tot-N or bare
N totals are eligible to match a full-game bet. Everything else is excluded before
matching begins. That removed about half of all listed spread and total markets from consideration.
A price gap is a mismatch alarm
Two markets that are genuinely the same question trade at close to the same price. So the price difference is itself a check. Across every real copy we placed:
| Our fill versus the trader's price | Copies | Won | Price implied |
|---|---|---|---|
| Within 5¢ | 529 | 46% | 48% |
| 5–12¢ cheaper | 9 | 44% | 39% |
| More than 12¢ cheaper | 11 | 18% | 34% |
A "bargain" 12¢ below what the trader paid won 18% of the time against an implied 34%. Those were not bargains; they were different bets. Copies now stop when the US price sits more than 10¢ below the trader's.
Dates, kick-off times and team codes
- Dates disagree. A Thursday night game is dated the 10th on one exchange and the 11th on the other, because one uses local time and the other UTC. Matching allows ±1 day and then confirms with the scheduled start time, rejecting anything more than three hours apart.
- Team codes disagree. The Rams are
laron one side andlaon the other. Codes are compared with a compatibility table plus full-name scoring, never string equality. - Spread sides are propositions. "Phillies −1.5" and "Astros +1.5" are the same market seen from two ends. Each US spread market is phrased from one team's perspective, so the copy has to decide whether the trader's proposition is the long or short side of it.
When in doubt, skip
Every rule here resolves ambiguity by declining the copy and recording why. A skipped bet costs an opportunity; a wrong match costs money on a question nobody chose. Futures and season-outright markets, where automatic matching is least reliable, are never matched automatically — they wait for a human to confirm the pairing once.
Built from a month of doing this wrong
Taildraft is in private testing. Leave your email and we'll tell you when accounts open.
Join the waitlist Why wallet-based tools can't reach Polymarket US