{
  "$defs": {
    "IntermarketAggregate": {
      "additionalProperties": false,
      "description": "Aggregation rule for multi-leader triggers.\n\nNOTE: Only \"ret_pct\" feature is currently supported in the LEAN runtime.\n\"ma_flip\" and \"band_break\" require additional indicator wiring.",
      "properties": {
        "feature": {
          "const": "ret_pct",
          "title": "Feature",
          "type": "string"
        },
        "op": {
          "enum": [
            "max",
            "min",
            "avg"
          ],
          "title": "Op",
          "type": "string"
        },
        "threshold": {
          "title": "Threshold",
          "type": "number"
        }
      },
      "required": [
        "feature",
        "op",
        "threshold"
      ],
      "title": "IntermarketAggregate",
      "type": "object"
    },
    "IntermarketEntryMap": {
      "additionalProperties": false,
      "description": "Map leader move to follower side.\n\nMomentum: {\"leader_up\": \"long\", \"leader_down\": \"short\"}.\nInverse: {\"leader_up\": \"short\", \"leader_down\": \"long\"}.\nLong-only: {\"leader_up\": \"long\", \"leader_down\": \"none\"}.",
      "properties": {
        "leader_down": {
          "description": "Follower side for leader-down signals: 'long', 'short', or 'none'.",
          "enum": [
            "long",
            "short",
            "none"
          ],
          "title": "Leader Down",
          "type": "string"
        },
        "leader_up": {
          "description": "Follower side for leader-up signals: 'long', 'short', or 'none'.",
          "enum": [
            "long",
            "short",
            "none"
          ],
          "title": "Leader Up",
          "type": "string"
        }
      },
      "required": [
        "leader_up",
        "leader_down"
      ],
      "title": "IntermarketEntryMap",
      "type": "object"
    },
    "MultiLeaderIntermarketSpec": {
      "additionalProperties": false,
      "description": "Multi-leader intermarket trigger.",
      "properties": {
        "entry_side_map": {
          "$ref": "#/$defs/IntermarketEntryMap",
          "description": "Map leader_up/leader_down to follower 'long', 'short', or 'none'."
        },
        "follower_symbol": {
          "description": "Follower symbol traded using entry_side_map.",
          "title": "Follower Symbol",
          "type": "string"
        },
        "leader_aggregate": {
          "$ref": "#/$defs/IntermarketAggregate"
        },
        "leaders": {
          "items": {
            "type": "string"
          },
          "minItems": 1,
          "title": "Leaders",
          "type": "array"
        },
        "mode": {
          "const": "multi",
          "default": "multi",
          "title": "Mode",
          "type": "string"
        },
        "window_bars": {
          "description": "Leader movement lookback window, in bars.",
          "maximum": 1000,
          "minimum": 1,
          "title": "Window Bars",
          "type": "integer"
        }
      },
      "required": [
        "follower_symbol",
        "window_bars",
        "entry_side_map",
        "leaders",
        "leader_aggregate"
      ],
      "title": "MultiLeaderIntermarketSpec",
      "type": "object"
    },
    "SingleLeaderIntermarketSpec": {
      "additionalProperties": false,
      "description": "Single-leader intermarket trigger.",
      "properties": {
        "entry_side_map": {
          "$ref": "#/$defs/IntermarketEntryMap",
          "description": "Map leader_up/leader_down to follower 'long', 'short', or 'none'."
        },
        "follower_symbol": {
          "description": "Follower symbol traded using entry_side_map.",
          "title": "Follower Symbol",
          "type": "string"
        },
        "leader_symbol": {
          "description": "Leader symbol whose move selects entry_side_map.",
          "title": "Leader Symbol",
          "type": "string"
        },
        "mode": {
          "const": "single",
          "default": "single",
          "title": "Mode",
          "type": "string"
        },
        "trigger_feature": {
          "const": "ret_pct",
          "description": "Leader feature. Runtime supports ret_pct.",
          "title": "Trigger Feature",
          "type": "string"
        },
        "trigger_threshold": {
          "description": "Absolute return threshold; positive uses leader_up, negative threshold uses leader_down.",
          "title": "Trigger Threshold",
          "type": "number"
        },
        "window_bars": {
          "description": "Leader movement lookback window, in bars.",
          "maximum": 1000,
          "minimum": 1,
          "title": "Window Bars",
          "type": "integer"
        }
      },
      "required": [
        "follower_symbol",
        "window_bars",
        "entry_side_map",
        "leader_symbol",
        "trigger_feature",
        "trigger_threshold"
      ],
      "title": "SingleLeaderIntermarketSpec",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "description": "Trigger based on price moves in leader symbols to trade a follower symbol.",
  "properties": {
    "spec": {
      "discriminator": {
        "mapping": {
          "multi": "#/$defs/MultiLeaderIntermarketSpec",
          "single": "#/$defs/SingleLeaderIntermarketSpec"
        },
        "propertyName": "mode"
      },
      "oneOf": [
        {
          "$ref": "#/$defs/SingleLeaderIntermarketSpec"
        },
        {
          "$ref": "#/$defs/MultiLeaderIntermarketSpec"
        }
      ],
      "title": "Spec"
    },
    "type": {
      "const": "intermarket",
      "default": "intermarket",
      "title": "Type",
      "type": "string"
    }
  },
  "required": [
    "spec"
  ],
  "title": "IntermarketCondition",
  "type": "object"
}
