<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michael Mustopo</title>
    <description>The latest articles on DEV Community by Michael Mustopo (@michaelmustopo).</description>
    <link>https://dev.to/michaelmustopo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4021625%2F2eaf20b8-52f9-4c44-b80d-9613cc43f6de.png</url>
      <title>DEV Community: Michael Mustopo</title>
      <link>https://dev.to/michaelmustopo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/michaelmustopo"/>
    <language>en</language>
    <item>
      <title>Built a prediction-market arbitrage - no sizable arbitrage found</title>
      <dc:creator>Michael Mustopo</dc:creator>
      <pubDate>Wed, 08 Jul 2026 15:50:52 +0000</pubDate>
      <link>https://dev.to/michaelmustopo/built-a-prediction-market-arbitrage-no-sizable-arbitrage-found-36cf</link>
      <guid>https://dev.to/michaelmustopo/built-a-prediction-market-arbitrage-no-sizable-arbitrage-found-36cf</guid>
      <description>&lt;p&gt;I tried to build an arbitrage bot between Kalshi and Polymarket. Sports seemed to be the easiest because the matcher is relatively easy compared to the other markets (economy, bitcoin, weather, etc.)&lt;/p&gt;

&lt;p&gt;The matcher worked, we got about ~98% of the sports and e-sports market. But there's barely any sizable arbitrage between Kalshi and Polymarket, and what shows up closes in under 10 seconds.&lt;/p&gt;

&lt;p&gt;For the Argentina vs Egypt, the match with the disputed VAR call and Argentina's stoppage-time comeback from two goals down. Every price swing on that match, including the two around the VAR call, closed inside about 45 seconds. Total arbitrage opportunity net of fees across the whole match: $439, against $20.8 million moving through Polymarket's market alone and $13.8 million in Kalshi open interest. (&lt;a href="https://dino.markets/blog/argentina-egypt-var-price-gap" rel="noopener noreferrer"&gt;https://dino.markets/blog/argentina-egypt-var-price-gap&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;That's not an arbitrage opportunity. That's what an efficient pair of order books looks like once you finally have the tooling to watch them at the same time.&lt;/p&gt;

&lt;p&gt;I logged this properly over a full day too: 870 cross-venue price gaps in one 24-hour window, median time open about 9 seconds, 96 percent closed inside 30. (&lt;a href="https://dino.markets/blog/how-long-a-mispricing-lasts" rel="noopener noreferrer"&gt;https://dino.markets/blog/how-long-a-mispricing-lasts&lt;/a&gt;). So I shipped the Polymarket-Kalshi sports market matcher as an API instead of an arbitrage trading bot. It turned out the matcher itself was the useful part. &lt;/p&gt;

&lt;p&gt;Free REST access to the matched feed and the confirmed-arb view, 60 requests a minute, MCP server included so an agent can read it without you writing a client. &lt;/p&gt;

&lt;p&gt;Planning to open source the matching engine itself at some point. After that, either extend it to other market pairs between Kalshi and Polymarket, or look at arbitrage against traditional sportsbooks. Nothing locked in yet.&lt;/p&gt;

&lt;p&gt;Feel free to use it and tell me what you think about it. Thanks!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>marketing</category>
    </item>
  </channel>
</rss>
