> For the complete documentation index, see [llms.txt](https://docs.itradingbot.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.itradingbot.net/uk/ai-strategy-builder/machine-volatility.md).

# Volatility reference

Shared reading rules — index notation, the `L`/`S`/`N` codes, crossings and Reverse — are on [Signal passports](https://docs.itradingbot.net/ai-strategy-builder/signal-passports). Main backtest settings and the card schema are on [Settings and card schema](https://docs.itradingbot.net/ai-strategy-builder/machine-settings). The behaviour contract is [Rules for AI assistants](https://docs.itradingbot.net/ai-strategy-builder/assistant-rules).

Knowledge package 0.6.1, checked 22 September 2026, build 03613bfa. Use the shared role, actions and timing rules. 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.

## Exact machine reference

Read common settings and card schema first. The following blocks are complete family excerpts, not standalone replacement files. Apply only the selected context overrides and check availability. Use the complete downloaded files for the validator.

### Catalogue definitions and overrides

```json
{
  "format": "itb.field-catalog/0.4.0",
  "definitions": [
    {
      "id": "percent-volatility.filter",
      "original_indicator_id": "PERCENT_VOLATILITY_PRICE_LIMIT",
      "role": "filter",
      "fields": [
        {
          "id": "percent-volatility.filter.asset",
          "source_key": "ss",
          "type": "string",
          "enum_values": null,
          "schema_default": "BTCUSDT",
          "labels": {
            "en": "Asset"
          },
          "unit": "symbol",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "percent-volatility.filter.calculation",
          "source_key": "at",
          "type": "string",
          "enum_values": [
            "CL",
            "CR"
          ],
          "schema_default": "CR",
          "labels": {
            "en": "Calculation"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "CL": {
              "en": "At bar close"
            },
            "CR": {
              "en": "On crossover (per second)"
            }
          },
          "numeric_range": null
        },
        {
          "id": "percent-volatility.filter.filter-exit-action",
          "source_key": "pla",
          "type": "string",
          "enum_values": [
            "SD",
            "ED",
            "EDOP"
          ],
          "schema_default": "SD",
          "labels": {
            "en": "When exiting the filter"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "SD": {
              "en": "Cancel cycles"
            },
            "ED": {
              "en": "Sell by market"
            },
            "EDOP": {
              "en": "Sell at market with deviation (if specified)"
            }
          },
          "numeric_range": null
        },
        {
          "id": "percent-volatility.filter.period-minutes",
          "source_key": "p_m",
          "type": "integer",
          "enum_values": null,
          "schema_default": 60,
          "labels": {
            "en": "Analysis time (m)"
          },
          "unit": "minutes",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "percent-volatility.filter.deviation-percent",
          "source_key": "dp",
          "type": "number",
          "enum_values": null,
          "schema_default": 0.5,
          "labels": {
            "en": "Deviation"
          },
          "unit": "percent",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "percent-volatility.filter.source-ei",
          "source_key": "ei",
          "type": "string",
          "enum_values": [
            "VH",
            "VL",
            "ROGH",
            "ROGL",
            "RROGH",
            "RROGL"
          ],
          "schema_default": "VH",
          "labels": {
            "en": "Allow entry if"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "VH": {
              "en": "Volatility is greater than the set value, %"
            },
            "VL": {
              "en": "Volatility below threshold, %"
            },
            "ROGH": {
              "en": "The absolute growth is greater than set value"
            },
            "ROGL": {
              "en": "Absolute growth is less than set value"
            },
            "RROGH": {
              "en": "Relative growth is greater than the given %"
            },
            "RROGL": {
              "en": "Relative growth is less than the given %"
            }
          },
          "numeric_range": null
        }
      ],
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "labels": {
        "en": "By volatility"
      }
    },
    {
      "id": "volatility.entry",
      "original_indicator_id": "VOLATILITY",
      "role": "entry",
      "fields": [
        {
          "id": "volatility.entry.asset",
          "source_key": "ss",
          "type": "string",
          "enum_values": null,
          "schema_default": "BTCUSDT",
          "labels": {
            "en": "Asset"
          },
          "unit": "symbol",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "volatility.entry.calculation",
          "source_key": "at",
          "type": "string",
          "enum_values": [
            "CL",
            "CR"
          ],
          "schema_default": "CR",
          "labels": {
            "en": "Calculation"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "CL": {
              "en": "At bar close"
            },
            "CR": {
              "en": "On crossover (per second)"
            }
          },
          "numeric_range": null
        },
        {
          "id": "volatility.entry.period-minutes",
          "source_key": "p_m",
          "type": "integer",
          "enum_values": null,
          "schema_default": 60,
          "labels": {
            "en": "Analysis time (m)"
          },
          "unit": "minutes",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "volatility.entry.deviation-percent",
          "source_key": "dp",
          "type": "number",
          "enum_values": null,
          "schema_default": 0.5,
          "labels": {
            "en": "Deviation"
          },
          "unit": "percent",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "volatility.entry.source-ei",
          "source_key": "ei",
          "type": "string",
          "enum_values": [
            "VH",
            "VL"
          ],
          "schema_default": "VH",
          "labels": {
            "en": "Allow entry if"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "VH": {
              "en": "Volatility is greater than the set value, %"
            },
            "VL": {
              "en": "Volatility below threshold, %"
            }
          },
          "numeric_range": null
        }
      ],
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "labels": {
        "en": "Volatility"
      }
    },
    {
      "id": "volatility.exit",
      "original_indicator_id": "VOLATILITY",
      "role": "exit",
      "fields": [
        {
          "id": "volatility.exit.asset",
          "source_key": "ss",
          "type": "string",
          "enum_values": null,
          "schema_default": "BTCUSDT",
          "labels": {
            "en": "Asset"
          },
          "unit": "symbol",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "volatility.exit.calculation",
          "source_key": "at",
          "type": "string",
          "enum_values": [
            "CL",
            "CR"
          ],
          "schema_default": "CR",
          "labels": {
            "en": "Calculation"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "CL": {
              "en": "At bar close"
            },
            "CR": {
              "en": "On crossover (per second)"
            }
          },
          "numeric_range": null
        },
        {
          "id": "volatility.exit.signal-action",
          "source_key": "cba",
          "type": "string",
          "enum_values": [
            "ED",
            "EDOP"
          ],
          "schema_default": "EDOP",
          "labels": {
            "en": "When a signal is received"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "ED": {
              "en": "Sell by market"
            },
            "EDOP": {
              "en": "Sell at market with deviation (if specified)"
            }
          },
          "numeric_range": null
        },
        {
          "id": "volatility.exit.period-minutes",
          "source_key": "p_m",
          "type": "integer",
          "enum_values": null,
          "schema_default": 60,
          "labels": {
            "en": "Analysis time (m)"
          },
          "unit": "minutes",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "volatility.exit.deviation-percent",
          "source_key": "dp",
          "type": "number",
          "enum_values": null,
          "schema_default": 0.5,
          "labels": {
            "en": "Deviation"
          },
          "unit": "percent",
          "label_verified": true,
          "enum_labels": null,
          "numeric_range": null
        },
        {
          "id": "volatility.exit.source-ei",
          "source_key": "ei",
          "type": "string",
          "enum_values": [
            "VH",
            "VL"
          ],
          "schema_default": "VH",
          "labels": {
            "en": "Allow entry if"
          },
          "unit": "not specified",
          "label_verified": true,
          "enum_labels": {
            "VH": {
              "en": "Volatility is greater than the set value, %"
            },
            "VL": {
              "en": "Volatility below threshold, %"
            }
          },
          "numeric_range": null
        }
      ],
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "labels": {
        "en": "Volatility"
      }
    }
  ],
  "context_overrides": {
    "backtest-binance-dca-false": {},
    "backtest-binance-dca-true": {
      "volatility.exit": {
        "volatility.exit.signal-action": {
          "enum_values": [
            "AVG",
            "ED",
            "EDOP"
          ],
          "enum_labels": {
            "AVG": {
              "en": "Average"
            },
            "ED": {
              "en": "Sell by market"
            },
            "EDOP": {
              "en": "Sell at market with deviation (if specified)"
            }
          },
          "schema_default": "AVG"
        },
        "volatility.exit.calculation": {
          "enum_labels": {
            "CL": {
              "en": "At bar close"
            },
            "CR": {
              "en": "From intersection (every second)"
            }
          }
        }
      }
    },
    "backtest-bybit-dca-false": {},
    "backtest-bybit-dca-true": {
      "volatility.exit": {
        "volatility.exit.signal-action": {
          "enum_values": [
            "AVG",
            "ED",
            "EDOP"
          ],
          "enum_labels": {
            "AVG": {
              "en": "Average"
            },
            "ED": {
              "en": "Sell by market"
            },
            "EDOP": {
              "en": "Sell at market with deviation (if specified)"
            }
          },
          "schema_default": "AVG"
        },
        "volatility.exit.calculation": {
          "enum_labels": {
            "CL": {
              "en": "At bar close"
            },
            "CR": {
              "en": "From intersection (every second)"
            }
          }
        }
      }
    }
  }
}
```

### Condition constraints and dependencies

```json
{
  "format": "itb.condition-constraints/0.4.0",
  "definitions": [
    {
      "id": "percent-volatility.filter",
      "field_ids": [
        "percent-volatility.filter.asset",
        "percent-volatility.filter.calculation",
        "percent-volatility.filter.filter-exit-action",
        "percent-volatility.filter.period-minutes",
        "percent-volatility.filter.deviation-percent",
        "percent-volatility.filter.source-ei"
      ],
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "strict_mode_eligible": true,
      "eligibility_scope": "complete normalized constructor input domain; not numerical execution or deployed parity"
    },
    {
      "id": "volatility.entry",
      "field_ids": [
        "volatility.entry.asset",
        "volatility.entry.calculation",
        "volatility.entry.period-minutes",
        "volatility.entry.deviation-percent",
        "volatility.entry.source-ei"
      ],
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "strict_mode_eligible": true,
      "eligibility_scope": "complete normalized constructor input domain; not numerical execution or deployed parity"
    },
    {
      "id": "volatility.exit",
      "field_ids": [
        "volatility.exit.asset",
        "volatility.exit.calculation",
        "volatility.exit.signal-action",
        "volatility.exit.period-minutes",
        "volatility.exit.deviation-percent",
        "volatility.exit.source-ei"
      ],
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "strict_mode_eligible": true,
      "eligibility_scope": "complete normalized constructor input domain; not numerical execution or deployed parity"
    }
  ],
  "fields": {
    "percent-volatility.filter.asset": {
      "definition_id": "percent-volatility.filter",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "binding": {
        "kind": "same_as_card_field",
        "field_id": "backtest.symbol",
        "no_external_or_invented_asset": true
      },
      "allowed_values_status": "card_symbol_binding; no static market symbol list in condition metadata"
    },
    "percent-volatility.filter.calculation": {
      "definition_id": "percent-volatility.filter",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "CL",
          "CR"
        ],
        "backtest-binance-dca-true": [
          "CL",
          "CR"
        ],
        "backtest-bybit-dca-false": [
          "CL",
          "CR"
        ],
        "backtest-bybit-dca-true": [
          "CL",
          "CR"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    },
    "percent-volatility.filter.filter-exit-action": {
      "definition_id": "percent-volatility.filter",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "SD",
          "ED",
          "EDOP"
        ],
        "backtest-binance-dca-true": [
          "SD",
          "ED",
          "EDOP"
        ],
        "backtest-bybit-dca-false": [
          "SD",
          "ED",
          "EDOP"
        ],
        "backtest-bybit-dca-true": [
          "SD",
          "ED",
          "EDOP"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    },
    "percent-volatility.filter.period-minutes": {
      "definition_id": "percent-volatility.filter",
      "type": "integer",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": 10,
      "maximum": 1440,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "integer": true,
      "finite": true,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "source_modulo",
        "value": 10,
        "anchor": 0
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "numeric_status": "source_constructor_bounds_observed",
      "bounds_status": "source_constructor_bounds_observed",
      "input_policy": "exact JSON integer; no numeric strings, bool, rounding or truncation",
      "ui_step": 1,
      "ui_step_is_server_constraint": false
    },
    "percent-volatility.filter.deviation-percent": {
      "definition_id": "percent-volatility.filter",
      "type": "number",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": true,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "server_no_explicit_step",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "numeric_status": "source_no_explicit_bounds",
      "bounds_status": "source_no_explicit_bounds",
      "input_policy": "finite JSON number; no numeric strings or bool; apply exact listed source rules",
      "ui_step": 0.01,
      "ui_step_is_server_constraint": false
    },
    "percent-volatility.filter.source-ei": {
      "definition_id": "percent-volatility.filter",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "VH",
          "VL",
          "ROGH",
          "ROGL",
          "RROGH",
          "RROGL"
        ],
        "backtest-binance-dca-true": [
          "VH",
          "VL",
          "ROGH",
          "ROGL",
          "RROGH",
          "RROGL"
        ],
        "backtest-bybit-dca-false": [
          "VH",
          "VL",
          "ROGH",
          "ROGL",
          "RROGH",
          "RROGL"
        ],
        "backtest-bybit-dca-true": [
          "VH",
          "VL",
          "ROGH",
          "ROGL",
          "RROGH",
          "RROGL"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    },
    "volatility.entry.asset": {
      "definition_id": "volatility.entry",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "binding": {
        "kind": "same_as_card_field",
        "field_id": "backtest.symbol",
        "no_external_or_invented_asset": true
      },
      "allowed_values_status": "card_symbol_binding; no static market symbol list in condition metadata"
    },
    "volatility.entry.calculation": {
      "definition_id": "volatility.entry",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "CL",
          "CR"
        ],
        "backtest-binance-dca-true": [
          "CL",
          "CR"
        ],
        "backtest-bybit-dca-false": [
          "CL",
          "CR"
        ],
        "backtest-bybit-dca-true": [
          "CL",
          "CR"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    },
    "volatility.entry.period-minutes": {
      "definition_id": "volatility.entry",
      "type": "integer",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": 10,
      "maximum": 1440,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "integer": true,
      "finite": true,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "source_modulo",
        "value": 10,
        "anchor": 0
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "numeric_status": "source_constructor_bounds_observed",
      "bounds_status": "source_constructor_bounds_observed",
      "input_policy": "exact JSON integer; no numeric strings, bool, rounding or truncation",
      "ui_step": 1,
      "ui_step_is_server_constraint": false
    },
    "volatility.entry.deviation-percent": {
      "definition_id": "volatility.entry",
      "type": "number",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": true,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "server_no_explicit_step",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "numeric_status": "source_no_explicit_bounds",
      "bounds_status": "source_no_explicit_bounds",
      "input_policy": "finite JSON number; no numeric strings or bool; apply exact listed source rules",
      "ui_step": 0.01,
      "ui_step_is_server_constraint": false
    },
    "volatility.entry.source-ei": {
      "definition_id": "volatility.entry",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "VH",
          "VL"
        ],
        "backtest-binance-dca-true": [
          "VH",
          "VL"
        ],
        "backtest-bybit-dca-false": [
          "VH",
          "VL"
        ],
        "backtest-bybit-dca-true": [
          "VH",
          "VL"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    },
    "volatility.exit.asset": {
      "definition_id": "volatility.exit",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "binding": {
        "kind": "same_as_card_field",
        "field_id": "backtest.symbol",
        "no_external_or_invented_asset": true
      },
      "allowed_values_status": "card_symbol_binding; no static market symbol list in condition metadata"
    },
    "volatility.exit.calculation": {
      "definition_id": "volatility.exit",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "CL",
          "CR"
        ],
        "backtest-binance-dca-true": [
          "CL",
          "CR"
        ],
        "backtest-bybit-dca-false": [
          "CL",
          "CR"
        ],
        "backtest-bybit-dca-true": [
          "CL",
          "CR"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    },
    "volatility.exit.signal-action": {
      "definition_id": "volatility.exit",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "ED",
          "EDOP"
        ],
        "backtest-binance-dca-true": [
          "AVG",
          "ED",
          "EDOP"
        ],
        "backtest-bybit-dca-false": [
          "ED",
          "EDOP"
        ],
        "backtest-bybit-dca-true": [
          "AVG",
          "ED",
          "EDOP"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    },
    "volatility.exit.period-minutes": {
      "definition_id": "volatility.exit",
      "type": "integer",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": 10,
      "maximum": 1440,
      "minimum_inclusive": true,
      "maximum_inclusive": true,
      "integer": true,
      "finite": true,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "source_modulo",
        "value": 10,
        "anchor": 0
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "numeric_status": "source_constructor_bounds_observed",
      "bounds_status": "source_constructor_bounds_observed",
      "input_policy": "exact JSON integer; no numeric strings, bool, rounding or truncation",
      "ui_step": 1,
      "ui_step_is_server_constraint": false
    },
    "volatility.exit.deviation-percent": {
      "definition_id": "volatility.exit",
      "type": "number",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": true,
      "allowed_values": null,
      "allowed_values_by_context": {},
      "step": {
        "status": "server_no_explicit_step",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ],
      "numeric_status": "source_no_explicit_bounds",
      "bounds_status": "source_no_explicit_bounds",
      "input_policy": "finite JSON number; no numeric strings or bool; apply exact listed source rules",
      "ui_step": 0.01,
      "ui_step_is_server_constraint": false
    },
    "volatility.exit.source-ei": {
      "definition_id": "volatility.exit",
      "type": "string",
      "nullable": false,
      "nullability_status": "curated_non_null_subset",
      "strict_mode_eligible": true,
      "status": "source_observed_and_current_backtest_observed",
      "minimum": null,
      "maximum": null,
      "minimum_inclusive": null,
      "maximum_inclusive": null,
      "integer": false,
      "finite": false,
      "allowed_values": null,
      "allowed_values_by_context": {
        "backtest-binance-dca-false": [
          "VH",
          "VL"
        ],
        "backtest-binance-dca-true": [
          "VH",
          "VL"
        ],
        "backtest-bybit-dca-false": [
          "VH",
          "VL"
        ],
        "backtest-bybit-dca-true": [
          "VH",
          "VL"
        ]
      },
      "step": {
        "status": "not_applicable",
        "value": null,
        "anchor": null
      },
      "available_contexts": [
        "backtest-binance-dca-false",
        "backtest-binance-dca-true",
        "backtest-bybit-dca-false",
        "backtest-bybit-dca-true"
      ]
    }
  },
  "conditional_rules": [
    {
      "definition_id": "percent-volatility.filter",
      "if": {
        "field_id": "percent-volatility.filter.source-ei",
        "equals": "VH"
      },
      "then": {
        "fields": {
          "percent-volatility.filter.deviation-percent": {
            "allowed_values": [
              0.1,
              0.15,
              0.2,
              0.25,
              0.3,
              0.35,
              0.4,
              0.45,
              0.5,
              0.55,
              0.6,
              0.65,
              0.7,
              0.75,
              0.8,
              0.85,
              0.9,
              0.95,
              1.0,
              1.1,
              1.2,
              1.3,
              1.4,
              1.5,
              2.0,
              2.5,
              3.0,
              3.5,
              4.0,
              4.5,
              5.0
            ]
          }
        }
      }
    },
    {
      "definition_id": "percent-volatility.filter",
      "if": {
        "field_id": "percent-volatility.filter.source-ei",
        "equals": "VL"
      },
      "then": {
        "fields": {
          "percent-volatility.filter.deviation-percent": {
            "allowed_values": [
              0.1,
              0.15,
              0.2,
              0.25,
              0.3,
              0.35,
              0.4,
              0.45,
              0.5,
              0.55,
              0.6,
              0.65,
              0.7,
              0.75,
              0.8,
              0.85,
              0.9,
              0.95,
              1.0,
              1.1,
              1.2,
              1.3,
              1.4,
              1.5,
              2.0,
              2.5,
              3.0,
              3.5,
              4.0,
              4.5,
              5.0
            ]
          }
        }
      }
    },
    {
      "definition_id": "percent-volatility.filter",
      "if": {
        "field_id": "percent-volatility.filter.source-ei",
        "equals": "ROGH"
      },
      "then": {
        "fields": {
          "percent-volatility.filter.deviation-percent": {
            "allowed_values": [
              0.005,
              0.01,
              0.02,
              0.03,
              0.04,
              0.05,
              0.06,
              0.07,
              0.08,
              0.09,
              0.1,
              0.11,
              0.12,
              0.13,
              0.14,
              0.15,
              0.2,
              0.25,
              0.3,
              0.35,
              0.4,
              0.45,
              0.5,
              -0.005,
              -0.01,
              -0.02,
              -0.03,
              -0.04,
              -0.05,
              -0.06,
              -0.07,
              -0.08,
              -0.09,
              -0.1,
              -0.11,
              -0.12,
              -0.13,
              -0.14,
              -0.15,
              -0.2,
              -0.25,
              -0.3,
              -0.35,
              -0.4,
              -0.45,
              -0.5
            ]
          }
        }
      }
    },
    {
      "definition_id": "percent-volatility.filter",
      "if": {
        "field_id": "percent-volatility.filter.source-ei",
        "equals": "RROGH"
      },
      "then": {
        "fields": {
          "percent-volatility.filter.deviation-percent": {
            "allowed_values": [
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              20,
              25,
              30,
              35,
              40,
              45,
              50,
              -1,
              -2,
              -3,
              -4,
              -5,
              -6,
              -7,
              -8,
              -9,
              -10,
              -11,
              -12,
              -13,
              -14,
              -15,
              -20,
              -25,
              -30,
              -35,
              -40,
              -45,
              -50
            ]
          }
        }
      }
    }
  ],
  "cross_field_rules": []
}
```
