Skip to main content

Overview

This page documents 7 operators (role: FILTER).

Quick Reference


CompositeFilter

Combine multiple filters with AND/OR logic. Role: FILTER | Ephemeral: No

Parameters

Source Code

Full compute() implementation — no hidden logic.
Source: apps/trading/operators/base.py

DataAvailabilityFilter

Filter by minimum data availability (non-NaN bars). Counts the number of non-NaN values within a trailing window for each symbol and retains only those with at least min_bars valid data points. For single-bar (1-D) data, a symbol passes if its value is not NaN. For multi-bar (2-D) data, the window size is min(min_bars, available bars) and the count of non-NaN entries must meet the threshold. Passing symbols are assigned 1.0, others 0.0. Role: FILTER | Ephemeral: No

Parameters

Usage

Source Code

Full compute() implementation — no hidden logic.
Source: apps/trading/operators/universe/filter/data_availability.py

LiquidityFilter

Filter by average dollar volume (price * volume). Computes dollar volume as close price multiplied by volume for each bar, then averages over the lookback window. Retains only symbols whose average dollar volume meets or exceeds the specified minimum threshold. Requires two inputs (close price and volume). For single-bar (1-D) data the raw dollar volume is compared directly; for multi-bar (2-D) data the trailing window average is used. Passing symbols are assigned 1.0, others 0.0. Role: FILTER | Ephemeral: No

Parameters

Usage

Source Code

Full compute() implementation — no hidden logic.
Source: apps/trading/operators/universe/filter/liquidity.py

PriceFilter

Filter by price range. Checks the most recent close price for each symbol and retains only those whose price falls within the [min_price, max_price] range. When max_price is None, no upper bound is applied. For multi-bar (2-D) data the last bar is used; for single-bar (1-D) data the value is used directly. Passing symbols are assigned 1.0, others 0.0. Role: FILTER | Ephemeral: No

Parameters

Usage

Source Code

Full compute() implementation — no hidden logic.
Source: apps/trading/operators/universe/filter/price.py

StrataFilter

Filter symbols by strata (group/category) membership. Assigns each symbol to a category via the strata mapping, then retains only symbols whose category is in the include list (if provided) and not in the exclude list. The set of passing symbols is precomputed at construction time based on the include/exclude rules. At compute time, each symbol in symbol_order is checked against the precomputed set. Passing symbols are assigned 1.0, others 0.0. Role: FILTER | Ephemeral: No

Parameters

Usage

Source Code

Full compute() implementation — no hidden logic.
Source: apps/trading/operators/universe/filter/strata.py

VolatilityFilter

Filter by volatility range. Computes the standard deviation of simple returns over the lookback window and retains only symbols whose volatility falls within the specified [min_vol, max_vol] range. Returns can optionally be annualized by multiplying by sqrt(periods_per_year). Requires at least two bars of data to calculate returns. Symbols outside the range are assigned 0.0, those inside are assigned 1.0. Role: FILTER | Ephemeral: No

Parameters

Usage

Source Code

Full compute() implementation — no hidden logic.
Source: apps/trading/operators/universe/filter/volatility.py

VolumeFilter

Filter by minimum average trading volume. Computes the mean trading volume over a lookback window and retains only symbols whose average volume meets or exceeds the specified minimum threshold. For single-bar (1-D) data the raw value is compared directly; for multi-bar (2-D) data the trailing window average is used. Symbols that do not pass are assigned 0.0, passing symbols are assigned 1.0. Role: FILTER | Ephemeral: No

Parameters

Usage

Source Code

Full compute() implementation — no hidden logic.
Source: apps/trading/operators/universe/filter/volume.py

Operator Protocol

How operators implement the compute() interface

StatefulGraph

How operators compose into a DAG