<?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>Forem: Сhekers</title>
    <description>The latest articles on Forem by Сhekers (@solchekers).</description>
    <link>https://forem.com/solchekers</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3894748%2Fe593fd54-67ab-4684-95b7-9009e63bdf4b.png</url>
      <title>Forem: Сhekers</title>
      <link>https://forem.com/solchekers</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/solchekers"/>
    <language>en</language>
    <item>
      <title>The Sweet Lure of Prediction Arb: How I Tried to Speedrun a Rust Monitor (and Fried My Brain)</title>
      <dc:creator>Сhekers</dc:creator>
      <pubDate>Thu, 23 Apr 2026 19:49:19 +0000</pubDate>
      <link>https://forem.com/solchekers/the-sweet-lure-of-prediction-arb-how-i-tried-to-speedrun-a-rust-monitor-and-fried-my-brain-37e0</link>
      <guid>https://forem.com/solchekers/the-sweet-lure-of-prediction-arb-how-i-tried-to-speedrun-a-rust-monitor-and-fried-my-brain-37e0</guid>
      <description>&lt;p&gt;It all started with some casual research. I was deep down the prediction market rabbit hole, trying to figure out if there was any real alpha in playing options strategies based on crypto crowd expectations.&lt;/p&gt;

&lt;p&gt;Then I spotted it: the discrepancies. You could buy &lt;em&gt;&lt;strong&gt;&amp;gt;Yes&amp;lt;&lt;/strong&gt;&lt;/em&gt; on one platform, grab &lt;em&gt;&lt;strong&gt;&amp;gt;No&amp;lt;&lt;/strong&gt;&lt;/em&gt; on another, and pocket a risk-free delta. The spreads weren't massive, but they were definitely there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Just to give you an idea, here is one of the tastiest setups from that time:&lt;/strong&gt;  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Imagine an NBA market like "New York at Chicago Winner?". On Kalshi, you could buy "&lt;strong&gt;YES&lt;/strong&gt;" for an average of 21.0¢, while on Predictfun you could scoop up the opposing "&lt;strong&gt;NO&lt;/strong&gt;" for &lt;strong&gt;22.3¢&lt;/strong&gt;. You lock in both sides for roughly &lt;strong&gt;43.3¢&lt;/strong&gt; total, guaranteeing a &lt;strong&gt;$1.00&lt;/strong&gt; payout. As you can see in the stats: you drop $47k to secure both sides, and walk away with &lt;strong&gt;$109k&lt;/strong&gt;. That's a massive &lt;strong&gt;+129%&lt;/strong&gt; net yield &lt;strong&gt;(+$61k profit)&lt;/strong&gt; after fees in a single event. A literal free money glitch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4y02gfnrtl5wojf1pih.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4y02gfnrtl5wojf1pih.jpg" alt="One of the events from that time" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That sweet, sweet arbitrage FOMO hit me hard. My inner degen whispered: "We’re building a real-time monitor. Right now." I teamed up with Claude as my AI co-pilot, delegated the boilerplate, and started slapping together a tracker. After a quick recon, I pulled together 6 platforms: &lt;strong&gt;Polymarket, Kalshi, PredictFun, Proba, Limitless, and Opinion.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5t60ljrwy5hw7kvbwlft.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5t60ljrwy5hw7kvbwlft.jpg" alt="A table with events from the unreleased website." width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The tech side was actually pretty elegant. I whipped up a lightweight Rust architecture: REST requests to scrape all active markets, and WebSockets to pump the order books straight to the frontend. Watch the tape, analyze the spread, ape in. Everything worked flawlessly... until I got to the &lt;strong&gt;matching engine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Matching the exact same real-world event across different platforms turned out to be the boss fight that completely fried my brain.&lt;/p&gt;

&lt;p&gt;I designed a 4-stage filtering pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Xref:&lt;/strong&gt; PredictFun actually provides direct links to Poly/Kalshi. Easy money. 100% accuracy right out of the gate using a BFS traversal on the relationship graph.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Normalized:&lt;/strong&gt; If the normalized question string matched 1:1 across platforms = match. This gave me about ~95% accuracy.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Fuzzy Jaccard:&lt;/strong&gt; For the stragglers. I used an inverted index to find pairs with ≥3 shared words, calculated the Jaccard similarity, and slapped on a strict Entity Guard so it wouldn't accidentally merge "France vs Brazil" with completely different events. Finally, I used Union-Find to stitch transitive chains together.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Merge:&lt;/strong&gt; The final boss-fusing markets that landed in both the Xref and Normalized buckets.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sounds like a gigabrain setup, right? But I just couldn't hit that holy grail of 98% accuracy. Edge cases and false positives kept creeping in, entirely because platforms phrase their questions so wildly differently. Honestly, my patience just ran out. I was trying to speedrun the build while hyped on FOMO, and I hit a wall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The takeaway?&lt;/strong&gt; Regex and Jaccard aren't enough. You need heavy LLM artillery for this. The real solution is classifying every single question against a strict template, deploying an AI agent to audit and read the actual &lt;code&gt;description&lt;/code&gt; rules of each market, and aggressively caching the verified matches. No big deal, just processing 2M+ variations! 😅&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I originally planned to ship this monitor to the public, but because of those inaccuracies, I tossed it in the drawer. PredictWit is on pause for now, but the idea is still sitting there, waiting for its time.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>web3</category>
      <category>arbitrage</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
