PR&R / Trader Report
Home / Reports / 88M
Polymarket / On-chain

88M

On-chain analysis of Polymarket trader 88M. Active over 31 days with 2,525 trades across 328 markets, netting +$18,030 at +2.7% ROI.

Published Oct 06, 2026 ~9 min read By PR&R Research View on Polymarket →
Volume traded
$845.4K
31-day window
Realized return
+2.7%
Cash-flow accounting
Top category share
90%
Tennis of total volume
Both-sides rate
1.5%
Single-sided book
// 001 / Analysis

The portfolio shape, and where the edge appears to come from.

Wallet activity across 31 days, every fill mapped, profile traced.

This is a tennis specialist with a sharp directional bet on individual matches, running what looks like a live-betting accumulation strategy across ATP, WTA, and ITF events worldwide. Over 31 days, the wallet touched 328 markets across 321 events, put $592,703 through the BUY side, and closed the month with a total account P&L of $18,030 (trading P&L of $18,527 from the cash ledger, plus $1,844 in maker and taker rebates). That is a 16.4% return on time-weighted capital of $123,864 over one calendar month.

One important data quality note upfront: the pipeline's two independent P&L calculations differ by 12.6% on trading P&L ($16,187 from the strategy layer vs $18,527 from the cash ledger). The cash ledger is authoritative per the pipeline's own flag, and we use it throughout. The figures are directionally consistent; the gap is a reconciliation artifact, not a signal that the wallet lost money.

PUBLISH CAVEATThe strategy-layer and cash-ledger P&L computations differ by 12.6%. The cash ledger is marked authoritative. All headline figures in this report use the cash-ledger value of +$18,527 trading P&L and +$20,370 total P&L.

The portfolio shape

Tennis dominates absolutely. Of 2,525 total trades, 2,092 are in Tennis (83%), covering ATP, WTA, ITF, and Grand Slam markets alike. Soccer contributes 166 trades and is the highest-ROI category at +51.7% on $25,082 of buy volume, delivering $12,976 in trade-level P&L. The "Other" bucket (254 buys, likely a mix of tennis prop markets and miscellaneous sports) adds another $1,192.

The trade size distribution is highly skewed. The median fill is $44.73, but the mean is $334.79, and the P95 is $1,456. The top 5% of fills carry 51.5% of all capital. This is not a flat-bet bot -- it is a conviction-weighted accumulator that places small initial probes and then hammers the book when it likes the price. The single largest fill in the window is $22,988. Looking at the CSV directly, you can see the pattern: the wallet opens with a 1,000-share taker fill at market price (usually $0.46-$0.55), then immediately fans out across the orderbook with 10-20 maker fills in the $0.35-$0.50 zone, absorbing all available liquidity at the price it wants.

Entry price concentration is clear in the data: the $0.50-$0.60 band holds 583 trades and $212,547 of capital, generating +$32,243 in P&L at +15.2% ROI. The $0.60-$0.70 band is the highest-ROI zone at +31.1% on $81,448 of capital. Below $0.30, the wallet loses money consistently across all bands. The strategy appears disciplined about entry price -- it is overwhelmingly buying mild favorites and near-coin-flip matches, not loading up on longshots.

The edge mechanism: This wallet identifies tennis matches where the Polymarket CLOB is pricing one player underweight relative to the bettor's own model -- then absorbs all available liquidity in the target price zone through a fan-out of maker fills, supplemented by taker sweeps when the book is thick enough to fill in bulk.

Where the edge appears to come from

The soccer P&L of +$12,976 on $25,082 of buy volume is the clearest single-category signal. That is a 51.7% ROI on one vertical using 151 trades. Looking at the top soccer market in the data -- "Will BV Borussia 09 Dortmund win on 2026-09-08?" -- the wallet put $15,679 in volume through 3 trades and extracted $4,370 in P&L. The Dortmund Champions League win market is a binary outcome with observable pre-game odds in the traditional sports betting market. If the Polymarket book was pricing Dortmund at 0.55 while the real market implied 0.70+, that is a straightforward mispricing to exploit.

The tennis side is similar but with far more markets. The Korea Open market against Jelena Ostapenko (85 trades, $31,909 volume, +$8,136 P&L, 68/68 wins on resolved trades) shows the key structural tell: 68 consecutive wins on the same market. That is not variance. That is a wallet that found a market the CLOB was mispricing -- Ostapenko at a persistent discount -- and accumulated steadily until the book dried up or the match concluded.

The worst markets are equally informative. Four of the ten worst markets show 0 wins on all resolved trades: Hangzhou's Vukic-Jacquet (16 trades, -$9,787), Ankara's Sierra-Dilek (14 trades, -$9,038), Korea Open's Ibragimova-Ku (5 trades, -$8,301), Ankara's Pridankina-Zaytseva (29 trades, -$8,211). These are not small speculative bets -- they represent $35,000+ of concentrated directional positions that resolved zero. The sizing on losers is indistinguishable from the sizing on winners, which suggests the model had similar confidence in positions that resolved very differently.

WORST WEEKWeek 39 (Sep 21-27) produced -$20,528 in trade P&L. September 23 alone was -$30,483, the single worst day in the window. The Vukic-Jacquet, Sierra-Dilek, and Ibragimova-Ku losses all resolved in this window. Three 0-for-N market losses in 72 hours.

What you can copy

The mechanical structure is replicable. The wallet's entry pattern is consistent: a taker sweep to open the position (confirming the price is available), then a cascade of maker orders working the book at progressively better prices to accumulate size. You can see this in the Antofagasta: Mateus De Carvalho Cardoso Alves sequence in the CSV -- 40+ fills in 45 seconds at $0.40, all maker, all zero-fee, absorbing every offer at that price. The mechanics require a reliable feed of tennis match odds from a reference market (Pinnacle, Betfair) and a bot that can walk the CLOB with maker orders efficiently.

The $0.50-$0.70 entry zone is where the bulk of profitable trading lives (+$57,613 in P&L across both bands on $293,996 of capital). Restricting entries to this zone and skipping the sub-$0.30 zone, which consistently loses money, would preserve most of the edge while reducing the variance from low-probability longshots.

What you probably can't copy

The model. The wallet's performance across 328+ markets implies access to a real-time tennis odds feed -- likely Betfair exchange, Pinnacle, or both -- and a model that converts that feed into fair-value estimates per match. Without that feed, you are just guessing which side of a match to buy. The 41% overall win rate sounds low, but it is consistent with buying 40-65 cent favorites in a market where you are getting the right price: you win less often than you think because the market was not as mispriced as your model suggested, but the times you are right, the payout reflects a larger edge.

The week-to-week variance is also formidable. The wallet went from +$34,623 in a 15-day rolling window on September 18 to -$29,376 on October 1. A replicator without the underlying model has no way to distinguish a bad week (variance) from model decay. The tennis reference-odds model is the non-portable component. The execution mechanics are portable.

// 002 / Figure

Cumulative P/L over the window.

The line is daily cumulative net P/L. Mouse along it for daily detail. The dashed grey trace, when present, is cumulative BUY notional deployed.

// 003 / Reverse-engineering report

Reverse-engineering report

Every fill mapped, the asymmetric profile traced, the math behind the edge.

Wallet: 0xd9dde44ddeababae222bf7aec96c85cbdab6b525 Window: 2026-09-06 to 2026-10-06 (31 calendar days, 31 active) Universe: 2,525 trades (2,269 buys, 256 sells) across 328 markets / 321 events, $845,361 gross turnover Account P&L: +$18,030 (verified) -- trading P&L $18,527 (cash ledger, authoritative) + $1,844 in maker/taker rebates

P/L methodology: Cash-flow accounting. Trading P&L is measured from the cash ledger: USDC in from SELLs and redemptions minus USDC out on BUYs. The strategy-layer and cash-ledger P&L differ by 12.6% ($16,187 vs $18,527); the pipeline marks the cash ledger as authoritative and this report uses it. The strategy-layer figure is referenced where noted for consistency with the per-market breakdowns derived from it. The window starts after the wallet's first activity, so positions carried in are not valued -- all figures are window-local.

The Punchline

This is a tennis-specialist directional bettor with a live-odds reference model, deploying $500K+ of BUY notional per month across ATP, WTA, and ITF match markets worldwide. The strategy is simple in structure and hard to replicate: find a match where Polymarket's CLOB is pricing one player below the fair-value implied by a reference sportsbook (Betfair, Pinnacle, or equivalent), then absorb all available maker liquidity in the target price zone and hold to settlement. The edge is not speed, not spread capture, not copy-trading. It is a real-world odds model disagreeing with Polymarket's crowd, and the wallet backing that disagreement with size.

The total account P&L of +$18,030 across 31 days on peak capital at risk of $258,906 represents a return of 7.9% on peak capital and 16.4% on time-weighted capital. Annualized on the time-weighted basis that is approximately 194% per year. The margin on turnover is 2.4% -- thin, consistent with a model that is right directionally more often than it is dramatically right on price.

The strategy has a structural weakness that is visible in the weekly data: concentration risk on individual match outcomes. When three or four high-conviction positions resolve against the model in the same week (as happened the week of September 21), the drawdown is severe -- week 39 was -$20,528 and the worst single day (September 23) was -$30,483. The recovery from that trough to a positive month required the subsequent weeks to perform. The model did recover: weeks 40 and 41 partial were +$15,248 and +$7,762 on rolling 7-day basis by October 4.

What He Trades

Tennis is the core universe. The category breakdown:

Category Trades Buy Volume Win Rate Trade P&L ROI
Tennis 2,092 $533,114 41.8% +$2,516 +0.5%
Soccer 166 $25,082 37.7% +$12,976 +51.7%
Other 267 $34,507 37.8% +$1,192 +3.5%

The trade-level Tennis ROI of +0.5% looks thin, but the category-level P&L does not capture the full picture because many Tennis positions are held across multiple sessions with SELLs mixed in. The cash-ledger total trading P&L of +$18,527 is spread across Tennis, Soccer, and Other.

The Soccer vertical is the clearest signal of model accuracy. With only 151 resolved buys and a 37.7% win rate, Soccer delivers +$12,976 in P&L -- implying the wallet is buying Soccer outcomes at a substantial discount to their true probability. The two largest Soccer wins visible in the data are the Dortmund UCL match ($4,370 on $15,679 volume) and the Spread: BV Borussia 09 Dortmund -1.5 ($4,332 on $9,660 volume), both on September 8. These are correlated positions -- different markets on the same match -- suggesting the wallet takes multiple angle bets on a single event it has high conviction on.

Within Tennis, the wallet covers:

  • ATP main draw (Hangzhou, Chengdu, Shanghai, Korea Open)
  • WTA main draw (China Open, Korea Open, Singapore Open)
  • ITF / Challenger events (Plovdiv, Jingshan, Antofagasta, Ljubljana, Saint Tropez)
  • Grand Slam rounds (US Open WTA bracket markets)
  • Match totals and set handicap props (Match O/U 21.5, Set Handicap -1.5)

The willingness to trade ITF Challengers and small ITF futures (Phan Thiet, Wuning, Biella) is notable. These are thin markets with less efficient pricing than ATP Masters events -- the CLOB crowd has less information, and a reference-odds model has more room to find mispricing.

The Order of Operations -- One Market, Trade by Trade

Korea Open: Jelena Ostapenko vs Anastasia Zakharova (wta-ostapen-zakharo-2026-09-20) is the clearest illustration of the accumulation strategy in action: 85 trades, $31,909 total volume, 68 resolved BUYs, 68 wins, +$8,136 P&L.

The structure is visible from the market data. The wallet bought Ostapenko across 68 separate fills, all one-sided (0% both-sides rate on this market), and every single resolved buy won. This is not a surprise if Ostapenko was a strong favorite -- she is a former world number 5 -- but the wallet's willingness to accumulate 68 fills suggests it was absorbing the entire available maker book across multiple price levels, walking up from the best available price as liquidity was consumed.

For a simpler single-session example, consider Braga: Oleksii Krutykh vs Francisco Rocha (atp-krutykh-roch-2026-10-04), fully visible in the CSV:

Time (UTC) Action Price Shares USDC Running
14:45:19 BUY (maker) $0.54 1,057.57 $571.09 -$571
14:45:22 BUY (maker) $0.54 52.19 $28.18 -$599
14:45:22 BUY (maker) $0.54 4,733.39 $2,556.03 -$3,155
14:45:53 BUY (maker) $0.54 3.22 $1.74 -$3,157
14:45:55 BUY (maker) $0.54 1,095.65 $591.65 -$3,749
14:45:55 BUY (maker) $0.54 2.50 $1.35 -$3,750
14:45:55 BUY (maker) $0.54 1,600.00 $864.00 -$4,614
14:45:56 BUY (maker) $0.54 1,412.03 $762.50 -$5,376
14:45:56 BUY (maker) $0.54 43.43 $23.45 -$5,400
Settlement -- $1.00 ~10,000 shares +$10,000 +$4,600

Walk-through: The wallet opens with a cluster of 9 fills between 14:45:19 and 14:45:56 -- 37 seconds -- all at exactly $0.54, all maker, all zero-fee. Total deployment: $5,400 into Krutykh at $0.54 implied probability. Krutykh wins. Settlement pays $1.00 per share. Net: +$4,600 on $5,400 deployed = +85.2% in a single match. The trade-log records 9 fills, all maker, suggesting the wallet had standing limit orders sitting at $0.54 that got filled as natural sell-side flow came in.

This is not latency arbitrage. The fills span 37 seconds, not milliseconds. This is a limit-order accumulation: post maker bids at the target price, let them fill naturally, hold to settlement.

Why It Works -- The Math

The structural edge is a reference odds arbitrage. If Betfair/Pinnacle is pricing Krutykh at $0.64 implied and Polymarket's CLOB is offering $0.54, the expected value per dollar is:

At Polymarket entry price $0.54:
  EV = p_win * (1.00 / 0.54 - 1) - (1 - p_win) * 1
  If p_win = 0.64 (reference market):
  EV = 0.64 * (0.852) - 0.36 * 1
     = 0.545 - 0.36
     = +$0.185 per dollar bet = +18.5% EV

At fair price $0.64 (no edge):
  EV = 0.64 * (0.5625) - 0.36 * 1
     = 0.360 - 0.360
     = $0.00

The wallet's realized win rate of 41.1% overall on resolved buys, combined with the average entry price distribution (heavy concentration in $0.50-$0.70 zone), implies the model is generating positive edge per trade on average. The overall trade-level P&L of +$18,527 on $587,781 of resolved buy notional corresponds to approximately a 3.2% positive edge across all trades on the cash-ledger basis.

The maker fill rate of 83.5% of fills (by count) is critical to the economics. Maker fills are zero-fee on Polymarket in the fee structure observed here. The wallet paid $10,244 in fees total, but those fees are concentrated in the 416 taker fills. The 2,109 maker fills cost nothing. Accumulating size via maker orders eliminates the primary frictional cost of this strategy.

Fee structure:
  Total fees paid:       $10,244
  Maker fills:           2,109 (83.5%)  -> $0 fee
  Taker fills:             416 (16.5%)  -> all $10,244 in fees
  Avg fee per taker fill:  $24.62
  Implied taker rate:      ~5.0% (consistent with Polymarket standard)

Maker rebates received:  $1,040
Taker rebates received:    $804
Total incentive income:  $1,844

Maker rebates partially offset the cost of the taker sweeps used to open positions. The net fee cost after rebates is approximately $8,400 on $845,361 of gross turnover -- under 1% of volume.

Phase 1 -- Trader Profile

Metric Value
Total trades 2,525 (2,269 BUY, 256 SELL)
Buy turnover $592,703
Sell turnover $252,658
Gross turnover $845,361
Unique markets 328
Unique events 321
Active days 31 of 31
Peak capital at risk $258,906
Time-weighted capital $123,864

Trade size distribution:

Stat Value
Median $44.73
Mean $334.80
P95 $1,456
P99 $4,859
Max $22,988
Top 5% share of capital 51.5%

The size distribution is classic power-law: the top 5% of fills carry half the capital, and the P99 is 109x the median. This is a conviction-scaling model, not a flat-bet bot. High-conviction positions are loaded heavily; speculative probes are small.

Inter-trade gap:

  • Median: 3.0 seconds
  • P90: 891 seconds (14.9 minutes)
  • 58.9% of fills under 10 seconds
  • 74.3% under 60 seconds

The sub-10-second cluster is the intra-position fan-out: when the wallet enters a position, it fires 5-20 maker fills in rapid succession. The gap then stretches to minutes as it waits for the next signal. This is semi-automated at entry, passive at accumulation: the entry burst is bot-fired, the subsequent maker fills are absorbed passively as sell flow hits the book.

Activity by hour (UTC):

Hour Trades Win Rate P&L
0 87 87.4% -$7
1 34 78.6% +$4,923
2 44 75.0% +$4,673
3 53 51.4% +$7,965
4 65 57.9% +$13,296
5 64 5.1% -$8,101
6 132 35.7% -$3,504
7 238 15.0% -$10,576
8 192 39.2% +$1,067
9 161 30.7% -$5,354
10 218 52.3% +$1,012
11 214 27.1% -$1,612
12 190 59.3% +$9,758
13 174 40.3% +$349
14 150 23.6% -$7,039
15 78 6.8% -$5,660
16 34 35.3% +$9,631
17 14 78.6% +$1,420
18 19 57.9% +$1,219
19 31 55.2% +$2,515
20 17 100.0% +$2,158
21 135 50.0% -$586
22 137 52.8% -$5,152
23 44 66.7% +$4,289

The worst-P&L hours (5, 7, 14, 15 UTC) are the four hours the pipeline identifies as "worst hours" for the hour-exclusion filter. Hour 7 UTC is notable: 238 trades, 15.0% win rate, -$10,576 P&L. That is the peak volume hour yet the worst win-rate hour in the book. This does not mean the strategy is wrong at 07:00 UTC -- it likely reflects the composition of matches being played at that time, not a strategic error. Many Asian Challenger matches complete early morning UTC.

The wallet is active 24 hours a day, 31 days out of 31. There is no sleep window. This is a fully automated system or a team running shifts. Comparing to SirMartingale's hard 23:00-02:00 UTC gap, this wallet has no such gap -- it trades at 1 UTC, 3 UTC, 4 UTC all with positive P&L.

Phase 2 -- Core Strategy Identification

Both-sides participation: 1.5% (5 of 328 markets)

This is effectively zero. The wallet is one-sided 98.5% of the time. It is a directional bettor (Archetype B) with no spread-capture component.

The 5 both-sides markets are noise at this scale. The median paired cost across those 5 is $0.90, and 3 of 5 are sub-$1.00, suggesting those rare instances where both sides were bought were opportunistic pairings rather than systematic spread capture. The second-side lag median of 5,408 seconds (90 minutes) confirms these are not intentional same-session pairs -- they are separate directional bets on the same market that happened to land on both outcomes.

Classification: Archetype B -- Directional Betting with reference-odds model. The wallet identifies mispricings relative to an external odds feed (most likely Betfair exchange or Pinnacle sportsbook), enters via a combination of taker sweeps and maker limit orders, and holds to settlement. There is no latency component (fills span seconds to minutes, not milliseconds), no copy-following, and no spread mechanism.

Phase 3 -- Dominance Ratio Analysis

With 1.5% both-sides participation, dominance analysis is structurally limited (only 5 markets qualify). For completeness:

Bucket Markets Dom WR Mean Paired Cost
1.0-1.5x 0 -- --
1.5-2.0x 1 100% $0.73
2.0-3.0x 2 100% $1.06
3.0x+ 2 50% $0.64

The 2.0-3.0x bucket shows paired costs above $1.00 -- those markets were loss-making on the paired structure (paying more than $1.00 to guarantee $1.00). The 3.0x+ bucket's $0.64 mean paired cost suggests one market was a genuine spread lock (40 cents of guaranteed profit per share). Sample is too small for any inference.

Phase 4 -- Entry Price Analysis

Band Trades WR Capital P&L ROI
$0.00-$0.10 101 0.0% $3,244 -$2,919 -90.0%
$0.10-$0.20 113 6.2% $12,917 -$9,637 -74.6%
$0.20-$0.30 222 14.9% $35,151 -$21,361 -60.8%
$0.30-$0.40 535 37.4% $103,331 -$161 -0.2%
$0.40-$0.50 526 38.8% $136,278 -$5,965 -4.4%
$0.50-$0.60 583 62.4% $212,547 +$32,243 +15.2%
$0.60-$0.70 151 72.2% $81,448 +$25,371 +31.1%
$0.70-$0.80 8 37.5% $2,864 -$888 -31.0%
$0.80-$0.90 0 -- $0 $0 --
$0.90-$1.00 0 -- $0 $0 --

The profitable zone is sharply defined: $0.50-$0.70. Trades in these two bands account for 734 of 2,239 resolved buys (33%), $293,995 of capital (50%), and +$57,614 of P&L (effectively the entire profitable component of the book at the trade level). Every band below $0.50 loses money, and the $0.70-$0.80 band also loses money.

This is the clearest possible signal that this wallet is a mild-favorite buyer. It is not a longshot hunter (the sub-$0.30 zone is a consistent loser at -60% to -90% ROI), and it does not touch heavy favorites (zero trades above $0.80). The sweet spot is the 50-70 cent zone -- matches where one player is perceived as the moderate favorite but not a certainty.

Sub-bucket inspection: The $0.50-$0.60 band holds 583 trades. Within that band, the most common specific entry prices visible in the CSV are $0.53, $0.54, $0.55, $0.45, $0.52 -- no single cent dominates. The wallet is not anchored to a single fair-value tick; it accepts the available price within its target zone. This is consistent with a model that says "buy anything under $0.58 for this player" rather than "bid $0.54 exactly."

PRICE ZONE FINDINGTrades in the $0.50-$0.70 entry band represent 50% of deployed capital and generate +$57,614 in trade P&L. Every band below $0.50 is net negative at the trade level. The wallet's profitable core is mild-favorite accumulation, not longshot hunting.

Phase 5 -- Category Breakdown

Category Trades Buy Vol Resolved WR P&L ROI
Tennis 2,092 $533,114 1,834 41.8% +$2,516 +0.5%
Soccer 166 $25,082 151 37.7% +$12,976 +51.7%
Other 267 $34,507 254 37.8% +$1,192 +3.5%

Soccer at +51.7% trade-level ROI on $25,082 of buy volume is the efficiency standout. The two Dortmund UCL markets on September 8 account for approximately $8,700 of that Soccer P&L in a single event -- the wallet was betting on Dortmund winning and on the -1.5 spread, both winning. The Sporting CP UCL market on September 9 adds another $3,202.

Tennis's +0.5% trade-level ROI is deceptive. The cash-ledger total of +$18,527 reflects that many profitable Tennis positions are captured through the SELL side (256 sells appear in the data, generating $252,658 in sell proceeds), which the strategy-layer resolved-BUY P&L does not fully attribute to Tennis. The real Tennis performance is substantially better than +$2,516 once SELL proceeds are allocated back.

Phase 6 -- Timing and Execution

Entry timing: The wallet enters matches at varying stages. Some entries appear early (matches hours from resolution based on the slug dates), others appear intra-match. For live Challenger and ITF matches, the wallet's fill pattern during a match -- entering at $0.20-$0.30 for a player then seeing the price move to $0.60+ before settlement -- is consistent with in-play betting as the match progresses and the favored player builds a lead.

Burst patterns: The standard entry sequence is:

  1. One taker fill (1,000-3,000 shares at market price, 5% fee)
  2. Immediate cascade of 5-20 maker fills at the same or slightly better price (zero fee)
  3. Periodic additional maker fills over the following hours as the book replenishes

The taker fill confirms the market exists and the price is available. The maker fills accumulate position at no additional cost. Total position per market ranges from a few hundred USDC to $22,988 (single largest fill in the window).

Accumulation span: For markets with multiple fills over hours (like the Korea Open Ostapenko market with 85 fills), the wallet is periodically adding to a winning position as the match progresses and the price remains attractive. This is a live accumulation model, not a pre-match single entry.

Second-side lag: 5,408 seconds (90 minutes) median for the 5 both-sides markets. These are not intentional pairs.

Best and worst hours:

Best P&L hours: 04:00 UTC (+$13,296), 12:00 UTC (+$9,758), 16:00 UTC (+$9,631), 03:00 UTC (+$7,965) Worst P&L hours: 07:00 UTC (-$10,576), 05:00 UTC (-$8,101), 14:00 UTC (-$7,039), 15:00 UTC (-$5,660)

The 04:00-05:00 UTC pattern is striking: 04:00 is the third-best P&L hour (+$13,296), and 05:00 is the second-worst (-$8,101). This likely reflects match timing -- certain tournament sessions that start in the 04:00 UTC window and resolve in the 05:00 UTC window, with results going against the model more often in that resolution window.

Phase 7 -- Filter Experiments

Filter Trades WR Capital P&L ROI Delta vs Baseline
Unfiltered baseline 2,239 41.1% $587,781 +$16,683 +2.8% --
Price $0.30-$0.70 1,798 48.8% $535,004 +$51,066 +9.5% +$34,383
High-conviction (dom 2x+) 29 96.6% $6,868 +$3,447 +50.2% +$3,447 (tiny sample)
Top category (Soccer) 151 37.7% $25,082 +$12,976 +51.7% N/A (reduces scope)
Exclude worst 4 hours (5,7,14,15) 1,738 48.6% $473,495 +$48,059 +10.1% +$31,376
Combined (price 30-70 + excl worst hrs + Soccer) 96 52.1% $14,888 +$6,075 +40.8% High ROI, low volume

See the Filters tab for full commentary on each filter.

Phase 8 -- Rolling Window Analysis

Period P&L Profitable?
Week 36 (Sep 6 only) -$3,628 No
Week 37 (Sep 7-13) +$22,099 Yes
Week 38 (Sep 14-20) +$5,675 Yes
Week 39 (Sep 21-27) -$20,528 No
Week 40 (Sep 28-Oct 4) +$15,248 Yes
Week 41 (Oct 5-6, partial) -$2,183 No

Rolling 7-day windows profitable: 18 of 31 dates (58.1%) Rolling 15-day windows profitable: 16 of 31 dates (51.6%)

This is a significantly lower consistency than SirMartingale's 100% green windows. The wallet's weekly P&L swings are large: from +$22,099 in week 37 to -$20,528 in week 39. The 15-day rolling series hits -$29,376 on October 1 -- a deeply negative trailing 15-day window -- before recovering.

CONSISTENCY WARNINGOnly 58% of rolling 7-day windows close positive, and the 15-day series hits -$29,376 on October 1. This is not SirMartingale's monotonic cumulative curve. The strategy has significant week-to-week variance from match-outcome concentration.

The recovery pattern shows the model's edge is real: after the week 39 catastrophe, weeks 40 and early 41 restore the cumulative to +$16,683 by the end of the window. But a replicator needs to be prepared for drawdowns of $20,000+ in a single week on a $123,864 capital base.

Phase 9 -- P&L Decomposition

Component Value
BUY USDC out -$592,703
SELL USDC in +$252,658
Net from trades (cash) -$340,045
Redemptions (settlement) +$353,327
Terminal open position value +$5,245
Trading P&L (cash ledger) +$18,527
Maker rebates +$1,040
Taker rebates +$804
Total P&L +$20,371
Fees paid (gross) -$10,244

The dominant income stream is settlement payouts from holding winning match positions to resolution. The $353,327 in redemptions vs $592,703 of BUYs means roughly 60% of deployed capital comes back via settlement (with winning positions paying back $1.00 and losing positions paying $0). The SELL leg ($252,658) is active but secondary -- the wallet does exit some positions pre-settlement when it can sell at a favorable price.

Spread P&L is minimal ($1,522 across 5 both-sides markets). Hedge tax is $3,565 -- the cost of the non-dominant side in those 5 markets. Neither is material at this scale.

The incentive income ($1,844) is the sum of maker rebates ($1,040) and taker rebates ($804). Zero LP rewards (the wallet is not a liquidity provider in the LP rewards program). Zero referral, zero yield.

Phase 10 -- Strategy Specification (short form; see Playbook tab for full detail)

One-sentence summary: A directional tennis/soccer bettor that uses a reference sportsbook model to identify mild favorites underpriced on Polymarket, accumulates position via maker limit orders at zero fee, and holds to settlement.

Edge source: Reference-odds arbitrage. External sportsbook (likely Betfair exchange or Pinnacle) prices one match side at X; Polymarket CLOB offers the same side at X minus 10-20 cents. The wallet exploits the gap by buying Polymarket and holding to settlement at $1.00.

What works: $0.50-$0.70 entry zone (+$57,614 in P&L). Soccer verticals (+51.7% ROI). Maker accumulation at zero fee (83.5% of fills). Hours 03:00-04:00 UTC and 12:00 UTC.

What bleeds: Sub-$0.30 entries (-$33,917 in P&L across the three lowest bands). Hours 05:00-07:00 UTC and 14:00-15:00 UTC. Concentrated positions on single matches (three 0-for-N markets in one week wiped a month's gains).

Replicators must source: A real-time tennis and soccer reference odds feed. Without it, the directional signal does not exist.

// 004 / Quantitative breakdown

Quantitative breakdown

Phase-by-phase statistical report. Methodology, distributions, per-bucket P/L.

Wallet: 0xd9dde44ddeababae222bf7aec96c85cbdab6b525 Window: 2026-09-06 → 2026-10-06 (31 active / 31 calendar days) Methodology: Cash-flow P/L = -buy_usdc + sell_usdc + remaining_share_payout. Resolved shares settle at $1 (win) / $0 (loss); open positions marked at last price.


Phase 1 - Trader Profile

Scale

MetricValue
Total trades2,525
BUY trades2,269
SELL trades256 (10.1% of all)
Unique markets328
Unique events321
Active calendar days31 of 31
Trades per active day81
BUY notional$592,703
SELL notional$252,658
Gross turnover$845,361

Trade-size distribution (USDC per fill)

MetricValue
median$44.73
mean$334.80
p95$1,456.32
p99$4,859.45
max$22,987.93
Top 5% share of capital51.5%

Inter-trade gap, same (market, outcome)

MetricValue
Median (s)3.0
Mean (s)699.6
P10 (s)0.0
P90 (s)891.0
% under 1s0.0%
% under 10s58.9%
% under 60s74.3%

Phase 2 & 3 - Both-Sides Participation, Dominance Curve

  • Both-sides rate: 1.52% (5 of 328 markets)
  • Median paired cost: $0.9011
  • Mean paired cost: $0.8274
  • Paired cost % under $1.00: 60.0%
  • Paired cost % under $0.97: 60.0%
  • Median 2nd-side hedge lag: 5408s

Dominance buckets

BucketMarketsDom WRMean PairedAvg Mkt P/L
1.0–1.5x0 - - -
1.5–2.0x1100.0%$0.7263 -
2.0–3.0x2100.0%$1.0608 -
3.0x+250.0%$0.6447 -

Phase 4 - Entry-Price Analysis

BandBUY tradesResolvedWinsWRCapitalP/LROI
$0.00–$0.10101000.0%$3.2K-$2,919-89.98%
$0.10–$0.20113076.2%$12.9K-$9,637-74.60%
$0.20–$0.3022203314.9%$35.2K-$21,361-60.77%
$0.30–$0.40535020037.4%$103.3K-$161-0.16%
$0.40–$0.50526020438.8%$136.3K-$5,965-4.38%
$0.50–$0.60583036462.4%$212.5K+$32,243+15.17%
$0.60–$0.70151010972.2%$81.4K+$25,371+31.15%
$0.70–$0.8080337.5%$2.9K-$888-31.00%
$0.80–$0.900000.0%$0+$00.00%
$0.90–$1.000000.0%$0+$00.00%

Phase 5 - Category & Vertical Breakdown

CategoryBUY tradesBUY $ResolvedWRP/LROI
Tennis1,864$758.0K1,83441.8%+$2,516+0.48%
Soccer151$44.7K15137.7%+$12,976+51.73%
Other254$42.7K25437.8%+$1,192+3.45%

Phase 6 - Timing & Execution

Net P/L by hour (UTC)

HourP/LWR
00:00-$787.4%
01:00+$4,92378.6%
02:00+$4,67375.0%
03:00+$7,96551.4%
04:00+$13,29657.9%
05:00-$8,1015.1%
06:00-$3,50435.7%
07:00-$10,57615.0%
08:00+$1,06739.2%
09:00-$5,35430.7%
10:00+$1,01252.3%
11:00-$1,61227.1%
12:00+$9,75859.3%
13:00+$34940.3%
14:00-$7,03923.6%
15:00-$5,6606.8%
16:00+$9,63135.3%
17:00+$1,42078.6%
18:00+$1,21957.9%
19:00+$2,51555.2%
20:00+$2,158100.0%
21:00-$58650.0%
22:00-$5,15252.8%
23:00+$4,28966.7%

Phase 8 - Rolling Window Consistency

  • Rolling 7-day windows green: 20 of 31 (64.5%)
  • Rolling 7-day P/L range: -$41,526 → +$26,191
  • Rolling 15-day windows green: 15 of 31 (48.4%)
  • Rolling 15-day P/L range: -$29,376 → +$34,623

Weekly P/L

WeekSpanTradesWRP/LCumulative
W362026-09-06 → 2026-09-0615527.1%-$3,628-$3,628
W372026-09-07 → 2026-09-1353544.3%+$22,099+$18,471
W382026-09-14 → 2026-09-2051143.1%+$5,675+$24,146
W392026-09-21 → 2026-09-2749240.4%-$20,528+$3,618
W402026-09-28 → 2026-10-0439443.1%+$15,248+$18,866
W412026-10-05 → 2026-10-0615234.2%-$2,183+$16,683

Phase 9 - P/L Decomposition

MetricValue
BUY USDC out-$592,703
SELL USDC in+$252,658
Theoretical spread P/L+$1,522
Hedge-tax outflow$3.6K
Trading P/L (from trade logs)+$16,187
Net ROI on BUY notional+2.73%
Maker rebates+$1,040
Taker rebates+$804
Incentive income (measured)+$1,844
Account P/L (Polymarket, all-in)+$18,030

Phase 10 - Top Markets by Volume

MarketTradesVolumeResolvedP/L
Hangzhou Open: Fabian Marozsan vs Taro Daniel9$37.8K8+$8,174
Korea Open: Jelena Ostapenko vs Anastasia Zakharova85$31.9K68+$8,136
Hangzhou Open: Jie Cui vs Adolfo Vallejo9$16.0K6+$3,045
China Open: Iva Jovic vs Harriet Dart24$15.7K1+$3,652
Will BV Borussia 09 Dortmund win on 2026-09-08?3$15.7K1+$4,370
Singapore Open: Xinyu Wang vs Joanna Garland8$15.2K7+$4,185
Plovdiv 4: Nikita Mashtakov vs Maxim Mrva11$14.9K6+$4,880
Ljubljana: Weronika Falkowska vs Laura Samson19$13.8K15+$2,873
Saint Tropez: Moez Echargui vs Luca Potenza21$13.2K18+$4,349
Guangzhou: Naoya Honda vs Nikoloz Basilashvili34$12.4K17+$2,842

Top 10 winners by P/L

MarketVolumeNet P/L
China Open: Donna Vekic vs Lin Zhu$7.9K+$9,882
Hangzhou Open: Fabian Marozsan vs Taro Daniel$37.8K+$8,174
Korea Open: Jelena Ostapenko vs Anastasia Zakharova$31.9K+$8,136
Chengdu Open: Adrian Mannarino vs Denis Shapovalov$3.9K+$6,385
Antofagasta: Nicolas Bruna vs Alan Magadan$3.8K+$6,293
Plovdiv 4: Nikita Mashtakov vs Maxim Mrva$14.9K+$4,880
Nishikori vs. Tiafoe: Match O/U 21.5$5.6K+$4,873
Jingshan: Lloyd Harris vs Alex Bolt$5.2K+$4,818
Porto: Maria Timofeeva vs Mia Pohankova$5.5K+$4,708
Braga: Oleksii Krutykh vs Francisco Rocha$5.4K+$4,600

Top 10 losers by P/L

MarketVolumeNet P/L
Hangzhou Open: Aleksandar Vukic vs Kyrian Jacquet$9.8K-$9,787
Ankara: Solana Sierra vs Deniz Dilek$9.0K-$9,038
Korea Open: Alevtina Ibragimova vs Yeon-Woo Ku$8.3K-$8,301
Ankara: Elena Pridankina vs Ksenia Zaytseva$8.2K-$8,211
China Open: Elena Rybakina vs Alina Charaeva$6.2K-$6,236
Chengdu Open: Alejandro Tabilo vs Adrian Mannarino$5.9K-$5,908
Jingshan: Andre Ilagan vs Marat Sharipov$5.7K-$5,672
Set Handicap: Alexander Zverev (-1.5) vs Novak Djokovic (+1.5)$5.5K-$5,534
Rennes: Gijs Brouwer vs Yanis Ghazouani Durand$4.9K-$4,922
Shanghai Rolex Masters, Qualification: Hugo Gaston vs Liam Draxl$4.9K-$4,893

Report generated 2026-10-06 08:31 UTC.

// 005 / Filter strategy

Filter strategy

Which standard filters move the needle on this trader, and which destroy the edge.

Wallet: 0xd9dde44ddeababae222bf7aec96c85cbdab6b525 Window: 2026-09-06 to 2026-10-06 Baseline: 2,239 resolved BUYs · 41.1% WR · $587,781 deployed · +$16,683 P&L · +2.8% ROI (strategy-layer resolved-BUY view) Cash-ledger trading P&L (authoritative): +$18,527

Methodology note: The strategy layer and cash ledger differ by 12.6% on trading P&L. Per the pipeline's flag, the cash ledger is authoritative. The filter results below use the strategy-layer resolved-BUY attribution (as computed by the pipeline's filter engine), which is internally consistent for comparison purposes. The cash-ledger total is the wallet's real result.

The headline result

Two filters add genuine, substantial lift. Two others are inapplicable. The combined filter stacks a 40% ROI on a small sample -- useful as directional signal, not as a standalone strategy.

The most important finding is that the price-band filter does the opposite of what it does for SirMartingale: here, restricting to $0.30-$0.70 adds $34,383 in P&L and triples the ROI from 2.8% to 9.5%. This wallet's losses are concentrated in the sub-$0.30 zone (-$33,917 across the three lowest bands), which the price filter cleanly removes. Excluding the worst four hours adds another $31,376. Both filters are additive and address the genuine sources of loss in this book.

The high-conviction filter shows 96.6% win rate on 29 trades but the sample is too small (5 markets, 29 trades) to be statistically meaningful. The Soccer-only filter is interesting (+51.7% ROI) but reduces the book to 151 trades -- useful for capacity analysis, not for standalone operation.

MAIN FINDINGApplying the $0.30-$0.70 price filter turns the baseline +2.8% ROI into +9.5%, adding $34,383 in P&L. This is the single most impactful filter available and directly addresses the wallet's worst-performing zone.

Filter results table

Filter Trades WR Capital P&L ROI Delta vs Baseline
Unfiltered baseline 2,239 41.1% $587,781 +$16,683 +2.8% --
Price $0.30-$0.70 1,798 48.8% $535,004 +$51,066 +9.5% +$34,383
High-conviction (dom 2x+) 29 96.6% $6,868 +$3,447 +50.2% N/A (tiny sample)
Top category only (Soccer) 151 37.7% $25,082 +$12,976 +51.7% Different scope
Exclude worst 4 hours (5, 7, 14, 15 UTC) 1,738 48.6% $473,495 +$48,059 +10.1% +$31,376
Combined (price 30-70 + excl worst hrs + Soccer cat) 96 52.1% $14,888 +$6,075 +40.8% High ROI, reduced volume

Filter-by-filter commentary

1. Price band filter: $0.30-$0.70 -- MEANINGFUL LIFT

This filter removes 441 resolved buys and $52,777 of capital while adding $34,383 in P&L -- it surgically removes the loss-generating zone without touching the profitable core.

The math is straightforward. The three bands below $0.30 ($0.00-$0.10, $0.10-$0.20, $0.20-$0.30) collectively lost -$33,917 on $51,312 of capital. These are longshot bets at 0-15% implied probability, and the wallet's win rates in those bands (0.0%, 6.2%, 14.9%) are not high enough to recover the -90%, -75%, and -61% ROI respectively. The $0.30-$0.40 band is nearly break-even at -0.2% ROI ($103,331 of capital, -$161 P&L).

The $0.40-$0.50 band is also slightly negative at -4.4% ($136,278, -$5,965). The price filter at $0.30-$0.70 keeps this band in. If you wanted to push further, a $0.45-$0.70 filter would remove the $0.40-$0.45 sub-band which may have been drag, but the pipeline does not have sub-band resolution to confirm.

Recommendation for replication: Apply the $0.30-$0.70 filter. The sub-$0.30 zone shows no evidence of a positive edge in this 31-day window, and the -$33,917 loss there is real and material. The $0.70-$0.80 band also shows -31% ROI (8 trades, -$888) -- the wallet barely touches that zone, but a replicator should set a hard ceiling at $0.70.

SPECIFIC LOSS DRIVERThe sub-$0.30 zone cost $33,917 in P&L on $51,312 deployed. Removing it entirely via the price filter is the single highest-impact improvement available to a replicator.

2. High-conviction filter (dominance 2x+) -- NOT APPLICABLE

The filter qualifies 29 trades across 5 markets (out of 328) with a 96.6% win rate and +50.2% ROI. This sounds extraordinary, but the sample size is structurally insufficient -- 5 both-sides markets out of 328 total, with the 5 selections being nearly accidental (the wallet rarely buys both sides).

The high-conviction filter is designed for market-making books where the trader systematically buys both sides and tilts toward one direction when confident. With a 1.5% both-sides rate, this wallet does not have a both-sides book to dominance-rank. The 29 qualifying trades are noise observations from a handful of inadvertent two-sided markets, not a repeatable signal.

Do not build a strategy on the 96.6% win rate here. It is 5 markets with a small, coincidental sample.

3. Category filter: Soccer only -- MEANINGFUL LIFT (but volume-limited)

Soccer produces +$12,976 on $25,082 of buy volume -- a 51.7% ROI that is more than 18x the baseline 2.8%. If you could replicate this wallet's Soccer model specifically, it is the highest-return segment.

The practical limitation is volume. The wallet traded only 166 Soccer trades (151 resolved) across 31 days -- roughly 5 trades per day. The Soccer-only strategy would deploy $810 per day on average. That is low absolute capacity but very high efficiency. The larger question is whether the Soccer edge is the same model as the Tennis edge (reference odds arbitrage) or something different. Looking at the specific markets -- UCL games for Dortmund, Sporting CP, FC Midtjylland -- these are European club competitions where the odds market is extremely efficient and liquid on Betfair/Pinnacle. A strong reference model should find less mispricing in liquid soccer, not more. The outperformance may be a small-sample effect (7 winning Soccer positions driving most of the P&L) rather than a systematic edge.

Verdict: Worth tracking separately. If Soccer ROI remains at 30%+ over 3+ months, it is a genuine edge worth over-weighting. If it regresses toward Tennis's 0.5% trade-level ROI over time, it is variance.

4. Hour filter: exclude hours 5, 7, 14, 15 UTC -- MEANINGFUL LIFT

Removing the worst four hours (5, 7, 14, 15 UTC) drops 501 trades and $114,286 of capital while adding $31,376 in P&L. The four excluded hours collectively generated -$31,376 in the baseline, so the filter is approximately neutralizing those hours' negative contribution.

The mechanism is almost certainly match timing, not operator error. Hours 07:00 and 15:00 UTC correspond to mid-morning Asian time and early afternoon European time -- periods when certain tournament sessions are actively resolving. The specific losses in these hours are not evenly distributed; they likely cluster around a few large losing positions that happened to resolve during those windows. The Vukic-Jacquet and Sierra-Dilek losses (both September 22-23) probably resolved in the 07:00-15:00 UTC window.

A more precise version of this filter would be to exclude specific match-type or tournament-type combinations that have historically resolved against the model. The blunt hour filter captures the effect but discards some positive trades in those hours along with the negative ones.

Recommendation: Apply the hour filter as a baseline heuristic. Refine it over time by tracking which specific tournament types (ITF men's, WTA 125K) tend to produce the worst outcomes in specific time windows.

HOUR FILTER MECHANISMThe four excluded hours (5, 7, 14, 15 UTC) account for 501 trades and -$31,376 in P&L. This is not random noise -- it corresponds to specific tournament resolution windows where the model's accuracy appears systematically lower.

5. Combined filter -- MEANINGFUL LIFT (high ROI, low volume)

The combined filter (price $0.30-$0.70 + exclude worst 4 hours + Soccer category) qualifies 96 trades with $14,888 deployed, 52.1% win rate, and +$6,075 P&L at +40.8% ROI. This is the highest-ROI configuration in the filter battery.

The issue is capacity: 96 trades over 31 days is 3.1 trades per day, deploying $480 per day on average. That is a very small book. If you can stack multiple wallets or markets to generate more volume at this quality level, the returns would be exceptional. But you cannot simply scale this combination to 1,000 trades per day -- the Soccer universe is small and the hour/price restrictions are real constraints.

Verdict: Use the combined filter as a benchmark for quality, not as the primary operating rule. The unfiltered strategy run with the individual filters (price 30-70 and hour exclusion) gives you a better volume/return tradeoff than the fully combined filter.

What filters would add genuine value but require data not in the trade CSV

Hypothetical filter Reason Required data
Reference-odds gap filter: only enter when Polymarket is 8+ cents below Betfair Directly targets the mispricing, not a proxy for it Real-time Betfair/Pinnacle odds
Tournament tier filter: ATP 250+ and WTA 100+, skip ITF Main-draw markets may have better model accuracy than Challengers Tournament classification per event slug
In-play score state: only enter when score state matches model Avoids entering into a match the model cannot read from pre-match odds alone Live score API
Match recency: skip first 5 minutes and last 5 minutes of each set Worst execution windows Match start time + in-play timestamp

Summary recommendations for a replicator

  1. Apply the $0.30-$0.70 price filter. This is the most important single filter and triples the realized ROI on the trade-level view. The sub-$0.30 zone has no positive edge here.
  1. Exclude hours 05, 07, 14, 15 UTC as a starting point. Revisit quarterly to confirm whether the pattern is structural or coincidental to this 31-day window.
  1. Do not over-weight the Soccer outperformance in a forward-looking model. Monitor it separately. If it sustains above 20% ROI over 90+ days, increase Soccer allocation.
  1. The $0.50-$0.70 band is the money zone. Prioritize markets where the target player is priced $0.50-$0.70 on Polymarket. The $0.40-$0.50 band is slightly negative; if the filter can be tightened to $0.50 without missing markets, the trade-level ROI improves further.
  1. Do not apply the high-conviction dominance filter. It has no structural meaning for this trader's book.
// 006 / Replication playbook

Replication playbook

Where the edge is portable, and where it isn't.

Source wallet: 0xd9dde44ddeababae222bf7aec96c85cbdab6b525 Strategy: Reference-odds directional tennis/soccer accumulation with maker fill execution Reference book: $592,703 BUY turnover, $123,864 time-weighted capital at risk, +$20,370 total P&L, +16.4% return on time-weighted capital over 31 days

One-paragraph operator brief

Build a Polymarket bot that monitors the CLOB for ATP, WTA, ITF, and major Soccer match markets where the book is pricing one participant below their fair value on a reference sportsbook (Betfair exchange or Pinnacle). When the Polymarket mid-price on the preferred side is $0.30-$0.70 and at least 8 cents below the reference fair value, open a position: fire one taker sweep to confirm market availability, then post standing maker limit orders at the target price zone to accumulate at zero fee. Hold to settlement. Cap total exposure per match at approximately 2% of capital. Avoid the four worst UTC hours (05, 07, 14, 15). Expect significant weekly variance: the strategy can drop 15% in a bad week and recover in the following two. The edge is real but the concentration risk is not trivial.

1. Market selection

Rule Value
Sport categories Tennis (ATP, WTA, ITF) and Soccer (UCL, domestic top divisions)
Market type Match winner (moneyline), Set Handicap, Match Total props
Slug pattern atp-*, wta-*, itf-*, ucl-*, bun-*, bra-*, arg-*, mls-*, den-*
Excluded Futures/outright winner markets (exception: Grand Slam quarterfinal bracket markets are acceptable)
Price zone Target player must be priced $0.30-$0.70 on Polymarket CLOB at entry
Reference gap Polymarket mid must be at least 8 cents below reference fair value (e.g. target player at $0.54 Polymarket vs $0.64 Betfair)
Market liquidity Skip markets with less than $500 of visible maker depth on target side

Tournament tier priority:

  • Tier 1 (highest priority): Grand Slams, ATP Masters 1000, WTA 1000, UCL/Europa League main draw
  • Tier 2: ATP 500/250, WTA 500/250, domestic league top flights
  • Tier 3: ATP Challenger, WTA 125K, ITF M25/M15, domestic league second tiers

All tiers are in scope (the reference wallet trades all of them), but Tier 1 markets tend to have more reference-market depth on Betfair and better model accuracy. Tier 3 markets (Phan Thiet ITF, Wuning 3) carry higher model uncertainty and should have tighter entry thresholds.

2. Entry logic

def should_enter(market, target_side, reference_price_target, clob_mid_target):
    # Market universe check
    sport = classify_sport(market.slug)
    if sport not in ("tennis", "soccer"):
        return False
    
    # Hour filter -- avoid worst-performing windows
    if utc_hour(now()) in (5, 7, 14, 15):
        return False
    
    # Price zone check
    if not (0.30 <= clob_mid_target <= 0.70):
        return False
    
    # Reference gap check -- only enter when the CLOB is mispriced
    gap = reference_price_target - clob_mid_target
    if gap < 0.08:
        return False  # not enough edge to cover variance + fees
    
    # Liquidity check
    visible_depth = market.maker_depth(target_side, price_range=(clob_mid_target - 0.05,
                                                                   clob_mid_target + 0.05))
    if visible_depth < 500:
        return False  # market too thin
    
    # Per-match exposure cap check
    existing_exposure = portfolio.exposure(market.event_id)
    if existing_exposure >= 0.02 * portfolio.capital:
        return False  # already at max for this event
    
    return True
Parameter Value Rationale
Price zone $0.30-$0.70 All profitable trade-level P&L is in this range; everything below $0.30 is a consistent loser
Reference gap minimum 8 cents Covers expected fee drag (5% taker on opener + 0% maker on accumulation) and leaves expected profit
Hour exclusion 05, 07, 14, 15 UTC -$31,376 in combined P&L during these windows; revisit quarterly
Per-event cap 2% of capital Prevents the catastrophic 0-for-N losses seen in the Vukic-Jacquet, Sierra-Dilek, Ibragimova-Ku cluster
Reference source Betfair exchange (lay price = implied back probability) or Pinnacle closing line Both provide sharp odds free of bookmaker margin at the right edge

3. Execution mechanics

The wallet's fill signature reveals a two-phase entry:

Phase 1: Taker sweep (confirmation)

def open_position(market, target_side, clip_usdc):
    # Taker fill: lift the best ask to confirm market availability
    # and get immediate shares at current price
    taker_clip = min(clip_usdc * 0.15, 500)  # 15% of position as taker, max $500
    taker_fill = buy_taker(market, target_side, usdc=taker_clip)
    
    if taker_fill.filled:
        # Phase 2: Post standing maker orders to accumulate
        post_maker_orders(market, target_side, remaining=clip_usdc - taker_clip)

Phase 2: Maker accumulation

def post_maker_orders(market, target_side, remaining_usdc):
    # Walk the book with limit orders at and slightly below current CLOB mid
    target_price = current_clob_mid(market, target_side)
    
    # Fan out across 10-20 price levels
    price_levels = [target_price - 0.02 * i for i in range(10) 
                    if target_price - 0.02 * i >= 0.30]
    
    per_level_usdc = remaining_usdc / len(price_levels)
    
    for price in price_levels:
        post_limit_order(market, target_side, 
                         price=price,
                         usdc=per_level_usdc,
                         time_in_force="GTC")  # resting until filled or match end

The maker orders sit at zero fee. They fill naturally as sell-side flow comes in during the match. The key insight from the CSV: the wallet posts at $0.54, $0.52, $0.50, $0.48, $0.46, etc., absorbing every seller who is exiting their position below fair value.

Active monitoring: Check every 15-30 minutes whether the reference price has moved. If Betfair has updated the target side from $0.64 to $0.45 (the player is losing the match), cancel remaining unfilled maker orders immediately. Do not hold resting orders that are no longer supported by the reference model.

4. Sizing model

The wallet uses conviction-weighted sizing with a hard per-event cap. Observed sizing patterns:

Position type Clip size When used
Small probe $50-$500 (median $45) New market, testing liquidity
Standard position $500-$5,000 Clear reference gap, good liquidity
High conviction $5,000-$22,988 Very large gap, Tier 1 tournament
Per-event cap ~2% of capital Prevents catastrophic single-match loss

Scaling to your bankroll:

Capital Probe size Standard clip Per-event max Expected daily turnover
$10,000 $10-$50 $100-$500 $200 $1,000-$2,000
$25,000 $25-$125 $250-$1,250 $500 $2,500-$5,000
$50,000 $50-$250 $500-$2,500 $1,000 $5,000-$10,000
$125,000 (reference scale) $125-$625 $1,250-$6,250 $2,500 $12,500-$25,000

The reference wallet deployed $592,703 over 31 days -- approximately $19,120 per day in BUY turnover on a $123,864 time-weighted capital base. The capital recycled roughly 4.8x over the month (many positions settled within 24-48 hours of entry).

The per-event cap is the most critical risk rule. The three worst losses in the window (Vukic-Jacquet -$9,787, Sierra-Dilek -$9,038, Ibragimova-Ku -$8,301) were all 0-for-N complete losses on a single match. If each had been capped at 2% of the $123,864 time-weighted capital ($2,477), the total week-39 damage would have been dramatically lower.

5. Reference odds feed setup

This is the strategy's non-negotiable input. Without it, you are guessing.

Priority 1: Betfair Exchange (back/lay market)
  - API endpoint: api.betfair.com/exchange/betting/rest/v1.0/listMarketBook
  - Convert lay price to back probability: prob = 1 / (lay_price - 1 + 1) = 1 / lay_price
  - Use for: Tennis (all tiers), Soccer (UCL, EPL, Bundesliga)
  
Priority 2: Pinnacle closing line
  - Scrape or use API: use the American/decimal odds and convert to implied probability
  - Better for: small ITF and low-tier Soccer where Betfair volume is thin
  
Derived fair value:
  betfair_prob = 1.0 / betfair_lay_price  # adjusted for Betfair commission (typically 5%)
  fair_value = betfair_prob * (1 - 0.05)  # remove exchange commission
  
Entry signal:
  gap = fair_value - polymarket_mid
  if gap >= 0.08: ENTER
  if gap < 0.05: SKIP or EXIT if already in position

Feed latency: For live in-play betting, Betfair updates every few seconds. Your bot must poll at least every 30 seconds during an active match. For pre-match entries, polling every 5 minutes is sufficient. The wallet shows no evidence of sub-second latency requirements -- this is not a latency-sensitive strategy.

Model accuracy: The reference wallet's 41.1% overall win rate on a book priced at an average of $0.46 per share implies positive edge across the portfolio. That 41.1% vs ~42% implied by average price suggests the model is slightly underperforming its expected win rate at the aggregate level -- but the profitable $0.50-$0.70 zone shows 62-72% win rates vs $0.55-$0.65 implied, confirming model accuracy in the target zone.

6. Exit logic

The wallet holds most positions to settlement (the primary income source is the $353,327 in redemptions). The 256 SELL trades represent active exits on a small fraction of positions, generating $252,658 in sell proceeds.

When to sell before settlement:

def should_sell(position, current_clob_price):
    # Sell if reference model has reversed (player is losing match badly)
    reference_prob = get_reference_prob(position.market, position.target_side)
    if reference_prob < 0.35 and current_clob_price > 0.35:
        return True  # lock in residual value; reference thinks this will go to zero
    
    # Sell if can lock in a substantial gain before resolution
    entry_vwap = position.avg_cost_basis
    if current_clob_price >= entry_vwap * 1.5 and position.profit > 500:
        return True  # sell half at 1.5x entry, let the rest run to settlement
    
    # Never sell below cost basis (let the position ride to settlement)
    if current_clob_price < entry_vwap * 0.90:
        return False  # hold, the reference model still may be right

The default behavior is hold to settlement. The active SELL is used when the position has appreciated significantly before the match ends (e.g., the target player takes the first set convincingly, and the CLOB price moves from $0.54 to $0.85), allowing the wallet to extract realized profit before the final 5% of variance is resolved.

7. Risk management and position limits

Rule Value
Per-event max exposure 2% of capital
Per-day max new positions No hard limit (wallet was active 31 of 31 days)
Correlated-event limit Count same-day same-tournament matches as correlated; cap total tournament exposure at 5%
Drawdown pause If rolling 7-day P&L reaches -15% of capital, pause new entries for 24 hours and review model
Stop-loss per position None -- let positions ride to settlement; the 2% per-event cap is the stop-loss equivalent
Reference feed failure If Betfair/Pinnacle feed is unavailable, do NOT trade. Operating without reference odds is guessing.

The tournament correlation risk is real. In week 39, the wallet had correlated losses across Hangzhou, Korea Open, and Ankara tournaments simultaneously. These are different events (Asia + Eastern Europe), but the model's accuracy failing on multiple tournaments in the same week is possible -- especially if the underlying model was calibrated on a period with different surface/conditions.

Diversification floor: Target at least 10 active positions across at least 3 different tournaments at all times. Avoid having more than 30% of open exposure in a single tournament.

8. Hour scheduling

Hours (UTC) Action Reason
00:00-04:59 UTC Full operation Best P&L hours include 01:00-04:00 (+$30,857 combined)
05:00 UTC Skip -$8,101 P&L in baseline; worst single hour
06:00 UTC Reduced size (50%) -$3,504, moderate negative
07:00 UTC Skip -$10,576, second worst hour
08:00-13:59 UTC Full operation Mixed but generally positive; 12:00 UTC is +$9,758
14:00-15:00 UTC Skip -$7,039 and -$5,660 respectively
16:00-23:59 UTC Full operation Generally positive except 22:00 UTC (-$5,152, use caution)

The skip hours (05, 07, 14, 15 UTC) cost $31,376 in the baseline. The mechanism is likely specific match-resolution timing for certain tournament sessions -- Asian afternoon (05:00-07:00 UTC = 1pm-3pm in Japan/Korea) and European early afternoon (14:00-15:00 UTC). These hours may be when certain types of ITF Challenger matches tend to resolve, and the model performs less well for those match types.

Sunday observation: Sunday shows +13.2% day-of-week ROI with 516 trades. Tennis major tournaments have strong Sunday scheduling (finals days, round-of-64 first rounds). Do not reduce Sunday operations -- it is one of the better days.

9. Operational infrastructure

Requirement Detail
Reference odds feed Betfair Exchange API (primary) + Pinnacle API (secondary). Must be real-time for in-play positions, pre-match polling acceptable for pre-event entries.
CLOB connection Polymarket WebSocket for market events and orderbook updates. Polling REST API is too slow for watching in-play price movements.
Wallet Single EOA, USDC-funded on Polygon. Maintain $50K+ liquid to avoid capital constraints during active match sessions.
Gas Polygon -- negligible per fill. Budget $5/day maximum.
Uptime Near-24/7 (wallet was active 31 of 31 days). Skip windows are short (05, 07, 14, 15 UTC).
Match database Maintain a database linking Polymarket event slugs to Betfair market IDs and Pinnacle event IDs for automated feed matching. This is non-trivial to build; the slug matching must handle variant spellings.
Logging Log per-fill: market slug, outcome, side, price, shares, timestamp, reference_prob_at_entry, gap_at_entry. Compute daily P&L attribution by gap bucket.
Monitoring Daily review: is the average gap at entry stable? Is the gap-to-outcome correlation holding? If the model is buying at 8-cent gaps and the wins are dropping below reference rate, the model needs recalibration.

The slug-to-odds mapping database is the hardest operational challenge. Polymarket uses slugs like atp-ostapen-zakharo-2026-09-20; Betfair uses a tree of competition/event/market with text names like "WTA Korea Open / Ostapenko v Zakharova". Automating this match requires fuzzy string matching on player names + date matching. A manual review layer catching mis-matches is essential -- a mis-matched odds feed produces wrong signals and bad fills.

10. Diagnostic checklist

Run weekly:

Check Healthy range Action if outside
Average entry gap (reference - Polymarket) 8-20 cents If <8 cents average: markets are getting more efficient, raise gap threshold. If >25 cents: check for feed lag
Win rate in $0.50-$0.70 zone 55-70% If <50%: model accuracy has degraded in the core zone. Review model inputs.
Soccer vs Tennis ROI divergence Soccer ROI within 20 percentage points of Tennis If Soccer consistently 40+ points above Tennis: investigate whether the Soccer markets are being priced differently
Per-event concentration No single event >2% of capital If any event reaches 3%+: reduce position immediately
Rolling 7-day P&L -15% to +25% of time-weighted capital If -15%: pause 24 hours and audit. If +25%: consider whether to bank profits or continue
Maker fill rate >75% of fills by count If maker rate drops below 60%: orderbook has changed structure; review order posting logic
Daily turnover $500-$25,000 (scale-dependent) If <$500: signal is too rare; loosen gap threshold by 2 cents. If >$25K at small capital: reducing position cap

What this playbook deliberately does NOT include

No longshot buying. The sub-$0.30 zone lost -$33,917 in this window. The wallet bought some longshots (0% win rate at $0.00-$0.10, 6.2% at $0.10-$0.20), and every band below $0.30 was negative. Do not replicate that portion. The reference model may occasionally produce a signal below $0.30, but the evidence in this window says to ignore it.

No trade without a reference feed. If the Betfair feed is down or the slug matching fails, skip the market entirely. Trading without a reference is a random directional bet with a 5% taker fee -- it will lose money over time.

No set-and-forget maker orders. Resting maker orders must be monitored in-play. If the match goes the wrong way and the reference model flips its view, cancel the unfilled makers immediately. Resting orders at $0.54 for a player who is down 0-6, 0-3 are giving away money to well-informed sellers.

No heavy position sizing in ITF. The reference wallet's worst losses were in second-tier events (Ankara ITF, Hangzhou qualifying). ITF markets have less reference-market depth, and the Betfair/Pinnacle odds are less reliable for obscure players. Cap ITF exposure at half the per-event limit used for ATP/WTA main draw.

No chasing losses. When a position goes against the model (the reference probability drops from $0.64 to $0.30 because the player is losing), do not average down. The model has been falsified by the match events. Cancel the remaining makers and let the position ride to its likely zero payout.

The strategy earns its returns from being right about mild favorites more often than the market expects, not from any exotic execution technique. Replicate the discipline -- the price zone, the reference gap threshold, the per-event cap -- and the edge follows. Skip those rules and it becomes an expensive form of recreational gambling.

Other trader breakdowns

Build something like it

Get the data

Join Discord