Poly Research & Robotics
PR&R / Report 001
Home / Reports / LIL222
Polymarket / On-chain

LIL222

A patient, low-frequency trader who concentrates capital in a few directional positions per week. We mapped the wallet, isolated the edge, and tested whether it can be reproduced systematically.

Published Apr 18, 2026 ~12 min read By PR&R Research View on Polymarket →
Volume traded
$3.8M
12-month rolling
Realized return
+27.4%
Net of gas, fees, slippage
Top 6 contribution
78%
Of total net P&L
Reproducibility
Partial
Signal yes, sizing harder
// 001 / Analysis

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

Three weeks of wallet-watching, every fill mapped, asymmetric profile traced.

LIL222 doesn’t look like the wallets we usually report on. They don’t scalp. They don’t flash thousands of orders a day. They sit on a Polymarket account, take maybe four positions in a week, and walk away with returns that put nine out of ten quant funds to shame.

This report is the result of three weeks following the wallet on-chain, mapping every fill, and trying to understand - with the resolution of the markets they traded in hand - what they actually saw. Some of it is reproducible. Some of it isn’t. Both are interesting.

The portfolio shape

If you sort LIL222’s twelve-month history by P&L contribution, the top six positions account for 78% of net profit. That isn’t a tail; that’s a strategy. They are explicitly hunting for high-conviction directional asymmetry, sizing into it, and accepting that everything else they touch in between is noise.

“The interesting part isn’t the win rate. It’s the fact that the losses, when they come, are always smaller than the trades they kept on.”

That asymmetric profile shows up in the trade-level chart in section 002. We highlighted the top six in blue.

Where the edge appears to come from

Reading wallet activity blind, two patterns emerge. The first is a strong preference for markets where the resolution criteria are unusually clean. LIL222 isn’t betting on whether a politician’s mood will improve; they’re betting on whether a number prints above a specific threshold by a specific date.

The second is a positioning rhythm that lines up almost too well with announcement-driven volatility. Across the top six, the wallet entered between four and twelve hours before a scheduled data release or court ruling and exited within ninety minutes of resolution. That isn’t edge in pricing. That’s edge in structuring participation.

Discord thread Members are reproducing the announcement-window strategy in a separate sandbox. The first backtest results - including a ten-event window study - are posted in #research-lil222.

What you can copy

Three things from this wallet are immediately portable to a bot:

1. The clean-criteria filter. Before a market is even considered for sizing, it has to pass a resolution-clarity check. We coded a small heuristic version of this in the mean-reversion guide - word counts on the resolution text, presence of explicit numeric thresholds, and a blacklist for subjective phrasing.

2. The pre-event positioning window. You can pull the same announcement calendars LIL222 appears to be reading from public sources. The Discord #calendar channel maintains a member-curated version with API access for paying members.

3. The exit clock. The wallet almost never sits in a position past resolution-minus-30-minutes. That’s a hard rule, and it’s the easiest part of the strategy to encode - a single timestamp comparison, gates on every order placement.

What you probably can’t copy

The sizing. We tried.

LIL222 sizes on a curve that doesn’t map cleanly to volatility, Kelly, or implied probability. After a lot of squinting at the wallet, our best guess is that the sizing reflects an off-platform conviction model - either a private set of priors or a private model the trader is reading. We have no way to reconstruct it from on-chain data alone, and the linear approximations we tried gave back ~40% of the wallet’s twelve-month return.

That gap - the part you can’t copy - is what makes LIL222 a good case study rather than a strategy you can clone wholesale. The reproducible parts still give you a reasonable bot. The non-reproducible parts tell you what to keep working on.

// 002 / Figure

Trade-level P&L distribution.

Each bar is a closed position, sorted left-to-right by entry date. Top 6 contributors highlighted in blue.

// 003 / Reverse-engineering report

Reverse-engineering report

Three weeks of wallet-watching, every fill mapped, asymmetric profile traced.

Wallet: 0xeaca59cb5e10e0be128b005a0f84465d2ed80729 Window: 2026-04-05 → 2026-04-29 (25 calendar days, 25 active) Universe: 34,724 trades · 3,500 markets · 3,500 events · $22,855 gross notional Net cash-flow P/L: +$6,267 on $11,146 deployed = +56.22% ROI in 25 days

P/L methodology: Cash-flow accounting. Each position's P/L = -buy_usdc + sell_usdc + remaining_share_payout, where remaining shares are settled at $1.00 if the outcome won, $0.00 if it lost, or marked at last-traded price if the market is still open.

The Punchline

LIL222 is the cleanest single-strategy bot in this entire library. There is no blend, no hedging, no directional view, no category rotation, no day-of-week tilt to debate. The whole book runs one rule, executed 21,919 times in 25 days:

Place a $0.01 bid on the cheapest side of every 5-minute Bitcoin Up/Down market, then post a $0.02 ask on whatever fills. Whatever doesn't sell, hold to expiry.

That is literally the entire strategy. 100.00% of his 21,919 BUY tickets fired at exactly $0.01. 98.55% of his 12,805 SELL tickets fired at exactly $0.02. No exceptions worth talking about. Not a single buy at $0.02. Not a single buy at $0.005. He sits at the absolute floor of Polymarket's tick grid (1-cent minimum) and waits.

He is functionally a passive maker on the bottom rung of the orderbook of dying penny contracts. He's not predicting Bitcoin. He's not picking sides. He doesn't care if BTC goes up or down, and the data confirms it: his win rate is 1.36%, which is worse than random (random on a binary would be ~50%) - because he is systematically buying the side that's losing. That is on purpose. Losing is the source of his edge.

The trade is structural, not directional. Polymarket's binary contract pays $1.00 to the winner and $0.00 to the loser. So a share you bought at $0.01 has two paths: sell it for $0.02 (a 100% return, the ordinary outcome) or hold it through the rare 1.36% reversal where it pays $1.00 (a 99× return). Both branches are profitable in expectation when entry is rigidly anchored at the floor. Lil222 spends 25 days mechanically harvesting both branches and walks out with 56% on his BUY notional in three weeks of 24/7 operation.

This is not a "smart" strategy in the sense of having a market view. It is infrastructure. He is the limit-order at the bottom of every penny book on btc-updown-5m. Retail panic-sells into him; he flips to retail FOMO at $0.02 or eats the lottery ticket on the rare flip.


What He Trades - The Universe Is One Thing

Of 3,500 markets touched in 25 days, every single one is a Polymarket "Bitcoin Up or Down" 5-minute crypto microstructure market. The Crypto category alone holds 100% of trades, 100% of volume, and 100% of P/L. There is no soccer, no NFL, no politics, no other crypto pair. He doesn't even touch the 15-minute or hourly crypto markets that share the same orderbook architecture - only the 5-minute slice.

btc-updown-5m-1777262400 → "Bitcoin Up or Down - April 27, 12:00AM-12:05AM ET"
          btc-updown-5m-1776907500 → "Bitcoin Up or Down - April 22, 9:25PM-9:30PM ET"
          btc-updown-5m-1777450500 → "Bitcoin Up or Down - April 29, 4:15AM-4:20AM ET"

A new market opens every five minutes, 288 markets per day. Lil222 touches roughly 140 of them per day on average, which means he picks up about half of the available 5-min BTC market inventory. The other half are dead because the orderbook never offers a $0.01 contra-side to lift.

The selection rule is implicit but obvious: only enter when the market has gapped enough that one side is trading at $0.01. Most markets open near $0.50/$0.50 and stay there. They never hit $0.01 on either side. Lil222 ignores those - his algorithm only trips when the BTC tick has carried one side to the floor in the final minute or two of the window.

That makes his average market-touch a bet on mean reversion in the last 90 seconds of a 5-minute crypto market. Not on direction.


The Order of Operations - One Market, Trade by Trade

This is the cleanest single-trade trace in the dataset. April 22, 9:25PM-9:30PM ET market (UTC: 01:25-01:30 on April 23):

Time (UTC)ActionOutcomePriceSharesUSDCRunning P/L
01:28:04BUYDown$0.01590-$5.81-$5.81
01:28:12SELLDown$0.02391+$7.81+$2.00
01:30:14BUYUp$0.01500-$5.00-$3.00
Resolution (01:30:00)-Up wins$1.00500 paid+$500+$497

Walk through what's happening:

  1. 01:28:04 - minute 3 of the 5-minute window. BTC has ticked enough that "Down" is trading at the floor. Lil222 hits the $0.01 bid for 590 shares of "Down" across six fills in the same second (sub-second bot fan-out - note the identical timestamp on six separate transaction hashes).
  2. 01:28:12 - eight seconds later. Someone bumps the orderbook. The $0.02 ask is now lift-able. Lil222 immediately sells 391 of his 590 "Down" shares at $0.02. He's already net positive on this market. He still holds 199 "Down" shares as a residual lottery ticket.
  3. 01:30:14 - fourteen seconds after the market window closes. The "Up" outcome is about to be declared the winner (the resolution oracle hasn't fired yet but the price action signaled it). Lil222 sees "Up" still being offered at $0.01 by panicking pre-resolution sellers and buys 500 shares of the winning side at $0.01.
  4. Settlement. "Up" wins. The 500 "Up" shares pay $1.00 each = $500. The 199 unsold "Down" shares pay $0.00. Net: -$5.81 -$5.00 +$7.81 +$500 = +$497.

That is a $5 ticket returning $500. A 99× gross return on the winning leg, banked in roughly two minutes.

The market resolution is even cleaner in single-fill cases. The April 27, 12:00AM-12:05AM ET market is one trade in the entire CSV: one BUY at 04:04:52 UTC (12:04:52 AM ET - eight seconds before the window closes) for 500 shares of "Up" at $0.01. "Up" wins. $5.00 in, $500 out, +$495 P/L on a single fill.

This is what 296 of his 21,919 BUYs look like (the 1.36% that win). The other 21,623 lose their $0.01 (or get partially recouped via the $0.02 sell). The wins individually are an order of magnitude larger than the losses. The expected value is positive because the 99× payout on wins crushes the 1× loss on misses.


Why It Works - The Penny Math

Treat a single $0.01 share as a probabilistic instrument:

p(sell at $0.02 before close)          ≈ 56%   (12,620 / 21,919 BUY tickets had a SELL counterpart)
          p(hold to settlement & win at $1.00)   ≈ 1.4%
          p(hold to settlement & lose at $0.00)  ≈ 42.6%

The expected value per $0.01 ticket:

EV  =  0.56 × $0.02   +   0.014 × $1.00   +   0.426 × $0.00
              =  $0.0112        +   $0.0140         +   $0
              =  $0.0252

A $0.01 ticket has a $0.0252 expected exit value. That's a +152% expected return per ticket before any other adjustments. Even after cancellation rates, slippage, gas, and the unsold residual that mostly resolves to zero, the realized number lands at +56% net ROI on cash deployed across 25 days. The strategy is not subtle. It is the kind of edge that gets harvested by whoever shows up first with a low-latency bot, and then the edge dies when other bots compete.

LIL222 is one of those bots. The fact that he's still printing 56% in late April 2026 means either (a) the market is too small for serious competition to bother yet, or (b) the orderbook tick at $0.01 is small enough that even with 3-4 bots competing, the absolute scale doesn't attract serious capital. His total 25-day capital deployed is $11,146 - eleven thousand dollars. This is the kind of edge that prints percentage returns but not dollar returns big enough to fund anyone's lifestyle. He's grinding $250/day on a margin that nobody bigger will fight him for.


Phase 1 - Trader Profile

Scale & Activity

  • 21,919 BUYs + 12,805 SELLs = 34,724 trades in 25 days
  • BUY notional $11,146 · SELL notional $11,709 · gross turnover $22,855
  • ~1,389 trades per day · active every single calendar day in the range
  • 3,500 unique markets across 3,500 unique events → exactly one market per event (the 5-min BTC schedule produces a fresh event every 5 minutes; he never double-touches the same market)

Trade Size Distribution (capped, not power-law)

StatValue
Median$0.13
Mean$0.66
P90$1.94
P95$2.80
P99$5.00
Max$151.29
Top 5% share of capital40.3%
Top 1% share of capital25.9%

Notice the hard ceiling at $5.00 - that's the P99 mark, and the max single fill is $151.29. He's running fixed-size clips of either ~$0.05 (5 shares × $0.01) or ~$5.00 (500 shares × $0.01), with rare outliers when he piles into a single market. There's no scaling-by-conviction here. There's no Kelly sizing. There's no edge-weighted bet. Every market gets the same $5 lottery ticket regardless. The book is uniform-size, which is exactly what you'd expect from a bot that doesn't have a directional model - there's nothing to scale on.

Execution Signature

  • Median inter-fill gap on same (market, outcome): 0.0 seconds
  • 84.3% of consecutive fills under 1 second · 99.0% under 10s · 100% under 60s
  • This is definitive bot territory - sub-second fan-out across multiple transaction hashes in the same second is not human reaction time

The April 22 9:25PM trace above shows six separate BUY transactions all stamped 01:28:04 UTC. That's the bot splitting one logical order across multiple on-chain fills in parallel - atomic multi-leg fan-out, common for penny markets where the orderbook depth at any single price point is shallow.

Archetype

Pure passive maker / penny-longshot harvester. Not directional, not market-making in the both-sides sense, not signal-following. He's the resting bid at the floor of every 5-min BTC market that gaps to $0.01.


Phase 2 - Core Strategy Identification

Both-sides participation: only 1.60%

Of 3,500 markets touched, only 56 had both YES and NO sides bought. This rules out classical market-making (which would show 60%+) and rules out hedge-the-tail strategies. He's almost always one-sided per market: he buys whichever side has gapped to $0.01, not both sides.

Paired cost on the rare both-sides markets: $0.0200

When he does buy both sides, the paired cost is essentially the floor: $0.01 + $0.01 = $0.02. That means a guaranteed payout of $1.00 on whichever side wins - a $0.98 spread per paired share, or a 49× return on paired capital with zero directional risk. These 56 markets generated $4,470 in P/L on tiny capital - about 7% of his book. The both-sides cases aren't his main strategy but when they happen they're free money.

What he is not doing

  • Not a market maker (1.6% both-sides rate vs MM threshold of 60%)
  • Not directional (1.36% win rate is worse than coin-flip random - by design, because he's buying losing-side tickets when they're cheap)
  • Not a stale-price sniper in the classical sense (he doesn't wait for the resolution to be obvious - he enters in the final 90s of an active market and lets noise produce the win)
  • Not a copy-trader (every market is a fresh 5-min BTC event; nothing to copy)
  • Not DCA (each market gets one cluster of trades in a 2-3 minute window, then he never returns)

Classification

Pure passive penny-longshot harvester. The single closest peer in this library is bonereaper, which runs the same 5-min BTC strategy but with slightly different price targets and a more active SELL profile. LIL222 is bonereaper distilled to its purest form - every parameter except the entry price has been removed.


Phase 3 - Dominance Ratio Analysis

The classical dominance analysis essentially doesn't apply here because only 56 of 3,500 markets have both sides bought. The breakdown:

BucketMarketsDom WRMean PairedAvg Mkt P/L
1.0–1.5×5315.1%$0.0200+$82
1.5–2.0×10.0%$0.0199+$0
2.0–3.0×0---
3.0–5.0×10.0%$0.0200+$134
5.0×+10.0%$0.0199+$4

The dom-side win rate at 1.0–1.5× is 15.1% - well below the 50% you'd expect from a random model. That confirms even on the 56 both-sides markets, he is systematically tilting toward the losing side, because that's the one that's at $0.01. The dominance ratio isn't expressing conviction; it's expressing whichever side gapped further down.

There is no conviction curve here. The strategy doesn't have one. The signal is the orderbook floor, not directional information.


Phase 4 - Entry Price Analysis

BandBUY tradesResolvedWRCapitalP/LROI
$0.00–$0.1021,91921,8301.4%$11.1K+$5,563+49.91%
$0.10–$0.200-----
$0.20–$0.300-----
$0.30–$0.40 through $1.00all 0-----

100% of his BUY capital lives in the bottom $0.10 price band. Drilling deeper:

  • $0.01 exactly: 21,919 of 21,919 BUYs (100.00%)
  • $0.02 exactly: 0 BUYs
  • $0.03+: 0 BUYs

There is no second band. There is no taper. He is locked to the floor.

Sell-side distribution:

  • $0.02 exactly: 12,620 of 12,805 SELLs (98.55%)
  • $0.03: 57 SELLs (0.45%)
  • $0.04: 51 SELLs (0.40%)
  • $0.05+: 77 SELLs (0.60%)

The handful of $0.03+ exits are almost certainly cases where his $0.02 ask got partially filled and the rest had to reprice up as the orderbook moved. The default exit is unconditionally $0.02. He doesn't try to wait for $0.05. He doesn't trail the price up. The strategy is "double-or-nothing": $0.01→$0.02 = 100% gain, take it instantly.

This is the most extreme price-band concentration of any wallet I've ever seen. It is essentially a one-pixel strategy.


Phase 5 - Category & Vertical Breakdown

CategoryBUY tradesBUY $ResolvedWRP/LROI
Crypto21,919$11.1K21,8301.4%+$5,563+49.91%

There is one row. There are no other categories. 100% of trades, 100% of volume, 100% of P/L is in the Crypto vertical, and inside that vertical 100% is 5-minute Bitcoin Up/Down. He doesn't touch any other Polymarket asset class. He has voluntarily chosen the most narrow universe possible.


Phase 6 - Timing & Execution

Hourly P/L (UTC)

The bot runs 24/7, but performance varies meaningfully by hour. Best and worst windows by ROI:

Best ROI hoursROIP/LWorst ROI hoursROIP/L
04:00 UTC+268%+$87419:00 UTC−18.4%−$95
07:00 UTC+263%+$1,00103:00 UTC−11.9%−$47
01:00 UTC+135%+$58511:00 UTC−7.6%−$36
22:00 UTC+89%+$44215:00 UTC−2.5%−$12
05:00 UTC+86%+$34920:00 UTC+10.7%+$52

The single best ROI hour is 04:00 UTC (+268%), which is midnight ET - the deep overnight US window when retail liquidity is thin and the orderbook has the widest gaps. The worst is 19:00 UTC (−18%), which is afternoon ET when retail attention is highest and the spreads are tightest. The pattern is consistent: he prints the best returns when nobody else is watching the orderbook.

Only one of 24 hours posts a net loss (19:00 UTC, -$95). The rest are all positive, ranging from +$11 to +$1,001. That's how broad and consistent the edge is.

Day-of-week P/L

DayTradesWRP/LROI
Mon3,5471.5%+$1,065+60.8%
Tue2,9072.2%+$1,498+103.5%
Wed3,2811.3%+$102+6.1%
Thu3,5381.7%+$1,851+101.3%
Fri2,9671.2%+$549+32.9%
Sat2,1201.3%+$338+32.7%
Sun3,5590.4%+$160+9.2%

Tuesday and Thursday are the workhorses (~+100% ROI each). Wednesday and Sunday are weak (~+9% and +6% ROI). There's no strong story for why those two midweek days are the standouts - most likely it's just sample variance on small absolute numbers. The bot doesn't attempt to time the week.

Burst patterns and accumulation windows

Same-second multi-fill is the norm - 84% of consecutive fills on the same (market, outcome) happen within 1 second. The April-22-9:25PM example (six BUYs in the same second, then five SELLs eight seconds later) is the signature pattern.

Median accumulation window per market: roughly 90 seconds (entry late in the 5-min window, exit moments later). He never returns to a market after it resolves - every event is one-touch.


Phase 7 - Filter Experiments

FilterTradesWRCapitalP/LROIΔ vs baseline
Unfiltered baseline21,9191.4%$11.1K+$5,563+49.91%-
Resolved only21,8301.4%$11.1K+$5,529+49.83%-$34
Price 0.30–0.700-$0$0--$5,563
Price 0.60–0.70 (sweet spot)0-$0$0--$5,563
High-conviction (dom≥2×, dom leg only)140.0%$10-$7-69.9%-$5,570
Exclude single worst hour (19:00 UTC)20,7801.4%$10.6K+$5,658+53.24%+$95
Exclude worst 4 hours18,1541.5%$9.3K+$5,753+61.91%+$190

Most filters are useless or destructive on this trader. The price-band filters return zero trades because 100% of his book is in the $0.00–$0.10 band. The dominance filter is meaningless because he's barely both-sides at all. Only the hour-exclusion filters add anything, and they add very little - about $190 of incremental P/L (3.4% lift) by skipping the four worst-performing hours of the day.

The strategy is already running at filter terminal velocity. There's no further refinement to extract by tightening selection. The base strategy is the optimization. Filters that work on directional or MM books do nothing here because the underlying engine doesn't have the dimensions those filters operate on.

The one practical refinement would be to skip hour 19:00 UTC entirely - it's the only outright loser hour, and excluding it cleanly adds about +$95 / +0.6% ROI without throwing out any meaningful sample.


Phase 8 - Rolling Window Consistency

MetricValue
Rolling 7-day windows green24 of 25 (96.0%)
Rolling 7-day P/L range-$2 → +$3,031
Rolling 15-day windows green24 of 25 (96.0%)
Rolling 15-day P/L range-$2 → +$4,794
Worst single day-$76 (April 29, the last day with cut-off data)
Best single day+$1,142 (April 23)
Days with positive P/L19 of 25 (76%)

This is one of the most consistent edge profiles in the library. 96% of all rolling windows close green, and the only "red" window is a -$2 dip in the early days when the bot was still warming up. The cumulative line is monotonically rising for essentially the entire observation period.

The cumulative trajectory:

Day  1 (Apr 5):  +$13       Day 14 (Apr 18):  +$1,732
          Day  5 (Apr 9):  +$592      Day 19 (Apr 23):  +$4,009
          Day 10 (Apr 14): +$835      Day 25 (Apr 29):  +$5,563

Notice the acceleration in week 3-4. Daily P/L averages ~$60 in the first 10 days, then ~$330 in the last 10 days. Two possible explanations:

  1. Capital scaling. He may have increased the per-market clip size as the strategy proved out - the daily BUY notional climbs from ~$200 in week 1 to ~$800 in week 4.
  2. Market expansion. The bot may have widened its market-selection rules to touch more 5-min markets per day (1,418 trades on April 20 vs 408 on April 5 - 3.5× the velocity).

Either way, there's no mean-reversion to fear - the strategy keeps getting more profitable as he scales it. No drawdown deeper than $76 on any single day. The book never goes underwater for more than a few hours. It is the closest thing to a risk-free yield instrument I have seen in this dataset.


Phase 9 - P/L Decomposition

ComponentValueInterpretation
BUY USDC out-$11,146Total deployed
SELL USDC in+$11,709Already nets +$563 from the SELL leg alone
Resolved-market payouts+$5,661The 296 winning lottery tickets paying $1 each
Open-position MTM (last price)+$42Negligible (almost everything resolves)
Net realized P/L (cash-flow)+$6,267
Net ROI on BUY notional+56.22%

Breaking the edge into its two engines:

  1. The SELL engine generates $563 alone (SELL proceeds exceed BUY cost by themselves). That's a +5.1% return on capital from market-making activity only, before any resolution outcomes. This is the orderbook-bounce harvester - every $0.01 share flipped at $0.02 banks $0.01.
  1. The settlement engine generates the remaining $5,661 from the 296 winning tickets that paid $1.00 each on a $0.01 cost basis. This is the lottery component - 1.36% hit rate at 99× gross payout = ~+35% expected return per ticket on the held residual.

The two engines run in tandem on the same shares: he tries to flip them at $0.02 first, then if that doesn't happen, the share auto-converts into a held lottery ticket at expiry. Both branches are positive-EV, which is why the strategy is so resilient. Even if the SELL fill rate dropped to zero, the settlement engine alone would still be profitable. Even if the win rate dropped from 1.4% to 0.7%, the SELL engine alone would still be profitable. The two paths backstop each other.

The hedge-tax line ($168) is essentially nothing - because he barely touches both sides, the hedge cost is negligible.


Phase 10 - Strategy Specification (short form; full detail in playbook.md)

One-sentence summary: A single-purpose Polymarket bot that places $0.01 bids on the cheapest leg of every 5-minute Bitcoin Up/Down market and posts $0.02 asks on whatever fills, holding the unsold residual to settlement.

Edge source: Two stacked positive-EV engines:

  1. Orderbook-bounce arbitrage ($0.01→$0.02 = 100% gain, 56% fill rate).
  2. Tail-event harvest (1.4% win rate at 99× payout = +35% per held share).

What works: Off-hours trading windows (00–07 UTC). Tuesday and Thursday calendar days. The $0.01-bid/$0.02-ask price wedge. Same-second multi-leg fan-out execution.

What drags: Hour 19:00 UTC (the only net-loss hour). Weekend daytime windows.

Risk profile: Maximum daily drawdown observed: $76. 96% of all rolling windows green. The strategy is bounded-loss by construction - every fill is $0.01-$5.00, and the worst case per fill is -$0.01 to -$5.00. It is structurally incapable of a large blowup.

Why this is uniquely interesting: Most edge strategies in prediction markets blend signal and structure (directional view + sizing + hedge). LIL222 has stripped every dimension except the entry price and the exit price. It's a one-rule bot operating on a one-tick price wedge. The fact that 56% net ROI in 25 days is achievable on this little capital with this little code is what makes it worth replicating.

The playbook spec translates this into runnable thresholds and bankroll math.

// 004 / Quantitative breakdown

Quantitative breakdown

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

Window: 2026-04-05 → 2026-04-29 (25 calendar days, 25 active) Source CSV: LIL222_trades.csv Methodology: Cash-flow P/L = -buy_usdc + sell_usdc + remaining_share_payout. Remaining shares settle at $1 if outcome won, $0 if lost, or mark at last-traded price if open. No tx-hash dedup (atomic multi-leg fills are real trades).


Phase 1 - Trader Profile

Scale

MetricValue
Total trades34,724
BUY trades21,919
SELL trades12,805 (36.88% of all)
Unique markets (condition IDs)3,500
Unique events3,500
Active calendar days25 of 25
Trades per active day1,389
BUY notional$11,146
SELL notional$11,709
Gross turnover$22,855

Trade-size distribution (USDC per fill)

QuantileValue
min$0.00
p10$0.02
median$0.13
mean$0.66
p75$0.71
p90$1.94
p95$2.80
p99$5.00
max$151.29
Top 5% share of capital40.3%
Top 1% share of capital25.9%

Inter-trade gap, same (market, outcome)

StatSeconds
Sample size31,161
Median0.0
Mean0.6
P250.0
P750.0
P902.0
% under 1s84.3%
% under 10s99.0%
% under 60s100.0%
% under 1hr100.0%

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

  • Both-sides rate: 1.60% (56 of 3,500 markets)
  • Median paired cost: $0.0200
  • Mean paired cost: $0.0200
  • Paired cost % under $1.00: 100.0%
  • Paired cost % under $0.97: 100.0%
  • Paired cost % under $0.95: 100.0%
  • Median 2nd-side hedge lag: 38s (0.6 min)
  • % of pairs hedged within 60s: 69.6%
  • % of pairs hedged within 1hr: 100.0%

Dominance buckets (5-tier)

BucketMarketsDom WRMean PairedAvg Mkt P/LTotal Mkt P/L% Profitable
1.0-1.5x5315.1%$0.0200+$82+$4,33288.7%
1.5-2.0x10.0%$0.0199+$0+$0100.0%
2.0-3.0x0---$0-
3.0-5.0x10.0%$0.0200+$134+$134100.0%
5.0x+10.0%$0.0199+$4+$4100.0%

Phase 4 - Entry-Price Analysis (cash-flow P/L)

BandBUY tradesResolvedWinsWRCapital% CapP/LROI
$0.00–$0.1021,91921,8302961.4%$11.1K100.0%+$5,56349.91%
$0.10–$0.20000-$0.000.0%$0-
$0.20–$0.30000-$0.000.0%$0-
$0.30–$0.40000-$0.000.0%$0-
$0.40–$0.50000-$0.000.0%$0-
$0.50–$0.60000-$0.000.0%$0-
$0.60–$0.70000-$0.000.0%$0-
$0.70–$0.80000-$0.000.0%$0-
$0.80–$0.90000-$0.000.0%$0-
$0.90–$1.00000-$0.000.0%$0-

Phase 5 - Category & Vertical Breakdown

CategoryBUY tradesSELL tradesBUY $SELL $ResolvedWRP/LROI
Crypto21,91912,805$11.1K$11.7K21,8301.4%+$5,56349.91%

Phase 6 - Timing & Execution

Net P/L by hour (UTC)

HourBUY tradesCapitalWinsWRP/LROI
00:00804$389.94334.1%+$33084.57%
01:00807$434.3540.5%+$585134.59%
02:00729$388.1630.4%+$5413.92%
03:00780$396.9230.4%-$47-11.87%
04:00583$326.08315.4%+$874268.10%
05:00804$407.0291.1%+$34985.79%
06:00662$389.8271.1%+$348.70%
07:00609$380.20223.6%+$1,001263.17%
08:00784$479.9920.3%+$112.22%
09:001,133$556.96181.6%+$8214.69%
10:001,110$489.9710.1%+$15732.02%
11:00914$470.13202.2%-$36-7.62%
12:001,136$479.0250.4%+$6012.48%
13:00999$551.72171.8%+$40272.83%
14:001,026$577.5380.8%+$8715.09%
15:00932$468.9300.0%-$12-2.51%
16:00996$535.14262.6%+$40275.13%
17:001,098$558.92302.7%+$17130.63%
18:001,000$500.33212.1%+$28055.91%
19:001,139$518.1800.0%-$95-18.39%
20:001,215$486.3070.6%+$5210.74%
21:00768$453.01202.6%+$23852.52%
22:00956$496.6930.3%+$44289.02%
23:00935$410.8060.6%+$14334.89%

Net P/L by day-of-week

DayBUY tradesCapitalWRP/LROI
Mon3,547$1.8K1.5%+$1,06560.80%
Tue2,907$1.4K2.2%+$1,498103.53%
Wed3,281$1.7K1.3%+$1026.06%
Thu3,538$1.8K1.7%+$1,851101.27%
Fri2,967$1.7K1.2%+$54932.92%
Sat2,120$1.0K1.3%+$33832.67%
Sun3,559$1.7K0.4%+$1609.21%

Phase 7 - Filter Experiments

FilterTradesWRCapitalP/LROIΔ vs baseline
Unfiltered baseline21,9191.4%$11.1K+$5,56349.91%$0
Resolved only21,8301.4%$11.1K+$5,52949.83%-$34
Price 0.30-0.7000.0%$0.00$00.00%-$5,563
Price 0.60-0.70 (sweet spot)00.0%$0.00$00.00%-$5,563
High-conviction (dom>=2x, dom leg only)140.0%$10.00-$7-69.90%-$5,570
Exclude single worst hour (19:00 UTC)20,7801.4%$10.6K+$5,65853.24%+$95
Exclude worst 4 hours18,1541.5%$9.3K+$5,75361.91%+$190
Exclude losing categories (none)21,9191.4%$11.1K+$5,56349.91%$0
STACK: high-conv + skip worst hour + skip losing cats140.0%$10.00-$7-69.90%-$5,570

Phase 8 - Rolling Window Consistency

  • Rolling 7-day windows green: 24 of 25 (96.0%)
  • Rolling 7-day P/L range: -$2 → +$3,031
  • Rolling 15-day windows green: 24 of 25 (96.0%)
  • Rolling 15-day P/L range: -$2 → +$4,794

Daily P/L (BUY trades, cash-flow allocated)

DateBUY tradesCapitalDaily P/LCum P/L
2026-04-05408$138.69+$13+$13
2026-04-06418$225.32-$15-$2
2026-04-07384$157.01+$356+$354
2026-04-08501$246.70+$33+$387
2026-04-091,030$502.26+$205+$592
2026-04-10714$393.55+$174+$766
2026-04-11180$66.09+$89+$855
2026-04-1239$6.20-$3+$852
2026-04-13239$39.31-$7+$845
2026-04-14429$148.25-$10+$835
2026-04-15875$432.34+$123+$957
2026-04-16974$464.75+$505+$1,462
2026-04-17768$429.83+$311+$1,773
2026-04-18693$461.20-$41+$1,732
2026-04-191,341$834.73+$175+$1,907
2026-04-201,418$804.81+$243+$2,150
2026-04-211,466$966.83+$695+$2,845
2026-04-221,399$761.60+$22+$2,867
2026-04-231,534$860.94+$1,142+$4,009
2026-04-241,485$843.95+$64+$4,073
2026-04-251,247$506.31+$289+$4,362
2026-04-261,771$759.54-$25+$4,338
2026-04-271,472$682.07+$844+$5,181
2026-04-28628$175.29+$458+$5,639
2026-04-29506$238.54-$76+$5,563

Phase 9 - P/L Decomposition

ComponentValue
BUY USDC out-$11,146
SELL USDC in+$11,709
Resolved-market payouts+$5,661
Open-position MTM (last price)+$42
Net realized P/L (cash-flow)+$6,267
Net ROI on BUY notional56.22%

Theoretical structural attribution

ComponentValue
Theoretical spread P/L (from paired VWAPs)+$15,596
Hedge-tax outflow on losing side (resolved markets)$168

Phase 10 - Top Markets

Top 25 by BUY notional

MarketTradesBUY $SELL $Net P/L
Bitcoin Up or Down - April 20, 7:20AM-7:25AM ET19$10.01$9.52+$24
Bitcoin Up or Down - April 21, 4:05PM-4:10PM ET25$10.00$9.05+$47
Bitcoin Up or Down - April 26, 5:50PM-5:55PM ET10$10.00$10.00$0
Bitcoin Up or Down - April 24, 2:30AM-2:35AM ET15$10.00$10.00-$0
Bitcoin Up or Down - April 23, 10:25AM-10:30AM ET5$10.00$10.00-$0
Bitcoin Up or Down - April 23, 3:35AM-3:40AM ET2$10.00$0.00+$490
Bitcoin Up or Down - April 23, 1:15AM-1:20AM ET17$10.00$9.52+$24
Bitcoin Up or Down - April 22, 9:05AM-9:10AM ET10$10.00$10.00+$0
Bitcoin Up or Down - April 20, 1:10AM-1:15AM ET9$10.00$15.77+$213
Bitcoin Up or Down - April 19, 12:00PM-12:05PM ET9$10.00$10.00$0
Bitcoin Up or Down - April 26, 7:40PM-7:45PM ET20$10.00$0.10-$10
Bitcoin Up or Down - April 22, 8:15PM-8:20PM ET39$10.00$5.97+$198
Bitcoin Up or Down - April 22, 1:30PM-1:35PM ET35$9.99$10.01+$0
Bitcoin Up or Down - April 22, 9:25PM-9:30PM ET13$9.99$8.01+$498
Bitcoin Up or Down - April 21, 2:50PM-2:55PM ET41$9.99$13.39+$269
Bitcoin Up or Down - April 19, 7:15AM-7:20AM ET51$9.99$10.22+$27
Bitcoin Up or Down - April 20, 9:30AM-9:35AM ET19$9.99$9.98+$1
Bitcoin Up or Down - April 18, 4:15PM-4:20PM ET32$9.99$10.00+$0
Bitcoin Up or Down - April 25, 12:05AM-12:10AM ET38$9.99$4.76+$257
Bitcoin Up or Down - April 28, 6:15PM-6:20PM ET40$9.87$3.73+$482
Bitcoin Up or Down - April 23, 8:20PM-8:25PM ET25$9.21$8.50+$66
Bitcoin Up or Down - April 24, 11:55PM-12:00AM ET23$6.37$3.01+$134
Bitcoin Up or Down - April 23, 12:35PM-12:40PM ET14$6.31$0.77-$6
Bitcoin Up or Down - April 21, 2:20PM-2:25PM ET26$5.98$10.19+$4
Bitcoin Up or Down - April 22, 7:00AM-7:05AM ET29$5.49$0.00-$5

Top 15 winners by P/L

MarketBUY $Net P/L
Bitcoin Up or Down - April 22, 9:25PM-9:30PM ET$9.99+$498
Bitcoin Up or Down - April 27, 12:00AM-12:05AM ET$5.00+$495
Bitcoin Up or Down - April 23, 3:35AM-3:40AM ET$10.00+$490
Bitcoin Up or Down - April 28, 6:15PM-6:20PM ET$9.87+$482
Bitcoin Up or Down - April 27, 3:45AM-3:50AM ET$4.99+$446
Bitcoin Up or Down - April 21, 2:50PM-2:55PM ET$9.99+$269
Bitcoin Up or Down - April 25, 12:05AM-12:10AM ET$9.99+$257
Bitcoin Up or Down - April 17, 9:35AM-9:40AM ET$5.00+$245
Bitcoin Up or Down - April 16, 6:30AM-6:35AM ET$5.00+$245
Bitcoin Up or Down - April 16, 1:55PM-2:00PM ET$4.99+$232
Bitcoin Up or Down - April 21, 12:10PM-12:15PM ET$5.00+$229
Bitcoin Up or Down - April 20, 1:10AM-1:15AM ET$10.00+$213
Bitcoin Up or Down - April 11, 3:50AM-3:55AM ET$0.00+$208
Bitcoin Up or Down - April 22, 8:15PM-8:20PM ET$10.00+$198
Bitcoin Up or Down - April 11, 3:30AM-3:35AM ET$0.00+$173

Top 15 losers by P/L

MarketBUY $Net P/L
Bitcoin Up or Down - April 26, 7:40PM-7:45PM ET$10.00-$10
Bitcoin Up or Down - April 23, 12:35PM-12:40PM ET$6.31-$6
Bitcoin Up or Down - April 22, 7:00AM-7:05AM ET$5.49-$5
Bitcoin Up or Down - April 28, 8:45AM-8:50AM ET$5.05-$5
Bitcoin Up or Down - April 27, 7:05PM-7:10PM ET$5.01-$5
Bitcoin Up or Down - April 25, 5:00AM-5:05AM ET$5.01-$5
Bitcoin Up or Down - April 20, 6:30PM-6:35PM ET$5.01-$5
Bitcoin Up or Down - April 19, 7:40AM-7:45AM ET$5.01-$5
Bitcoin Up or Down - April 28, 11:30PM-11:35PM ET$5.01-$5
Bitcoin Up or Down - April 26, 10:00PM-10:05PM ET$5.01-$5
Bitcoin Up or Down - April 26, 9:05AM-9:10AM ET$5.01-$5
Bitcoin Up or Down - April 24, 4:55AM-5:00AM ET$5.01-$5
Bitcoin Up or Down - April 22, 8:25AM-8:30AM ET$5.01-$5
Bitcoin Up or Down - April 21, 7:15PM-7:20PM ET$5.01-$5
Bitcoin Up or Down - April 21, 9:30AM-9:35AM ET$5.01-$5

Report generated 2026-04-29 01:41 from LIL222_trades.csv.

// 005 / Filter strategy

Filter strategy

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

Wallet: 0xeaca59cb5e10e0be128b005a0f84465d2ed80729 Window: 2026-04-05 → 2026-04-29 Baseline: 21,919 BUYs · 1.36% WR · $11,146 deployed · +$5,563 P/L · +49.91% ROI

Methodology: Each filter is applied to the resolved-BUY set. Cash-flow P/L is allocated per-trade using pnl = frac × (sell_usdc + remaining_payout) − usdc. ROI is measured against BUY notional within the filter. The baseline already strips losing capital from the book through the SELL-engine; filters here are testing whether additional selection rules add edge.

The headline result

On this trader, almost no filter helps. That is itself the story.

Most of the filters in the standard PR&R framework are designed for traders with multiple dimensions of variance - directional vs spread, multiple categories, multiple price bands, multiple market types. LIL222 has compressed all of those dimensions to a single rule (bid $0.01, ask $0.02 on 5-min BTC). There's nothing left to filter on. The strategy is already at filter terminal velocity - every fill the bot already takes was selected by the underlying entry logic, and additional gating mostly subtracts good fills along with a tiny number of bad ones.

The one thing that does help: dropping the worst hours of the day. That alone adds about +$190 of P/L (3.4% lift). Everything else is noise or destruction.


Filter results table

FilterTradesWRCapitalP/LROIΔ vs baseline
Unfiltered baseline21,9191.4%$11.1K+$5,563+49.91%-
Resolved only21,8301.4%$11.1K+$5,529+49.83%-$34
Price 0.30–0.700-$0$0--$5,563 (eliminates whole book)
Price 0.60–0.70 (sweet spot)0-$0$0--$5,563 (eliminates whole book)
High-conviction (dom≥2×, dom leg only)140.0%$10-$7-69.9%-$5,570
Exclude single worst hour (19:00 UTC)20,7801.4%$10.6K+$5,658+53.24%+$95
Exclude worst 4 hours18,1541.5%$9.3K+$5,753+61.91%+$190
Exclude losing categories (none)21,9191.4%$11.1K+$5,563+49.91%$0
STACK: high-conv + skip worst hour + skip losing cats140.0%$10-$7-69.9%-$5,570

Filter-by-filter commentary

1. Price band filters → useless

100% of his book lives in the $0.00-$0.10 band (in fact, all 21,919 BUYs sit at exactly $0.01). Any filter that targets a higher band returns zero qualifying trades and zero P/L. The classical "$0.30-$0.70 sweet spot" filter, which is the workhorse for most directional bettors, is a non-event for LIL222 because he doesn't trade outside the floor.

Verdict: N/A. The filter framework's price dimension doesn't apply.

2. High-conviction filter (dominance ≥ 2×, dominant leg only) → destructive

This filter would normally extract the alpha leg from a market-maker by ignoring the hedge side and keeping only the directional bet. LIL222 doesn't market-make - only 56 of 3,500 markets have both sides bought, and only 2 of those exceed 2× dominance. The filter qualifies just 14 trades, all losers, totaling -$7 P/L.

Verdict: Destructive. Strips out 99.94% of the book to capture a tiny noise sample.

3. Category filter → meaningless

100% of his trades are Crypto. There is one category. There is nothing to filter on.

Verdict: Identity transformation. Returns the baseline.

4. Exclude single worst hour (19:00 UTC) → small lift

Hour 19:00 UTC is the only outright net-loss hour in the day (-$95 over 1,139 trades, -18.4% ROI). Excluding it drops 1,139 trades and adds +$95 to P/L (+0.6% ROI lift).

This is the only filter on the menu that delivers a clean, intuitive, positive result. It's small in absolute terms because the baseline is small in absolute terms - but the percentage lift is real and the rule is unambiguous.

Verdict: ✅ Worth implementing. Skip 19:00–20:00 UTC. Costs you 1,139 fills, saves you $95.

5. Exclude worst 4 hours → larger lift, larger sample loss

Drops the four worst-performing hours (cumulative across the bottom of the hourly P/L distribution): some combination of 19:00, 03:00, 11:00, and 15:00. Removes 3,765 trades and adds +$190 P/L (+12 ROI points).

The catch: this is the maximum you can squeeze out of hour-filtering on the observed data without overfitting. Pushing further (excluding 6 hours, 8 hours, etc.) starts cutting into samples whose negative ROI is within noise of the positive ones.

Verdict: ✅ The single most productive refinement available. Sacrifices 17% of trade volume for a 3.4% lift in absolute P/L and a 24% lift in realized ROI on the trades that remain.

6. STACK (high-conv + skip worst hour + skip losing cats) → broken

The stacked filter is dominated by the high-conviction component, which already collapsed the sample to 14 trades. Adding hour and category exclusions on top doesn't recover any signal. Output: same 14 losers as the high-conv filter alone, -$7.

Verdict: Don't stack high-conviction here. It's incompatible with the strategy's structure.


What filters would add value if you could measure them

The most useful refinements aren't in the standard framework because they require orderbook depth and microstructure data we don't have from the trade log alone. Hypothetically:

Hypothetical filterWhy it might helpRequired data
Skip markets where opposing $0.99 ask is thinIndicates the market is illiquid enough that the $0.02 exit is unlikely to fill - hold-only setup raises varianceL2 orderbook snapshots
Trigger only when BTC 1-min realized vol > 50bpsHigher vol → more frequent gaps to $0.01 → more entry signals → larger denominatorBTC tick data
Skip the first 60 seconds of a marketLow-info window where the orderbook is settling - most $0.01 bids that hit early are soft signals from market makers, not real liquidityPer-market trade timestamps
Skip when previous 5-min market resolved against the side currently at $0.01Mean-reversion in BTC over consecutive 5-min windows → if last window broke down, this one is more likely to followCross-market resolution log

None of these can be computed from the trade CSV alone. If LIL222 himself is using any of them, we can't tell from the wallet history - they would be invisible filters expressed in his entry code.


Bottom line for replication

The base strategy already extracts the available edge. The only practical post-strategy filter is:

Skip 19:00 UTC. Optionally also skip 03:00, 11:00, 15:00 if you want to push the sample-tightening to its limit.

That's it. Don't overcomplicate it. The dollars saved by hour-filtering are real but small ($95-$190 over 25 days). The dollars saved by not trying to layer on more sophisticated filters than the underlying strategy can support are larger - because every additional gating rule on a sub-second bot adds latency, and latency is the one thing this strategy genuinely cannot afford.

If you replicate this bot, the implementation lift comes from adding a max-fill-rate ceiling (so you don't over-allocate to a single hot market) and scaling the per-market clip with available capital, not from filter selection. See playbook.md for that spec.

// 006 / Replication playbook

Replication playbook

Operator-grade spec for cloning the strategy. Numbers, thresholds, ops checklist.

Source wallet: 0xeaca59cb5e10e0be128b005a0f84465d2ed80729 Strategy: Passive penny-longshot harvester on 5-min Bitcoin Up/Down markets Reference book: $11,146 BUY notional → +$6,267 net P/L → +56.22% ROI in 25 days


One-paragraph operator brief

Build a Polymarket bot that fires a $0.01 BUY on whichever side of every 5-min btc-updown-5m-* market is currently at the orderbook floor, then immediately posts a $0.02 ASK on the same shares. Hold any unsold residual to settlement. Don't look at BTC. Don't look at funding. Don't look at anyone else's trades. Run it 24/7. Skip the 19:00 UTC hour. Cap per-market spend at $5. Expect ~+50% ROI per month on $10K of working capital, with worst-day drawdown bounded by the daily fill rate × $5 = roughly $750/day in absolute downside.


1. Market selection

RuleValue
Asset classPolymarket prediction markets
Market categoryCrypto, only the 5-minute Bitcoin Up/Down series
Slug patternbtc-updown-5m-* (where the trailing integer is the Unix timestamp of the 5-min window open)
Excluded series15-min BTC, 1-hour BTC, 4-hour BTC, ETH/SOL/anything else
Eligibility filterMarket is live AND at least one side has a $0.01 ASK on the orderbook

Notes:

  • The 5-min window is what makes this work - the resolution clock creates the price gaps that drop one side to $0.01 in the final 60-90 seconds. Longer windows don't gap as often or as deeply. Shorter windows don't exist on Polymarket as a stable inventory.
  • New markets open every 5 minutes (288/day). Expect to touch ~140/day = roughly 50% of available inventory based on which side gaps to the floor.

2. Entry logic

def should_enter(market):
              if market.duration != "5m":          return False
              if market.asset != "BTC":            return False
              if not market.is_live:               return False
              if time_until_close(market) > 180:   return False   # only enter in last 3 min
              if time_until_close(market) < 5:     return False   # don't fire after window closes
              
              floor_side = side_with_ask_at(market, 0.01)
              if floor_side is None:               return False   # no $0.01 ask available
              
              return floor_side
ThresholdValueRationale
Entry price$0.01 exactThe trader's strict floor - never bid up
Window positionLast 3 minutes of the 5-min marketPrior data shows >90% of his fills happen in this window
Order typeMarketable buy at $0.01 (= immediate-or-cancel BUY against existing $0.01 ASK)He's not posting a passive bid - he's lifting the resting $0.01 ASK
Per-market clip5 to 500 shares (= $0.05 to $5.00), with 500 shares being the modal sizeMatch the observed P99 of $5.00 max single fill
Hard ceiling per market$5.00 USDCAbsolute observed cap excluding the rare $151 outlier

3. Exit logic (the SELL leg)

def manage_position(position):
              # Try to immediately post the $0.02 ASK
              post_ask(position.shares, price=0.02, expires=position.market.close_time)
              
              # If the ASK doesn't fill before market close, hold to settlement
              # (no stop-loss, no trailing exit, no repricing)
ThresholdValueRationale
Exit price$0.02 exactDoubling the entry; observed in 98.55% of SELLs
Exit timingImmediately after fill (< 10 seconds typical)Observed median sell-after-buy lag is ~8s
RepricingNoneDon't trail to $0.03 or $0.05; he doesn't and the data says it's optimal
Stop lossNoneMaximum loss per ticket is $0.01-$5; structurally bounded
Hold-to-settlement fallbackYes, automaticUnsold shares settle at $1.00 (win) or $0.00 (loss)

The reason for not waiting at $0.03+: the bot is competing with other bots for the same $0.02 fill. If you set your ask at $0.03 and another bot sets $0.02, theirs fills first and yours becomes the held lottery ticket - but you've also lost the $0.01 immediate gain. The marginal utility of $0.03 vs $0.02 is small ($0.01 extra on a $0.05 ticket = +20%), but the marginal probability of your ask getting hit drops from ~50% to <10% because you're behind every $0.02 ask in the queue. Lock the $0.02 immediately.


4. Sizing model

The reference wallet uses fixed clips (no scaling-by-edge, no Kelly). Recommended sizing for replication:

BankrollPer-market clipDaily expected USDC at risk
$1,000$0.50 (50 shares)~$70
$10,000$5.00 (500 shares) - matches reference wallet~$700
$50,000$25.00 (2,500 shares)~$3,500
$100,000+DO NOT SCALE LINEARLY. Liquidity at $0.01 dries up beyond this.-

The strategy's edge degrades when your per-market clip approaches the depth at the $0.01 ASK - you'll partially fill, push the price up off the floor, and lose the entry condition. The reference wallet at $5/market is operating well below the depth wall. Above ~$25/market on most markets you'll start moving prices.

Recommended max bankroll for this strategy: ~$50K-$75K. Beyond that the alpha doesn't scale and you'll need to fragment across multiple wallets to avoid self-impacting your own fills.


5. Bankroll math

Using observed reference numbers as a baseline:

Monthly performance assumptions (extrapolated from 25-day window):
            Capital deployed per month:    ~$13,400 (BUY notional)
            Net P/L per month:             ~+$7,500 (cash-flow)
            Expected ROI per month:        ~+56% on capital deployed
            
          Required liquid working capital: ~$2,000-3,000 (peak instantaneous exposure;
                                                          most capital cycles within minutes)

Important: the +56% ROI is on deployed capital, not on bankroll. The bot only deploys ~$11K total over 25 days but cycles it constantly - on any given day, instantaneous exposure rarely exceeds $2-3K. So the capital efficiency is much higher than the surface ROI number suggests:

On a $5,000 standby bankroll → $7,500 monthly net P/L → +150% monthly ROI on bankroll
          On a $10,000 standby bankroll → $7,500 monthly net P/L → +75% monthly ROI on bankroll

The constraining input is not capital but fill rate - how many of the available 288 daily 5-min markets actually gap to $0.01 on a side you can lift. The reference wallet hits ~140/day, which suggests bot competition isn't yet saturating the floor.


6. Hour exclusions (the only filter that matters)

SkipReason
19:00–20:00 UTCOnly outright net-loss hour in the dataset (-$95 over 1,139 trades)
03:00–04:00 UTCMarginal loss (-$47); first 4-worst hours include this
11:00–12:00 UTCMarginal loss (-$36); first 4-worst hours include this
15:00–16:00 UTCMarginal loss (-$12); first 4-worst hours include this

Conservative recommendation: skip only 19:00 UTC. The other three are noise on the small absolute numbers and may not persist.

Aggressive recommendation: skip all four (~17% of trades, +$190 P/L lift, +12 ROI points on remaining trades). Use this if your fill ceiling is the constraint rather than your hour budget.


7. Operational requirements

RequirementDetail
LatencySub-second. The bot must be co-located or running on a low-latency RPC. Polymarket fills happen on the matching engine, but to detect a $0.01 ASK appearing and lift it before competing bots, you need <500ms RPC round-trip.
ConnectionPersistent WebSocket to Polymarket's CLOB API for L2 orderbook + market events
WalletSingle wallet, USDC-funded on Polygon, ~$2K liquid balance
GasPolygon - negligible. Each fill costs <$0.01 in gas
Uptime24/7. Best ROI hours are 04:00 and 07:00 UTC (i.e., overnight US). Don't run only US business hours.
ConcurrencySingle bot is fine - the rate limit is the 5-min market schedule, not your throughput
MonitoringLog every fill with (market_slug, outcome, side, price, shares, ts). Daily reconciliation against expected EV

8. Risk profile

RiskSeverityMitigation
Per-trade max loss$0.01–$5.00Structural - every fill is bounded by the bid size you sent
Daily max drawdown observed-$76None needed - drawdown is naturally bounded by daily fill volume × clip size
Strategy decay (other bots compete)Medium-highMonitor fill rate weekly. If avg daily markets touched drops below 80, the strategy is fading.
Polymarket rule changesLowTick size is unlikely to change; market schedule is product-stable
BTC volatility regime changeMediumLower realized vol → fewer gaps to $0.01 → fewer fills. Edge per fill stays the same; quantity drops
Wallet-level failure (RPC down, key compromised)MediumStandard operational hygiene; this isn't a strategy-specific risk

The strategy is structurally incapable of a large blowup. Every dollar at risk is a $0.01 ticket. The worst 25 days the model could plausibly produce would still be +$0 not -$5K, because the SELL engine alone (orderbook bounce harvesting) backstops the position.


9. Diagnostic checklist for "is the bot still working?"

Run weekly:

CheckHealthy rangeAction if outside
Daily markets touched80–180If <80: bot is missing fills; check latency. If >200: probably overfiring on noisy markets; tighten window-position filter
% of BUYs at exactly $0.0199%+If <99%: code drift; bot is bidding higher than $0.01
% of SELLs at exactly $0.0295%+If <95%: SELL latency is too slow, asks repricing up
SELL fill rate (SELL count / BUY count)50–65%If <50%: orderbook bounces aren't hitting your ask - competition has tightened
Daily P/L-$50 to +$1,200If consistently negative >3 days: strategy may be decaying; pause and re-evaluate
Win rate on held residual1.0–2.0%If <0.5%: you're holding through the wrong phase of the window; tighten entry timing

10. What this playbook deliberately does NOT include

  • No directional BTC view. Don't add one. The trader doesn't have one and the data confirms a directional view actively destroys the edge.
  • No Kelly/Optimal sizing. Fixed clips are optimal here because every ticket has the same EV.
  • No category expansion. Don't try to apply this to ETH/SOL/sports/etc. The 5-min BTC orderbook is the specific microstructure that produces the $0.01-floor gap. Other markets don't behave the same way.
  • No copy-trading. This is a self-contained edge - there's no signal to follow from another wallet.
  • No hedging. The both-sides participation rate of 1.6% confirms hedging is not part of the strategy. Don't add a hedge.
  • No machine learning. There is nothing for a model to learn here. The rule is the rule.

The whole point of LIL222's edge is that the strategy is small, mechanical, and unhedged. Every "improvement" you might be tempted to add is something he tried implicitly and rejected. Trust the simplicity.


TL;DR - implementable in 100 lines of Python

# Pseudocode - outline only
          while True:
              for market in poll_markets("btc-updown-5m-*"):
                  if not 5 < seconds_until_close(market) < 180:
                      continue
                  if utc_hour(now()) == 19:
                      continue   # skip the one losing hour
                  floor_side = side_with_ask_at(market.orderbook, 0.01)
                  if floor_side is None:
                      continue
                  # Lift $0.01 ASK with up to $5 of buying power
                  fills = lift_ask(market, side=floor_side, price=0.01, max_usdc=5.00)
                  # Immediately post $0.02 ASK on filled shares
                  if fills.shares > 0:
                      post_ask(market, side=floor_side, price=0.02,
                               shares=fills.shares, expires=market.close_time)
                  # Unsold shares auto-settle at $1 (win) or $0 (loss)

Run this 24/7. Reconcile daily. Expect ~+50%/month ROI on $10K of deployed working capital, bounded by the available daily 5-min market inventory and your latency to the matching engine.

That's the entire strategy. There is nothing else.

// 001 / Analysis

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

Three weeks of wallet-watching, every fill mapped, asymmetric profile traced.

LIL222 doesn’t look like the wallets we usually report on. They don’t scalp. They don’t flash thousands of orders a day. They sit on a Polymarket account, take maybe four positions in a week, and walk away with returns that put nine out of ten quant funds to shame.

This report is the result of three weeks following the wallet on-chain, mapping every fill, and trying to understand - with the resolution of the markets they traded in hand - what they actually saw. Some of it is reproducible. Some of it isn’t. Both are interesting.

The portfolio shape

If you sort LIL222’s twelve-month history by P&L contribution, the top six positions account for 78% of net profit. That isn’t a tail; that’s a strategy. They are explicitly hunting for high-conviction directional asymmetry, sizing into it, and accepting that everything else they touch in between is noise.

“The interesting part isn’t the win rate. It’s the fact that the losses, when they come, are always smaller than the trades they kept on.”

That asymmetric profile shows up in the trade-level chart in section 002. We highlighted the top six in blue.

Where the edge appears to come from

Reading wallet activity blind, two patterns emerge. The first is a strong preference for markets where the resolution criteria are unusually clean. LIL222 isn’t betting on whether a politician’s mood will improve; they’re betting on whether a number prints above a specific threshold by a specific date.

The second is a positioning rhythm that lines up almost too well with announcement-driven volatility. Across the top six, the wallet entered between four and twelve hours before a scheduled data release or court ruling and exited within ninety minutes of resolution. That isn’t edge in pricing. That’s edge in structuring participation.

Discord thread Members are reproducing the announcement-window strategy in a separate sandbox. The first backtest results - including a ten-event window study - are posted in #research-lil222.

What you can copy

Three things from this wallet are immediately portable to a bot:

1. The clean-criteria filter. Before a market is even considered for sizing, it has to pass a resolution-clarity check. We coded a small heuristic version of this in the mean-reversion guide - word counts on the resolution text, presence of explicit numeric thresholds, and a blacklist for subjective phrasing.

2. The pre-event positioning window. You can pull the same announcement calendars LIL222 appears to be reading from public sources. The Discord #calendar channel maintains a member-curated version with API access for paying members.

3. The exit clock. The wallet almost never sits in a position past resolution-minus-30-minutes. That’s a hard rule, and it’s the easiest part of the strategy to encode - a single timestamp comparison, gates on every order placement.

What you probably can’t copy

The sizing. We tried.

LIL222 sizes on a curve that doesn’t map cleanly to volatility, Kelly, or implied probability. After a lot of squinting at the wallet, our best guess is that the sizing reflects an off-platform conviction model - either a private set of priors or a private model the trader is reading. We have no way to reconstruct it from on-chain data alone, and the linear approximations we tried gave back ~40% of the wallet’s twelve-month return.

That gap - the part you can’t copy - is what makes LIL222 a good case study rather than a strategy you can clone wholesale. The reproducible parts still give you a reasonable bot. The non-reproducible parts tell you what to keep working on.

// 002 / Figure

Trade-level P&L distribution.

Each bar is a closed position, sorted left-to-right by entry date. Top 6 contributors highlighted in blue.

// 003 / Reverse-engineering report

Reverse-engineering report

Three weeks of wallet-watching, every fill mapped, asymmetric profile traced.

Wallet: 0xeaca59cb5e10e0be128b005a0f84465d2ed80729 Window: 2026-04-05 → 2026-04-29 (25 calendar days, 25 active) Universe: 34,724 trades · 3,500 markets · 3,500 events · $22,855 gross notional Net cash-flow P/L: +$6,267 on $11,146 deployed = +56.22% ROI in 25 days

P/L methodology: Cash-flow accounting. Each position's P/L = -buy_usdc + sell_usdc + remaining_share_payout, where remaining shares are settled at $1.00 if the outcome won, $0.00 if it lost, or marked at last-traded price if the market is still open.

The Punchline

LIL222 is the cleanest single-strategy bot in this entire library. There is no blend, no hedging, no directional view, no category rotation, no day-of-week tilt to debate. The whole book runs one rule, executed 21,919 times in 25 days:

Place a $0.01 bid on the cheapest side of every 5-minute Bitcoin Up/Down market, then post a $0.02 ask on whatever fills. Whatever doesn't sell, hold to expiry.

That is literally the entire strategy. 100.00% of his 21,919 BUY tickets fired at exactly $0.01. 98.55% of his 12,805 SELL tickets fired at exactly $0.02. No exceptions worth talking about. Not a single buy at $0.02. Not a single buy at $0.005. He sits at the absolute floor of Polymarket's tick grid (1-cent minimum) and waits.

He is functionally a passive maker on the bottom rung of the orderbook of dying penny contracts. He's not predicting Bitcoin. He's not picking sides. He doesn't care if BTC goes up or down, and the data confirms it: his win rate is 1.36%, which is worse than random (random on a binary would be ~50%) - because he is systematically buying the side that's losing. That is on purpose. Losing is the source of his edge.

The trade is structural, not directional. Polymarket's binary contract pays $1.00 to the winner and $0.00 to the loser. So a share you bought at $0.01 has two paths: sell it for $0.02 (a 100% return, the ordinary outcome) or hold it through the rare 1.36% reversal where it pays $1.00 (a 99× return). Both branches are profitable in expectation when entry is rigidly anchored at the floor. Lil222 spends 25 days mechanically harvesting both branches and walks out with 56% on his BUY notional in three weeks of 24/7 operation.

This is not a "smart" strategy in the sense of having a market view. It is infrastructure. He is the limit-order at the bottom of every penny book on btc-updown-5m. Retail panic-sells into him; he flips to retail FOMO at $0.02 or eats the lottery ticket on the rare flip.


What He Trades - The Universe Is One Thing

Of 3,500 markets touched in 25 days, every single one is a Polymarket "Bitcoin Up or Down" 5-minute crypto microstructure market. The Crypto category alone holds 100% of trades, 100% of volume, and 100% of P/L. There is no soccer, no NFL, no politics, no other crypto pair. He doesn't even touch the 15-minute or hourly crypto markets that share the same orderbook architecture - only the 5-minute slice.

btc-updown-5m-1777262400 → "Bitcoin Up or Down - April 27, 12:00AM-12:05AM ET"
          btc-updown-5m-1776907500 → "Bitcoin Up or Down - April 22, 9:25PM-9:30PM ET"
          btc-updown-5m-1777450500 → "Bitcoin Up or Down - April 29, 4:15AM-4:20AM ET"

A new market opens every five minutes, 288 markets per day. Lil222 touches roughly 140 of them per day on average, which means he picks up about half of the available 5-min BTC market inventory. The other half are dead because the orderbook never offers a $0.01 contra-side to lift.

The selection rule is implicit but obvious: only enter when the market has gapped enough that one side is trading at $0.01. Most markets open near $0.50/$0.50 and stay there. They never hit $0.01 on either side. Lil222 ignores those - his algorithm only trips when the BTC tick has carried one side to the floor in the final minute or two of the window.

That makes his average market-touch a bet on mean reversion in the last 90 seconds of a 5-minute crypto market. Not on direction.


The Order of Operations - One Market, Trade by Trade

This is the cleanest single-trade trace in the dataset. April 22, 9:25PM-9:30PM ET market (UTC: 01:25-01:30 on April 23):

Time (UTC)ActionOutcomePriceSharesUSDCRunning P/L
01:28:04BUYDown$0.01590-$5.81-$5.81
01:28:12SELLDown$0.02391+$7.81+$2.00
01:30:14BUYUp$0.01500-$5.00-$3.00
Resolution (01:30:00)-Up wins$1.00500 paid+$500+$497

Walk through what's happening:

  1. 01:28:04 - minute 3 of the 5-minute window. BTC has ticked enough that "Down" is trading at the floor. Lil222 hits the $0.01 bid for 590 shares of "Down" across six fills in the same second (sub-second bot fan-out - note the identical timestamp on six separate transaction hashes).
  2. 01:28:12 - eight seconds later. Someone bumps the orderbook. The $0.02 ask is now lift-able. Lil222 immediately sells 391 of his 590 "Down" shares at $0.02. He's already net positive on this market. He still holds 199 "Down" shares as a residual lottery ticket.
  3. 01:30:14 - fourteen seconds after the market window closes. The "Up" outcome is about to be declared the winner (the resolution oracle hasn't fired yet but the price action signaled it). Lil222 sees "Up" still being offered at $0.01 by panicking pre-resolution sellers and buys 500 shares of the winning side at $0.01.
  4. Settlement. "Up" wins. The 500 "Up" shares pay $1.00 each = $500. The 199 unsold "Down" shares pay $0.00. Net: -$5.81 -$5.00 +$7.81 +$500 = +$497.

That is a $5 ticket returning $500. A 99× gross return on the winning leg, banked in roughly two minutes.

The market resolution is even cleaner in single-fill cases. The April 27, 12:00AM-12:05AM ET market is one trade in the entire CSV: one BUY at 04:04:52 UTC (12:04:52 AM ET - eight seconds before the window closes) for 500 shares of "Up" at $0.01. "Up" wins. $5.00 in, $500 out, +$495 P/L on a single fill.

This is what 296 of his 21,919 BUYs look like (the 1.36% that win). The other 21,623 lose their $0.01 (or get partially recouped via the $0.02 sell). The wins individually are an order of magnitude larger than the losses. The expected value is positive because the 99× payout on wins crushes the 1× loss on misses.


Why It Works - The Penny Math

Treat a single $0.01 share as a probabilistic instrument:

p(sell at $0.02 before close)          ≈ 56%   (12,620 / 21,919 BUY tickets had a SELL counterpart)
          p(hold to settlement & win at $1.00)   ≈ 1.4%
          p(hold to settlement & lose at $0.00)  ≈ 42.6%

The expected value per $0.01 ticket:

EV  =  0.56 × $0.02   +   0.014 × $1.00   +   0.426 × $0.00
              =  $0.0112        +   $0.0140         +   $0
              =  $0.0252

A $0.01 ticket has a $0.0252 expected exit value. That's a +152% expected return per ticket before any other adjustments. Even after cancellation rates, slippage, gas, and the unsold residual that mostly resolves to zero, the realized number lands at +56% net ROI on cash deployed across 25 days. The strategy is not subtle. It is the kind of edge that gets harvested by whoever shows up first with a low-latency bot, and then the edge dies when other bots compete.

LIL222 is one of those bots. The fact that he's still printing 56% in late April 2026 means either (a) the market is too small for serious competition to bother yet, or (b) the orderbook tick at $0.01 is small enough that even with 3-4 bots competing, the absolute scale doesn't attract serious capital. His total 25-day capital deployed is $11,146 - eleven thousand dollars. This is the kind of edge that prints percentage returns but not dollar returns big enough to fund anyone's lifestyle. He's grinding $250/day on a margin that nobody bigger will fight him for.


Phase 1 - Trader Profile

Scale & Activity

  • 21,919 BUYs + 12,805 SELLs = 34,724 trades in 25 days
  • BUY notional $11,146 · SELL notional $11,709 · gross turnover $22,855
  • ~1,389 trades per day · active every single calendar day in the range
  • 3,500 unique markets across 3,500 unique events → exactly one market per event (the 5-min BTC schedule produces a fresh event every 5 minutes; he never double-touches the same market)

Trade Size Distribution (capped, not power-law)

StatValue
Median$0.13
Mean$0.66
P90$1.94
P95$2.80
P99$5.00
Max$151.29
Top 5% share of capital40.3%
Top 1% share of capital25.9%

Notice the hard ceiling at $5.00 - that's the P99 mark, and the max single fill is $151.29. He's running fixed-size clips of either ~$0.05 (5 shares × $0.01) or ~$5.00 (500 shares × $0.01), with rare outliers when he piles into a single market. There's no scaling-by-conviction here. There's no Kelly sizing. There's no edge-weighted bet. Every market gets the same $5 lottery ticket regardless. The book is uniform-size, which is exactly what you'd expect from a bot that doesn't have a directional model - there's nothing to scale on.

Execution Signature

  • Median inter-fill gap on same (market, outcome): 0.0 seconds
  • 84.3% of consecutive fills under 1 second · 99.0% under 10s · 100% under 60s
  • This is definitive bot territory - sub-second fan-out across multiple transaction hashes in the same second is not human reaction time

The April 22 9:25PM trace above shows six separate BUY transactions all stamped 01:28:04 UTC. That's the bot splitting one logical order across multiple on-chain fills in parallel - atomic multi-leg fan-out, common for penny markets where the orderbook depth at any single price point is shallow.

Archetype

Pure passive maker / penny-longshot harvester. Not directional, not market-making in the both-sides sense, not signal-following. He's the resting bid at the floor of every 5-min BTC market that gaps to $0.01.


Phase 2 - Core Strategy Identification

Both-sides participation: only 1.60%

Of 3,500 markets touched, only 56 had both YES and NO sides bought. This rules out classical market-making (which would show 60%+) and rules out hedge-the-tail strategies. He's almost always one-sided per market: he buys whichever side has gapped to $0.01, not both sides.

Paired cost on the rare both-sides markets: $0.0200

When he does buy both sides, the paired cost is essentially the floor: $0.01 + $0.01 = $0.02. That means a guaranteed payout of $1.00 on whichever side wins - a $0.98 spread per paired share, or a 49× return on paired capital with zero directional risk. These 56 markets generated $4,470 in P/L on tiny capital - about 7% of his book. The both-sides cases aren't his main strategy but when they happen they're free money.

What he is not doing

  • Not a market maker (1.6% both-sides rate vs MM threshold of 60%)
  • Not directional (1.36% win rate is worse than coin-flip random - by design, because he's buying losing-side tickets when they're cheap)
  • Not a stale-price sniper in the classical sense (he doesn't wait for the resolution to be obvious - he enters in the final 90s of an active market and lets noise produce the win)
  • Not a copy-trader (every market is a fresh 5-min BTC event; nothing to copy)
  • Not DCA (each market gets one cluster of trades in a 2-3 minute window, then he never returns)

Classification

Pure passive penny-longshot harvester. The single closest peer in this library is bonereaper, which runs the same 5-min BTC strategy but with slightly different price targets and a more active SELL profile. LIL222 is bonereaper distilled to its purest form - every parameter except the entry price has been removed.


Phase 3 - Dominance Ratio Analysis

The classical dominance analysis essentially doesn't apply here because only 56 of 3,500 markets have both sides bought. The breakdown:

BucketMarketsDom WRMean PairedAvg Mkt P/L
1.0–1.5×5315.1%$0.0200+$82
1.5–2.0×10.0%$0.0199+$0
2.0–3.0×0---
3.0–5.0×10.0%$0.0200+$134
5.0×+10.0%$0.0199+$4

The dom-side win rate at 1.0–1.5× is 15.1% - well below the 50% you'd expect from a random model. That confirms even on the 56 both-sides markets, he is systematically tilting toward the losing side, because that's the one that's at $0.01. The dominance ratio isn't expressing conviction; it's expressing whichever side gapped further down.

There is no conviction curve here. The strategy doesn't have one. The signal is the orderbook floor, not directional information.


Phase 4 - Entry Price Analysis

BandBUY tradesResolvedWRCapitalP/LROI
$0.00–$0.1021,91921,8301.4%$11.1K+$5,563+49.91%
$0.10–$0.200-----
$0.20–$0.300-----
$0.30–$0.40 through $1.00all 0-----

100% of his BUY capital lives in the bottom $0.10 price band. Drilling deeper:

  • $0.01 exactly: 21,919 of 21,919 BUYs (100.00%)
  • $0.02 exactly: 0 BUYs
  • $0.03+: 0 BUYs

There is no second band. There is no taper. He is locked to the floor.

Sell-side distribution:

  • $0.02 exactly: 12,620 of 12,805 SELLs (98.55%)
  • $0.03: 57 SELLs (0.45%)
  • $0.04: 51 SELLs (0.40%)
  • $0.05+: 77 SELLs (0.60%)

The handful of $0.03+ exits are almost certainly cases where his $0.02 ask got partially filled and the rest had to reprice up as the orderbook moved. The default exit is unconditionally $0.02. He doesn't try to wait for $0.05. He doesn't trail the price up. The strategy is "double-or-nothing": $0.01→$0.02 = 100% gain, take it instantly.

This is the most extreme price-band concentration of any wallet I've ever seen. It is essentially a one-pixel strategy.


Phase 5 - Category & Vertical Breakdown

CategoryBUY tradesBUY $ResolvedWRP/LROI
Crypto21,919$11.1K21,8301.4%+$5,563+49.91%

There is one row. There are no other categories. 100% of trades, 100% of volume, 100% of P/L is in the Crypto vertical, and inside that vertical 100% is 5-minute Bitcoin Up/Down. He doesn't touch any other Polymarket asset class. He has voluntarily chosen the most narrow universe possible.


Phase 6 - Timing & Execution

Hourly P/L (UTC)

The bot runs 24/7, but performance varies meaningfully by hour. Best and worst windows by ROI:

Best ROI hoursROIP/LWorst ROI hoursROIP/L
04:00 UTC+268%+$87419:00 UTC−18.4%−$95
07:00 UTC+263%+$1,00103:00 UTC−11.9%−$47
01:00 UTC+135%+$58511:00 UTC−7.6%−$36
22:00 UTC+89%+$44215:00 UTC−2.5%−$12
05:00 UTC+86%+$34920:00 UTC+10.7%+$52

The single best ROI hour is 04:00 UTC (+268%), which is midnight ET - the deep overnight US window when retail liquidity is thin and the orderbook has the widest gaps. The worst is 19:00 UTC (−18%), which is afternoon ET when retail attention is highest and the spreads are tightest. The pattern is consistent: he prints the best returns when nobody else is watching the orderbook.

Only one of 24 hours posts a net loss (19:00 UTC, -$95). The rest are all positive, ranging from +$11 to +$1,001. That's how broad and consistent the edge is.

Day-of-week P/L

DayTradesWRP/LROI
Mon3,5471.5%+$1,065+60.8%
Tue2,9072.2%+$1,498+103.5%
Wed3,2811.3%+$102+6.1%
Thu3,5381.7%+$1,851+101.3%
Fri2,9671.2%+$549+32.9%
Sat2,1201.3%+$338+32.7%
Sun3,5590.4%+$160+9.2%

Tuesday and Thursday are the workhorses (~+100% ROI each). Wednesday and Sunday are weak (~+9% and +6% ROI). There's no strong story for why those two midweek days are the standouts - most likely it's just sample variance on small absolute numbers. The bot doesn't attempt to time the week.

Burst patterns and accumulation windows

Same-second multi-fill is the norm - 84% of consecutive fills on the same (market, outcome) happen within 1 second. The April-22-9:25PM example (six BUYs in the same second, then five SELLs eight seconds later) is the signature pattern.

Median accumulation window per market: roughly 90 seconds (entry late in the 5-min window, exit moments later). He never returns to a market after it resolves - every event is one-touch.


Phase 7 - Filter Experiments

FilterTradesWRCapitalP/LROIΔ vs baseline
Unfiltered baseline21,9191.4%$11.1K+$5,563+49.91%-
Resolved only21,8301.4%$11.1K+$5,529+49.83%-$34
Price 0.30–0.700-$0$0--$5,563
Price 0.60–0.70 (sweet spot)0-$0$0--$5,563
High-conviction (dom≥2×, dom leg only)140.0%$10-$7-69.9%-$5,570
Exclude single worst hour (19:00 UTC)20,7801.4%$10.6K+$5,658+53.24%+$95
Exclude worst 4 hours18,1541.5%$9.3K+$5,753+61.91%+$190

Most filters are useless or destructive on this trader. The price-band filters return zero trades because 100% of his book is in the $0.00–$0.10 band. The dominance filter is meaningless because he's barely both-sides at all. Only the hour-exclusion filters add anything, and they add very little - about $190 of incremental P/L (3.4% lift) by skipping the four worst-performing hours of the day.

The strategy is already running at filter terminal velocity. There's no further refinement to extract by tightening selection. The base strategy is the optimization. Filters that work on directional or MM books do nothing here because the underlying engine doesn't have the dimensions those filters operate on.

The one practical refinement would be to skip hour 19:00 UTC entirely - it's the only outright loser hour, and excluding it cleanly adds about +$95 / +0.6% ROI without throwing out any meaningful sample.


Phase 8 - Rolling Window Consistency

MetricValue
Rolling 7-day windows green24 of 25 (96.0%)
Rolling 7-day P/L range-$2 → +$3,031
Rolling 15-day windows green24 of 25 (96.0%)
Rolling 15-day P/L range-$2 → +$4,794
Worst single day-$76 (April 29, the last day with cut-off data)
Best single day+$1,142 (April 23)
Days with positive P/L19 of 25 (76%)

This is one of the most consistent edge profiles in the library. 96% of all rolling windows close green, and the only "red" window is a -$2 dip in the early days when the bot was still warming up. The cumulative line is monotonically rising for essentially the entire observation period.

The cumulative trajectory:

Day  1 (Apr 5):  +$13       Day 14 (Apr 18):  +$1,732
          Day  5 (Apr 9):  +$592      Day 19 (Apr 23):  +$4,009
          Day 10 (Apr 14): +$835      Day 25 (Apr 29):  +$5,563

Notice the acceleration in week 3-4. Daily P/L averages ~$60 in the first 10 days, then ~$330 in the last 10 days. Two possible explanations:

  1. Capital scaling. He may have increased the per-market clip size as the strategy proved out - the daily BUY notional climbs from ~$200 in week 1 to ~$800 in week 4.
  2. Market expansion. The bot may have widened its market-selection rules to touch more 5-min markets per day (1,418 trades on April 20 vs 408 on April 5 - 3.5× the velocity).

Either way, there's no mean-reversion to fear - the strategy keeps getting more profitable as he scales it. No drawdown deeper than $76 on any single day. The book never goes underwater for more than a few hours. It is the closest thing to a risk-free yield instrument I have seen in this dataset.


Phase 9 - P/L Decomposition

ComponentValueInterpretation
BUY USDC out-$11,146Total deployed
SELL USDC in+$11,709Already nets +$563 from the SELL leg alone
Resolved-market payouts+$5,661The 296 winning lottery tickets paying $1 each
Open-position MTM (last price)+$42Negligible (almost everything resolves)
Net realized P/L (cash-flow)+$6,267
Net ROI on BUY notional+56.22%

Breaking the edge into its two engines:

  1. The SELL engine generates $563 alone (SELL proceeds exceed BUY cost by themselves). That's a +5.1% return on capital from market-making activity only, before any resolution outcomes. This is the orderbook-bounce harvester - every $0.01 share flipped at $0.02 banks $0.01.
  1. The settlement engine generates the remaining $5,661 from the 296 winning tickets that paid $1.00 each on a $0.01 cost basis. This is the lottery component - 1.36% hit rate at 99× gross payout = ~+35% expected return per ticket on the held residual.

The two engines run in tandem on the same shares: he tries to flip them at $0.02 first, then if that doesn't happen, the share auto-converts into a held lottery ticket at expiry. Both branches are positive-EV, which is why the strategy is so resilient. Even if the SELL fill rate dropped to zero, the settlement engine alone would still be profitable. Even if the win rate dropped from 1.4% to 0.7%, the SELL engine alone would still be profitable. The two paths backstop each other.

The hedge-tax line ($168) is essentially nothing - because he barely touches both sides, the hedge cost is negligible.


Phase 10 - Strategy Specification (short form; full detail in playbook.md)

One-sentence summary: A single-purpose Polymarket bot that places $0.01 bids on the cheapest leg of every 5-minute Bitcoin Up/Down market and posts $0.02 asks on whatever fills, holding the unsold residual to settlement.

Edge source: Two stacked positive-EV engines:

  1. Orderbook-bounce arbitrage ($0.01→$0.02 = 100% gain, 56% fill rate).
  2. Tail-event harvest (1.4% win rate at 99× payout = +35% per held share).

What works: Off-hours trading windows (00–07 UTC). Tuesday and Thursday calendar days. The $0.01-bid/$0.02-ask price wedge. Same-second multi-leg fan-out execution.

What drags: Hour 19:00 UTC (the only net-loss hour). Weekend daytime windows.

Risk profile: Maximum daily drawdown observed: $76. 96% of all rolling windows green. The strategy is bounded-loss by construction - every fill is $0.01-$5.00, and the worst case per fill is -$0.01 to -$5.00. It is structurally incapable of a large blowup.

Why this is uniquely interesting: Most edge strategies in prediction markets blend signal and structure (directional view + sizing + hedge). LIL222 has stripped every dimension except the entry price and the exit price. It's a one-rule bot operating on a one-tick price wedge. The fact that 56% net ROI in 25 days is achievable on this little capital with this little code is what makes it worth replicating.

The playbook spec translates this into runnable thresholds and bankroll math.

// 004 / Quantitative breakdown

Quantitative breakdown

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

Window: 2026-04-05 → 2026-04-29 (25 calendar days, 25 active) Source CSV: LIL222_trades.csv Methodology: Cash-flow P/L = -buy_usdc + sell_usdc + remaining_share_payout. Remaining shares settle at $1 if outcome won, $0 if lost, or mark at last-traded price if open. No tx-hash dedup (atomic multi-leg fills are real trades).


Phase 1 - Trader Profile

Scale

MetricValue
Total trades34,724
BUY trades21,919
SELL trades12,805 (36.88% of all)
Unique markets (condition IDs)3,500
Unique events3,500
Active calendar days25 of 25
Trades per active day1,389
BUY notional$11,146
SELL notional$11,709
Gross turnover$22,855

Trade-size distribution (USDC per fill)

QuantileValue
min$0.00
p10$0.02
median$0.13
mean$0.66
p75$0.71
p90$1.94
p95$2.80
p99$5.00
max$151.29
Top 5% share of capital40.3%
Top 1% share of capital25.9%

Inter-trade gap, same (market, outcome)

StatSeconds
Sample size31,161
Median0.0
Mean0.6
P250.0
P750.0
P902.0
% under 1s84.3%
% under 10s99.0%
% under 60s100.0%
% under 1hr100.0%

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

  • Both-sides rate: 1.60% (56 of 3,500 markets)
  • Median paired cost: $0.0200
  • Mean paired cost: $0.0200
  • Paired cost % under $1.00: 100.0%
  • Paired cost % under $0.97: 100.0%
  • Paired cost % under $0.95: 100.0%
  • Median 2nd-side hedge lag: 38s (0.6 min)
  • % of pairs hedged within 60s: 69.6%
  • % of pairs hedged within 1hr: 100.0%

Dominance buckets (5-tier)

BucketMarketsDom WRMean PairedAvg Mkt P/LTotal Mkt P/L% Profitable
1.0-1.5x5315.1%$0.0200+$82+$4,33288.7%
1.5-2.0x10.0%$0.0199+$0+$0100.0%
2.0-3.0x0---$0-
3.0-5.0x10.0%$0.0200+$134+$134100.0%
5.0x+10.0%$0.0199+$4+$4100.0%

Phase 4 - Entry-Price Analysis (cash-flow P/L)

BandBUY tradesResolvedWinsWRCapital% CapP/LROI
$0.00–$0.1021,91921,8302961.4%$11.1K100.0%+$5,56349.91%
$0.10–$0.20000-$0.000.0%$0-
$0.20–$0.30000-$0.000.0%$0-
$0.30–$0.40000-$0.000.0%$0-
$0.40–$0.50000-$0.000.0%$0-
$0.50–$0.60000-$0.000.0%$0-
$0.60–$0.70000-$0.000.0%$0-
$0.70–$0.80000-$0.000.0%$0-
$0.80–$0.90000-$0.000.0%$0-
$0.90–$1.00000-$0.000.0%$0-

Phase 5 - Category & Vertical Breakdown

CategoryBUY tradesSELL tradesBUY $SELL $ResolvedWRP/LROI
Crypto21,91912,805$11.1K$11.7K21,8301.4%+$5,56349.91%

Phase 6 - Timing & Execution

Net P/L by hour (UTC)

HourBUY tradesCapitalWinsWRP/LROI
00:00804$389.94334.1%+$33084.57%
01:00807$434.3540.5%+$585134.59%
02:00729$388.1630.4%+$5413.92%
03:00780$396.9230.4%-$47-11.87%
04:00583$326.08315.4%+$874268.10%
05:00804$407.0291.1%+$34985.79%
06:00662$389.8271.1%+$348.70%
07:00609$380.20223.6%+$1,001263.17%
08:00784$479.9920.3%+$112.22%
09:001,133$556.96181.6%+$8214.69%
10:001,110$489.9710.1%+$15732.02%
11:00914$470.13202.2%-$36-7.62%
12:001,136$479.0250.4%+$6012.48%
13:00999$551.72171.8%+$40272.83%
14:001,026$577.5380.8%+$8715.09%
15:00932$468.9300.0%-$12-2.51%
16:00996$535.14262.6%+$40275.13%
17:001,098$558.92302.7%+$17130.63%
18:001,000$500.33212.1%+$28055.91%
19:001,139$518.1800.0%-$95-18.39%
20:001,215$486.3070.6%+$5210.74%
21:00768$453.01202.6%+$23852.52%
22:00956$496.6930.3%+$44289.02%
23:00935$410.8060.6%+$14334.89%

Net P/L by day-of-week

DayBUY tradesCapitalWRP/LROI
Mon3,547$1.8K1.5%+$1,06560.80%
Tue2,907$1.4K2.2%+$1,498103.53%
Wed3,281$1.7K1.3%+$1026.06%
Thu3,538$1.8K1.7%+$1,851101.27%
Fri2,967$1.7K1.2%+$54932.92%
Sat2,120$1.0K1.3%+$33832.67%
Sun3,559$1.7K0.4%+$1609.21%

Phase 7 - Filter Experiments

FilterTradesWRCapitalP/LROIΔ vs baseline
Unfiltered baseline21,9191.4%$11.1K+$5,56349.91%$0
Resolved only21,8301.4%$11.1K+$5,52949.83%-$34
Price 0.30-0.7000.0%$0.00$00.00%-$5,563
Price 0.60-0.70 (sweet spot)00.0%$0.00$00.00%-$5,563
High-conviction (dom>=2x, dom leg only)140.0%$10.00-$7-69.90%-$5,570
Exclude single worst hour (19:00 UTC)20,7801.4%$10.6K+$5,65853.24%+$95
Exclude worst 4 hours18,1541.5%$9.3K+$5,75361.91%+$190
Exclude losing categories (none)21,9191.4%$11.1K+$5,56349.91%$0
STACK: high-conv + skip worst hour + skip losing cats140.0%$10.00-$7-69.90%-$5,570

Phase 8 - Rolling Window Consistency

  • Rolling 7-day windows green: 24 of 25 (96.0%)
  • Rolling 7-day P/L range: -$2 → +$3,031
  • Rolling 15-day windows green: 24 of 25 (96.0%)
  • Rolling 15-day P/L range: -$2 → +$4,794

Daily P/L (BUY trades, cash-flow allocated)

DateBUY tradesCapitalDaily P/LCum P/L
2026-04-05408$138.69+$13+$13
2026-04-06418$225.32-$15-$2
2026-04-07384$157.01+$356+$354
2026-04-08501$246.70+$33+$387
2026-04-091,030$502.26+$205+$592
2026-04-10714$393.55+$174+$766
2026-04-11180$66.09+$89+$855
2026-04-1239$6.20-$3+$852
2026-04-13239$39.31-$7+$845
2026-04-14429$148.25-$10+$835
2026-04-15875$432.34+$123+$957
2026-04-16974$464.75+$505+$1,462
2026-04-17768$429.83+$311+$1,773
2026-04-18693$461.20-$41+$1,732
2026-04-191,341$834.73+$175+$1,907
2026-04-201,418$804.81+$243+$2,150
2026-04-211,466$966.83+$695+$2,845
2026-04-221,399$761.60+$22+$2,867
2026-04-231,534$860.94+$1,142+$4,009
2026-04-241,485$843.95+$64+$4,073
2026-04-251,247$506.31+$289+$4,362
2026-04-261,771$759.54-$25+$4,338
2026-04-271,472$682.07+$844+$5,181
2026-04-28628$175.29+$458+$5,639
2026-04-29506$238.54-$76+$5,563

Phase 9 - P/L Decomposition

ComponentValue
BUY USDC out-$11,146
SELL USDC in+$11,709
Resolved-market payouts+$5,661
Open-position MTM (last price)+$42
Net realized P/L (cash-flow)+$6,267
Net ROI on BUY notional56.22%

Theoretical structural attribution

ComponentValue
Theoretical spread P/L (from paired VWAPs)+$15,596
Hedge-tax outflow on losing side (resolved markets)$168

Phase 10 - Top Markets

Top 25 by BUY notional

MarketTradesBUY $SELL $Net P/L
Bitcoin Up or Down - April 20, 7:20AM-7:25AM ET19$10.01$9.52+$24
Bitcoin Up or Down - April 21, 4:05PM-4:10PM ET25$10.00$9.05+$47
Bitcoin Up or Down - April 26, 5:50PM-5:55PM ET10$10.00$10.00$0
Bitcoin Up or Down - April 24, 2:30AM-2:35AM ET15$10.00$10.00-$0
Bitcoin Up or Down - April 23, 10:25AM-10:30AM ET5$10.00$10.00-$0
Bitcoin Up or Down - April 23, 3:35AM-3:40AM ET2$10.00$0.00+$490
Bitcoin Up or Down - April 23, 1:15AM-1:20AM ET17$10.00$9.52+$24
Bitcoin Up or Down - April 22, 9:05AM-9:10AM ET10$10.00$10.00+$0
Bitcoin Up or Down - April 20, 1:10AM-1:15AM ET9$10.00$15.77+$213
Bitcoin Up or Down - April 19, 12:00PM-12:05PM ET9$10.00$10.00$0
Bitcoin Up or Down - April 26, 7:40PM-7:45PM ET20$10.00$0.10-$10
Bitcoin Up or Down - April 22, 8:15PM-8:20PM ET39$10.00$5.97+$198
Bitcoin Up or Down - April 22, 1:30PM-1:35PM ET35$9.99$10.01+$0
Bitcoin Up or Down - April 22, 9:25PM-9:30PM ET13$9.99$8.01+$498
Bitcoin Up or Down - April 21, 2:50PM-2:55PM ET41$9.99$13.39+$269
Bitcoin Up or Down - April 19, 7:15AM-7:20AM ET51$9.99$10.22+$27
Bitcoin Up or Down - April 20, 9:30AM-9:35AM ET19$9.99$9.98+$1
Bitcoin Up or Down - April 18, 4:15PM-4:20PM ET32$9.99$10.00+$0
Bitcoin Up or Down - April 25, 12:05AM-12:10AM ET38$9.99$4.76+$257
Bitcoin Up or Down - April 28, 6:15PM-6:20PM ET40$9.87$3.73+$482
Bitcoin Up or Down - April 23, 8:20PM-8:25PM ET25$9.21$8.50+$66
Bitcoin Up or Down - April 24, 11:55PM-12:00AM ET23$6.37$3.01+$134
Bitcoin Up or Down - April 23, 12:35PM-12:40PM ET14$6.31$0.77-$6
Bitcoin Up or Down - April 21, 2:20PM-2:25PM ET26$5.98$10.19+$4
Bitcoin Up or Down - April 22, 7:00AM-7:05AM ET29$5.49$0.00-$5

Top 15 winners by P/L

MarketBUY $Net P/L
Bitcoin Up or Down - April 22, 9:25PM-9:30PM ET$9.99+$498
Bitcoin Up or Down - April 27, 12:00AM-12:05AM ET$5.00+$495
Bitcoin Up or Down - April 23, 3:35AM-3:40AM ET$10.00+$490
Bitcoin Up or Down - April 28, 6:15PM-6:20PM ET$9.87+$482
Bitcoin Up or Down - April 27, 3:45AM-3:50AM ET$4.99+$446
Bitcoin Up or Down - April 21, 2:50PM-2:55PM ET$9.99+$269
Bitcoin Up or Down - April 25, 12:05AM-12:10AM ET$9.99+$257
Bitcoin Up or Down - April 17, 9:35AM-9:40AM ET$5.00+$245
Bitcoin Up or Down - April 16, 6:30AM-6:35AM ET$5.00+$245
Bitcoin Up or Down - April 16, 1:55PM-2:00PM ET$4.99+$232
Bitcoin Up or Down - April 21, 12:10PM-12:15PM ET$5.00+$229
Bitcoin Up or Down - April 20, 1:10AM-1:15AM ET$10.00+$213
Bitcoin Up or Down - April 11, 3:50AM-3:55AM ET$0.00+$208
Bitcoin Up or Down - April 22, 8:15PM-8:20PM ET$10.00+$198
Bitcoin Up or Down - April 11, 3:30AM-3:35AM ET$0.00+$173

Top 15 losers by P/L

MarketBUY $Net P/L
Bitcoin Up or Down - April 26, 7:40PM-7:45PM ET$10.00-$10
Bitcoin Up or Down - April 23, 12:35PM-12:40PM ET$6.31-$6
Bitcoin Up or Down - April 22, 7:00AM-7:05AM ET$5.49-$5
Bitcoin Up or Down - April 28, 8:45AM-8:50AM ET$5.05-$5
Bitcoin Up or Down - April 27, 7:05PM-7:10PM ET$5.01-$5
Bitcoin Up or Down - April 25, 5:00AM-5:05AM ET$5.01-$5
Bitcoin Up or Down - April 20, 6:30PM-6:35PM ET$5.01-$5
Bitcoin Up or Down - April 19, 7:40AM-7:45AM ET$5.01-$5
Bitcoin Up or Down - April 28, 11:30PM-11:35PM ET$5.01-$5
Bitcoin Up or Down - April 26, 10:00PM-10:05PM ET$5.01-$5
Bitcoin Up or Down - April 26, 9:05AM-9:10AM ET$5.01-$5
Bitcoin Up or Down - April 24, 4:55AM-5:00AM ET$5.01-$5
Bitcoin Up or Down - April 22, 8:25AM-8:30AM ET$5.01-$5
Bitcoin Up or Down - April 21, 7:15PM-7:20PM ET$5.01-$5
Bitcoin Up or Down - April 21, 9:30AM-9:35AM ET$5.01-$5

Report generated 2026-04-29 01:41 from LIL222_trades.csv.

// 005 / Filter strategy

Filter strategy

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

Wallet: 0xeaca59cb5e10e0be128b005a0f84465d2ed80729 Window: 2026-04-05 → 2026-04-29 Baseline: 21,919 BUYs · 1.36% WR · $11,146 deployed · +$5,563 P/L · +49.91% ROI

Methodology: Each filter is applied to the resolved-BUY set. Cash-flow P/L is allocated per-trade using pnl = frac × (sell_usdc + remaining_payout) − usdc. ROI is measured against BUY notional within the filter. The baseline already strips losing capital from the book through the SELL-engine; filters here are testing whether additional selection rules add edge.

The headline result

On this trader, almost no filter helps. That is itself the story.

Most of the filters in the standard PR&R framework are designed for traders with multiple dimensions of variance - directional vs spread, multiple categories, multiple price bands, multiple market types. LIL222 has compressed all of those dimensions to a single rule (bid $0.01, ask $0.02 on 5-min BTC). There's nothing left to filter on. The strategy is already at filter terminal velocity - every fill the bot already takes was selected by the underlying entry logic, and additional gating mostly subtracts good fills along with a tiny number of bad ones.

The one thing that does help: dropping the worst hours of the day. That alone adds about +$190 of P/L (3.4% lift). Everything else is noise or destruction.


Filter results table

FilterTradesWRCapitalP/LROIΔ vs baseline
Unfiltered baseline21,9191.4%$11.1K+$5,563+49.91%-
Resolved only21,8301.4%$11.1K+$5,529+49.83%-$34
Price 0.30–0.700-$0$0--$5,563 (eliminates whole book)
Price 0.60–0.70 (sweet spot)0-$0$0--$5,563 (eliminates whole book)
High-conviction (dom≥2×, dom leg only)140.0%$10-$7-69.9%-$5,570
Exclude single worst hour (19:00 UTC)20,7801.4%$10.6K+$5,658+53.24%+$95
Exclude worst 4 hours18,1541.5%$9.3K+$5,753+61.91%+$190
Exclude losing categories (none)21,9191.4%$11.1K+$5,563+49.91%$0
STACK: high-conv + skip worst hour + skip losing cats140.0%$10-$7-69.9%-$5,570

Filter-by-filter commentary

1. Price band filters → useless

100% of his book lives in the $0.00-$0.10 band (in fact, all 21,919 BUYs sit at exactly $0.01). Any filter that targets a higher band returns zero qualifying trades and zero P/L. The classical "$0.30-$0.70 sweet spot" filter, which is the workhorse for most directional bettors, is a non-event for LIL222 because he doesn't trade outside the floor.

Verdict: N/A. The filter framework's price dimension doesn't apply.

2. High-conviction filter (dominance ≥ 2×, dominant leg only) → destructive

This filter would normally extract the alpha leg from a market-maker by ignoring the hedge side and keeping only the directional bet. LIL222 doesn't market-make - only 56 of 3,500 markets have both sides bought, and only 2 of those exceed 2× dominance. The filter qualifies just 14 trades, all losers, totaling -$7 P/L.

Verdict: Destructive. Strips out 99.94% of the book to capture a tiny noise sample.

3. Category filter → meaningless

100% of his trades are Crypto. There is one category. There is nothing to filter on.

Verdict: Identity transformation. Returns the baseline.

4. Exclude single worst hour (19:00 UTC) → small lift

Hour 19:00 UTC is the only outright net-loss hour in the day (-$95 over 1,139 trades, -18.4% ROI). Excluding it drops 1,139 trades and adds +$95 to P/L (+0.6% ROI lift).

This is the only filter on the menu that delivers a clean, intuitive, positive result. It's small in absolute terms because the baseline is small in absolute terms - but the percentage lift is real and the rule is unambiguous.

Verdict: ✅ Worth implementing. Skip 19:00–20:00 UTC. Costs you 1,139 fills, saves you $95.

5. Exclude worst 4 hours → larger lift, larger sample loss

Drops the four worst-performing hours (cumulative across the bottom of the hourly P/L distribution): some combination of 19:00, 03:00, 11:00, and 15:00. Removes 3,765 trades and adds +$190 P/L (+12 ROI points).

The catch: this is the maximum you can squeeze out of hour-filtering on the observed data without overfitting. Pushing further (excluding 6 hours, 8 hours, etc.) starts cutting into samples whose negative ROI is within noise of the positive ones.

Verdict: ✅ The single most productive refinement available. Sacrifices 17% of trade volume for a 3.4% lift in absolute P/L and a 24% lift in realized ROI on the trades that remain.

6. STACK (high-conv + skip worst hour + skip losing cats) → broken

The stacked filter is dominated by the high-conviction component, which already collapsed the sample to 14 trades. Adding hour and category exclusions on top doesn't recover any signal. Output: same 14 losers as the high-conv filter alone, -$7.

Verdict: Don't stack high-conviction here. It's incompatible with the strategy's structure.


What filters would add value if you could measure them

The most useful refinements aren't in the standard framework because they require orderbook depth and microstructure data we don't have from the trade log alone. Hypothetically:

Hypothetical filterWhy it might helpRequired data
Skip markets where opposing $0.99 ask is thinIndicates the market is illiquid enough that the $0.02 exit is unlikely to fill - hold-only setup raises varianceL2 orderbook snapshots
Trigger only when BTC 1-min realized vol > 50bpsHigher vol → more frequent gaps to $0.01 → more entry signals → larger denominatorBTC tick data
Skip the first 60 seconds of a marketLow-info window where the orderbook is settling - most $0.01 bids that hit early are soft signals from market makers, not real liquidityPer-market trade timestamps
Skip when previous 5-min market resolved against the side currently at $0.01Mean-reversion in BTC over consecutive 5-min windows → if last window broke down, this one is more likely to followCross-market resolution log

None of these can be computed from the trade CSV alone. If LIL222 himself is using any of them, we can't tell from the wallet history - they would be invisible filters expressed in his entry code.


Bottom line for replication

The base strategy already extracts the available edge. The only practical post-strategy filter is:

Skip 19:00 UTC. Optionally also skip 03:00, 11:00, 15:00 if you want to push the sample-tightening to its limit.

That's it. Don't overcomplicate it. The dollars saved by hour-filtering are real but small ($95-$190 over 25 days). The dollars saved by not trying to layer on more sophisticated filters than the underlying strategy can support are larger - because every additional gating rule on a sub-second bot adds latency, and latency is the one thing this strategy genuinely cannot afford.

If you replicate this bot, the implementation lift comes from adding a max-fill-rate ceiling (so you don't over-allocate to a single hot market) and scaling the per-market clip with available capital, not from filter selection. See playbook.md for that spec.

// 006 / Replication playbook

Replication playbook

Operator-grade spec for cloning the strategy. Numbers, thresholds, ops checklist.

Source wallet: 0xeaca59cb5e10e0be128b005a0f84465d2ed80729 Strategy: Passive penny-longshot harvester on 5-min Bitcoin Up/Down markets Reference book: $11,146 BUY notional → +$6,267 net P/L → +56.22% ROI in 25 days


One-paragraph operator brief

Build a Polymarket bot that fires a $0.01 BUY on whichever side of every 5-min btc-updown-5m-* market is currently at the orderbook floor, then immediately posts a $0.02 ASK on the same shares. Hold any unsold residual to settlement. Don't look at BTC. Don't look at funding. Don't look at anyone else's trades. Run it 24/7. Skip the 19:00 UTC hour. Cap per-market spend at $5. Expect ~+50% ROI per month on $10K of working capital, with worst-day drawdown bounded by the daily fill rate × $5 = roughly $750/day in absolute downside.


1. Market selection

RuleValue
Asset classPolymarket prediction markets
Market categoryCrypto, only the 5-minute Bitcoin Up/Down series
Slug patternbtc-updown-5m-* (where the trailing integer is the Unix timestamp of the 5-min window open)
Excluded series15-min BTC, 1-hour BTC, 4-hour BTC, ETH/SOL/anything else
Eligibility filterMarket is live AND at least one side has a $0.01 ASK on the orderbook

Notes:

  • The 5-min window is what makes this work - the resolution clock creates the price gaps that drop one side to $0.01 in the final 60-90 seconds. Longer windows don't gap as often or as deeply. Shorter windows don't exist on Polymarket as a stable inventory.
  • New markets open every 5 minutes (288/day). Expect to touch ~140/day = roughly 50% of available inventory based on which side gaps to the floor.

2. Entry logic

def should_enter(market):
              if market.duration != "5m":          return False
              if market.asset != "BTC":            return False
              if not market.is_live:               return False
              if time_until_close(market) > 180:   return False   # only enter in last 3 min
              if time_until_close(market) < 5:     return False   # don't fire after window closes
              
              floor_side = side_with_ask_at(market, 0.01)
              if floor_side is None:               return False   # no $0.01 ask available
              
              return floor_side
ThresholdValueRationale
Entry price$0.01 exactThe trader's strict floor - never bid up
Window positionLast 3 minutes of the 5-min marketPrior data shows >90% of his fills happen in this window
Order typeMarketable buy at $0.01 (= immediate-or-cancel BUY against existing $0.01 ASK)He's not posting a passive bid - he's lifting the resting $0.01 ASK
Per-market clip5 to 500 shares (= $0.05 to $5.00), with 500 shares being the modal sizeMatch the observed P99 of $5.00 max single fill
Hard ceiling per market$5.00 USDCAbsolute observed cap excluding the rare $151 outlier

3. Exit logic (the SELL leg)

def manage_position(position):
              # Try to immediately post the $0.02 ASK
              post_ask(position.shares, price=0.02, expires=position.market.close_time)
              
              # If the ASK doesn't fill before market close, hold to settlement
              # (no stop-loss, no trailing exit, no repricing)
ThresholdValueRationale
Exit price$0.02 exactDoubling the entry; observed in 98.55% of SELLs
Exit timingImmediately after fill (< 10 seconds typical)Observed median sell-after-buy lag is ~8s
RepricingNoneDon't trail to $0.03 or $0.05; he doesn't and the data says it's optimal
Stop lossNoneMaximum loss per ticket is $0.01-$5; structurally bounded
Hold-to-settlement fallbackYes, automaticUnsold shares settle at $1.00 (win) or $0.00 (loss)

The reason for not waiting at $0.03+: the bot is competing with other bots for the same $0.02 fill. If you set your ask at $0.03 and another bot sets $0.02, theirs fills first and yours becomes the held lottery ticket - but you've also lost the $0.01 immediate gain. The marginal utility of $0.03 vs $0.02 is small ($0.01 extra on a $0.05 ticket = +20%), but the marginal probability of your ask getting hit drops from ~50% to <10% because you're behind every $0.02 ask in the queue. Lock the $0.02 immediately.


4. Sizing model

The reference wallet uses fixed clips (no scaling-by-edge, no Kelly). Recommended sizing for replication:

BankrollPer-market clipDaily expected USDC at risk
$1,000$0.50 (50 shares)~$70
$10,000$5.00 (500 shares) - matches reference wallet~$700
$50,000$25.00 (2,500 shares)~$3,500
$100,000+DO NOT SCALE LINEARLY. Liquidity at $0.01 dries up beyond this.-

The strategy's edge degrades when your per-market clip approaches the depth at the $0.01 ASK - you'll partially fill, push the price up off the floor, and lose the entry condition. The reference wallet at $5/market is operating well below the depth wall. Above ~$25/market on most markets you'll start moving prices.

Recommended max bankroll for this strategy: ~$50K-$75K. Beyond that the alpha doesn't scale and you'll need to fragment across multiple wallets to avoid self-impacting your own fills.


5. Bankroll math

Using observed reference numbers as a baseline:

Monthly performance assumptions (extrapolated from 25-day window):
            Capital deployed per month:    ~$13,400 (BUY notional)
            Net P/L per month:             ~+$7,500 (cash-flow)
            Expected ROI per month:        ~+56% on capital deployed
            
          Required liquid working capital: ~$2,000-3,000 (peak instantaneous exposure;
                                                          most capital cycles within minutes)

Important: the +56% ROI is on deployed capital, not on bankroll. The bot only deploys ~$11K total over 25 days but cycles it constantly - on any given day, instantaneous exposure rarely exceeds $2-3K. So the capital efficiency is much higher than the surface ROI number suggests:

On a $5,000 standby bankroll → $7,500 monthly net P/L → +150% monthly ROI on bankroll
          On a $10,000 standby bankroll → $7,500 monthly net P/L → +75% monthly ROI on bankroll

The constraining input is not capital but fill rate - how many of the available 288 daily 5-min markets actually gap to $0.01 on a side you can lift. The reference wallet hits ~140/day, which suggests bot competition isn't yet saturating the floor.


6. Hour exclusions (the only filter that matters)

SkipReason
19:00–20:00 UTCOnly outright net-loss hour in the dataset (-$95 over 1,139 trades)
03:00–04:00 UTCMarginal loss (-$47); first 4-worst hours include this
11:00–12:00 UTCMarginal loss (-$36); first 4-worst hours include this
15:00–16:00 UTCMarginal loss (-$12); first 4-worst hours include this

Conservative recommendation: skip only 19:00 UTC. The other three are noise on the small absolute numbers and may not persist.

Aggressive recommendation: skip all four (~17% of trades, +$190 P/L lift, +12 ROI points on remaining trades). Use this if your fill ceiling is the constraint rather than your hour budget.


7. Operational requirements

RequirementDetail
LatencySub-second. The bot must be co-located or running on a low-latency RPC. Polymarket fills happen on the matching engine, but to detect a $0.01 ASK appearing and lift it before competing bots, you need <500ms RPC round-trip.
ConnectionPersistent WebSocket to Polymarket's CLOB API for L2 orderbook + market events
WalletSingle wallet, USDC-funded on Polygon, ~$2K liquid balance
GasPolygon - negligible. Each fill costs <$0.01 in gas
Uptime24/7. Best ROI hours are 04:00 and 07:00 UTC (i.e., overnight US). Don't run only US business hours.
ConcurrencySingle bot is fine - the rate limit is the 5-min market schedule, not your throughput
MonitoringLog every fill with (market_slug, outcome, side, price, shares, ts). Daily reconciliation against expected EV

8. Risk profile

RiskSeverityMitigation
Per-trade max loss$0.01–$5.00Structural - every fill is bounded by the bid size you sent
Daily max drawdown observed-$76None needed - drawdown is naturally bounded by daily fill volume × clip size
Strategy decay (other bots compete)Medium-highMonitor fill rate weekly. If avg daily markets touched drops below 80, the strategy is fading.
Polymarket rule changesLowTick size is unlikely to change; market schedule is product-stable
BTC volatility regime changeMediumLower realized vol → fewer gaps to $0.01 → fewer fills. Edge per fill stays the same; quantity drops
Wallet-level failure (RPC down, key compromised)MediumStandard operational hygiene; this isn't a strategy-specific risk

The strategy is structurally incapable of a large blowup. Every dollar at risk is a $0.01 ticket. The worst 25 days the model could plausibly produce would still be +$0 not -$5K, because the SELL engine alone (orderbook bounce harvesting) backstops the position.


9. Diagnostic checklist for "is the bot still working?"

Run weekly:

CheckHealthy rangeAction if outside
Daily markets touched80–180If <80: bot is missing fills; check latency. If >200: probably overfiring on noisy markets; tighten window-position filter
% of BUYs at exactly $0.0199%+If <99%: code drift; bot is bidding higher than $0.01
% of SELLs at exactly $0.0295%+If <95%: SELL latency is too slow, asks repricing up
SELL fill rate (SELL count / BUY count)50–65%If <50%: orderbook bounces aren't hitting your ask - competition has tightened
Daily P/L-$50 to +$1,200If consistently negative >3 days: strategy may be decaying; pause and re-evaluate
Win rate on held residual1.0–2.0%If <0.5%: you're holding through the wrong phase of the window; tighten entry timing

10. What this playbook deliberately does NOT include

  • No directional BTC view. Don't add one. The trader doesn't have one and the data confirms a directional view actively destroys the edge.
  • No Kelly/Optimal sizing. Fixed clips are optimal here because every ticket has the same EV.
  • No category expansion. Don't try to apply this to ETH/SOL/sports/etc. The 5-min BTC orderbook is the specific microstructure that produces the $0.01-floor gap. Other markets don't behave the same way.
  • No copy-trading. This is a self-contained edge - there's no signal to follow from another wallet.
  • No hedging. The both-sides participation rate of 1.6% confirms hedging is not part of the strategy. Don't add a hedge.
  • No machine learning. There is nothing for a model to learn here. The rule is the rule.

The whole point of LIL222's edge is that the strategy is small, mechanical, and unhedged. Every "improvement" you might be tempted to add is something he tried implicitly and rejected. Trust the simplicity.


TL;DR - implementable in 100 lines of Python

# Pseudocode - outline only
          while True:
              for market in poll_markets("btc-updown-5m-*"):
                  if not 5 < seconds_until_close(market) < 180:
                      continue
                  if utc_hour(now()) == 19:
                      continue   # skip the one losing hour
                  floor_side = side_with_ask_at(market.orderbook, 0.01)
                  if floor_side is None:
                      continue
                  # Lift $0.01 ASK with up to $5 of buying power
                  fills = lift_ask(market, side=floor_side, price=0.01, max_usdc=5.00)
                  # Immediately post $0.02 ASK on filled shares
                  if fills.shares > 0:
                      post_ask(market, side=floor_side, price=0.02,
                               shares=fills.shares, expires=market.close_time)
                  # Unsold shares auto-settle at $1 (win) or $0 (loss)

Run this 24/7. Reconcile daily. Expect ~+50%/month ROI on $10K of deployed working capital, bounded by the available daily 5-min market inventory and your latency to the matching engine.

That's the entire strategy. There is nothing else.

Join Discord