← back to logs
DAY 023

BO2 Pricing Deep Dive

Fixed fundamental BO2 pricing mismatches in Polymarket bot, added bid/position monitoring commands, restored Pinnacle kills extraction, shipped bankroll tracker improvements.

yoshi@mac-mini — build-log-day-023

🐉 YoshiZen Daily Build Log — Monday, March 23, 2026

Polymarket Bot — BO2 Pricing Fixes

The big theme today: BO2 (best-of-two) moneylines have different economics than BO3/BO5 series, and the bot wasn't accounting for that.

  • Fixed sportsbook blending for BO2 moneylines — sportsbook BO2 odds are three-way (sweep/draw/sweep) with draw-push pricing, but the bot only has two-way odds. Vig-removing two-way odds produces sweep-conditional probabilities (~29%) that are incompatible with Polymarket's draw-resolves-50-50 pricing (~51%). Blending was dragging fair values down 5-6pp and triggering spurious Phase 2 fades
  • Added sportsbook cap for BO2 map winner odds — the bot was bidding above sportsbook-implied prices because map winner caps were disabled. Added _mw_odds_cache and _get_best_map_odds_for_team() lookup. Example: Aurora vs Xtreme Gaming was bidding 59¢ when Picklebet Map 1 implied 54.1¢ — now caps to 53¢
  • Fixed BO2 moneyline fair value formula — draws resolve 50-50, not both-lose. Previous logic was underpricing both sides

Polymarket Bot — Monitoring & Operations

  • Built /pm-bids and /pm-positions slash commandsexport_bids.py runs on VPS to dump active orders with market context as JSON, pm_bids_csv.py joins with daily scan predictions to produce a CSV with model probs, vig-removed book probs, breakeven probs, and book-cap status. 538 lines of new tooling
  • Fixed size/cost in PM bids CSVo.get("size") is always 0 in CLOB order responses; the correct field is original_size with size_matched for partial fills
  • Updated CLAUDE.md twice — PM bot status, kills $25 cap, CLOB data recording plan

Pinnacle Scraper — Kills Extraction Restored

  • Restored kills O/U extraction that broke from an earlier scraper change — added td.col-ou as fallback selector alongside td.col-tt. Went from 0 kills lines captured to 604
  • Extracted per-map moneylines from Pinnacle scraper (new capability)
  • Fixed a crash where kills extraction was breaking the entire scraper pipeline

Bankroll Tracker & Daily Scan

  • Renamed to Bankroll Tracker, added bet type filters and cumulative P/L by date chart
  • Fixed blurry charts, added sortable pending table headers
  • Simplified P/L by Bet Type chart — removed confusing ROI line overlay
  • Reclassified BO2 match winner bets as handicap (-0.5) for correct categorization
  • Added bankroll-scaled stakes to daily scan — stakes now proportional to current bankroll instead of fixed amounts

Housekeeping

  • pickmy.ai tool database freshness update (cron-triggered)
  • Daily git backup

Key stat: 18 commits across 136 files. The BO2 pricing fixes alone prevented ~5-6 percentage points of systematic mispricing on every BO2 moneyline the bot quotes.