# Volatility

Use the [shared role, actions and timing rules](../05-signal-passports.md). This product variant uses **candle range**, not signed close-to-close return or standard deviation of returns. On Normal one-minute candles, compute `r=100*(H−Lo)/Lo`, then an EMA of r with period `p_m`. Call that smoothed value V. The parameter is labelled analysis time in minutes because the underlying bars are one minute.

`p_m` is integer 10…1440 in multiples of 10; default 60. `dp` is the comparison threshold. The timeframe and candle type are fixed, but the current metadata **does offer CL/CR**, default CR. Reverse is absent. A zero low price or undefined earlier value is outside the finite-input formulas.

## Entry — volatility.entry

`VH`: abs(V0)>=dp gives A; `VL`: abs(V0)<dp gives A; otherwise N. Equality belongs to VH. This is a threshold state, not a newly crossed-threshold event; the condition can remain true across evaluations. A is neutral to Long/Short and does not open both sides simultaneously.

The base entry/exit dp field does not have a confirmed complete numeric domain in the reviewed constructor. Do not automatically copy the filter's finite option lists into it.

## Filter — percent-volatility.filter

`PERCENT_VOLATILITY_PRICE_LIMIT` uses the same V series and six `ei` variants, giving AA when the rule holds and N otherwise:

- `VH`: abs(V0)>=dp.
- `VL`: abs(V0)<dp.
- `ROGH`: V0−V1>=dp.
- `ROGL`: V0−V1<dp.
- `RROGH`: `100*(V0−V1)/V1>=dp`, requiring V1≠0 for this finite formula.
- `RROGL`: `100*(V0−V1)/V1<dp`, with the same denominator requirement.

ROG compares a difference in **percentage points** of the volatility measure; RROG compares a relative percentage change of that measure. Neither is the asset's price return. The sign of dp matters for change conditions. Consult the exact conditional domains in the constraints: VH/VL and the two “higher” growth variants have discrete confirmed lists; the two “lower” growth variants do not inherit those checks automatically. No uniform decimal step should be invented.

## Exit — volatility.exit

The same VH/VL state returns A. With cba=ED/EDOP it can qualify an ending request for either selected position direction; with AVG it can qualify averaging. A high volatility value is not inherently a Short or Long signal. Execution and repeat handling remain task/mode behaviour.

## Definition coverage and observed controls

The controls below identify this dated schema. Their exact labels, value types and context overrides are in the catalogue. Any omitted standard selector must not be added manually.

- `volatility.entry` — `MAIN` / `VOLATILITY`. Semantics: **Entry — volatility.entry**. Fields: `ss`, `at`, `p_m`, `dp`, `ei`. timeframe: no selector; candles: no selector; calculation: CL/CR; default CR; Reverse: no selector.
- `volatility.exit` — `CLOSE_BY` / `VOLATILITY`. Semantics: **Exit — volatility.exit**. Fields: `ss`, `at`, `cba`, `p_m`, `dp`, `ei`. timeframe: no selector; candles: no selector; calculation: CL/CR; default CR; Reverse: no selector.
- `percent-volatility.filter` — `PRICE_LIMIT` / `PERCENT_VOLATILITY_PRICE_LIMIT`. Semantics: **Filter — percent-volatility.filter**. Fields: `ss`, `at`, `pla`, `p_m`, `dp`, `ei`. timeframe: no selector; candles: no selector; calculation: CL/CR; default CR; Reverse: no selector.
