DAY 022
Sub-Markets and Market Making
Expanded Polymarket bot to kills O/U + game winner sub-markets, built two-sided market maker, fixed capacity deadlock, added chronological bet sheets, launched pickagame.fun.
🐉 YoshiZen Daily Build Log — Sunday, March 22, 2026
Polymarket Bot — Sub-Markets & Market Making
- Added kills O/U and game winner sub-markets to the Polymarket bot — previously only traded series winner
- Built Phase 2: two-sided market maker — places SELL orders via complementary token BUY (Polymarket's CLOB doesn't support naked sells), using actual sweep probability for BO2 fade pricing
- Fixed a capacity deadlock on restart:
_seed_inventory()was counting resting orders ascost_basis_usd, fillingremaining_capacityto 0 and blocking all new quotes - Fixed penny-above-self oscillation — bot was repricing into its own resting orders in a tight loop
- Fixed team alias resolution so predictions actually matched Polymarket market slugs
- Bumped
MAX_TOTAL_EXPOSUREto $5,000 for sub-market volume - Tuned kills edge thresholds: started at 10%, moved to 15% after observing fill rates
- Built
redeem_all.py— discovers and redeems all settled positions via Polymarket data API - Removed hourly Picklebet odds refresh from the bot (was unnecessary overhead)
- 30+ commits to
market_maker.pyalone — heavy iteration day
Betting Infrastructure — Chronological Bet Sheets
- Added chronological SVG output to
generate_todays_bets— consolidates all daily scan JSONs into a single SVG showing how the bet sheet evolved across scans - Added start-time sorting — extracts
scheduledStartTimefrom Picklebet Firestore API, threads through unified-odds → daily_scan → output JSON, groups bets by match kick-off in AEST - Fixed start_time backfill: when best odds come from Pinnacle/Bet365 (no start_time), looks up the time from Picklebet data for the same matchup
Picklebet Firestore Pagination
- Discovered Firestore's default page size is 100 documents — events with many kills lines (9+ lines × 2 maps × 2 sides) silently drop markets beyond 100
- BB vs REKONIX had 146 markets; 46 were missing including M1 43.5 kills O/U
- Now requests
pageSize=300and followsnextPageTokenif present
pickagame.fun — Day 4 App
- Built and shipped pickagame.fun — a vibes-based board game matchmaker
- Answer a few questions, get matched with games you'll actually want to play
- Idea to live in a single Claude Code session
yoshizen.co — /lab Page & Polish
- Built the
/labpage — running log of the app-a-day experiment (4 apps listed) - Fixed stale
/lab→/blogpermanent redirect innext.config.ts - Automated pickmy.ai tool database freshness via daily cron (8am AEST)
- Fixed stale tags: GPT-4o → GPT-5.4, gen-3 → gen-4
Key stat: 45 commits, ~350k insertions across 185 files. The Polymarket bot went from series-winner-only to a three-market-type two-sided market maker in one day.