q.indicator contains deterministic market measurements for one instrument at a time. Indicators preserve pandas indexes, never group by symbol implicitly, and do not express investment intent.
Use indicators directly in research, dashboards, alerts, and rules, or wrap them in q.feature.Feature when the result must be named, versioned, computed per entity, and materialized for model training.
Native functions are flat under q.indicator; provider-specific formulas remain explicit under q.indicator.talib and q.indicator.pandas_ta. The examples below are executed live by Quarto every time the docs are built.
Sample data
We use qrt’s bundled AAPL sample dataset — loaded offline via q.data.datasets.load, no network dependency (see the Data tutorial for more on q.data):
import pandas as pdimport qrt as qaapl = q.data.datasets.load("aapl")aapl.tail()
open
high
low
close
volume
datetime
2026-07-13
317.019989
323.450012
315.779999
317.309998
43257800
2026-07-14
313.760010
316.190002
311.910004
314.859985
36336800
2026-07-15
317.619995
328.730011
317.320007
327.500000
60957600
2026-07-16
328.010010
334.679993
326.790009
333.260010
62970600
2026-07-17
331.980011
334.989990
329.000000
333.739990
63365300
Calculate reusable market measurements directly. These values are not registered or persisted as model features until they are wrapped by q.feature.Feature:
To add a native indicator, create qrt/indicator/_<indicator>.py with one public function and re-export it from qrt/indicator/__init__.py. Keep one canonical formula per native name; provider variants remain under their provider namespace.
Visualizing indicators
q.plot.col renders any indicator DataFrame as an interactive Plotly chart with hover, zoom, and range-selector buttons. Visualization does not register the values as stored features:
fig = q.plot.col( price_indicators, title="AAPL close price with SMA overlays", ylabel="Price", height=450,)fig.show()