Airavat is in Private Alpha. Request early access at airavat.xyz
PolymarketFilters

Filters

Filters define which trades or market events you care about. They combine trader performance criteria, market attributes, trade parameters, notification subscriptions, 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

  1. Go to the Filters tab
  2. Click the + button to open the Filter Builder
  3. Enter a Filter Name (required)
  4. Configure one or more components (see below)
  5. Click Save

The Filter Builder opens with components active by default: Trader Criteria, Market Criteria, Trade Criteria, and Notification 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 eight components: Trader Criteria + Whitelist + Blacklist (trader side), Market Criteria + Whitelist + Blacklist (market side), Trade Criteria, and Notification 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 stats clear all the bars matches.

Set min and/or max for any combination:

FieldWhat it meansRangeExample use
Win RatePercentage of closed positions that were profitable (dollar-weighted)0 to 100%Min 55, traders who win more than they lose
Sharpe RatioRisk-adjusted return. Above 1 is good, above 2 is excellent-∞ to +∞Min 1.5, strong risk-adjusted performers
Sortino RatioLike Sharpe but penalizes only downside volatility-∞ to +∞Min 2, strong risk-adjusted performance ignoring upside vol
Total PnLNet profit/loss across all closed positions in USD-∞ to +∞Min 5000, meaningfully profitable traders
Total VolumeTotal dollar volume traded across all positions0+Min 100000, traders with real skin in the game
Max Drawdown %Largest peak-to-trough decline in portfolio value0 to 100%Max 30, exclude traders with large drawdowns
Kelly FractionOptimal bet sizing based on win rate and payoff ratio. Higher = stronger edge0 to 100Min 10, traders with meaningful edge
Risk-Adjusted ReturnTotal return divided by max drawdown. A simpler complement to Sharpe.-∞ to +∞Min 5, return that justifies the worst drawdown
Closed PositionsNumber of positions closed or resolved0+Min 20, sufficient track record
Total TradesTotal individual trades executed0+Min 50, experienced traders
Profit FactorGross profits / gross losses. Above 1 = profitable overall0+Min 1.5, consistently profitable
Trade FrequencyAverage fills per day. Higher = more active trader0+Min 1, traders placing at least one fill per day
Trader ScoreComposite 0 to 100 score across performance, risk, consistency, edge, experience0 to 100Min 70, strong overall traders

By default, Trader Criteria are evaluated against a trader’s lifetime stats. The Filter Builder includes an Apply thresholds to category checkbox that changes this behavior. When enabled, thresholds are checked against the trader’s stats in each of the incoming trade’s market categories rather than their overall stats. The trade does not pass the filter if the trader falls below thresholds in any category with available data (at least one category must have data to qualify).

When the checkbox is enabled, a time window dropdown appears, defaulting to All time. You can restrict the evaluation to a recent period (Last 24 hours, Last week, Last month, Last 3 months, or Last 6 months). This is useful for catching traders who are on a hot streak in a specific category without relying on lifetime stats that may be stale.

When category thresholds are disabled (the default), the filter evaluates against the trader’s overall lifetime stats. 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:

FieldWhat it meansExample use
Multi OutcomeWhether the market uses multi-outcome pricing (allows trading “No” directly). Options: Any, Yes, No”Yes”, only multi-outcome markets
DisputedWhether the market has an active UMA dispute. Options: Any, Yes, No”Yes”, only currently-disputed markets
VolumeTotal dollar volume traded on the marketMin 100000, liquid markets
LiquidityCurrent order book depth. Higher = lower slippageMin 50000, deep markets
Days RemainingDays until market resolutionMin 7, Max 90, medium-term markets
TagsCategory tags (OR logic). The market matches if it carries any selected tag”Politics” + “US Elections”, politics or US elections markets
Question KeywordsFilter by text in the market’s question. Each keyword is contains or not contains; multiple keywords are AND’d togethercontains "election" + not contains "2020"
Description KeywordsFilter by text in the market’s description. Same logic as question keywords but searches the description fieldcontains "runoff" matches markets whose description mentions “runoff”

Question Keywords and Description Keywords are separate fields. When adding a keyword, you first select whether it targets the Question or Description, then choose the operator (Contains or Not contains), then type the keyword. Keywords within each field are AND’d together; keywords across Question and Description are also AND’d.


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:

FieldWhat it meansRangeExample use
SideLocked to BUY. Only buy trades trigger filters; exits are handled by the automation’s settingsBUY onlyN/A
Trade Size ($)Dollar value of the trade (size × price)0+Min 1000, whale-sized trades only
Last Traded PricePrice of the outcome token (0 to 1). Lower = less likely outcome, higher = more likely0 to 1Max 0.85, trades on underdog outcomes

Notification Criteria

Use this when you want to be notified about market-level events rather than individual trades. Unlike the other criteria which match on the current state of a document (the trader’s stats, the market’s attributes, the trade’s size), notification criteria match on fleeting events: something just happened on a market and you want to know about it.

Select one or more event types:

Event typeWhat it matches
DisputesA UMA dispute has opened on a market. Use this to catch disputes as they happen, rather than filtering on markets that are already disputed.
BulletinsA bulletin board update was posted on a market (official clarifications, dispute notices from Polymarket).
Description ChangesThe market’s description text was updated.

Notification criteria and trade criteria are mutually exclusive. A filter uses one or the other, not both. The Filter Builder makes this clear: when notification criteria has any value, trade criteria is disabled (and vice versa). This separation exists because the two serve fundamentally different purposes. Trade criteria gates on individual trade events; notification criteria subscribes to market-level updates.

Notification criteria and trader criteria/whitelist are also mutually exclusive. Notification events are about markets, not about specific traders.

Market criteria and market whitelists/blacklists work alongside notification criteria. You can narrow which markets you receive notifications for using market criteria, a market whitelist, or a market blacklist. For example: whitelist a single market, then check “Bulletins” to get bulletin updates only for that market.

Disputed field and Disputes notification are mutually exclusive. These two features serve different purposes: the Disputed field under Market Criteria filters trades on markets that are already disputed, while the Disputes notification tells you the moment a new dispute opens. You can use one or the other, not both. If you set Disputed to “Yes” in Market Criteria, the “Disputes” checkbox under Notification Criteria is disabled. Likewise, if you check “Disputes” under Notification Criteria, the Disputed dropdown under Market Criteria is disabled.

Automation restrictions: Filters with notification criteria can only be attached to Alert automations (email or activity tab). They cannot be attached to paper or real copy trade automations, since notification events don’t represent trades to copy. When creating a paper or real copy trade automation, notification-criteria filters are greyed out in the filter dropdown.


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
  • Notification side: the event type matches one of the selected notification criteria
  • Blacklists always win, applied first: a blacklisted trader / market / category is excluded before any of the above is evaluated

For trade-matching filters (no notification criteria): a trade matches when trader side AND market side AND trade side AND not blacklisted.

For notification filters (notification criteria present): a market event matches when market side AND notification side AND not blacklisted. There is no trader or trade side because notification events are about markets, not traders.

The filter summary on the filter listing and detail pages shows the full logic in plain English with AND/OR connectors and parentheses where needed.

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 or Notification Criteria is required.
  • Trade Criteria and Notification Criteria are mutually exclusive.
  • Notification Criteria cannot be combined with Trader Criteria or Trader Whitelist.

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.

Notification filters

When a filter uses notification criteria, the detail page behaves differently:

  • Markets tab: Shows flat market rows (no event grouping) for markets matching the filter’s market criteria or whitelist. Each row is expandable to show the latest bulletin text or description change content. New notification events flash and prepend in real time.
  • Traders and Trades tabs: Show an explanatory empty state — “This filter uses notification criteria — trader and trade matches are not applicable.” The tabs remain visible so you understand the distinction.

Real-time notification events: The Markets tab receives four event types via WebSocket:

EventWhat happens on the page
Dispute openedThe market is prepended to the top of the list (or flashed if already visible) and marked as disputed
Dispute resolvedThe existing market row updates to show the resolved status and flashes
Bulletin addedThe market is prepended or flashed; expand the row to see the new bulletin text
Description changedThe market is prepended or flashed; expand the row to see the updated description

Real-time events only update page 1 of the Markets tab. If you’re browsing a later page, events are not shown until you return to page 1 or refresh.

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).

ColumnWhat it shows
TraderDisplay name (falls back to truncated wallet address). Avatar and verified badge shown when available.
Pos.Total positions held by the trader (open + closed)
ScoreTrader Score, color-coded (green ≥ 85, success ≥ 70, warning ≥ 50, orange ≥ 30, destructive below)
PnLTotal PnL across all closed positions, USD
W/LWins / Losses count
$W-Win %Dollar-weighted win rate
PFProfit Factor
SharpeSharpe Ratio
SortinoSortino Ratio (downside-only volatility)
Max DDMax Drawdown %, with absolute dollar amount in parentheses
KellyKelly Fraction %
RARRisk-Adjusted Return

Markets Tab

The market universe currently matching the filter (paginated) plus newly-matched markets prepended via WebSocket.

ColumnWhat it shows
QuestionMarket question (falls back to truncated condition ID). A small colored dot before the question indicates you have an open position on this market. Disputed markets show a small warning icon before the question.
TagsUp to three market tags
LiquidityCurrent order book depth, USD
VolumeTotal market volume, USD
EndsResolution date in ET

Trades Tab

Every matching trade in real time, newest first.

ColumnWhat it shows
DateTrade timestamp in ET
TraderTrader name (clickable)
MarketMarket question (clickable, with full question in tooltip)
OutcomeYes / No or other outcome label
SideBUY or SELL badge (BUY in primary color, SELL in destructive)
SharesShare count
PriceOutcome price (0 to 1)
ValueDollar 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 ago

These 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; they update automatically within 30 minutes at most.

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.