/polydoge/  /  journal/  /  2026-06-29-shelved
Journal Entry #008 · Post-Mortem

We shelved it. Here's the autopsy.

2026-06-29 · Peter Saddington · Experiment #018

On June 7th I wrote that the reframe was "the real shot" — the one theory under which a slow, cron-cadence market-maker could actually win: quote only the slow markets (politics, sports, econ, geopolitics) where high-frequency bots don't bother, complete the combined-cost arbitrage pair, and harvest the maker rebate. I pre-registered two gates and a date. If by ~July 7th, over a clean 14-day window, the bot wasn't completing >50% of its positions into pairs and wasn't net-positive on paper, the answer was shelve plus autopsy. No moving the goalposts.

It's June 29th. Both gates have failed, decisively, a week early. So this is the autopsy, and the cron is off.

The numbers

Gate (pre-registered 2026-06-07)TargetActualVerdict
Pair completion rate>50% of fills0% (0 pairs / 8 fills, clean window)FAIL
Cumulative paper P&L> $0 net of fees−$405.51FAIL
Rebate capture (7d)> $0$0.00FAIL
Funnel (quoteable / scanned, 7d)widen13 / 1,029 = 1.3%FAIL

Every metric that mattered pointed the same way. The dashboard's cheerful "+$814 projected" headline was always the if-every-quote-filled fantasy number — the one I explicitly told myself to ignore back in May. The honest inventory number, the one that counts only fills that actually happened, is −$405 and it was still dropping.

Root cause: you can't redeem half a pair

The whole strategy rests on one mechanic. A Polymarket binary market has a YES token and a NO token, and the protocol lets you redeem one of each — a complete pair — for exactly $1, always, regardless of how the market resolves. So if you can buy a YES for $0.39 and a NO for $0.57 at the same time, you've paid $0.96 for something worth $1.00. That 4¢ — plus the maker rebate for providing the quotes — is the edge. It is market-neutral. It does not require predicting anything. The academic literature (Othman & Sandholm, CMU) says this CTF-redemption edge is the one reason a prediction-market maker can be non-negative-EV without an information advantage.

The catch is in the words at the same time. You have to get filled on both legs. And here's what the fill log showed, every single time:

market 0xb757…  posted [email protected] + [email protected]   →  only [email protected] filled
market 0xf936…  posted [email protected] + [email protected]   →  only [email protected]  filled
market 0xa667…  posted [email protected] + [email protected]   →  only [email protected] filled
market 0x11df…  posted [email protected] + [email protected]   →  only [email protected] filled
                              … 8 fills, 0 completed pairs …
This is adverse selection, textbook
The leg that fills is the one the market is about to move against. A resting maker quote only gets hit when someone with a reason to trade crosses it — and in a slow directional market, that reason is usually information you don't have. So you reliably end up holding the side that's drifting toward zero, while your other leg sits untouched because nobody wants to sell you the winning side at your price. You get picked off on exactly one leg. Half a pair. Which can't be redeemed.

And a naked leg isn't market-neutral — it's a directional bet you never wanted. A YES bought at $0.39 in a market that resolves NO is worth $0. That's the −$405. Eight times the bot reached for a 4¢ arbitrage and instead bought a lottery ticket on the wrong number.

The June 7th reframe even shipped a fix for this — a post-fill hedge that, once a leg sits naked for 25 minutes, takes the opposite leg at the current ask to force the pair closed and cap the loss. It ran. pairs_closed_24h stayed at 0 the entire window. Either the opposite ask had already run away to where the hedge was a guaranteed loss, or the markets resolved before the hedge could complete. Capping the bleed isn't the same as having an edge. The hedge made the losses smaller; it never made them positive.

Why the slow-market thesis didn't save it

The whole point of the reframe was: avoid the HFT-dominated short crypto markets, fish where a 30-minute cron's latency doesn't matter. That part worked — we successfully stopped losing to Rust bots. But it traded one structural problem for another. The slow markets where HFTs don't compete are slow precisely because order flow is thin and lumpy. Over 7 days the scanner looked at 1,029 markets and found 13 quoteable. That's a 1.3% funnel — and the rare fills that did land were exactly the adverse-selected one-siders above. There was no version of "wait for the good markets" that produced paired flow. The opportunity isn't being executed badly; at this cadence and capital tier, it mostly isn't there.

The honest conclusion

The thing the literature warned about is the thing that killed us
Othman & Sandholm proved pure spread capture is negative-EV against informed flow — adverse selection takes it every time — and that only CTF redemption rescues it. We built the redemption machinery correctly. We just never got to use it, because completing a pair requires both legs to fill, and adverse selection guarantees only one does. The edge was real on paper and structurally unreachable in practice for a maker that re-quotes once an hour with $50 a side.

This isn't a tuning failure. There's no confidence floor to nudge, no rebate constant to fix, no category to add. The mechanism that makes the strategy work is the same mechanism the market structure prevents from firing. So PolyDoge is shelved — not paused, not "iterating," shelved. The cron is off. The forensic state (fills, killswitch log, inventory) is frozen and stays public. The workflow_dispatch trigger remains for replay, but it will not run on a schedule again without a genuinely new theory of edge — and "try the markets again but harder" is not one.

What this experiment actually bought

Two months, zero real dollars, and a clean answer to a question a lot of people are quietly burning real money on right now: can a retail-cadence bot make money as a Polymarket market-maker? Not like this. The paper harness did its entire job — it let the strategy fail honestly and cheaply, in public, with the loss measured to the cent and the cause traced to a mechanism rather than a vibe. The most valuable thing a research engine produces is a definitive no.

v3.x asked whether an AI could predict Polymarket. The answer was no — every signal was already in the price. v4.0 asked whether it could make markets on Polymarket without predicting. The answer is also no — not at this latency and size, because you can't redeem half a pair. Two honest noes beat one expensive maybe.

SHELVED · PAPER-ONLY · CRON HALTED · FORENSICS FROZEN
Experiment #018 · 2026-06-29
Final paper P&L: −$405 · Pairs completed: 0 / 8 · Rebates captured: $0 · Frozen dashboard