Standard Deviation (stdev)

[[stdev]] measures the size of deviations in a series around its mean over a given window. It is used to quantify the recent variability of a price or calculated series, for example to compare different market regimes, normalize a deviation from the mean, or build adaptive thresholds.

The stdev block does not indicate the direction of the move. A low value means the series remains only weakly dispersed around its recent mean. A higher value indicates more pronounced deviations over the period considered.

The biased parameter lets you choose between population and sample standard deviation.

Block declaration

A strategy can contain multiple [[stdev]] blocks. Each block outputs one numeric series representing the standard deviation value.

Examples

Minimal setup

This block computes stdev with a 20-period window. Because source and biased are omitted, the block uses the default values, namely source = "close" and biased = true.

[[stdev]]
id     = "stdev"
length = 20

Standard deviation on the closing price

This block computes the standard deviation of closing prices over the last 20 candles.

[[stdev]]
id     = "stdev"
source = "close"
length = 20

Normalized distance from a moving average

This example uses stdev to express the distance between price and a moving average in standard deviations.

The condition becomes true when the closing price moves more than 1.5 standard deviations above its moving average. This kind of setup is used to identify price extension phases while taking recent volatility into account.

[[moving_average]]
id     = "baseline"
source = "close"
type   = "ema"
length = 50

[[stdev]]
id     = "volatility"
source = "close"
length = 50

[[condition]]
id            = "price_extension"
condition     = "(close - baseline) / volatility > 1.5"
next_block_id = "..."

Parameters

ParameterDescription
id
 String
 Required
Unique series name.
source
 String
 or Array
 Optional
Input series used for the calculation.
Accepted forms: source = "hl2" or source = ["close", "hl2"].
Each value can be either a standard price source (open, close, high, low, hl2, hlc3, ohlc4, hlcc4, volume) or the id of another indicator.
Default value: "close"
length
 Integer or Range
 Required
Standard deviation window. It must be ≥ 1 when biased = true, and ≥ 2 when biased = false.

Usage:
• Fixed: length = value
• Grid search:
 – length.start = min_value
 – length.stop = max_value
 – length.step = value (optional, default 1)
biased
 Boolean
 Optional
Chooses between population and sample standard deviation. When true, the block uses population stdev (division by N). When false, it uses sample stdev (division by N-1). Default is true.
symbol
 String
 or Array
 Optional
Market symbol(s) used when source only consists of standard prices (open, close, high, low, hl2, hlc3, ohlc4, hlcc4, volume).
Symbols must include the exchange prefix in the EXCHANGE:SYMBOL format (for example "KUCOIN:BTCUSDT").
If source mixes standard prices and indicator ids, symbol is applied only to combinations based on standard prices.
If source contains only indicator ids, symbol is ignored.
If omitted, the block inherits the symbol from [backtest].
For symbol format, arrays, and alignment rules, see Exchanges, Symbols and Timeframes.
timeframe
 String
 or Array
 Optional
Timeframe on which this indicator is computed.
If timeframe is omitted, the computation uses the grid’s main timeframe defined in [backtest].
For accepted formats and timeframe alignment rules, see Exchanges, Symbols and Timeframes.

Available variables

Use the identifiers below directly in your expressions. The stdev block exposes one numeric series, its parameters, and the input metadata.

Assume the block is configured as:

[[stdev]]
id     = "stdev"
length = 20

Then:

VariableDescription
stdev or stdev[0]
Decimal
Current standard deviation value.
stdev[n]
Decimal
Standard deviation value from n candles ago.
stdev.length
Decimal
Window length in use.
stdev.biased
Decimal
Bias flag in use, 1 for population standard deviation and 0 for sample standard deviation.
stdev.source
String
Name of the input series.
stdev.symbol
String
Symbol used (display format).
stdev.timeframe
String
Timeframe used for this block.

Notes

  • When biased = false, the window must contain at least two values because sample standard deviation uses an N-1 divisor.
  • The engine skips na values when building the window and starts producing values only after it has collected enough valid samples.