Polysnipe — user guide
Written for someone opening the site for the first time. No prior crypto or trading knowledge assumed. Every technical term gets a plain explanation the first time it appears.
1. What is Polysnipe?
Polysnipe watches a curated list of people trading on Polymarket — an online prediction market where people bet real money on whether specific things will happen (an election result, a sports score, a crypto price move in the next five minutes). Some of those people are consistently good at it, in a measurable way, over hundreds of trades. Polysnipe scores every one it tracks and tells you which are actually good versus which just got lucky for a week.
Once you know which traders you trust, you can have Polysnipe do one of two things when they place a trade:
- Notify you so you can copy the trade yourself, on your own wallet, at your own discretion.
- Automatically mirror the trade using the company's own wallet — so you're following along with the company's capital, not delegating your own keys to anyone.
Right now the site is in dry-run mode — nothing on it involves real money moving. Read the next section before anything else.
2. Dry-run mode — this is the most important thing to understand
Every trade Polysnipe shows you right now is simulated. The engine watches the real traders, notices when they place a real Polymarket order, calculates what the copy trade would be, and writes it into a log. It does not sign anything. It does not spend anything. No money — yours, ours, or anyone else's — is at risk while dry-run is on.
If you see numbers like "-1,148" for simulated 30-day profit and loss on the Overview page, that's the engine saying: "if we had actually been copying these trades with real money, we'd be down $1,148." But we didn't. It's a paper simulation.
Why is it in dry-run? Because moving to live requires (a) us finishing
regulatory review, (b) explicitly flipping a feature flag in the server
config, and (c) an actual human deciding to do it. None of those have
happened, and the site clearly labels itself as DRY-RUN — NO REAL ORDERS
in the top bar of the Overview page so you can't miss it.
Everything in this guide is framed around dry-run because that's what's actually running today. Where a feature is only meaningful under live trading, we'll say so.
3. Signing in
What a wallet is
A wallet (in the crypto sense) isn't a stored balance — it's a pair of cryptographic keys that prove you are you on a blockchain. The most common wallet on desktop is MetaMask, a free browser extension. Others are Rainbow, Coinbase Wallet, Rabby. Any of them work for Polysnipe.
You don't need any money in your wallet to sign in. You just need the wallet installed.
Two ways to sign in
On the login page you'll see two options:
- Sign in with Ethereum (the primary button) — uses your crypto wallet as your identity.
- Sign in with email and password (below it) — a simple email + password form for accounts an admin has set up for you.
Pick whichever you have credentials for. Both land you in the same dashboard.
Option 1 — Sign in with Ethereum (SIWE)
Click Sign in with Ethereum. Your wallet extension will pop up and ask you to sign a short text message — something like:
polysnipe.co.uk wants you to sign in with your Ethereum account:
0x1234... Sign in to Polysnipe.
Signing a message is not sending money. No transaction hits the blockchain. No fee is charged. What's happening is: your wallet uses your private key to produce a scrambled signature that only your key could have produced. The Polysnipe server checks that signature to confirm you own the address. That's it. Nothing else is asked for and nothing else is stored.
This is a standard called SIWE (Sign-In With Ethereum, EIP-4361) — the same pattern most crypto sites use for login.
After signing in for the first time you'll be asked for an email address. That's used for optional alerts (see §12) and for us to contact you if there's a problem with your account. It is not published anywhere.
Option 2 — Sign in with email and password
Enter the email and password an admin gave you. No wallet required. This path exists for Safari (which has no MetaMask extension), for mobile browsers where wallet integration is fiddly, and for anyone who prefers to keep their crypto identity separate from their login.
Passwords are stored as scrypt hashes with per-user salts — the
Polysnipe server never sees your plain password after login. If you
forget your password there is no self-service reset today (v1); ask an
admin to run bin/set-founder-password.ts and issue you a new one.
Both auth paths produce the same session and grant the same permissions — the difference is only how you prove who you are.
4. Overview — the front page
What it's for: at-a-glance health of the whole system. First thing you see after logging in.
What you'll see: the sidebar down the left with every page listed; a wide grid of stat cards across the top; then two panels below — "Top 5 wallets" (a preview of the leaderboard) and "Recent activity" (the last 10 simulated trades).
The top row — health chips
Three at-a-glance status chips:
- ENGINE STATUS —
HEALTHY — beat 14s agomeans the background program that watches Polymarket is running and last checked in 14 seconds ago. If this goes toDEGRADED, the engine has stopped checking in and something is wrong. - MODE —
DRY-RUN — NO REAL ORDERSmeans we're in simulation mode. If this ever saysLIVE, the engine is signing real orders with the company wallet — very deliberate change requiring an explicit config flip. - KILL SWITCH —
CLEARmeans normal operation. If it saysENGAGED, someone has hit the emergency stop button on the Settings page. All trading pauses until it's cleared.
Below those, in small text: the engine's process ID and last heartbeat. Useful for support conversations, ignorable otherwise.
The stat cards
- FOLLOWED WALLETS — total tracked (e.g.
112), with a breakdown below:1 active · 111 pending. Active means the engine is watching and mirroring; pending means it's on the watchlist but doing nothing yet (see §6 for what activation means). - OPEN POSITIONS — how many Polymarket positions the engine would currently be holding if it were live. In dry-run this reflects the simulated portfolio.
- TRADES MIRRORED — 30D — how many simulated copy-trades the engine produced over the last 30 days. This is a volume indicator, not a performance one.
- SIMULATED PNL — 30D — the paper profit or loss over 30 days. In
the reading I made writing this guide it showed
-1,148, meaning "if we'd been running live with the current sizing, we'd be down about $1,148." The card is labelledSimulated in dry-run — not realunderneath so you can't misread it as actual profit. - ALERT CHANNELS — how many Telegram or email destinations you have set up (§12).
- WALLETS SCORED — how many wallets are on the current leaderboard.
- LAST RESCORE — when the scoring job last finished. Runs nightly
by default. If this says
2d agowith a red badge, scoring has broken and the leaderboard is stale. - RISK GATES —
enforcedmeans every proposed trade goes through the full chain of safety checks before it lands in the log.
Top 5 wallets
A five-row preview of the leaderboard. Each row shows the wallet's short address, its composite score, and its confidence badge. Click any of them to jump to that wallet's detail page.
Recent activity
The last 10 simulated trades. Each row: BUY or SELL, the size and
price, which safety-gate stage it passed, and which Polymarket market
it was in. Refreshes every 20 seconds.
5. Leaderboard — every scored wallet, ranked
What it's for: the ranked list of every wallet the system has enough data on to score. This is where you go to spot traders worth watching.
What you'll see: a table with one row per wallet, sorted by
composite score (highest at the top). Above the table, a row of
filter dropdowns. Below the table, Prev / Next for pagination
(shows 25 per page).
What the columns mean, in plain terms
- WALLET — the trader's blockchain address (like a bank account number, but public). Click to see their detail page.
- SCORE — the composite score, our overall 0-to-100 rating for this trader. It's not one thing — it's a weighted blend of everything in the columns to the right (win rate, ROI, edge, risk-adjusted return, drawdown, copyability). See the Methodology page for the full formula. Higher is better. In the reading I made, only two wallets sat above 30; most sit near 0 because most tracked wallets don't yet have enough resolved trades to score meaningfully.
- WIN RATE — how often this trader picks the winning side. The
format
75.0% [60.7%-87.0%]means "our best guess is 75%, but with the amount of data we have on this trader, the true rate is somewhere between 60.7% and 87% with 95% confidence." That wider-than-expected range is normal for a wallet with only 20 resolved trades — the more they trade, the tighter the range gets. - ROI — return on investment, in percent. Same 95%-confidence bracket format as win rate. A positive ROI means they've made money on average; negative means the opposite.
- EDGE — how much better than the market price the trader got in, averaged across trades. 0.0% means they trade at fair market value; higher means they consistently spot mis-pricings.
- SORTINO — a risk-adjusted return number. Positive is good;
higher is much better. A dash (
—) means we couldn't calculate it (usually because the trader hasn't had any losing periods yet). - MAX DD — maximum drawdown, the biggest peak-to-trough loss
streak.
100%+means "at some point they lost more than the amount of capital they had visibly deployed" — treat that as a bright red flag for volatility. Full explanation on the methodology page. - COPYABILITY — how realistic it is to actually copy this trader's moves. Factors in things like: how fast their edge decays, how big are their trades (too small = high slippage relative to size), what liquidity is like in their markets.
- CONFIDENCE — a rough label —
high,medium, orlow— based on sample size and how tight the confidence intervals are. Use this as a shortcut:lowmeans "interesting but don't act on this yet." - FLAGS — automated hygiene warnings.
Dormantmeans the trader has stopped placing trades recently. Others you might see:Wash-flagged(suspicious pattern of trading with themselves to fake volume),Strategy break(their trading pattern changed drastically, so past scores may no longer apply).
Sorting and filtering
- Click any column header to sort by it. Click again to reverse the direction.
- Min score — hide anything below a threshold.
- Confidence — filter to
high,medium, orlowonly. - Win rate ≥ / ≤ — bracket the visible range.
- Hygiene — hide flagged wallets, or show only flagged ones.
What clicking Follow does (from the leaderboard row)
At the moment there is no Follow button directly on the leaderboard
row itself — click through to the wallet's detail page to add it to
your Follows list. On the detail page you'll see a Follow button
in the top-right; click it and the wallet lands on your /follows
page as pending, private (see §6 for what those mean).
Worked example
You're browsing the leaderboard and see 0xdf0d…9f79 at the top
with a composite of 40, win rate 75.0% (CI 60.7-87.0%), 20 trades,
low confidence, no flags. Reading this: they picked winners three
out of four times, but only over 20 resolved bets — nowhere near
enough to be sure they aren't just lucky. The low confidence badge
is the shortcut. Watching, not acting on, is the right first move —
add them to Follows as pending, wait for their trade count to grow
into the hundreds, see if the win rate holds.
6. Follows — your watchlist
What it's for: the wallets you (or the system's automatic discovery) have flagged as worth watching. This is where you promote wallets from "on the radar" to "the engine actively mirrors them."
What you'll see: a table with columns WALLET, OWNER, VISIBILITY, STATUS, COMPOSITE, CONFIDENCE, ADDED, ACTIONS. Above it: an Address lookup box (paste any wallet address to add it), plus filter dropdowns for Owner / Visibility / Status.
Pending vs Active — the single most important distinction
- Pending = on the watchlist, but the engine ignores it. The wallet's trades won't produce any signals, mirrored trades, or alerts. Think of it as a bookmark.
- Active = the engine is watching this wallet in real time. Every trade it places is processed through the safety gates and, if it passes, generates a simulated mirror trade (or a real one, when live). This is the state where the wallet actually costs the engine attention.
Every wallet lands in pending first, no matter how it got there —
whether you added it by hand, the system discovered it during a
nightly rescore, or a Strategy or Category seeded it. To promote to
active, click the Activate button in that row, then confirm
in the popup.
Why the popup — why the friction?
Activating means real engine attention. In live mode it would mean real money. The confirmation popup exists to make sure you're deliberately choosing to trust this wallet, not clicking through some button you meant to hover over. It's a mild speed-bump on purpose.
Private vs Public
- Private — only you (and other founders) can see this row.
- Public — visible to every account on the platform.
Right now everything defaults to private, and every row I see is private. Public sharing becomes more relevant once there are multiple non-founder accounts on the system.
Owner column
Polysnipe (system) means the wallet was auto-discovered by the
nightly rescore job. An address value means a specific user added
that wallet. This helps you tell "the system's recommendations" from
"what I've manually added."
Adding a wallet you already know
At the top of the page: an Address lookup input. Paste a
Polymarket address (a 42-character string starting with 0x) and
click Look up. If Polysnipe has ever seen that wallet, you'll
see its details and can add it. If not, it will be enqueued for
scoring on the next rescore.
Worked example
You've seen a trader on Polymarket with what looks like a good
record. You copy their wallet address (Polymarket's UI shows it),
paste it into the Address lookup at the top of /follows, click
Look up. Polysnipe finds it (or creates a new entry). It lands as
pending, private. It shows up in your Follows list, sits there
scoring, and 24 hours later the next rescore populates its
statistics. You check the composite, decide it's real, click
Activate, confirm the popup. Within 60 seconds the engine starts
mirroring their trades and you can see them in Trade History (§10).
7. Categories — market verticals
What it's for: browse Polymarket's own market categories (Sports, Politics, Crypto, etc.), see which traders are active in each, and follow the top wallets in a category with one action.
What you'll see: a grid of category cards — currently 71 of them.
Each card shows the category name, market count, wallet count, and
top score. Every card also carries a NO ACTIVITY badge right now.
Honest note about "no activity"
The category page currently has almost no useful data on it. That's not broken — that's the ground truth. Here's why:
Polymarket tags markets with categories (Sports, US Election, Ukraine, Crypto, etc.). Polysnipe pulls those tags from Polymarket's Gamma API. The problem is that most of the highest-volume trading right now happens in five-minute crypto up/down markets — "will Bitcoin be higher in five minutes?" — and Polymarket doesn't tag those markets with any category. So the traders Polysnipe scores most (the crypto scalpers, ~92% of them) trade in un-tagged markets and never appear in any category. The categories that do have tagged markets (Politics, Sports) have relatively few traders active enough to score.
The result: this page is currently more useful for browsing what Polymarket organises markets around than for actually finding follow-worthy traders. When the trader mix diversifies out of pure crypto scalping, this page will fill up. Until then, the Leaderboard and manual Follows entry (§6) are the right tools.
What each card shows
- Category name — as Polymarket labels it.
- MARKETS — how many current markets sit under this tag.
- WALLETS — how many scored wallets have traded in this category.
Almost all currently show
0for the reason above. - TOP SCORE — the composite score of the best-scoring wallet
active in this category.
—when there are no scored wallets. - Open — click through to the category detail page.
On the category detail page: "Follow top wallets"
For a category that does have active wallets, the detail page offers
a follow-top action — takes the top N wallets in this category
and adds them all to your Follows list as pending. As with every
follow, they land as pending and each one needs its own explicit
activation. The activation popup is still per-wallet — no way to
mass-activate without individual review.
8. Strategies — templates that populate your Follows
What it's for: predefined recipes for building a follow list, so you don't have to hand-pick every wallet.
What you'll see: three cards labelled Top-N basket, Large position trigger, and Category conviction (this last one is greyed
out with a DISABLED badge). Below them, "Your strategies" — any
you've already configured and saved.
Top-N basket
What it does: takes the top N wallets from the current leaderboard, ranked by composite score, and adds them all to your Follows list.
Configurable: n (how many to take, e.g. 3, 10, 25) and a
minScore floor (only wallets scoring above X qualify).
When it re-runs: on demand — click "Recompose" on the saved strategy — or on a schedule (planned, not yet running automatically). Each recompose finds the current top-N and adds any newcomers to Follows. Existing follows stay put; nothing is removed by a recompose.
Every added wallet still lands as pending and needs individual activation, same as any other Follow. The strategy just does the "who to add" part.
Large position trigger
What it does: adds wallets to your Follows list only when they place a fill above a certain USDC size (e.g. "any wallet above score 20 that places a $5,000+ trade").
Why this exists: to catch conviction moves. A trader who normally does small trades but suddenly stakes a lot has an opinion worth knowing about, even if their overall composite score is middling.
Configurable: minScore (score floor) and minNotionalUsd
(the size threshold in dollars).
Note: the actual sizing filter on live trades (i.e. "don't mirror trades below X dollars") is a separate control on the Settings page, under Trade sizing. This strategy just seeds the follow-set.
Category conviction — currently DISABLED
What it would do: take the top N wallets within a chosen category, subject to a minimum composite score.
Why it's disabled: as explained in §7, the categories currently reach about 1% of scored-wallet activity — the crypto scalpers Polysnipe scores most heavily trade in un-tagged markets. This template will remain off until category coverage improves enough that it produces meaningful results. No code change is required to turn it back on — just a flag flip.
Your strategies
Any strategies you configured show here. Each shows: its name, its
type, whether it's PENDING (configured but not composing wallets
yet) or ACTIVE (has composed at least once), the parameters, and
when it last recomposed. Click "Open" for the detail view where you
can manually recompose or delete it.
Worked example
You want to always be watching the top 10 wallets by composite
score, and have them ready to activate. You click Top-N basket →
Configure, set n = 10, minScore = 0, name it "top-10-radar".
You save. It's pending. You click Activate on the saved strategy
and confirm — it composes for the first time, adding 10 wallets to
your Follows as pending. You go to Follows, review each of the 10,
activate the ones you trust. Next week you click Recompose on the
strategy — any new top-10 entrants get added; the ones you already
have stay untouched.
9. Portfolio — the simulated positions
What it's for: shows every open position the engine is currently holding in simulation, plus the running profit/loss on positions that have already resolved.
What you'll see: four summary cards at the top, then a table of open positions (thousands of rows — 3,830 the day I wrote this).
The word "simulated" — critical to read this page right
Every number on this page is what would exist if the engine were running live. It isn't. There are no real positions and no real money.
The banner at the top of the page spells this out: "Every number on this page is simulated — the engine is in DRY-RUN and no real capital has been deployed."
Read it like a paper-trading account: it's what the strategy would have done.
The summary cards
- REALIZED PNL — profit or loss on positions that have already
resolved (the market closed and a winner was decided).
-1147.80 across 895 resolvedreads: "we would have lost about $1,148 across 895 completed trades." In dry-run this is a simulation of actual performance. - UNREALIZED PNL — profit or loss on positions that are still open, valued at the current market price. Might be 0.00 if all open positions are in short-lived crypto scalp markets whose prices haven't moved yet.
- CAPITAL DEPLOYED — how much would be tied up right now across
all open positions.
894,056.45= about $894k of simulated capital. In live mode this would be constrained by the caps you set on the Settings page. - WIN RATE — RESOLVED — of the 895 resolved trades,
55.2% (494W / 401L)won. That's a 55% coin-flip rate — modest, and useful context for reading the negative simulated PnL: a higher-than-half win rate but negative money means the losses were bigger than the wins on average, which is a sign the sizing or entry-price logic still has room to improve.
The open positions table
One row per position. Columns:
- MARKET — the Polymarket market this position is in ("Bitcoin Up or Down - July 15, 2:00PM-2:05PM ET").
- SIZE — how many shares of the position are held.
- AVG ENTRY — the average price paid per share.
- CURRENT MID — the current mid-price on Polymarket.
—means the mid isn't cached yet (fresh position; next 30-second refresh will fill it). - UNREALIZED PNL — the running profit/loss at the current mid.
—when the mid is missing. - SOURCE — which wallet the position was mirrored from. Click to see that wallet's detail page.
- AGE — how long the position has been open.
- MARK AGE — how many seconds ago we last fetched the current price from Polymarket. Anything over 60 seconds means the price refresh cycle hasn't reached this position yet.
The whole table is paginated (25 per page). At the bottom, the "Mark staleness" line tells you the oldest missing price refresh — if that number grows past 60 seconds consistently, something is wrong with the price-fetch engine.
An "open position" in plain terms
A trader placed a Polymarket bet — say, $100 that Bitcoin would close higher in the next five minutes. The engine mirrored that as a simulated bet with the same size and price. That's now an open position. When the five minutes end and Polymarket resolves the market, the position moves to "resolved" and its PnL gets added to the Realized PnL total. Until then it sits in this table.
10. Trade History — every trade the engine tried to copy
What it's for: browse and export every trade the engine attempted to mirror. This is the user-facing feed of "here's what the engine did today."
What you'll see: a filter row (Side, Status, Source Wallet, Since, Until), export buttons (CSV, JSON), then a table with columns TRADE TIME, SOURCE, MARKET, SIDE, SIZE, PRICE, STRATEGY, STATUS, TRADE ID.
What's in the table
Only trades that passed the safety gates. Blocked trades don't appear here — they're on the Audit page (§11) instead. That's the key difference: Trade History is the clean, "here's what happened" feed; Audit is the full log including everything the engine chose not to do.
What each row means
- TRADE TIME — when the leader placed the original trade on Polymarket (not when the engine noticed it).
- SOURCE — the wallet whose trade this was mirrored from. Click through to their detail page.
- MARKET — which Polymarket market.
- SIDE —
BUYorSELL. - SIZE — how many shares.
- PRICE — the price per share (Polymarket prices range 0.00 to 1.00, representing the market-implied probability).
- STRATEGY — which strategy (if any) surfaced this wallet. Currently blank in most rows because most active wallets aren't strategy-sourced yet.
- STATUS — usually
DRY_RUNright now (would have mirrored; simulated only). Could also benotified(an alert was sent) orfailed(execution attempt failed — irrelevant in dry-run). - TRADE ID — a unique identifier for the underlying Polymarket trade. Useful when comparing with the Audit page.
The filters
- Side — BUY only, SELL only, or all.
- Status — dry_run, notified, failed.
- Source Wallet — filter to trades from one specific wallet.
- Since / Until — date range.
The Export buttons
Downloads what's currently on screen (filters applied):
- CSV — spreadsheet-friendly format. Opens in Excel or Google Sheets. Columns are stable and documented so you can build reproducible analysis.
- JSON — the same data as machine-readable JSON, including a metadata header listing exactly which filters were applied to produce the file.
Row cap: 25,000 per export. If your filters match more than that, you'll get the first 25,000 and the response headers tell you the true unfiltered count so you know to narrow your filter.
Who'd want to export this?
- Traders wanting to run their own analysis on how a specific wallet behaves.
- Anyone building a spreadsheet of "what would the P&L have been if I'd sized differently."
- Us, when someone reports a suspected bug and we need to pin down a specific trade.
11. Audit — the full log, including blocked trades
What it's for: append-only record of every gate decision the engine made, whether the trade went through or was blocked. This is the compliance / debugging surface. Trade History (§10) is the subset where trades passed the gates; Audit is everything.
What you'll see: columns TRADE TIME, TRADE ID, LEADER, MARKET, SIDE, SIZE, PRICE, GATE, ACTION, LATENCY. Filter dropdowns above for Action, Wallet, From, Until, plus Export CSV / JSON.
How this differs from Trade History in plain terms
Two extra pieces of information appear on Audit that don't appear on Trade History:
- Trades that were considered and REJECTED — e.g. "the leader placed a trade, but our size cap said no, so we didn't mirror it." Only visible on Audit.
- The GATE column — tells you which safety check the trade
hit.
Passedmeans it cleared every gate. Otherwise you'll see the name of the specific rule that blocked it (trade_size,daily_loss_cap,spread_too_wide, etc.).
Think of Trade History as "the news feed" and Audit as "the full transcript."
What each column means
- TRADE TIME — when the leader's original trade happened.
- TRADE ID — unique identifier for the underlying Polymarket trade (same one that appears in Trade History for rows that passed).
- LEADER — the wallet whose trade this was.
- MARKET — which Polymarket market.
- SIDE / SIZE / PRICE — same as Trade History.
- GATE —
Passedor the name of the rule that blocked it. - ACTION — what the engine did:
dry_run(would have mirrored, simulated),notified(sent an alert only),skipped(blocked before action),failed(attempted execution failed). - LATENCY — how many milliseconds elapsed between noticing the trade and finishing the gate chain. Usually 0-1 ms; if you ever see this spike into the hundreds, something is slow.
Export
Same CSV / JSON export as Trade History, same 25k row cap.
12. Alerts — how you get notified
What it's for: connect a Telegram chat or an email address to Polysnipe so you get pinged when specific engine events happen (a followed wallet trades, the daily summary, the kill switch fires, etc.).
What you'll see: two sections — Telegram and Email — each with a list of channels you've set up and a form to add another. Below those, an "Event preferences" section with a toggle per event type.
Telegram
What Telegram is: a free messaging app. Polysnipe uses it because Telegram lets bots send messages into chats — perfect for automated notifications.
How to connect:
- Message
@userinfoboton Telegram — it will reply with your personal chat ID (a number like1516554490). Copy it. Alternatively, add the Polysnipe bot to a group and read the chat_id from the group's initial update. - Paste the chat ID into the CHAT ID field on the Alerts page.
- Add an optional label ("Phil's personal" etc.).
- Click Add.
- The channel appears in the list. Click Test on it — you should get a test message on Telegram within a couple of seconds.
Once added, the channel starts ENABLED. You can Disable it
(pauses without losing configuration) or delete it.
How to connect:
- Type your email into the RECIPIENT EMAIL field.
- Optional label.
- Click Add.
- Click Test — a test email should arrive within a minute.
Same enable/disable/delete controls as Telegram.
What Test actually does
Sends a single message through the same code path a real engine
event would use. Green (ok) means the end-to-end pipeline works.
If Test fails, the error appears on the channel's card — most
common causes are a wrong Telegram chat ID or a blocked SMTP relay
for email.
Event preferences
Six event types, each with an on/off toggle:
- Engine fill (dry-run mirror) — one message per simulated mirror. Very high volume — turn off if it becomes noise; the site itself always logs the same information under Trade History.
- Daily PnL summary — one message per day summarizing simulated performance and gate statistics.
- Drawdown / loss-cap breach — fires when the daily loss cap gets tripped by the gate chain. Silent if it never trips.
- Engine health — heartbeat stopped, WebSocket disconnected, error-rate spike. These are the "something is wrong" alerts.
- Rescore failed — the nightly scoring job crashed. Leaderboard will be stale until fixed.
- Rescore stale — no successful rescore in over 36 hours. Slower
cousin of
rescore_failed.
Toggle whatever you want on or off, then click Save. Preferences apply to every channel you have configured.
13. Settings — controls that change engine behavior
What it's for: the kill switch, the trade-sizing rules, the risk gates, and your account details. Any change made here reaches the running engine within ~5 seconds.
What you'll see: four sections stacked vertically — Kill switch, Trade sizing & risk gates, Trading hours, Account.
Kill switch — read this first
What it is: the emergency stop button. Big, red, sits at the top
of the page. Says ENGAGE KILL SWITCH.
What happens when you press it:
- Within 5 seconds, the engine's next sync detects the change.
- Every currently-processing trade proposal gets rejected at the
kill_switchgate. - New proposals get rejected the same way.
- A red
EXECUTOR SUSPENDEDbanner appears at the top of the Overview page for every user on the platform. - If any alert channels are configured for the founders, they get a Telegram/email notification that the kill switch fired.
Positions already open (in live mode) stay open — the kill switch stops new activity but does not close existing positions. That's a deliberate design choice: closing positions requires signing transactions, which is its own risk category.
Clearing it: press it again from the same panel. Same 5-second propagation. All alerts fire again to say "kill switch cleared."
When to use it in dry-run: almost never. Dry-run is already not placing real orders. The main dry-run use is testing that the switch actually works before you rely on it in live mode.
When to use it in live: immediately if anything looks wrong — misbehaving strategy, unexpected activity, a followed wallet doing something you didn't sanction. It is deliberately unnervous to press.
Trade sizing
Two numbers:
- MIN PER TRADE (USDC) — the smallest simulated trade the engine
will mirror. Below this, the trade is rejected at the
trade_sizegate. Set this to filter out noise — tiny sub-dollar trades from the leader that are not worth copying. - MAX PER TRADE (USDC) — the ceiling per single trade. Any mirror above this size gets rejected. Set this to cap your exposure to a single trade.
Concrete example: you set MIN = 5, MAX = 500. A followed wallet places a $2 trade — engine ignores it (below MIN). Same wallet places a $50 trade — engine mirrors it. Same wallet places a $2,000 trade — engine rejects it at the size cap.
Portfolio caps
Three cumulative limits — as long as any of these would be exceeded, new trades stop.
- MAX ALLOCATION (USDC) — total capital deployed across all open positions combined.
- MAX POSITION SIZE (USDC) — total exposure to any one market (accumulated across multiple entries).
- DAILY LOSS CAP (USDC) — if realized losses today exceed this, the gate halts all new trades until tomorrow (UTC midnight).
Microstructure
Two market-condition gates. These reject trades where the market itself is behaving badly.
- MAX SLIPPAGE (bps) — how much the actual execution price is
allowed to differ from the expected price.
bps= basis points, where 100 bps = 1 percent. 100 bps means "reject if the fill is more than 1% off expectation." - MAX SPREAD (bps) — the gap between the best buy and sell offers. Wider spreads mean thin, illiquid markets. Rejects trades in markets where the spread is above this.
Trading hours
A toggle: Restrict trading to a UTC window. Off by default. On, you get to pick a start and end hour (UTC). Trades outside the window get rejected. Useful for time-of-day strategies.
Save configuration
None of the changes above take effect until you click Save
configuration at the bottom. The line under it (updated ...)
tells you when the config was last saved and pushed to the engine.
Account
- CONNECTED WALLET — the address you signed in with.
- ROLE — currently either
FOUNDER(full access) orCUSTOMER. Non-founders see a reduced set of pages. - MEMBER SINCE — when you first signed in.
- EMAIL — the email you provided at first login. Used for contact and (optionally) alerts.
- Disconnect wallet — signs you out. You'll need to sign in again to come back.
Notifications shortcut
The "Notifications" panel here just contains one button — Open
alerts settings — which takes you to /alerts (§12).
14. Pricing — what's available today vs planned
What it's for: shows the three tiers we envision. Read the labels carefully: only the first tier ("Early access") is real today.
What you'll see: three columns — Early access, Pro, Automation.
Early access — what you get right now
Marked YOU ARE HERE. Free while we're in early access. Includes:
- Full leaderboard with methodology
- Private wallet Follows
- Dry-run signals to Telegram / email
- Categories browse (with the caveat from §7)
- Strategy templates (Top-N basket, Large-position trigger)
- Portfolio simulation + full audit history
- Kill switch, risk gates, sizing controls
That is everything the site does today.
Pro — planned, not available yet
Labelled TBD — planned tier, no price published. What we plan to
add:
- Category-conviction strategy template (waiting on richer category coverage — see §7)
- Scheduled strategy recomposition
- Higher-frequency polling + WebSocket priority
- Extended alert channels (webhook, SMS)
- CSV / JSON exports beyond the 25k row cap
Registering interest via the button emails us so we can tell you when it launches.
Automation — subject to regulatory review, no ETA
Labelled — no ETA. Includes:
- Live executor against our own company wallet only. This does not mean us signing your trades — we never sign with a customer key. It means Polysnipe running its own capital in live mode and copying leader trades with company money.
- Company-managed signal execution (not committed — depends on regulatory review)
- Custom risk profiles
The bold note at the bottom of the page is worth reading verbatim: "No self-custody delegation, ever. We never sign Polymarket orders with a third party's private key. The Automation tier executes against our own company wallet only (dry-run today). Everything else is alerts you act on yourself."
Every "Register interest" button opens an email to
hello@polysnipe.co.uk.
15. Support — how to get help
What it's for: the FAQ page + email address for anything not covered.
What you'll see: three call-out boxes at the top (Email, Report a bug, Methodology), then an FAQ, then an emergency note.
hello@polysnipe.co.uk. Response times: aim for one business day,
always within a week.
Report a bug
Same email, prefilled subject line. When reporting, include:
- The route where it happened (URL from your browser bar).
- Approximate timestamp.
- What you expected vs what you actually saw.
That's enough for us to find the corresponding engine log line and diagnose without a back-and-forth.
Methodology (link)
Takes you to /methodology, a full explanation of how the composite
score is built — weights, shrinkage priors, correlation collapse,
copyability formula. Written for the technically-inclined but
tries to keep the math grounded in what each factor means for a
trader.
FAQ answers already on that page
- What dry-run means for you (recap of §2).
- Short version of how the composite score works.
- Whether we hold your private key (no, never — see §3).
- How Follows and pending → active work (recap of §6).
- How to report a scoring result you don't trust.
- How to test alerts and what can go wrong.
Emergency footer
If the engine ever behaves incorrectly against real capital (only possible in live mode), use the kill switch on Settings first, then email us with the timestamp.
16. If something looks wrong
Some things that look weird are normal. Others are worth flagging.
Normal, ignorable
- The engine's WebSocket to Polymarket occasionally reconnects.
You might see brief blips in the Overview activity feed. As long
as
ENGINE STATUSstaysHEALTHYand heartbeats are under a minute old, this is fine. Simulated PnL — 30Dis negative. Dry-run performance is what it is — the whole point of dry-run is to see the honest numbers before committing real money. Negative doesn't mean broken.WALLETS SCOREDis only a few dozen. We only score wallets with enough resolved trades to say something meaningful. The Follows list is much larger because it includes pending auto-discoveries that haven't scored yet.- Most Categories say NO ACTIVITY. Explained in §7 — this is the ground truth of Polymarket's tagging today, not a bug.
- A wallet you activated hasn't produced any trades yet. They might just not be trading right now. Check their detail page for their last-trade age.
- Position marks temporarily missing (
—in the Mark column). The next 30-second price-fetch cycle will fill them in. If it stays missing across multiple refreshes, then flag it.
Worth reporting
ENGINE STATUSshowsDEGRADEDfor more than a minute. The engine has stopped heartbeating. Something is wrong with the backend.MODEchip is missing or shows something other than DRY-RUN or LIVE. UI or config drift.- The
MODEchip changed to LIVE and you didn't authorise that. Immediately engage the kill switch, then email us. Last rescoretimestamp is more than a day old with no red badge. The rescore job or its status page is broken.- A page fails to load — you see a nearly-blank dark screen with "Application error: a client-side exception has occurred" — this is a real render failure. Take a screenshot of the URL and email us.
- Anything in Trade History or Audit looks wrong (a trade you
didn't expect, a fill at a weird price, a gate blocked something
it shouldn't have). Paste the Trade ID column value into an
email to
hello@polysnipe.co.uk— that's enough for us to trace every step from Polymarket fill to gate chain output.
How to report
hello@polysnipe.co.uk. Include:
- Which page you were on.
- Approximate time.
- What you expected vs what you saw.
- Any specific identifier from the page — wallet address, trade ID, order ID.
That's enough for us to trace the underlying engine log and answer with something specific.
Last updated 2026-07-15 — from a live walk-through of every page. If any behaviour described here doesn't match what you see, tell us: this document is meant to stay honest to what actually ships, not what was planned.