Skip to content
Algo Trade Analytics Docs

Scanner overview

Scanner finds symbols that meet a saved set of conditions on completed market bars. Use it to narrow a research question, inspect the values behind a match, and carry a symbol into Algo Lab for strategy testing.

ApproachWhat you editWhat runs
Graphical screenFilter chips, indicator settings, and ALL/ANY conditionsThe saved rule over completed bars
Custom Python — Coming soonReserved for a later releaseNew Python authoring and execution are unavailable in this release

The code icon on a graphical screen opens Scanner declaration. This read-only SCANNER = {...} view exposes the conditions, sorting, and features as data. Edit the filter chips to change it; the declaration is not an executable Python program.

Custom Python appears as Coming soon in the mode selector. Standard screening does not require Python. Python has not been released. New Python screens, edits, calibration and execution are disabled for this release.

Full-market calculation requires the prepared-screening capability. If it is unavailable, the market table remains a browsing preview; choose a bounded symbol list or watchlist for supported execution. Hosted runs also require identified engine execution for safe recovery. The Run control explains unavailable execution before saving or submitting a request.

The Scanner includes US stocks, supported ETFs, and crypto pairs. Choose the asset type beside the screen name. Daily screens can use the full supported market when prepared screening is configured and the rule is supported; intraday screens use an explicitly selected, bounded set of symbols. Connect a working Alpaca account in Account Integrations before running. The Scanner page blocks runs when that connection is missing or invalid. Data availability still depends on the connection’s feed and symbol access.

Choose the universe explicitly:

  • All market symbols browses the complete supported population for the asset type. The table loads its rows independently of scrolling.
  • Symbol list uses searchable symbol options and selected chips. The picker shows its limit.
  • Watchlist resolves an owned saved list when the run is prepared.
  • Index uses a dated constituent list only when that list is configured in the environment; a familiar index name does not establish data availability.
  • My case studies resolves the symbols in your case studies when the run is prepared. This can change when your case studies change.

The resolved universe may exclude symbols that are not supported. Requests exceeding the environment’s execution limits are refused before new work begins. The run retains the symbols actually scanned. Inspect that snapshot and each row’s coverage before treating a count as a result for your whole intended universe.

Choose Daily, 10-minute, 15-minute, 30-minute, or Hourly when that interval is enabled. Daily screening uses up to 250 completed bars per symbol. Enabled in-app intraday screening supports up to 500 selected symbols × 250 completed bars, including production. Use the limit and history shown in your picker; unavailable capabilities remain disabled.

These are history limits, not a guarantee that every symbol has that many bars. Fields must fit the history of the interval they read. For example, a 252-bar return needs 253 observations and does not fit the daily window. A missing bar at the required completed cutoff remains unavailable; older bars do not silently replace it. Existing five-minute records do not enable new five-minute choices.

First load, cache reuse, and changing filters

Section titled “First load, cache reuse, and changing filters”

Scanner first looks for a compatible dataset for your account and connection. The first preparation can take time; the loading view shows available progress and waiting messages. Subsequent visits and supported filter edits reuse ready values. A previous complete view remains labelled while updated results load. Prepared values are completed-bar observations, not live quotes.

Where daily background preparation is enabled, it maintains the supported daily market datasets. A Daily index or selected-stock view can read its members from the same stock dataset without recalculating the whole market. Switching a selected list from an intraday interval to Daily keeps that list; it does not expand the universe to all stocks.

Supported numeric Standard screens are interactive. Changing a threshold, search, or sort queries compatible prepared values rather than running a full scan. Adding a field or changing an indicator’s period can require one bounded preparation of missing values. The app starts supported selected-stock preparation automatically; a separate Run is not needed. Refresh data checks the requested completed window. Temporal, scored, custom, or otherwise unsupported combinations retain their explicit calculation path and may need a new run or preparation review.

Ordinary Standard preparation has no incremental credit charge. It still uses bounded provider, calculation, queue, storage, and rate allowances. A busy or refused request is not permission to keep submitting it. Read the message and wait or reduce the requested scope. Custom Python has separate availability and pricing.

An intraday screen needs an explicit bounded list. You can enter symbols, use selected rows, choose an owned watchlist, or choose a supported Index. The index picker lets you choose the count before previewing the ranking, using presets or a custom count within the displayed limit. Ranking uses the chosen completed-daily metric; the resulting screen uses the intraday interval you selected. Review eligible members and missing ranking values before confirming.

When adding an intraday condition to ready Daily US-stock market results, Scanner can instead select from the complete current daily match list. This includes your daily rule and search, not only the rows loaded on screen. Keep all matches when they fit the limit, or choose Top N/custom count and a ranking metric. Review Selected N of M daily matches before confirming. Ranked selections exclude matches without a usable ranking value; the all-matches choice includes them. Cancel preserves your daily screen and unapplied edit.

Confirmation freezes the selected symbols and keeps the existing daily conditions explicitly daily while adding the intraday condition. The label at selection describes that original match population; later edits do not silently choose a new stock list. Supported numeric rules with one intraday interval plus daily fields use the interactive prepared path. Other combinations require the explicit path shown by the app. Historical Daily views must return to the latest view before using this selection flow.

Follow is unavailable in this release. Preparing a screen once does not enable continuous updates or unattended intraday scans. Daily/weekly saved-screen schedules have separate capabilities; see MCP and monitoring.

Not calculated means a browsing preview has not computed a metric. Unavailable means the requested data or calculation could not be supplied. Search and sorting apply to the published population rather than only visible rows. Charts can load separate history; inspect their own feed and date.

Open an RSI filter to choose Simple or Wilder, its RSI period, and the screen’s Run interval. The period counts price changes in bars of that interval; it is not the stored-history limit. RSI 14 needs at least 15 closes. History is managed internally: 250 daily bars, with the intraday history shown for your deployment. Initialization and smoothing follow the labelled calculation, so Simple and Wilder RSI can differ.

Changing Run interval applies to the whole screen immediately and closes the filter editor; un-applied filter settings are discarded. It affects all unprefixed fields. Intraday intervals start at ten minutes and require an explicit list within the displayed limit; the interval control opens the symbol selection when needed. A separate Field interval choice appears only when the deployment supports mixed intervals and the screen has a bounded symbol list. It changes that filter’s field rather than the whole screen. Supported numeric daily-plus-intraday rules reuse prepared values; adding a missing field may need bounded preparation for that interval. Changing an RSI threshold reuses prepared values; changing its period or method can require new calculation. Cancel discards un-applied indicator settings.

Overview, Performance, and Technicals are column presets over the available fields. Overview includes relative volume, price changes and ATR volatility; Technicals includes supported moving averages and volatility measurements. Use Columns to show or hide additional available fields. Preset changes do not change the screen’s conditions or acquire new history. Fields requiring more than the fixed daily history, such as a 252-bar return, are not default columns.

Known signed changes and distances use green for positive, red for negative, and neutral text for zero. These colours show direction, not investment quality. Prices, volume, RSI and absolute volatility measurements remain neutral. Numeric values and sorting retain their original precision; colour and rounding are presentation only. Fundamental and analyst data are not implied by these presets.

Choose Relative volume at time (session-aware v2) for stock and ETF screens using a 10-minute, 15-minute, 30-minute or 1-hour Run interval. It compares volume accumulated in the current regular New York session with prior sessions at the same elapsed endpoint, requiring matching bar durations.

An incomplete current-session prefix, a zero comparison baseline or too few complete comparable prior sessions produce Unavailable, not an estimated value. Shortened hourly bars are not prorated or treated as full hours. The displayed fixed history still applies, so the requested session count may not fit.

The original Relative volume at time field keeps its original calculation. Switching to v2 is an explicit configuration change that requires its own prepared values. Crossing conditions and a different Field interval are not supported for v2.

Example: Daily momentum, then a 30-minute condition

Section titled “Example: Daily momentum, then a 30-minute condition”

Start with Daily US stocks and an RSI 14 condition above 60. Add an RSI 14 condition below 30 using 30-minute as its Field interval. In the daily-match selector, choose Top 100 by dollar volume (or a count within your displayed cap), inspect the list, and confirm. Your original RSI condition stays daily; the new one uses completed 30-minute bars on the selected stocks.

Changing the intraday threshold from 30 to 35 reuses those RSI values. Changing RSI 14 to RSI 7 can require missing-field preparation. Returning the whole screen to Daily keeps the selected stocks, rather than silently returning to all stocks.

The in-app agent inspects your draft and proposes configuration changes. Review and apply a proposal to change the editor, then use the normal Scanner flow for loading, saving, and supported execution. A chat response is not a completed scan, a saved revision, or a trading recommendation. Result inspection uses a completed saved run when available; the visible prepared table is not automatically supplied as chat evidence. For example, ask it to propose a numeric RSI filter, then inspect the actual period, interval and condition before applying it.

External MCP agents use a separate research-bound workflow and limits. They do not inherit the app’s 500-symbol capacity or its interactive selection workflow; see MCP and monitoring.

The table starts with matches. Use its status filters to inspect the complete run. The Unavailable filter groups rows whose individual status is either Unavailable or Error. The Status column distinguishes them as follows.

Row statusMeaning
MatchedThe supplied data passed the screen’s decision
Not matchedThe supplied data did not pass the screen’s decision
UnavailableRequired data or coverage was unavailable
ErrorEvaluation failed; inspect the retained reason before retrying

Open a symbol to inspect its values, notes and filter outcomes. Charts can load separate market previews for browsing and compact results; each preview shows its own feed and date. It does not establish which candles produced an earlier match. Results that actually retained original history use that source instead. Table, chart and heatmap populations follow the selected result or market view; missing chart history is not a failed filter.

A completed run with zero matches is a valid result. It differs from a run where symbols could not be evaluated. A matched symbol is a research lead: Scanner does not simulate strategy trades, establish profitability, or place orders.

Changing a heatmap size or color metric reuses the loaded market snapshot and its available period summaries. It does not restrict the map to the rows you scrolled through. Exchange sections group the supported population; they are not sector classifications. Missing measurements remain unavailable.

Chart cards load history near the viewport. EMA/SMA overlays change the display; they do not add screening conditions. Read the preview label before comparing a chart with a saved run. See chart loading.

The toolbar uses icons with tooltips: New screen (+), Open (folder), Save (disk), and Refresh data for prepared Standard fields or Run (play) for explicit execution. Supported selected-stock preparation starts automatically; other execution paths may require review. Reopening a compatible ready dataset does not start new calculation. Hover or focus a control to read its label. The screen-name tooltip shows the full name when the heading is shortened.

Open opens the searchable library with Screens, Schedules, and Watchlists sections. Under Screens, Active and Archived contain your saved configurations. Examples, when available, contains built-in Standard starting rules. An example is not one of your saved screens and does not preserve your results. Save the resulting configuration as your own screen before relying on it later.

You can open, duplicate, rename or archive a saved screen from the library. Archiving disables its schedule; restoring it does not resume automatic runs. A duplicated screen has an independent definition and no copied results.

The save badge distinguishes Unsaved, Edited, Saving, and Saved with a revision number. It reports the screen configuration, not whether a data load or scan has finished. Save records your current definition privately in your account. A restored browser draft is not proof that those edits were saved.

Export screen… downloads a portable .screen.json configuration: its rule, interval, supported universe and display settings. It does not contain result rows, credentials, account ownership, or permission to another account’s data. Import screen… loads that configuration into a new draft; review it and save your own copy. Account-specific universes must first be changed to a portable symbol list or index. Licensed index-member selections cannot be exported as a raw member list. Availability, limits and access are checked in the importing account.

This differs from Download run as JSON or Download results as CSV, which export a retained run. A shared screen/result link still requires the recipient to sign in with access; it does not make your private screen public.

Saving a changed definition creates a revision. A new run retains that definition, the resolved universe, date window, coverage, results, and engine metadata. Historical Python records can also retain their source and parameters; that does not enable new Python execution. Later editor changes do not rewrite earlier results.

Use Run history to reopen past results. Entrants and exits compare successful runs of the same definition, and only count symbols evaluated conclusively in both. Universe additions, removals, and unavailable comparisons are separate details in the run record. First run of this definition means there is no comparable baseline; it does not mean every match just entered.

Use Download results as CSV for row analysis, or Download run as JSON to keep the run metadata and retained definition with the rows. Some older runs have no retained definition. Their historical rule or source cannot be reconstructed from today’s editor; the UI or export may show that information as unavailable.

History is bounded: the current retention policy keeps the latest 30 finished runs per screen. Export important runs if you need a longer record.

Open in Algo Lab is available when the run retains the original daily candles needed for that handoff. It creates or reuses a case study for the symbol and screened window. Compact prepared results do not retain those candles, so that action is unavailable. You can open Algo Lab separately and choose its data; that is a new observation, not a reconstruction of the scan. Continue with a Pine strategy and a separate backtest there; the screen itself is not a strategy.