Yield Farming at 86% APY? How to Use Bots to "Earn While You Sleep" on Polymarket
Original Title: I built a Polymarket bot and tested multiple parameter setups, here are the results.
Original Author: @the_smart_ape, Crypto Researcher
Original Translation: Bitpush News
A few weeks ago, I decided to build my own Polymarket bot. The full version took me several weeks to complete.
I was willing to put in this effort because there is indeed an efficiency gap on Polymarket. Although some bots in the market are already taking advantage of these inefficiencies, it is still far from enough, and the opportunities in this market are still far greater than the number of bots.
Bot Building Logic
The bot's logic is based on a set of strategies I have manually executed in the past, which I automated to improve efficiency. The bot runs on the "BTC 15-minute UP/DOWN" market.

The bot runs a real-time monitoring program that can automatically switch to the current BTC 15-minute round, streamlining the best bid/ask through a WebSocket, displaying a fixed terminal UI, and allowing comprehensive control through text commands.

In manual mode, you can place orders directly.
buy up <usd> / buy down <usd>: Buy a specific amount in USD.
buyshares up <shares> / buyshares down <shares>: Purchase an exact amount of shares, using a user-friendly LIMIT + GTC (Good 'Til Canceled) order, executed at the current best ask price.
Automatic mode runs a recurring two-leg loop.
First, it only observes price movements within the windowMin minutes at the start of each round. If either side drops fast enough (reaching a drop percentage of at least movePct in about 3 seconds), it triggers "Leg 1," buying the side that experienced the sharp decline.
After completing Leg 1, the bot will never again buy the same side. It will wait for the "Second Leg (Leg 2, i.e., hedge)" and only trigger if the following condition is met: leg1EntryPrice + oppositeAsk <= sumTarget.
When this condition is met, it buys the opposite side. After Leg 2 is completed, the cycle ends, the bot returns to watching mode, waiting for the next flash crash signal using the same parameters.
If there is a change in the round during the cycle, the bot abandons the open cycle and restarts with the same settings in the next round.
The parameter settings for auto mode are as follows: auto on <shares> [sum=0.95] [move=0.15] [windowMin=2]
· shares: Position size for the two-stage trade.
· sum: Threshold for allowed hedging.
· move (movePct): Flash crash threshold (e.g., 0.15 = 15%).
· windowMin: Time from the start of each round to allow the execution of Leg 1.
Backtesting
The bot's logic is simple: wait for a violent flash crash, buy the side that just dropped, then wait for the price to stabilize and hedge by buying the opposite side, ensuring that priceUP + priceDOWN < 1.
But this logic needs to be tested. Is it really effective in the long run? More importantly, the bot has many parameters (shares, sum, move percentage, window minutes, etc.). Which parameter set is optimal and maximizes profit?
My first thought is to have the bot run live for a week and observe the results. The issue is that this takes too long and can only test one set of parameters, whereas I need to test many.
My second thought is to backtest using online historical data from the Polymarket CLOB API. Unfortunately, for the BTC 15-minute up/down market, the historical data endpoint consistently returns empty datasets. Without historical price ticks, the backtest cannot detect an "approximately 3-second flash crash," cannot trigger Leg 1, and regardless of the parameters used, results in 0 cycles and 0% return on investment (ROI).

Upon further investigation, I found that other users also encountered the same issue when retrieving historical data for certain markets. I tested other markets that did indeed return historical data and concluded that for this particular market, historical data simply was not preserved.
Due to this limitation, the only reliable way to backtest this strategy is to create my own historical dataset by recording real-time best-ask prices while the bot is running.

The recorder will write snapshots to disk, including the following:
· Timestamp
· Round Slug
· Remaining Seconds
· UP/DOWN Token ID
· UP/DOWN Best Ask Price
Subsequently, the "recorded backtest" will replay these snapshots and deterministically apply the same automated logic. This ensures the ability to obtain the high-frequency data needed to detect flash crashes and hedge conditions.
Over 4 days, I collected a total of 6 GB of data. I could have recorded more, but I deemed this sufficient to test different parameter sets.

I began testing this set of parameters:
· Initial Balance: $1,000
· 20 Shares per Trade
· sumTarget = 0.95
· Flash Crash Threshold = 15%
· windowMin = 2 minutes
I also applied a constant 0.5% fee and 2% spread to stay in a conservative scenario.
The backtest showed an 86% ROI, turning $1,000 into $1,869 in just a few days.

Next, I tested a more aggressive set of parameters:
· Initial Balance: $1,000
· 20 Shares per Trade
· sumTarget = 0.6
· Flash Crash Threshold = 1%
· windowMin = 15 minutes
Outcome: After 2 days, the investment had a return rate of -50%.

This clearly demonstrates that parameter selection is the most critical factor. It can make you a lot of money or lead to significant losses.
Limitations of Backtesting
Even with costs and spreads included, backtesting has its limitations.
· Firstly, it only uses a few days' worth of data, which may not be sufficient to gain a comprehensive market perspective.
· It relies on recorded optimal sell price snapshots; in reality, orders may partially fill or fill at different prices. Additionally, order book depth and available volume are not modeled.
· Sub-second micro-fluctuations are not captured (data sampled every second). While backtesting has timestamps at a 1-second level, a lot can happen between each second.
· Slippage is constant in backtesting, without simulating variable delays (e.g., 200–1500 milliseconds) or network congestion peaks.
· Each trade segment is assumed to be executed “instantaneously” (no order queueing, no resting orders).
· Costs are uniformly charged, whereas in reality, costs may depend on: Market/Token, Maker-Taker, Fee Tiers, or Conditions.
To maintain a pessimistic (cautious) approach, I applied a rule: if Leg 2 fails to execute before the market close, Leg 1 is considered a total loss.
While intentionally conservative, this doesn’t always align with reality:
· Sometimes Leg 1 can close early,
· Sometimes it ends up in-the-money (ITM) and wins,
· Sometimes the loss can be partial rather than total.
While the loss may be overestimated, this provides a practical “worst-case” scenario.
Most importantly, backtesting cannot simulate the impact of your large orders on the order book or attract predatory behavior from other traders. In reality, your order can:
· Disrupt the order book,
· Attract or repel other traders,
· Cause non-linear slippage.
Backtesting assumes you are a pure liquidity extractor (price taker) with no influence.
Lastly, it does not simulate rate limits, API errors, order rejections, halts, timeouts, reconnects, or situations where the bot is busy and misses signals.
Backtesting is extremely valuable for identifying a good range of parameters, but it is not a 100% guarantee as some real-world effects cannot be modeled.
Infrastructure
I plan to run this bot on a Raspberry Pi to avoid consuming resources on my main machine and keep it running 24/7.
However, there is still significant room for improvement:
· Using Rust instead of JavaScript will provide much better performance and processing time.
· Running a dedicated Polygon RPC node will further reduce latency.
· Deploying on a VPS close to the Polymarket server will also significantly reduce latency.
I'm sure there are other optimization methods that I have not yet discovered. Currently, I am learning Rust as it is becoming an essential language in Web3 development.
You may also like

Prediction Markets Under Bias

Stolen: $290 million, Three Parties Refusing to Acknowledge, Who Should Foot the Bill for the KelpDAO Incident Resolution?

ASTEROID Pumped 10,000x in Three Days, Is Meme Season Back on Ethereum?

ChainCatcher Hong Kong Themed Forum Highlights: Decoding the Growth Engine Under the Integration of Crypto Assets and Smart Economy

Why can this institution still grow by 150% when the scale of leading crypto VCs has shrunk significantly?

Anthropic's $1 trillion, compared to DeepSeek's $100 billion

Geopolitical Risk Persists, Is Bitcoin Becoming a Key Barometer?

Annualized 11.5%, Wall Street Buzzing: Is MicroStrategy's STRC Bitcoin's Savior or Destroyer?

An Obscure Open Source AI Tool Alerted on Kelp DAO's $292 million Bug 12 Days Ago

Mixin has launched USTD-margined perpetual contracts, bringing derivative trading into the chat scene.
The privacy-focused crypto wallet Mixin announced today the launch of its U-based perpetual contract (a derivative priced in USDT). Unlike traditional exchanges, Mixin has taken a new approach by "liberating" derivative trading from isolated matching engines and embedding it into the instant messaging environment.
Users can directly open positions within the app with leverage of up to 200x, while sharing positions, discussing strategies, and copy trading within private communities. Trading, social interaction, and asset management are integrated into the same interface.
Based on its non-custodial architecture, Mixin has eliminated friction from the traditional onboarding process, allowing users to participate in perpetual contract trading without identity verification.
The trading process has been streamlined into five steps:
· Choose the trading asset
· Select long or short
· Input position size and leverage
· Confirm order details
· Confirm and open the position
The interface provides real-time visualization of price, position, and profit and loss (PnL), allowing users to complete trades without switching between multiple modules.
Mixin has directly integrated social features into the derivative trading environment. Users can create private trading communities and interact around real-time positions:
· End-to-end encrypted private groups supporting up to 1024 members
· End-to-end encrypted voice communication
· One-click position sharing
· One-click trade copying
On the execution side, Mixin aggregates liquidity from multiple sources and accesses decentralized protocol and external market liquidity through a unified trading interface.
By combining social interaction with trade execution, Mixin enables users to collaborate, share, and execute trading strategies instantly within the same environment.
Mixin has also introduced a referral incentive system based on trading behavior:
· Users can join with an invite code
· Up to 60% of trading fees as referral rewards
· Incentive mechanism designed for long-term, sustainable earnings
This model aims to drive user-driven network expansion and organic growth.
Mixin's derivative transactions are built on top of its existing self-custody wallet infrastructure, with core features including:
· Separation of transaction account and asset storage
· User full control over assets
· Platform does not custody user funds
· Built-in privacy mechanisms to reduce data exposure
The system aims to strike a balance between transaction efficiency, asset security, and privacy protection.
Against the background of perpetual contracts becoming a mainstream trading tool, Mixin is exploring a different development direction by lowering barriers, enhancing social and privacy attributes.
The platform does not only view transactions as execution actions but positions them as a networked activity: transactions have social attributes, strategies can be shared, and relationships between individuals also become part of the financial system.
Mixin's design is based on a user-initiated, user-controlled model. The platform neither custodies assets nor executes transactions on behalf of users.
This model aligns with a statement issued by the U.S. Securities and Exchange Commission (SEC) on April 13, 2026, titled "Staff Statement on Whether Partial User Interface Used in Preparing Cryptocurrency Securities Transactions May Require Broker-Dealer Registration."
The statement indicates that, under the premise where transactions are entirely initiated and controlled by users, non-custodial service providers that offer neutral interfaces may not need to register as broker-dealers or exchanges.
Mixin is a decentralized, self-custodial privacy wallet designed to provide secure and efficient digital asset management services.
Its core capabilities include:
· Aggregation: integrating multi-chain assets and routing between different transaction paths to simplify user operations
· High liquidity access: connecting to various liquidity sources, including decentralized protocols and external markets
· Decentralization: achieving full user control over assets without relying on custodial intermediaries
· Privacy protection: safeguarding assets and data through MPC, CryptoNote, and end-to-end encrypted communication
Mixin has been in operation for over 8 years, supporting over 40 blockchains and more than 10,000 assets, with a global user base exceeding 10 million and an on-chain self-custodied asset scale of over $1 billion.

$600 million stolen in 20 days, ushering in the era of AI hackers in the crypto world

Vitalik's 2026 Hong Kong Web3 Summit Speech: Ethereum's Ultimate Vision as the "World Computer" and Future Roadmap

On the same day Aave introduced rsETH, why did Spark decide to exit?

Full Post-Mortem of the KelpDAO Incident: Why Did Aave, Which Was Not Compromised, End Up in Crisis Situation?

After a $290 million DeFi liquidation, is the security promise still there?

ZachXBT's post ignites RAVE nearing zero, what is the truth behind the insider control?

Vitalik 2026 Hong Kong Web3 Carnival Speech Transcript: We do not compete on speed; security and decentralization are the core










