Polymarket Stops
Polymarket has no stop-loss. This extension adds one — on positions you already hold, in your own logged-in tab, without ever asking for a private key.
This page is the full reference: every mode, every field, every guard, and every failure mode. If you only want to get going, the four steps in Quick start are enough.
Early build. It ships with dry run switched on: everything happens except the click, until you decide otherwise. Not affiliated with, endorsed by, or connected to Polymarket.
Quick start
- Open a Polymarket market. The Stops panel appears under the order card.
- Confirm which wallet is yours — once. It is never guessed: an early build inferred it from the page, picked a stranger’s address, and showed their position as if it were yours. Now it asks.
- Pick SL, TP, Auto or Loop, set your level, and read the preview line. It names the trigger, the executable bid right now, and exactly what order would go in.
- Arm it in dry run. Watch it fire once and agree with what it says it would have done. Then turn dry run off in the popup.
The four modes
Stop-loss (SL)
Sells when the price you could actually get falls through your level.
| Field | What it does |
|---|---|
| From entry | The level is your average entry minus the offset you type. |
| Trailing | The level follows the peak upward and never comes back down. Stop-loss only. |
| Level | An absolute price you type. |
| Size | All of the position, a percentage of it, or a fixed number of shares. |
| On trigger | Marketable crosses the spread down to your floor — the default for a stop. Limit rests at your price. |
Trigger and limit price are separate. The trigger decides when; the limit price decides at what price the order goes in. Leave it empty and the order is placed at the trigger. Set it above the current bid and the sell rests in the book waiting to be taken — the preview says so rather than letting you find out afterwards.
Take-profit (TP)
A resting sell above the market, placed when your level is reached. Because a take-profit is a resting order and a stop is an exit through a falling market, the two get different execution defaults: switching between SL and TP switches the default with it, and an explicit choice of yours is kept.
A stop and a take-profit on the same position form one OCO group. When one fires, the other stands down until the fill is known.
Auto-exit
Instead of a trigger price, it watches your position: every batch of shares that arrives after you arm it gets its own sell order, priced either at a fixed level or at an offset above what that batch actually cost.
This is the mode for a buy of yours that is still resting. Its baseline is what you hold at the moment of arming, so arming at zero is its cleanest case — nothing is carved out, and every share that turns up afterwards is covered.
- Nothing is ever cancelled. Your resting buy keeps its place in the queue, and each batch is a separate order.
- Batches smaller than the market minimum wait until together they clear it, then go in as one order at their weighted average fill price.
- Fills are found by polling your positions every 30 seconds, so the reaction is tens of seconds rather than instant. Without a private key there is no authenticated order feed that would do better.
Range loop
The only mode that spends money on its own: buy low, sell high, repeat.
It runs on a pot. The cash you assign buys shares; selling them puts the cash back, and the next round buys with everything the pot holds — so profits compound and, more importantly, the loop can never spend more than what you put in plus what it earned. That bound is the safety property. There is no separate spend cap to forget to set.
| Setting | What it does |
|---|---|
| Fixed range | You type the buy and sell prices. |
| Follow the book | Buys at the best bid and sells a spread you choose above it. |
| Cash to use | The pot. |
| Never spend more than this on one order | A per-order ceiling inside the pot. |
| Round trips | How many buy→sell cycles, per slot. |
| Slots | How many rungs rest at once — see Grid below. |
| Stop buying below | Under this price the loop stops buying and arms a stop on whatever it holds. |
Wall stepping. If the price level you would join holds a wall many times your own size — a queue you would never reach the front of — the order steps one tick to the better price for you instead: a buy goes lower, a sell goes higher.
Partial fills need no special handling: each batch that clears the market minimum is sold on its own, and only one buy ever rests at a time per slot.
Stopping a loop never cancels orders. Everything it already placed stays in the book.
Grid
More than one slot turns the loop into a grid: several rungs resting at once, each with its own fills, its own cycle count and its own exit. Round trips is per slot, so the total is slots × round trips — the form spells the multiplication out rather than leaving you to do it.
Why the trigger is different
The trigger is the executable bid: the bid side of the book walked top-down for your size, size-weighted.
Not the best bid. The top of a Polymarket book is often a few shares of dust that your position cannot exit into, and a stop that fires on a price you cannot get is worse than no stop at all — it reports a sale that did not happen at a price that never existed for you.
Three guards sit in front of every firing:
- The breach has to hold for a number of seconds you choose, default 3. One bad print does not sell your position.
- A book too wide or too thin for an orderly exit blocks the stop and says so, instead of dumping into it.
- Closed, resolved and expired markets never execute.
Safety
| Control | What it does — and what it does not |
|---|---|
| Dry run | Everything except the click. On when you install. |
| Emergency pause | Blocks new authorisations. It does not disarm rules, cancel orders, or recall a click already under way, and it says so. |
| Disarm all rules… | Does the first of those, deliberately, with a list you read first. |
| Confirm above $N | Larger orders ask before firing instead of acting alone. |
| Hourly caps | Two of them — one for new positions, one for exits — so a grid building its ladder cannot starve the stop that fires an hour later. An emergency exit is exempt from both. |
| Max buy size | A per-order ceiling on what a single buy may spend. |
No retries on an ambiguous outcome. If the click happened but no order response was observed, the rule goes to UNKNOWN and stays there until you resolve it by hand. Double-selling a position is a worse failure than a missed stop.
Nothing anywhere cancels an order. Cancelling loses your place in the queue, so the extension does not do it — not on stop, not on pause, not on disarm. Chase was removed from the product for exactly this reason: repricing needs a cancel on every step, and without a working cancel it would leave two live sell orders.
Privacy and what leaves your browser
There is no backend, no telemetry and no account. Rules, state and logs live in your browser’s local storage and nowhere else.
By default the extension can reach polymarket.com and Polymarket’s three public APIs, and nothing else. A test in the source fails the build if that list ever grows.
One optional exception, off until you switch it on: an order webhook that pings a destination of yours when an order is placed — a resting order is otherwise invisible from outside. It sends the kind of order, the side, the shares, the price, the notional and the market’s title, outcome and slug. Never the wallet, the position, the balances or the pot.
Full text: Polymarket Stops privacy policy.
Who it works for
Email or Google login (embedded wallet): fully automatic. Your session signs the order the same way it does when you click the button yourself.
MetaMask or another external wallet: not automatic, and cannot be. Every order needs a signature from your wallet’s own popup, and no extension is allowed to click inside another extension’s UI. For those accounts this is an assistant — it fires the trigger, opens the market and pre-fills the sell form, and you confirm in the wallet. Useful, but it is not a stop, and you should not go to sleep believing it is.
Known limits
- Nothing runs while Chrome is closed. The popup shows how long the watcher has been blind.
- Fill detection lags. Positions are polled, so a fill can be recognised tens of seconds after it happens.
- Minimum order size. Polymarket takes limit orders of at least 5 shares. A position below that cannot be sold with a limit order at all, so the panel refuses to arm and says so instead of pretending. Dust has to be closed by hand.
- The panel reads Polymarket’s own markup. After a Polymarket redesign it will say
driver degradedin its header and refuse to arm, rather than failing quietly later. That is the intended behaviour. Run it in dry run after any visible Polymarket change. - Watching needs no tab; placing does. The price feed lives in the extension’s own offscreen document, but the order is placed by filling in Polymarket’s form — so at firing time the market tab is made the selected tab of its window. Whether the whole window comes forward is a switch in the popup.
Reading the panel
| What you see | What it means |
|---|---|
driver ok | The order form is readable and the extension can act. |
driver ok · market mode | Your form is in Market mode; a stop switches it to Limit when it fires and verifies the fields then. |
driver degraded: … | Polymarket’s markup moved. Nothing will be armed. The missing controls are named — report them. |
SL / TP greyed out | You hold nothing in this leg. They sell shares you already have, and turn on by themselves when the first batch arrives. |
| A dot beside an armed rule | Green armed · amber breaching · blue placing or placed · red unknown, failed or degraded. |
Support
Questions, bug reports, and markup that moved: [email protected].