Filters
Filters define which trades you care about. They combine trader performance criteria, market attributes, trade parameters, and manual whitelists/blacklists into a reusable configuration. Every Automation is powered by a filter.
Looking for starting shapes? Most users build one of four canonical filter setups (Whitelist, Cohort, Hybrid, or Specialist). See Filter Setups for step-by-step recipes. This page is the component-level field reference.
Creating a Filter
- Go to the Filters tab
- Click the + button to open the Filter Builder
- Enter a Filter Name (required)
- Configure one or more components (see below)
- Click Save
The Filter Builder opens with three components active by default: Trader Criteria, Market Criteria, and Trade Criteria. You can remove any component you don’t need, and add Whitelists or Blacklists using the dropdown menus.
Filter Components
A filter is a stack of components, each answering a different “should this trade match?” question. There are two kinds:
- Criteria describe a quality bar: the trader has to be good enough, the market has to be liquid enough, the trade has to be big enough. Set thresholds, then any trader/market/trade above the bar passes.
- Whitelists and blacklists are manual overrides: a curated list of specific traders or markets you want to include or exclude regardless of the criteria. Use them when you’ve spent time validating a list and want to follow it directly, or when you want to permanently exclude something noisy.
A filter can combine up to seven components: Trader Criteria + Whitelist + Blacklist (trader side), Market Criteria + Whitelist + Blacklist (market side), and Trade Criteria. The combination logic is OR within each side, AND across sides. See How Components Combine below. At least one component must have constraints for the filter to save.
Trader Criteria
Use this when you want to follow a class of traders rather than specific addresses: “smart whales” rather than “this list of 20 wallets”. Set thresholds on the metrics that capture what “smart” means to you (Sharpe for risk-adjusted return, Trader Score for an opinionated composite, Closed Positions for sample-size, etc.). Any trader whose lifetime stats clear all the bars matches.
Set min and/or max for any combination:
| Field | What it means | Range | Example use |
|---|---|---|---|
| Win Rate | Percentage of closed positions that were profitable (dollar-weighted) | 0 to 100% | Min 55, traders who win more than they lose |
| Sharpe Ratio | Risk-adjusted return. Above 1 is good, above 2 is excellent | -∞ to +∞ | Min 1.5, strong risk-adjusted performers |
| Sortino Ratio | Like Sharpe but penalizes only downside volatility | -∞ to +∞ | Min 2, strong risk-adjusted performance ignoring upside vol |
| Total PnL | Net profit/loss across all closed positions in USD | -∞ to +∞ | Min 5000, meaningfully profitable traders |
| Total Volume | Total dollar volume traded across all positions | 0+ | Min 100000, traders with real skin in the game |
| Max Drawdown % | Largest peak-to-trough decline in portfolio value | 0 to 100% | Max 30, exclude traders with large drawdowns |
| Kelly Fraction | Optimal bet sizing based on win rate and payoff ratio. Higher = stronger edge | 0 to 100 | Min 10, traders with meaningful edge |
| Risk-Adjusted Return | Total return divided by max drawdown. A simpler complement to Sharpe. | -∞ to +∞ | Min 5, return that justifies the worst drawdown |
| Closed Positions | Number of positions closed or resolved | 0+ | Min 20, sufficient track record |
| Total Trades | Total individual trades executed | 0+ | Min 50, experienced traders |
| Profit Factor | Gross profits / gross losses. Above 1 = profitable overall | 0+ | Min 1.5, consistently profitable |
| Trader Score | Composite 0 to 100 score across performance, risk, consistency, edge, experience | 0 to 100 | Min 70, strong overall traders |
Trader Criteria are evaluated against a trader’s lifetime stats, not a sliced view. If you want to filter on recent form (e.g. “Sharpe > 2 over 30 days within Politics”), use Advanced mode in the Traders tab to identify the survivors and copy them into the Trader Whitelist on this filter. See Sliced Metrics for the full lifetime-vs-slice mental model.
Market Categories (OR logic): Also in this section. Select one or more tags (e.g., “Politics”, “Crypto”). Matches traders who have positions in markets with any of the selected tags.
Market Criteria
Use this to restrict where a trade can happen. Two common reasons: liquidity hygiene (“only markets deep enough that I won’t take 5% slippage”), and category focus (“only crypto markets” or “only politics markets that aren’t about a specific past event”). The keyword filters let you target or exclude very specific events by question text.
Constrains which markets the trade must occur in:
| Field | What it means | Example use |
|---|---|---|
| Neg Risk | Whether the market uses negative risk (allows trading “No” directly). Options: Any, Yes, No | ”Yes”, only neg-risk markets |
| Volume | Total dollar volume traded on the market | Min 100000, liquid markets |
| Liquidity | Current order book depth. Higher = lower slippage | Min 50000, deep markets |
| Days Remaining | Days until market resolution | Min 7, Max 90, medium-term markets |
| Tags | Category tags (OR logic). The market matches if it carries any selected tag | ”Politics” + “US Elections”, politics or US elections markets |
| Keywords | Filter by text in the market question or description. Each keyword is contains or not contains; multiple keywords are AND’d together | contains "election" + contains "president" + not contains "2020" matches every market whose question contains both “election” and “president” but not “2020” |
Trade Criteria
Use this to gate on the individual trade rather than the trader or the market. Two main use cases: filtering out small noise trades by setting a minimum dollar size (whale-only filters), and trading at specific price levels (e.g. “only trades on outcomes priced under 30 cents” if you’re hunting underdog bets). The Side field is fixed to BUY because filters trigger on entries; exits are handled by the automation’s own settings.
Applied to each individual trade as it happens:
| Field | What it means | Range | Example use |
|---|---|---|---|
| Side | Locked to BUY. Only buy trades trigger filters; exits are handled by the automation’s settings | BUY only | N/A |
| Trade Size ($) | Dollar value of the trade (size × price) | 0+ | Min 1000, whale-sized trades only |
| Last Traded Price | Price of the outcome token (0 to 1). Lower = less likely outcome, higher = more likely | 0 to 1 | Max 0.85, trades on underdog outcomes |
Trader Whitelist
Use this when you’ve already validated a specific list of traders (via Advanced mode in the Traders tab, manual research, or Manage Whitelist from a trader profile) and want to follow them directly without relying on metric thresholds. Common pattern: criteria-driven filter for discovery, whitelist-driven filter for the traders you actually trust enough to copy with money.
Search by name or wallet address to add them. When a whitelist is active and there are no Trader Criteria, only trades from these addresses can match. When both are active, the trader can pass either side: they match if they’re on the whitelist or meet the criteria.
Trader Blacklist
Use this to permanently exclude specific traders without disturbing the rest of the filter: for traders you’ve watched and decided not to follow, traders you’ve identified as wash-traders, or anyone you want to keep out of an automation’s exposure.
Blacklists always win: a blacklisted trader never matches, regardless of any criteria they’d otherwise clear or any whitelist they’re on elsewhere.
Market Whitelist
Use this for narrowly-scoped strategies: a single market or a small handful you want to follow specifically. The pattern is the same as Trader Whitelist: with criteria active, the market can pass either side.
Market Blacklist
Use this to permanently exclude specific markets or entire categories. The blacklist takes a mix of individual markets and tags: adding a tag like “Sports” excludes every market with that tag from this filter, useful for filtering out a category that’s noisy for your strategy. Blacklists always win.
How Components Combine
The match logic is OR within each side, AND across sides:
- Trader side: the trader passes if
trader is on Trader Whitelist OR meets Trader Criteria - Market side: the market passes if
market is on Market Whitelist OR meets Market Criteria - Trade side: the trade meets Trade Criteria
- Blacklists always win, applied first: a blacklisted trader / market / category is excluded before any of the above is evaluated
A trade matches the filter when: trader side AND market side AND trade side AND not blacklisted.
This shape is the reason whitelists are useful even when criteria exist: they widen, not narrow. A trader who’s on the whitelist passes the trader side regardless of whether they meet the metric thresholds. The same is true for markets.
Tag logic, both sections use OR:
- Trader Criteria → Market Categories: trader is active in any selected tag
- Market Criteria → Tags: market carries any of the selected tags
Validation Rules
- At least one component must have constraints. You can’t save an empty filter.
- If you have no trader criteria and no trader whitelist, then Trade Criteria must include at least Trade Size or Last Traded Price
Filter Detail Page
Click any filter row to open the detail page. There are three tabs: Traders, Markets, Trades. The Traders and Markets tabs combine a paginated historical view (the universe currently matching the filter) with a live WebSocket overlay that prepends new traders/markets as they generate their first matching trade in this session. The Trades tab is purely live: no historical view, every row is a trade that arrived since the page opened.
New WebSocket entries flash briefly when they arrive so you can spot them. Streamed entries also keep a persistent dim background after the flash fades, so you can tell session-arrived rows apart from historical ones at a glance. Click any trader or market row to jump to its detail page.
Traders Tab
The trader universe currently matching the filter (paginated 20 per page) plus any new traders that have generated a matching trade during this session (prepended on top while you’re on page 1).
| Column | What it shows |
|---|---|
| Trader | Display name (falls back to truncated wallet address). Avatar and verified badge shown when available. |
| Pos. | Total positions held by the trader (open + closed) |
| Score | Trader Score, color-coded (green ≥ 85, success ≥ 70, warning ≥ 50, orange ≥ 30, destructive below) |
| PnL | Total PnL across all closed positions, USD |
| W/L | Wins / Losses count |
| $W-Win % | Dollar-weighted win rate |
| PF | Profit Factor |
| Sharpe | Sharpe Ratio |
| Sortino | Sortino Ratio (downside-only volatility) |
| Max DD | Max Drawdown %, with absolute dollar amount in parentheses |
| Kelly | Kelly Fraction % |
| RAR | Risk-Adjusted Return |
Markets Tab
The market universe currently matching the filter (paginated) plus newly-matched markets prepended via WebSocket.
| Column | What it shows |
|---|---|
| Question | Market question (falls back to truncated condition ID) |
| Tags | Up to three market tags |
| Liquidity | Current order book depth, USD |
| Volume | Total market volume, USD |
| Ends | Resolution date in ET |
Trades Tab
Every matching trade in real time, newest first.
| Column | What it shows |
|---|---|
| Date | Trade timestamp in ET |
| Trader | Trader name (clickable) |
| Market | Market question (clickable, with full question in tooltip) |
| Outcome | Yes / No or other outcome label |
| Side | BUY or SELL badge (BUY in primary color, SELL in destructive) |
| Shares | Share count |
| Price | Outcome price (0 to 1) |
| Value | Dollar value of the trade (shares × price) |
The Trades tab is purely session-scoped: closing the page clears the table; reopening the filter starts a fresh live feed. The Traders and Markets tabs always re-fetch the current universe from the backend on open, so historical context is preserved across page loads.
Filter list, coverage counts
Each row on the Filters list has a Counts column showing how many traders and markets currently meet the filter criteria, plus an as of timestamp:
12,034 traders
3,891 markets
as of 8m agoThese are coverage numbers, not match-rate predictions: the trader count is the number of traders whose lifetime stats meet the trader-side criteria; the market count is the number of currently-active markets meeting the market-side criteria. They tell you how broadly or narrowly the filter is scoped. A filter showing “1,500,000 traders / 800,000 markets” is essentially every trade on Polymarket; “200 traders / 50 markets” is a tight beam.
When a filter is just-saved or just-edited, the counts may briefly disappear (no row shown in the cell) while the backend recomputes them. They reappear within a second or two; a 30-minute cron is the backstop.
The Filter Builder has a separate Estimate coverage button that runs a one-shot estimate against your in-progress criteria before saving. Useful for sanity-checking that a stricter Sharpe threshold or a tighter category set actually narrows the population the way you expect.
Managing Filters
- Enable/Disable: toggle the switch on any filter row. Disabled filters won’t trigger automations.
- Edit: click the pencil icon to reopen the Filter Builder with all fields pre-populated.
- Delete: click the trash icon. The button is disabled with an explanatory tooltip if any automations still depend on this filter. Delete the automations first, then the filter.