PolyEdge
Browse documentation

Reverting Bot

On every BTC up/down window one side eventually trades cheap. The Reverting Bot buys that cheap side — but only when it is cheap for the right reason. A side under 20¢ is either a transient dip in a market that is still a coin-flip, or a market that has already decided and is correctly pricing a loser. The first reverts; the second does not. Telling them apart is the entire strategy.

Why the underlying move separates them

Backtesting 562 resolved BTC windows showed the split cleanly. The discriminator is how far the underlying has moved from the price at the window's open (the “strike”) at the moment you would enter:

Underlying move vs strike at entryOutcome
Under 5 bps (spot ≈ strike)~22% win rate, +22% ROI — a revertible dip from transient book pressure
10–20 bps (a decisive trend)~7% win rate, −60% ROI — cheap for a reason

Buying anything at or under 20¢ indiscriminately returns roughly +7% and is fragile — cheap longshots are, if anything, slightly overpriced. The edge lives entirely in fresh, at-the-strike dips inside a window that is still moving.

The four gates

Every gate must pass on the same 1-second tick before the bot commits. You tune all four.

  • Price in band — the side's ask sits inside your entry band (the “20¢ rule”)
  • Reversion — the underlying is still within your bps tolerance of the window-open strike
  • Time — enough seconds remain in the window for a fill to land and revert
  • Volatility — trailing realized volatility is above your floor, because reversion needs movement

There is an optional fifth: a bounce gate that waits until the cheap side is already recovering, so you buy a reversion in progress rather than a falling knife. It is off by default.

Note
The reversion gate is measured against Chainlink, streamed from Polymarket's real-time data socket — the exact feed these markets resolve on. That matters at this precision: an exchange feed such as Binance BTC/USDT runs roughly 4 bps off Chainlink on precisely the near-tie windows this bot targets, which is the same order of magnitude as the gate itself. Reading the gate off the wrong feed would flip the decision on the marginal trades that carry the edge.

Holding to resolution

Once filled, the position is held until the market resolves. There is no take-profit and no stop-loss on the position itself, and that is deliberate: the payoff is the $1 tail on a ~17¢ entry — roughly 5×. Selling the bounce caps that tail while keeping every loser, which tested negative-EV. Risk is managed by position sizing and the daily stop instead, not by exiting.

Every subscriber runs their own parameters

This bot does not ship a single shared configuration. Each account is seeded its own starting values, spread deterministically around the researched baseline, and the bot will not start until you have reviewed and saved them.

The reason is mechanical. The strategy fires into a thin, short-lived sub-20¢ book. If every subscriber ran identical thresholds, they would all arm on the same tick, for the same side of the same window, and compete for the same few contracts — each fill making the next one worse. Staggered thresholds spread out who arms when. When you save, the dashboard tells you whether any other subscriber currently shares your exact entry gates.

Settings

SettingDefaultWhat it does
Max entry price20¢Only buy a side at or below this ask. The edge was measured on the sub-20¢ band.
Min entry price0Floor on the ask, to skip deep-longshot dust. 0 disables it.
Reversion gate5 bpsMaximum adverse move of the underlying from the window-open strike. The core filter.
Min time left45sSeconds that must remain in the window, so the fill has room to land and revert.
Min trailing volatility5 bpsRealized volatility floor. Dead-calm windows leave a small lead standing and the cheap side loses.
Volatility lookback30sHistory the volatility measurement covers. Shorter reacts faster and is noisier.
Bounce gateoffOptionally require the cheap side to already be rising before entering.
Stake per trade$5Fixed notional per entry. Shares bought = stake ÷ fill price.
Marketable-limit buffer20¢Ceiling above the decision ask. A higher ceiling fills through a latency-driven uptick instead of missing.
Simulated fill latency500msPaper only: the modelled signal→fill gap. The book is re-read after the delay and filled at the then-current ask.
Daily loss stop$20Realized loss for the UTC day that pauses new entries. Applies in paper mode too.
Max open exposure$15Cap on capital in unsettled positions. Applies in paper mode too.

Paper mode is honest about slippage

In paper mode a signal does not fill instantly. The bot commits, waits your configured latency, re-reads the book, and fills at the then-current ask — so a fill can slip worse, or miss entirely if the cheap ask escaped above your limit ceiling. On a 17¢ entry that gap is material, so modelling it keeps paper P&L comparable to live.

Note
Sample-size caveat: the published result (~230 trades, 21.6% win at ~17¢, +25.7% ROI) comes from 2.6 days of 1 Hz recordings. Treat it as promising rather than proven, and let your own paper ledger accumulate before going live. See Paper vs Live Mode.