{
  "version": 1,
  "rules": {
    "adx": {
      "enabled": true,
      "invert": false,
      "params": {
        "period": 14,
        "threshold": 25
      }
    },
    "adxGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "period": 14,
        "compare": "gte",
        "threshold": 25,
        "eqEpsilon": 0.05
      }
    },
    "atr": {
      "enabled": true,
      "invert": false,
      "params": {
        "period": 14,
        "multiplier": 1.5
      }
    },
    "autocorrGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 64,
        "compare": "gt",
        "threshold": 0,
        "eqEpsilon": 0.05
      }
    },
    "bbSqueezeBreakout": {
      "enabled": true,
      "invert": false,
      "params": {
        "period": 20,
        "dev": 2,
        "squeezeLookback": 100,
        "squeezePercentile": 20,
        "squeezeRecentBars": 5,
        "breakSide": "both"
      }
    },
    "betaGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "symbolA": "",
        "dataSourceA": "",
        "timeframeA": "",
        "symbolB": "",
        "dataSourceB": "",
        "timeframeB": "",
        "window": 20,
        "compare": "gt",
        "threshold": 1,
        "eqEpsilon": 0.05
      }
    },
    "betaThreshold": {
      "enabled": true,
      "invert": false,
      "params": {
        "symbolA": "",
        "dataSourceA": "",
        "timeframeA": "",
        "symbolB": "",
        "dataSourceB": "",
        "timeframeB": "",
        "window": 20,
        "compare": "gt",
        "threshold": 1,
        "eqEpsilon": 0.05,
        "side": "buy"
      }
    },
    "bollingerBands": {
      "enabled": true,
      "invert": false,
      "params": {
        "period": 20,
        "dev": 2
      }
    },
    "breakout": {
      "enabled": true,
      "invert": false,
      "params": {
        "referenceMode": "lookback",
        "fixedPrice": 0,
        "lookback": 20,
        "source": "channel",
        "breakSide": "both",
        "offsetType": "absolute",
        "offsetValue": 0
      }
    },
    "candlePattern": {
      "enabled": true,
      "invert": false,
      "params": {
        "pattern": "bullishEngulfing",
        "dojiBodyRatio": 0.1,
        "side": "buy"
      }
    },
    "correlationGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "symbolA": "",
        "dataSourceA": "",
        "timeframeA": "",
        "symbolB": "",
        "dataSourceB": "",
        "timeframeB": "",
        "window": 20,
        "compare": "gt",
        "threshold": 0.7,
        "eqEpsilon": 0.01
      }
    },
    "correlationThreshold": {
      "enabled": true,
      "invert": false,
      "params": {
        "symbolA": "",
        "dataSourceA": "",
        "timeframeA": "",
        "symbolB": "",
        "dataSourceB": "",
        "timeframeB": "",
        "window": 20,
        "compare": "gt",
        "threshold": 0.7,
        "eqEpsilon": 0.01,
        "side": "buy"
      }
    },
    "crossover": {
      "enabled": true,
      "invert": false,
      "params": {
        "shortMA": 5,
        "longMA": 100
      }
    },
    "customLogic": {
      "enabled": true,
      "invert": false,
      "params": {
        "version": 1,
        "vars": {},
        "state": {},
        "onBar": [],
        "summary": ""
      }
    },
    "dailyStopLoss": {
      "enabled": true,
      "invert": false,
      "params": {
        "type": "percentage",
        "value": 2
      }
    },
    "dailyTakeProfit": {
      "enabled": true,
      "invert": false,
      "params": {
        "type": "percentage",
        "value": 2
      }
    },
    "dayTradeClose": {
      "enabled": true,
      "invert": false,
      "params": {
        "closeTimeUtc": "21:00"
      }
    },
    "dca": {
      "enabled": true,
      "invert": false,
      "params": {
        "schedule": "daily",
        "intervalUnit": "hours",
        "intervalHours": 24,
        "intervalMinutes": 60,
        "timeUtc": "12:00",
        "quantityMultiplier": 1
      }
    },
    "efficiencyRatioGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 20,
        "compare": "gt",
        "threshold": 0.3,
        "eqEpsilon": 0.05
      }
    },
    "fibonacci": {
      "enabled": true,
      "invert": false,
      "params": {
        "lookback": 20,
        "entryLevel": "0.618",
        "exitLevel": "0.382"
      }
    },
    "fredSeries": {
      "enabled": true,
      "invert": false,
      "params": {
        "series": "DFF",
        "compare": "gte",
        "threshold": 5,
        "maxStaleDays": 7,
        "side": "buy"
      }
    },
    "fredSeriesGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "series": "DFF",
        "compare": "gte",
        "threshold": 5,
        "maxStaleDays": 7
      }
    },
    "fundingCostFlatten": {
      "enabled": true,
      "invert": false,
      "params": {
        "thresholdType": "notional",
        "value": 0.15,
        "mode": "paid_only",
        "blockReentryHours": 0
      }
    },
    "fundingCostThreshold": {
      "enabled": true,
      "invert": false,
      "params": {
        "thresholdType": "notional",
        "value": 0.15,
        "mode": "paid_only"
      }
    },
    "fundingRate": {
      "enabled": true,
      "invert": false,
      "params": {
        "mode": "fade",
        "threshold": 0.0001,
        "rateUnit": "eightHour",
        "lookbackPeriods": 1
      }
    },
    "fundingRateThreshold": {
      "enabled": true,
      "invert": false,
      "params": {
        "threshold": 0.0001,
        "rateUnit": "eightHour",
        "compare": "abs_gte",
        "lookbackPeriods": 1
      }
    },
    "halfLifeGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 64,
        "compare": "lt",
        "threshold": 48,
        "eqEpsilon": 0.05
      }
    },
    "holdTime": {
      "enabled": true,
      "invert": false,
      "params": {
        "minutes": 60
      }
    },
    "hurstGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 64,
        "compare": "lt",
        "threshold": 0.5,
        "eqEpsilon": 0.05
      }
    },
    "incrementalDecScaling": {
      "enabled": true,
      "invert": false,
      "params": {
        "type": "distance",
        "trendSide": false,
        "levels": [
          1,
          2,
          3
        ],
        "multipliers": [
          1,
          1,
          1
        ]
      }
    },
    "incrementalScaling": {
      "enabled": true,
      "invert": false,
      "params": {
        "type": "distance",
        "trendSide": false,
        "levels": [
          1,
          2,
          3
        ],
        "multipliers": [
          1,
          1,
          1
        ]
      }
    },
    "indicatorZScore": {
      "enabled": true,
      "invert": false,
      "params": {
        "indicator": "rsi",
        "period": 14,
        "lookback": 20,
        "threshold": 2
      }
    },
    "kurtosisGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 20,
        "compare": "lt",
        "threshold": 3,
        "eqEpsilon": 0.05
      }
    },
    "llmDecision": {
      "enabled": true,
      "invert": false,
      "params": {
        "instructions": "",
        "lookbackBars": 24,
        "minConfidence": 0.65,
        "includeIndicators": true,
        "featureIndicators": [
          "rsi",
          "adx",
          "returns"
        ]
      }
    },
    "macd": {
      "enabled": true,
      "invert": false,
      "params": {
        "fast": 12,
        "slow": 26,
        "signal": 9
      }
    },
    "maxDailyTrades": {
      "enabled": true,
      "invert": false,
      "params": {
        "maxTrades": 3
      }
    },
    "maxDrawdown": {
      "enabled": true,
      "invert": false,
      "params": {
        "type": "percentage",
        "value": 20,
        "latch": true
      }
    },
    "maxLosingTrades": {
      "enabled": true,
      "invert": false,
      "params": {
        "maxLosses": 3
      }
    },
    "maxWinningTrades": {
      "enabled": true,
      "invert": false,
      "params": {
        "maxWins": 3
      }
    },
    "movingAverage": {
      "enabled": true,
      "invert": false,
      "params": {
        "period": 20
      }
    },
    "pairsSpread": {
      "enabled": true,
      "invert": false,
      "params": {
        "metric": "priceReturn",
        "mode": "meanRevert",
        "legA": "",
        "legB": "",
        "lookbackBars": 1,
        "zScoreWindow": 48,
        "threshold": 0.005,
        "convergeExitEnabled": false,
        "exitThreshold": 0.001
      }
    },
    "percentileRank": {
      "enabled": true,
      "invert": false,
      "params": {
        "metric": "close",
        "lookbackBars": 50,
        "threshold": 80,
        "condition": "above",
        "period": 14
      }
    },
    "periodicClose": {
      "enabled": true,
      "invert": false,
      "params": {
        "days": 7,
        "closeTimeUtc": "21:00"
      }
    },
    "priceDistance": {
      "enabled": true,
      "invert": false,
      "params": {
        "maPeriod": 20,
        "type": "percentage",
        "value": 1
      }
    },
    "pricePredict": {
      "enabled": true,
      "invert": false,
      "params": {
        "horizonBars": 3,
        "minProb": 0.58,
        "modelId": "latest"
      }
    },
    "priceRatio": {
      "enabled": true,
      "invert": false,
      "params": {
        "symbolA": "",
        "dataSourceA": "",
        "timeframeA": "",
        "symbolB": "",
        "dataSourceB": "",
        "timeframeB": "",
        "mode": "raw",
        "window": 20,
        "compare": "gt",
        "threshold": 1,
        "eqEpsilon": 0.01,
        "side": "buy"
      }
    },
    "priceRatioGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "symbolA": "",
        "dataSourceA": "",
        "timeframeA": "",
        "symbolB": "",
        "dataSourceB": "",
        "timeframeB": "",
        "mode": "raw",
        "window": 20,
        "compare": "gt",
        "threshold": 1,
        "eqEpsilon": 0.01
      }
    },
    "priceZScore": {
      "enabled": true,
      "invert": false,
      "params": {
        "lookback": 20,
        "threshold": 2,
        "source": "close"
      }
    },
    "rangePositionGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "lookbackBars": 20,
        "compare": "lte",
        "threshold": 80,
        "eqEpsilon": 0.05
      }
    },
    "residualZScore": {
      "enabled": true,
      "invert": false,
      "params": {
        "symbolA": "",
        "dataSourceA": "",
        "timeframeA": "",
        "symbolB": "",
        "dataSourceB": "",
        "timeframeB": "",
        "window": 60,
        "zScoreWindow": 20,
        "threshold": 2
      }
    },
    "returnZScore": {
      "enabled": true,
      "invert": false,
      "params": {
        "lookback": 20,
        "returnBars": 1,
        "threshold": 2
      }
    },
    "rollingSharpe": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 20,
        "compare": "gt",
        "threshold": 0,
        "eqEpsilon": 0.05,
        "side": "buy"
      }
    },
    "rollingSharpeGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 20,
        "compare": "gt",
        "threshold": 0,
        "eqEpsilon": 0.05
      }
    },
    "rollingSortino": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 20,
        "compare": "gt",
        "threshold": 0,
        "eqEpsilon": 0.05,
        "side": "buy"
      }
    },
    "rollingSortinoGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 20,
        "compare": "gt",
        "threshold": 0,
        "eqEpsilon": 0.05
      }
    },
    "rsi": {
      "enabled": true,
      "invert": false,
      "params": {
        "period": 14,
        "oversold": 30,
        "overbought": 70
      }
    },
    "sar": {
      "enabled": true,
      "invert": false,
      "params": {
        "start": 0.02,
        "increment": 0.02,
        "maximum": 0.2
      }
    },
    "skewGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 20,
        "compare": "gt",
        "threshold": 0,
        "eqEpsilon": 0.05
      }
    },
    "stopLoss": {
      "enabled": true,
      "invert": false,
      "params": {
        "type": "percentage",
        "value": 5,
        "exitQuantityMode": "full",
        "priceReference": "avgEntry"
      }
    },
    "takeProfit": {
      "enabled": true,
      "invert": false,
      "params": {
        "type": "percentage",
        "value": 10,
        "exitQuantityMode": "full",
        "priceReference": "avgEntry"
      }
    },
    "trailingStop": {
      "enabled": true,
      "invert": false,
      "params": {
        "type": "percentage",
        "value": 5,
        "exitQuantityMode": "full",
        "priceReference": "avgEntry"
      }
    },
    "twap": {
      "enabled": true,
      "invert": false,
      "params": {
        "period": 20,
        "source": "hlc3",
        "compareMode": "position",
        "bandType": "percentage",
        "bandValue": 0
      }
    },
    "utcTimeWindow": {
      "enabled": true,
      "invert": false,
      "params": {
        "allowedAfterUtc": "",
        "blockedWindows": []
      }
    },
    "utcWeekdays": {
      "enabled": true,
      "invert": false,
      "params": {
        "days": [
          "mon",
          "tue",
          "wed",
          "thu",
          "fri"
        ]
      }
    },
    "varianceRatioGate": {
      "enabled": true,
      "invert": false,
      "params": {
        "window": 64,
        "compare": "gt",
        "threshold": 1,
        "eqEpsilon": 0.05
      }
    },
    "volatilityRegime": {
      "enabled": true,
      "invert": false,
      "params": {
        "metric": "atrPct",
        "period": 14,
        "mode": "absolute",
        "threshold": 2,
        "condition": "above",
        "lookbackBars": 50
      }
    },
    "volumeThreshold": {
      "enabled": true,
      "invert": false,
      "params": {
        "minVolume": null,
        "minAvgVolume": null,
        "lookbackBars": 20,
        "volumeType": "base"
      }
    },
    "volumeZScore": {
      "enabled": true,
      "invert": false,
      "params": {
        "lookbackBars": 20,
        "threshold": 2,
        "condition": "above",
        "volumeType": "base"
      }
    },
    "vwap": {
      "enabled": true,
      "invert": false,
      "params": {
        "anchorMode": "session",
        "rollingPeriod": 20,
        "anchorTimeUtc": "",
        "anchorBarOffset": 0,
        "source": "hlc3",
        "compareMode": "position",
        "bandType": "percentage",
        "bandValue": 0
      }
    }
  },
  "sections": {
    "entry": [
      "crossover",
      "priceDistance",
      "movingAverage",
      "rsi",
      "macd",
      "adx",
      "atr",
      "breakout",
      "bollingerBands",
      "priceZScore",
      "returnZScore",
      "indicatorZScore",
      "bbSqueezeBreakout",
      "sar",
      "fibonacci",
      "vwap",
      "twap",
      "fundingRate",
      "fredSeries",
      "candlePattern",
      "pairsSpread",
      "correlationThreshold",
      "residualZScore",
      "betaThreshold",
      "priceRatio",
      "rollingSharpe",
      "rollingSortino",
      "dca",
      "llmDecision",
      "pricePredict",
      "customLogic"
    ],
    "increase": [
      "crossover",
      "priceDistance",
      "movingAverage",
      "rsi",
      "macd",
      "adx",
      "atr",
      "breakout",
      "bollingerBands",
      "priceZScore",
      "returnZScore",
      "indicatorZScore",
      "bbSqueezeBreakout",
      "sar",
      "fibonacci",
      "vwap",
      "twap",
      "fundingRate",
      "fredSeries",
      "candlePattern",
      "pairsSpread",
      "correlationThreshold",
      "residualZScore",
      "betaThreshold",
      "priceRatio",
      "rollingSharpe",
      "rollingSortino",
      "incrementalScaling",
      "dca",
      "customLogic"
    ],
    "decrease": [
      "crossover",
      "priceDistance",
      "movingAverage",
      "rsi",
      "macd",
      "adx",
      "atr",
      "breakout",
      "bollingerBands",
      "priceZScore",
      "returnZScore",
      "indicatorZScore",
      "bbSqueezeBreakout",
      "sar",
      "fibonacci",
      "vwap",
      "twap",
      "fundingRate",
      "fredSeries",
      "candlePattern",
      "pairsSpread",
      "correlationThreshold",
      "residualZScore",
      "betaThreshold",
      "priceRatio",
      "rollingSharpe",
      "rollingSortino",
      "incrementalDecScaling",
      "stopLoss",
      "takeProfit",
      "customLogic"
    ],
    "reversal": [
      "crossover",
      "priceDistance",
      "movingAverage",
      "rsi",
      "macd",
      "adx",
      "atr",
      "breakout",
      "bollingerBands",
      "priceZScore",
      "returnZScore",
      "indicatorZScore",
      "bbSqueezeBreakout",
      "sar",
      "fibonacci",
      "vwap",
      "twap",
      "fundingRate",
      "fredSeries",
      "candlePattern",
      "pairsSpread",
      "correlationThreshold",
      "residualZScore",
      "betaThreshold",
      "priceRatio",
      "rollingSharpe",
      "rollingSortino",
      "customLogic"
    ],
    "exit": [
      "crossover",
      "priceDistance",
      "movingAverage",
      "rsi",
      "macd",
      "adx",
      "atr",
      "breakout",
      "bollingerBands",
      "priceZScore",
      "returnZScore",
      "indicatorZScore",
      "bbSqueezeBreakout",
      "sar",
      "fibonacci",
      "vwap",
      "twap",
      "fundingRate",
      "fredSeries",
      "candlePattern",
      "pairsSpread",
      "correlationThreshold",
      "residualZScore",
      "betaThreshold",
      "priceRatio",
      "rollingSharpe",
      "rollingSortino",
      "stopLoss",
      "trailingStop",
      "takeProfit",
      "dayTradeClose",
      "periodicClose",
      "holdTime",
      "fundingCostFlatten",
      "customLogic"
    ],
    "filters": [
      "utcTimeWindow",
      "utcWeekdays",
      "volumeThreshold",
      "volumeZScore",
      "percentileRank",
      "volatilityRegime",
      "fundingRateThreshold",
      "fredSeriesGate",
      "fundingCostThreshold",
      "correlationGate",
      "betaGate",
      "priceRatioGate",
      "rollingSharpeGate",
      "skewGate",
      "kurtosisGate",
      "hurstGate",
      "autocorrGate",
      "halfLifeGate",
      "rollingSortinoGate",
      "adxGate",
      "efficiencyRatioGate",
      "varianceRatioGate",
      "rangePositionGate",
      "dailyTakeProfit",
      "dailyStopLoss",
      "maxDailyTrades",
      "maxWinningTrades",
      "maxLosingTrades",
      "maxDrawdown",
      "crossover",
      "priceDistance",
      "movingAverage",
      "rsi",
      "macd",
      "adx",
      "atr",
      "breakout",
      "candlePattern",
      "bollingerBands",
      "priceZScore",
      "returnZScore",
      "indicatorZScore",
      "bbSqueezeBreakout",
      "vwap",
      "twap",
      "sar",
      "fibonacci",
      "incrementalScaling",
      "incrementalDecScaling",
      "fundingRate",
      "fredSeries",
      "correlationThreshold",
      "residualZScore",
      "betaThreshold",
      "priceRatio",
      "rollingSharpe",
      "rollingSortino"
    ]
  },
  "meta": {
    "adx": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-adx/"
    },
    "adxGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-adx-gate/"
    },
    "atr": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-atr/"
    },
    "autocorrGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-autocorr-gate/"
    },
    "bbSqueezeBreakout": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-bb-squeeze-breakout/"
    },
    "betaGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-beta-gate/"
    },
    "betaThreshold": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-beta-threshold/"
    },
    "bollingerBands": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-bollinger-bands/"
    },
    "breakout": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-breakout/"
    },
    "candlePattern": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-candle-pattern/"
    },
    "correlationGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-correlation-gate/"
    },
    "correlationThreshold": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-correlation-threshold/"
    },
    "crossover": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-crossover/"
    },
    "customLogic": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-custom-logic/"
    },
    "dailyStopLoss": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-daily-risk-gates/"
    },
    "dailyTakeProfit": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-daily-risk-gates/"
    },
    "dayTradeClose": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-day-trade-close/"
    },
    "dca": {
      "kind": "directional",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-dca/"
    },
    "efficiencyRatioGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-efficiency-ratio-gate/"
    },
    "fibonacci": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-fibonacci/"
    },
    "fredSeries": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-fred-series/"
    },
    "fredSeriesGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-fred-series-gate/"
    },
    "fundingCostFlatten": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-funding-cost-flatten/"
    },
    "fundingCostThreshold": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-funding-cost-threshold/"
    },
    "fundingRate": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-funding-rate/"
    },
    "fundingRateThreshold": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-funding-rate-threshold/"
    },
    "halfLifeGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-half-life-gate/"
    },
    "holdTime": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-hold-time/"
    },
    "hurstGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-hurst-gate/"
    },
    "incrementalDecScaling": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-incremental-scaling/"
    },
    "incrementalScaling": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-incremental-scaling/"
    },
    "indicatorZScore": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-indicator-z-score/"
    },
    "kurtosisGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-kurtosis-gate/"
    },
    "llmDecision": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-llm-decision/"
    },
    "macd": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-macd/"
    },
    "maxDailyTrades": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-daily-risk-gates/"
    },
    "maxDrawdown": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-daily-risk-gates/"
    },
    "maxLosingTrades": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-daily-risk-gates/"
    },
    "maxWinningTrades": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-daily-risk-gates/"
    },
    "movingAverage": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-moving-average/"
    },
    "pairsSpread": {
      "kind": "directional",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-pairs-spread/"
    },
    "percentileRank": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-percentile-rank/"
    },
    "periodicClose": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-periodic-close/"
    },
    "priceDistance": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-price-distance/"
    },
    "pricePredict": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-price-predict/"
    },
    "priceRatio": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-price-ratio/"
    },
    "priceRatioGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-price-ratio-gate/"
    },
    "priceZScore": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-price-z-score/"
    },
    "rangePositionGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-range-position-gate/"
    },
    "residualZScore": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-residual-z-score/"
    },
    "returnZScore": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-return-z-score/"
    },
    "rollingSharpe": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-rolling-sharpe/"
    },
    "rollingSharpeGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-rolling-sharpe-gate/"
    },
    "rollingSortino": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-rolling-sortino/"
    },
    "rollingSortinoGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-rolling-sortino-gate/"
    },
    "rsi": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-rsi/"
    },
    "sar": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-parabolic-sar/"
    },
    "skewGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-skew-gate/"
    },
    "stopLoss": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-stop-loss/"
    },
    "takeProfit": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-take-profit/"
    },
    "trailingStop": {
      "kind": "signalOnly",
      "allowedInFilters": false,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-trailing-stop/"
    },
    "twap": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-twap/"
    },
    "utcTimeWindow": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-utc-time-window/"
    },
    "utcWeekdays": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-utc-weekdays/"
    },
    "varianceRatioGate": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-variance-ratio-gate/"
    },
    "volatilityRegime": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-volatility-regime/"
    },
    "volumeThreshold": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-volume-threshold/"
    },
    "volumeZScore": {
      "kind": "gate",
      "allowedInFilters": true,
      "allowedInSignals": false,
      "learn": "https://learn.dogabot.com/guides/rule-volume-z-score/"
    },
    "vwap": {
      "kind": "directional",
      "allowedInFilters": true,
      "allowedInSignals": true,
      "learn": "https://learn.dogabot.com/guides/rule-vwap/"
    }
  },
  "needsUserInput": {
    "pairsSpread": [
      "legA",
      "legB"
    ],
    "correlationThreshold": [
      "symbolB"
    ],
    "correlationGate": [
      "symbolB"
    ],
    "betaThreshold": [
      "symbolB"
    ],
    "betaGate": [
      "symbolB"
    ],
    "residualZScore": [
      "symbolB"
    ],
    "priceRatio": [
      "symbolB"
    ],
    "priceRatioGate": [
      "symbolB"
    ],
    "customLogic": [
      "onBar"
    ],
    "llmDecision": [
      "instructions"
    ],
    "utcTimeWindow": [
      "blockedWindows or allowedAfterUtc"
    ],
    "volumeThreshold": [
      "minVolume or minAvgVolume"
    ]
  }
}
