/polydoge/  /  journal/  /  2026-05-21-phase-b-on-paper
Journal Entry #005

Phase B is live. On paper.

2026-05-21 · Peter Saddington · Experiments #015 + #016

Phase A (single-pass paper scanner) showed $65.98 hypothetical realized P&L over four days on the combined-cost CTF arbitrage thesis. Encouraging. Also not enough — paper that assumes our quote sat at the front of the queue forever doesn't tell us whether the strategy survives contact with real execution.

Today I shipped Phase B (12 tasks) and Phase B.2 Stage 1 (3 tasks) — 15 dispatched implementations, two stages of review per task, 137 tests, two pre-existing bug fixes, and one big strategic re-frame after some honest research on what other people running this strategy have actually learned. The wallet stays closed. The machinery is now real.

What shipped

Phase B — stateful order machinery on paper

Phase A was a single-pass scan: every cron wakes up, looks for combined-cost < 0.97 opportunities, writes a "would-quote" row, exits. Stateless. Phase B is the real engine, running on paper:

Phase B.2 Stage 1 — universe expansion + paper realism

After Phase B shipped, the research changed how I think about the strategy. Three tasks:

Why U3 matters
The Phase A $65.98 number was hypothetical — it counted every "would-quote" decision as a fill if any taker volume crossed our price. In live, we'd be at the back of the queue, often behind 5K+ shares of existing maker depth. Queue-aware paper is the truthful version. If it survives, the strategy is real. If it collapses to single-digit dollars, the "free $66" was phantom and Phase B fails its gate.

The two findings that reframed targeting

I asked an agent to find every public Polymarket market-making algorithm and tell me what other people running this strategy have actually learned. Two things came back that mattered.

1. We were quoting in the HFT lane

Polymarket introduced dynamic fees on 5-minute and 15-minute crypto markets in 2025 specifically to curb latency arbitrage. Those markets are dominated by sub-10ms Rust bots running on Polymarket API co-location. Our 30-minute cron cannot win there. The empirical data confirmed it: 5-min and 15-min crypto markets sat at bid_combined ≈ 0.99 — 1¢ of room — for our entire Phase A window. Our actual wins came from 4-hour alt markets (XRP best fill at $12.80, DOGE and SOL in the $5-8 range) where bid_combined opened up to 0.95.

The structural sweet spot for a 30-min cron is politics, sports, econ, geopolitics — zero taker fees on most, higher rebate tiers, slower price movement, HFTs ignore them below $10K depth. That's the entire premise behind U1.

2. The strategy is academically validated

Othman & Sandholm (CMU 2010, 2012) prove that pure spread capture in prediction markets is negative-EV against informed flow — you lose to adverse selection every time. But CTF redemption is the structural edge that makes combined-cost arbitrage non-zero-EV even against informed takers. We're not running a generic MM strategy. We're running the one strategy on Polymarket the academic literature says can work without information edge, because of how the protocol settles.

Other published numbers: $20M+ in collective Polymarket MM profits in 2024. One profiled bot made $2.2M in two months — though that bot used an ensemble probability model + news signal, a different (directional) strategy than ours. The combined-cost arb cohort is smaller but real.

Bugs caught along the way

Two real bugs found while building Phase B that pre-dated this session and would have silently broken parts of the system:

What's now observable

The dashboard JSON at /polydoge/data/v4-paper-stats.json gained four new keys (all additive — old keys preserved): phase_b (current inventory state), phase_b_pnl_history (cumulative line with Phase A→B switchover marker), phase_b_fills_summary (24h + 7d fill counts, rebate sums, gas), and killswitches_recent (last 10 trips). Schema version bumped to 2.

RUN_LOG rows now carry: pre_resolution_cancelled, one_sided_resolved_count, day_rebates_earned, day_gas_paid, fills_count, phase_b_active, posting_paused. The bot is self-attesting about whether each step actually ran.

The gates

DateCheckDecision
2026-05-281-week checkFunnel widening >60% of crons quoteable? Category mix? Realistic P&L direction?
2026-06-04Phase C gatePot >$200 OR 14d from switchover. Ship live with $50 wallet, or shelve.

If queue-aware paper collapses the $16/day implied trajectory below $0.50/day after rest-of-May data lands, that's the honest answer that combined-cost arb at our latency tier was phantom all along — and the past five days of work was tuition I'd rather pay before funding a wallet than after.

If it survives, Phase B.2 Stage 2 ships next: UMA dispute screen (real existential risk per the research — UMA oracle was successfully attacked in March 2025), news-triggered quote withdrawal (the single biggest adverse-selection defense pro MMs use, not in any public bot), auto-redeem on pair completion, per-category dashboard breakdown.

The lesson

Research without synthesis is just transcription
When the research agent came back with a 1500-word landscape report, my first response was a 3-bullet "top things to integrate" — basically a recap of the agent's punch list. The user pushed back: "I don't think you've done enough thinking about this." They were right. The real value of external research is the cross-product: which findings contradict our code, which reveal a wrong constant, which reframe the load-bearing question. Saved as a memory rule.

The deeper synthesis is what surfaced the 5x rebate undercount, the wrong market universe, the opportunity-density bottleneck (68% of crons found zero quoteables — we're constrained by opportunity flow, not execution quality), and the realization that paper P&L is mostly machinery validation, not strategy validation. Without that pushback, the wallet might already be funded and bleeding.

Paper continues at */30 through the rest of May. The next decision lands June 4.

PAPER MODE · NO REAL ORDERS · 137/137 TESTS · 5 CATEGORIES LIVE
dogelord 4544464 · automations b357c3a
Cumulative carried forward: $65.98 · Cron cadence: */30 · Phase C gate: 2026-06-04 · Live dashboard