I Profiled 12,125 Polymarket Weather Traders. Copying the Winners Loses Money

Prediction Markets Data Analysis Backtesting
By Narek Maloyan ·

What this post is. A research log from 10 and 11 October 2026. All data is public: the Polymarket APIs, airport weather reports, and public weather model runs. The window is the market dates 19 September to 9 October 2026. Wallet names are the public Polymarket handles. No real money was traded. This is not trading advice.


Short version

The markets

Each event asks one question: what is the highest temperature in a city on a date? An event has about 11 buckets. US cities use 2 °F buckets. Other cities use 1 °C buckets. Each bucket is a Yes or No market. A winning share pays $1.

The result comes from one weather station, usually the city airport. Most markets resolve on NOAA station data. A few use Weather Underground. Hong Kong uses the Hong Kong Observatory.

Only the taker pays a fee. The market config gives fee = C x 0.05 x p x (1 - p), where C is the number of shares and p is the price. At 100 shares and 50¢, the fee is $1.25. Makers pay no fee. They get 25% of the taker fee as a rebate, plus liquidity rewards.

Where it started: a post about a bot

On 10 October an X post by xmayeth described a weather bot. The rule was simple. Watch the forecast models. When a new run moves the forecast high, buy the bucket it points to and hold it to the end. The post named the Bilberry wallet as the proof.

I checked Bilberry's public trades before I wrote any strategy code. In its last 3,000 fills:

Bilberry made money in my window: +$10.5k on $624k of volume. But its long positions on the forecast bucket lost $4.3k. Its profit came from the short side, and taker fees took about half of its gross edge. The rule in the post does not explain the PnL.

I tested the rule anyway, because a test is cheaper than an opinion.

Test 1: the forecast rule

Method

Result

Variant, exit, delayTradesHit rateAvg entryPnL per $t
adj, hold, 5 min4,15824.4%26.8¢-11.4%-2.78
adj, hold, 180 min4,12523.9%27.0¢-13.2%-3.19
contain, hold, 15 min5,04023.1%26.7¢-21.6%-6.47
Control, hold, 15 min15,06825.4%27.6¢-19.3%-7.56
adj, hold, 15 min, near-mid fills4,18524.4%25.0¢-4.1%-0.86

Read the hit rate next to the entry price. A bucket bought at 25¢ must win more than 25% of the time to make money before fees. None of the variants did. The last row uses a fill only 0.5¢ above the mid price. It still loses 4.1%, which is about the size of the fee.

Four more facts from the test:

Test 2: profile every wallet

If a simple rule loses, the next question is who wins, and how. So I pulled every trade in the same markets.

Method

For the top 12 wallets by PnL, 3 steady wallets and the 3 biggest losers, I computed features from the fills. Some examples: maker share, Yes or No side, price band, share held to the end, time after each model cycle, hours before the local day ends, buys on buckets the observed temperature had already passed, and non-trade activity such as rewards, splits and merges. Then I grouped the wallets by hand, by where their PnL came from.

The population

3,953 wallets have at least 30 fills in at least 10 markets. 1,383 of them are profitable. Split by how much of their volume is maker volume:

Maker share of $WalletsPnLPnL per $ volume
0 to 20%2,004-$18,624-0.11%
20 to 40%498-$2,531-0.03%
40 to 60%559+$33,652+0.35%
60 to 80%327-$33,368-0.59%
80 to 100%565-$136,391-1.25%

The pure makers lose the most on their fills. This table does not include liquidity rewards, because the reward rows in the API have no market id. More on that below.

Seven archetypes

ArchetypeExample walletsWhat they doResult
A. Day-ahead takerbadatmath., hello.67, averageuser, OutOfMemory, BilberryMostly taker. The PnL comes from fills 24 h or more before the local day ends2% to 13% per $. The edge is their own forecast model
B. Model-release traderTunSahur38% of its $ trades in a 30 minute window after each GFS release3% per $
C. Live-observation sniperHighTempTation, Weatherstappen, fastestclickBuy No on a bucket the observed temperature already passed, 1 to 3 minutes after the report99% of events won, 20 of 21 days positive
D. Late winner buyershamu88Buy the winning bucket after the daily peak, at about 69¢13 of 13 days positive, small size
E. No-ladderbalthazarBuy No on about 5 buckets per event1% to 2% per $, positive on 18 to 20 of 21 days
F. Mismatch longshot2 walletsBuy a passed bucket at under 1¢ on days when the official result differs from the airport report$7.7k and $17.5k, each from one day
G. Reward-farm makerthe 3 biggest losersQuote all buckets 12 to 48 h ahead, 99% to 100% maker-2% to -4% per $ on fills, before rewards

No top wallet simply buys the forecast bucket. Their long positions sit 23% to 37% on the forecast bucket, about 45% on its neighbors and about 30% far away. That mix is close to the mix of the losers. The edge is in the price they pay, not in which bucket they pick.

TunSahur: the GFS clock

TunSahur made +$8.1k on $267k of volume, about 3% per $. 38% of its dollar volume trades between 4h00 and 4h30 after each 00, 06, 12 and 18 UTC model cycle, with a peak at 4h08 to 4h13. If its trades were spread at random, that window would hold 11%.

4h08 after the cycle is when GFS data appears on NOAA NOMADS. Open-Meteo has the same run about 1.5 h later. My Test 1 used Open-Meteo, so it always arrived after this trader. This is a likely reason why delay did not matter in Test 1. When the Open-Meteo data arrives, the market has had the same run for about 1.5 h.

The lesson for the method: the data source sets your place in the queue. A free, clean API is often the slow one.

HighTempTation: the dead bucket

This is the one mechanical edge in the data. Take an event where the 18 °C bucket is still open. At 13:00 the airport reports 20 °C. The daily high can only go up from here, so 18 °C cannot win. I call it a dead bucket. For a short time, some quotes still sell its No at 75¢ to 95¢.

HighTempTation buys only No. 93% of its buys are above 80¢. It bought $83k of No on dead buckets for +$6.7k, at an average price of 93.6¢. The median delay after the report that killed the bucket is 1.1 minutes. 90% of its buys come within 3.2 minutes. It then sells most of the No back at 99¢, so its money turns over the same day. Total: +$7.6k on $233k of volume, 99% of events won, positive on 20 of 21 days.

$ paid for Yes on dead buckets, by minutes after the report $12.5k $9.8k $6.3k $1.1k $3.2k $1.7k $2.8k 0 to 1 1 to 2 2 to 5 5 to 10 10 to 30 30 to 120 over 120 minutes after the report (the bins are not equal width)
5,804 taker fills on dead buckets with a Yes price of 2¢ or more, 18 market dates, mismatch events excluded. Not one of these buckets won.

Three facts limit this edge:

Test 3: copy the winners

This is the test the title is about. I ranked wallets on the first 11 days, 19 to 29 September. Then I copied the buys of the top 20 on the next 10 days, 30 September to 9 October. The copier pays the 1 minute history price + 1¢, pays the taker fee, and holds to the end.

Who I copiedTheir own buysCopy +2 minCopy +10 minCopy +60 min
Top 20 by PnL+1.7%-4.3%-4.3%-5.0%
Top 20 by ROI, volume $10k or more+6.8%-1.0%-1.0%-1.4%

The winners stayed positive out of sample. The copy did not. Their edge is the price they get at the moment they trade. Two minutes later, that price is gone, and the copier also pays the taker fee.

PnL per $ after fees, every rule I tested Forecast rule, contain bucket -21.6% Control, buy on every run -19.3% Forecast rule, best case -11.4% Copy top 20 by PnL, 2 min late -4.3% Forecast rule, near-mid fills -4.1% Copy top 20 by ROI, 2 min late -1.0% -20% -10% 0 forecast rule (Test 1) copy test (Test 3)
No bar crosses zero. Best case = adj, hold, 5 min. Contain bucket and control = hold, 15 min. Near-mid fills = 0.5¢ above the mid, no slippage.

Makers, rewards, and the bucket sum

The three biggest losers are 99% to 100% maker. They quote every bucket 12 to 48 hours ahead and lose on every horizon. Snipers and informed takers pick off their quotes. Together they lost $47.5k on fills in 21 days.

Each of them also received $55k to $104k in reward payouts since 17 September. Those rows cover all their markets, not only weather, and have no market id. So their net result is unknown. What the data does show: on fills alone, quoting these markets loses money.

I also checked for a free trade across buckets. If all bucket prices of an event add up to more or less than $1, you could buy or sell the full set. The hourly sum of the mid prices was 0.999 at the 10th percentile, 1.032 at the median and 1.099 at the 90th percentile, over 59,807 samples. But the mid is not the price you can trade at. No top wallet bought or sold a full set in a 10 minute window, except for 3 cases. There is no bucket-sum arbitrage here.

The paper test, and the stop

The sniper was the only rule worth a live test. On 11 October I started a 14 day paper test. It polled METAR for 49 stations every 20 seconds and the Hong Kong Observatory 10 minute data. When a report killed a bucket, it read the live order book and paper-bought No if the report was at most 5 minutes old and the No ask was at most 97¢. The pass bar was $30 per day after fees, and at least 30% of signals still fillable.

The first hours showed the problem. Public METAR on aviationweather.gov arrived 1.5 to 8.5 minutes after the observation time. In Asia it was 5 to 8.5 minutes. For Hong Kong it was 7 to 8 minutes. The fast wallets fill a median 1.1 minutes after the observation, so they read a faster source. Most of my signals were stale on arrival.

The same day I stopped all Polymarket work. My note says: too risky, low reward. The paper job was shut down. The code has no wallet, no key and no order code. It only reads public data.

What I learned

The same lesson, in two other markets

Two viral backtests this month broke the same way. A gold breakout script claimed about +800% since 2011 with zero costs. I reproduced +790%, but real spreads and $0.20 slippage cut it to +5.5% per year with a 26% drawdown. A yen trade on Japanese gotobi days is real on USDJPY at +3.6 pips per trade after costs, but its Sharpe fell from 1.56 (2018 to 2022) to 0.52 (2023 to 2026).

No real money was traded in the backtest or in the paper test.



Narek Maloyan holds a PhD in Computer Science from Lomonosov Moscow State University and works as an AI Research Engineer at Zencoder. His research focuses on AI safety, LLM security, and adversarial machine learning. Learn more