Rossst.03
348 posts

Rossst.03
@Rossst_03
Where prediction markets meet AI. I hunt mispriced odds on Polymarket. @zscdao member





Why the Polymarket vs Kalshi 15-minute "arbitrage" doesn't work It looks like the easiest money in crypto. Bitcoin "Up or Down" markets run on both Polymarket and Kalshi over the same short windows. Every so often you can buy Up on one side and Down on the other, and the two legs cost less than $1.00 combined. One of them has to win, so you pocket the difference. Free money. People have built bots that do nothing but scan for this. Open-source ones sit on GitHub: pull the Polymarket price, pull the Kalshi price, flag every time Up plus Down costs under a dollar. On paper it's a risk-free spread. It isn't. And the reason is the one thing almost nobody reads: the resolution spec. Here's the trap in a single line. You are not buying two sides of the same coin. You are buying two different bets that happen to look identical. Same window, different rulers Polymarket resolves its 15-minute BTC markets off the Chainlink BTC/USD data stream. It takes the price at the start of the window (the "Price to Beat"), the price at the end, and resolves Up if the end is greater than or equal to the start. A clean point-to-point reading from one oracle. Kalshi resolves its crypto markets off the CF Benchmarks index, and it does not take a single instant. It averages the last 60 seconds of that index at expiration. Different feed, and a 60-second average instead of an end-of-window print. So you already have two problems stacked on top of each other. First, different price source. Chainlink's stream and CF Benchmarks' index are not the same number at any given second. They drift apart constantly, by a few dollars, by a few basis points. In a 15-minute window the entire move is often only a few dollars. When the gap between the feeds is the same size as the move itself, they routinely disagree on direction. Second, a print versus an average. Polymarket asks "where did the last tick land." Kalshi asks "what was the average of the last minute." Near a flat close those are different questions. The instant can tick down while the minute averages up. There's even a third crack: the reference prices don't match. Polymarket's Price to Beat is captured from Chainlink at the window open. Kalshi sets its own strike off its own index. The arb bots literally have to compare "Poly strike" against "Kalshi strike" because they aren't the same number. You're not even measuring from the same starting line. What actually happens to your "free" spread The window closes nearly flat. Kalshi's 60-second average ends a hair above its strike and settles Up. Polymarket's Chainlink end-print lands a hair below its Price to Beat and settles Down. Your Up leg loses. Your Down leg loses. Both legs lose. The "risk-free" spread paid out zero. That's the exact failure mode: Kalshi closes Up, Polymarket closes Down, on what looked like the same event. It wasn't the same event. Why the spread existed at all The market wasn't being dumb. The sub-$1.00 total wasn't a mispricing you were sharp enough to spot. It was the market pricing the basis risk between two different oracles. Those few cents of "edge" were your compensation for the risk that the feeds disagree, which is precisely what happens. You weren't collecting free money. You were paid a tiny premium to take a real risk, and the risk showed up. Then stack the costs. Two legs means two sets of fees and two sets of slippage. Even when the directions agree, the round-trip cost often eats the spread you thought you locked. The actual lesson A cross-venue arbitrage is only risk-free when both sides resolve off the identical source, at the identical timestamp, under the identical rule. Change any one of those and you no longer hold a hedge. You hold a bet on the tracking error between two settlement methods. On a 15-minute crypto window, that tracking error is the same order of magnitude as the move you're betting on. Which makes the "arb" a coinflip with fees stapled to it. The edge was never the spread. The edge is knowing why the spread is there. Read the resolution rules before you read the prices.





Why the Polymarket vs Kalshi 15-minute "arbitrage" doesn't work It looks like the easiest money in crypto. Bitcoin "Up or Down" markets run on both Polymarket and Kalshi over the same short windows. Every so often you can buy Up on one side and Down on the other, and the two legs cost less than $1.00 combined. One of them has to win, so you pocket the difference. Free money. People have built bots that do nothing but scan for this. Open-source ones sit on GitHub: pull the Polymarket price, pull the Kalshi price, flag every time Up plus Down costs under a dollar. On paper it's a risk-free spread. It isn't. And the reason is the one thing almost nobody reads: the resolution spec. Here's the trap in a single line. You are not buying two sides of the same coin. You are buying two different bets that happen to look identical. Same window, different rulers Polymarket resolves its 15-minute BTC markets off the Chainlink BTC/USD data stream. It takes the price at the start of the window (the "Price to Beat"), the price at the end, and resolves Up if the end is greater than or equal to the start. A clean point-to-point reading from one oracle. Kalshi resolves its crypto markets off the CF Benchmarks index, and it does not take a single instant. It averages the last 60 seconds of that index at expiration. Different feed, and a 60-second average instead of an end-of-window print. So you already have two problems stacked on top of each other. First, different price source. Chainlink's stream and CF Benchmarks' index are not the same number at any given second. They drift apart constantly, by a few dollars, by a few basis points. In a 15-minute window the entire move is often only a few dollars. When the gap between the feeds is the same size as the move itself, they routinely disagree on direction. Second, a print versus an average. Polymarket asks "where did the last tick land." Kalshi asks "what was the average of the last minute." Near a flat close those are different questions. The instant can tick down while the minute averages up. There's even a third crack: the reference prices don't match. Polymarket's Price to Beat is captured from Chainlink at the window open. Kalshi sets its own strike off its own index. The arb bots literally have to compare "Poly strike" against "Kalshi strike" because they aren't the same number. You're not even measuring from the same starting line. What actually happens to your "free" spread The window closes nearly flat. Kalshi's 60-second average ends a hair above its strike and settles Up. Polymarket's Chainlink end-print lands a hair below its Price to Beat and settles Down. Your Up leg loses. Your Down leg loses. Both legs lose. The "risk-free" spread paid out zero. That's the exact failure mode: Kalshi closes Up, Polymarket closes Down, on what looked like the same event. It wasn't the same event. Why the spread existed at all The market wasn't being dumb. The sub-$1.00 total wasn't a mispricing you were sharp enough to spot. It was the market pricing the basis risk between two different oracles. Those few cents of "edge" were your compensation for the risk that the feeds disagree, which is precisely what happens. You weren't collecting free money. You were paid a tiny premium to take a real risk, and the risk showed up. Then stack the costs. Two legs means two sets of fees and two sets of slippage. Even when the directions agree, the round-trip cost often eats the spread you thought you locked. The actual lesson A cross-venue arbitrage is only risk-free when both sides resolve off the identical source, at the identical timestamp, under the identical rule. Change any one of those and you no longer hold a hedge. You hold a bet on the tracking error between two settlement methods. On a 15-minute crypto window, that tracking error is the same order of magnitude as the move you're betting on. Which makes the "arb" a coinflip with fees stapled to it. The edge was never the spread. The edge is knowing why the spread is there. Read the resolution rules before you read the prices.









Most unpredictable match of the day is one people are talking about people miss this detail before major tournaments Croatia and Belgium already have their World Cup tickets for them, tonight is not really about winning tbh I understand why both teams seem more interested in learning whether their ideas under pressure in game befor wc, than chasing a result that is why for Me the draw stands out more than either side winning







