Hound Market Maker
Every other bot on PolyEdge takes a view. The Hound does not. It quotes both sides of the same market and earns the difference between them, holding as little directional risk as it can manage. It is a replica of a wallet that has run this strategy continuously on Polymarket's BTC 5-minute markets, and every parameter below is measured from that wallet rather than chosen.
What it does
Before each five-minute window opens it mints an inventory pair — you cannot rest an ask on a token you do not hold — then quotes a five-level ladder on each side of the Up token. Quoting Up two-sided is mathematically identical to quoting both outcomes, at half the order count.
- 100% maker — every order is post-only and a crossing quote is treated as a bug
- Ladder width scales with the prevailing spread, not a fixed number of cents
- Inventory skew walks the ladder away from the side that would add to a position
- A level taper thins the adding side rather than pricing it into the weeds
- Flattens into the close so the residual is small, not a bet on the outcome
- Merges surviving pairs and redeems the remainder against the real outcome
Why the skew has two parts
A single reservation-price shift cannot reproduce the target's behaviour. Sized to make the book one-sided at the inventory its fill ratio demands, it would put the bid about 5c from mid — and it would then take essentially no buy fills while long, yet 18.6% of its fills at high inventory are still buys. So the bot uses a gentle price shift to reproduce the quote distances and a level taper to produce the one-sidedness.
The fill model is the whole ballgame
On a book that is 1c wide with thousands of shares at the touch, “would my order have filled?” is almost entirely a question of how much size sat in front of it. A simulator that fills you whenever the market prints at your price shows a large and completely fictional edge. So the paper broker models queue position: posting at a level inherits that level's current size, only observed trade volume drains it, cancels drain it partially, and you fill only once the queue is gone.
The dashboard reports queue-blocked shares — volume that traded at your price while you were still behind the queue. That number is the difference between this and a fantasy.
last_trade_price fires only when the traded price changes, so a run of trades at one price emits nothing — measured live it went silent for 150 seconds on an actively trading token, and the prints it does emit are disproportionately the price-moving ones. Simulating fills off it means sampling only the adverse trades.What is not built yet
Live execution requires minting the inventory pair on-chain before each window. That split/merge path does not exist on the platform yet, and without it a “live” run would rest bids it could never balance with asks — a one-sided directional bot wearing a market maker's clothes. Until it is built and tested, the bot runs in paper against the real order book and the real trade tape.
Read the P&L carefully
Trading P&L and the maker rebate are shown separately and never mixed. In the reference run the spread capture was close to break-even and essentially all of the modelled profit came from the rebate — which is an estimate at a rate Polymarket does not publish, payable only if you qualify for the programme. Gas, by contrast, is certain: it is a fixed cost per window, so it does not scale down with size and sets a floor on the smallest sensible clip.