{
  "status": "success",
  "data": {
    "items": [
      {
        "version": "1.0.0",
        "status": "active",
        "supported_service_types": [
          "custom_strategy_experiment"
        ],
        "supported_strategy_input_types": [
          "natural_language",
          "structured_logic",
          "parameter_template"
        ],
        "supported_delivery_types": [
          "summary_only",
          "artifact"
        ],
        "execution_mode_hint": "quick_run",
        "starter_notes": [
          "Works best when the caller already knows the candidate breakout zone.",
          "Prefer major liquid crypto pairs and higher timeframes for the first release.",
          "Use as a structured experiment template, not as an auto-execution script."
        ],
        "risk_notes": [
          "This is a strategy asset template for research and artifact generation, not live trading advice or an execution instruction.",
          "Breakout zones that are chosen too loosely can create false positives.",
          "Volatile retests often need stricter slippage assumptions than headline candles suggest."
        ],
        "source_notes": [
          "Inspired by public strategy research patterns. Implementation wording and safety boundaries are TRADING4AI-owned."
        ],
        "template_id": "crypto_breakout_confirmation_v1",
        "name": "Crypto Breakout Confirmation",
        "template_family": "breakout_confirmation",
        "strategy_family": "breakout",
        "market_type": "crypto",
        "market_scope": "crypto",
        "summary": "Template for post-breakout confirmation, retest quality, and invalidation-aware follow-through.",
        "strategy_card": {
          "one_liner": "Tests whether a crypto breakout remains valid after a retest and explicit invalidation check.",
          "best_for": [
            "Liquid crypto pairs with visible breakout zones",
            "Users who want a structured breakout experiment"
          ],
          "not_for": [
            "Low-liquidity assets",
            "Hands-free live execution expectations"
          ],
          "how_it_works": [
            "Defines the breakout zone and a minimum confirmation threshold.",
            "Checks whether price acceptance survives the retest window.",
            "Packages risk limits and invalidation into a reusable experiment brief."
          ],
          "user_should_notice": [
            "This template needs a clearly defined zone before it is useful.",
            "Retest behavior can fail quickly in thin or news-driven markets."
          ],
          "deliverables": [
            "strategy_card",
            "parameter_schema",
            "artifact_package",
            "evidence_pack.json"
          ]
        },
        "lean_like_components": {
          "universe": {
            "assets": [
              "BTCUSDT",
              "ETHUSDT",
              "SOLUSDT"
            ],
            "selection_reason": "Major liquid crypto pairs are easier to validate and explain."
          },
          "alpha": {
            "signal_summary": "Signal quality improves when breakout acceptance survives a retest without immediate invalidation.",
            "signal_horizon": "swing"
          },
          "portfolio": {
            "position_sizing": "Risk is capped through explicit stop distance and target risk-reward thresholds.",
            "rebalance_rule": "No portfolio rebalance is assumed; this is a single-setup experiment template."
          },
          "risk": {
            "risk_controls": [
              "stop-loss cap",
              "target risk-reward floor",
              "explicit invalidation"
            ],
            "failure_modes": [
              "false breakout",
              "weak retest acceptance",
              "low-liquidity spikes"
            ]
          },
          "execution": {
            "frequency": "4h",
            "fee_model": "Explicit fee assumptions should be added during backtest configuration.",
            "slippage_model": "Use conservative slippage assumptions when validating fast breakout moves."
          },
          "evidence": {
            "backtest_required": true,
            "data_requirements": [
              "exchange",
              "symbol",
              "timeframe",
              "breakout zone",
              "historical window"
            ],
            "minimum_diagnostics": [
              "false_breakout_count",
              "win_rate",
              "max_drawdown",
              "trade_count"
            ]
          }
        },
        "parameter_schema": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "symbol",
            "primary_timeframe",
            "confirmation_rule",
            "risk_limits"
          ],
          "properties": {
            "symbol": {
              "type": "string",
              "minLength": 3,
              "maxLength": 24
            },
            "primary_timeframe": {
              "type": "string",
              "enum": [
                "1h",
                "4h",
                "1d"
              ]
            },
            "confirmation_rule": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "breakout_threshold",
                "retest_tolerance_pct"
              ],
              "properties": {
                "breakout_threshold": {
                  "type": "number"
                },
                "retest_tolerance_pct": {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 15
                }
              }
            },
            "risk_limits": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "max_stop_loss_pct"
              ],
              "properties": {
                "max_stop_loss_pct": {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 25
                },
                "target_rr_min": {
                  "type": "number",
                  "minimum": 0.5,
                  "maximum": 10
                }
              }
            }
          }
        },
        "display_name": "Crypto Breakout Confirmation"
      },
      {
        "version": "1.0.0",
        "status": "active",
        "supported_service_types": [
          "custom_strategy_experiment"
        ],
        "supported_strategy_input_types": [
          "natural_language",
          "structured_logic",
          "parameter_template",
          "pseudocode"
        ],
        "supported_delivery_types": [
          "summary_only",
          "artifact"
        ],
        "execution_mode_hint": "standard_run",
        "starter_notes": [
          "Best for directional experiments where the user wants a clearer trend-following baseline.",
          "Keep the first pass to liquid assets and a small parameter search range.",
          "Pair with explicit invalidation and exposure limits."
        ],
        "risk_notes": [
          "This is a strategy asset template for research and artifact generation, not live trading advice or an execution instruction.",
          "Trend pullbacks can degrade into reversals during macro regime changes.",
          "Too many pullback filters can overfit a small sample window."
        ],
        "source_notes": [
          "Inspired by public strategy research patterns. Implementation wording and safety boundaries are TRADING4AI-owned."
        ],
        "template_id": "crypto_trend_pullback_v1",
        "name": "Crypto Trend Pullback",
        "template_family": "trend_pullback",
        "strategy_family": "momentum",
        "market_type": "crypto",
        "market_scope": "crypto",
        "summary": "Template for pullback entries inside an existing higher-timeframe trend.",
        "strategy_card": {
          "one_liner": "Tests whether a trend pullback offers a safer continuation entry than chasing the initial move.",
          "best_for": [
            "Users who prefer trend-following baselines",
            "Directional crypto experiments on liquid pairs"
          ],
          "not_for": [
            "Range-bound chop",
            "Ultra-short execution systems"
          ],
          "how_it_works": [
            "Confirms a higher-timeframe trend filter first.",
            "Waits for a pullback into a defined depth range.",
            "Tests whether continuation resumes with better risk-adjusted entries."
          ],
          "user_should_notice": [
            "Trend filters can lag during sharp regime changes.",
            "Pullback depth must stay narrow enough to avoid catching a broken trend."
          ],
          "deliverables": [
            "strategy_card",
            "parameter_schema",
            "artifact_package",
            "evidence_pack.json"
          ]
        },
        "lean_like_components": {
          "universe": {
            "assets": [
              "BTCUSDT",
              "ETHUSDT",
              "SOLUSDT"
            ],
            "selection_reason": "Liquid trend markets are easier to validate for pullback continuation logic."
          },
          "alpha": {
            "signal_summary": "Momentum is only acted on after a pullback returns to a trend-filtered continuation zone.",
            "signal_horizon": "swing"
          },
          "portfolio": {
            "position_sizing": "Position risk is capped per trade and scaled by stop distance.",
            "rebalance_rule": "No rebalance is assumed; exposure resets per trade idea."
          },
          "risk": {
            "risk_controls": [
              "max stop-loss cap",
              "position-risk cap",
              "trend filter confirmation"
            ],
            "failure_modes": [
              "trend exhaustion",
              "deep pullback reversal",
              "volatility whipsaw"
            ]
          },
          "execution": {
            "frequency": "4h",
            "fee_model": "Use explicit exchange fees during validation.",
            "slippage_model": "Model moderate slippage for impulsive continuation candles."
          },
          "evidence": {
            "backtest_required": true,
            "data_requirements": [
              "symbol",
              "trend timeframe",
              "entry timeframe",
              "window"
            ],
            "minimum_diagnostics": [
              "trend_filter_hit_rate",
              "drawdown",
              "trade_count",
              "holding_period"
            ]
          }
        },
        "parameter_schema": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "symbol",
            "trend_timeframe",
            "entry_trigger",
            "risk_limits"
          ],
          "properties": {
            "symbol": {
              "type": "string",
              "minLength": 3,
              "maxLength": 24
            },
            "trend_timeframe": {
              "type": "string",
              "enum": [
                "4h",
                "1d"
              ]
            },
            "entry_trigger": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "pullback_depth_pct",
                "trend_filter"
              ],
              "properties": {
                "pullback_depth_pct": {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 25
                },
                "trend_filter": {
                  "type": "string",
                  "enum": [
                    "ema_stack",
                    "higher_highs",
                    "regime_filter"
                  ]
                }
              }
            },
            "risk_limits": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "max_stop_loss_pct",
                "max_position_risk_pct"
              ],
              "properties": {
                "max_stop_loss_pct": {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 25
                },
                "max_position_risk_pct": {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 10
                }
              }
            }
          }
        },
        "display_name": "Crypto Trend Pullback"
      },
      {
        "version": "1.0.0",
        "status": "active",
        "supported_service_types": [
          "standalone_backtest_service"
        ],
        "supported_strategy_input_types": [
          "structured_logic",
          "parameter_template",
          "pseudocode",
          "python_code",
          "external_file"
        ],
        "supported_delivery_types": [
          "summary_only",
          "artifact",
          "code_delivery"
        ],
        "execution_mode_hint": "customer_strategy_validation",
        "starter_notes": [
          "Use when the customer already has strategy logic and wants a standardized validation run.",
          "Keep arbitrary code execution gated; prefer pseudocode or parameterized logic first.",
          "Return a structured validation report even when the experiment result is poor."
        ],
        "risk_notes": [
          "This is a strategy asset template for research and artifact generation, not live trading advice or an execution instruction.",
          "User-supplied logic can still hide unstated assumptions that invalidate the result.",
          "Controlled code paths must remain gated and reviewable."
        ],
        "source_notes": [
          "Inspired by public strategy research patterns. Implementation wording and safety boundaries are TRADING4AI-owned."
        ],
        "template_id": "crypto_strategy_validation_v1",
        "name": "Crypto Strategy Validation",
        "template_family": "strategy_validation",
        "strategy_family": "validation",
        "market_type": "crypto",
        "market_scope": "crypto",
        "summary": "Validation template for customer-supplied strategy logic, pseudocode, or controlled code input.",
        "strategy_card": {
          "one_liner": "Validates an existing strategy idea with a standardized evidence-first review instead of ad-hoc opinions.",
          "best_for": [
            "Users who already have strategy logic",
            "Backtest requests that need consistent diagnostics"
          ],
          "not_for": [
            "Live deployment decisions without review",
            "Arbitrary unbounded code execution"
          ],
          "how_it_works": [
            "Collects structured logic, pseudocode, or controlled code input.",
            "Defines the evaluation window and minimum risk checks.",
            "Returns a validation-oriented report even when the result is poor."
          ],
          "user_should_notice": [
            "Supplying code does not bypass internal safety and review gates.",
            "A validation report is not the same thing as a production-ready execution system."
          ],
          "deliverables": [
            "strategy_card",
            "parameter_schema",
            "validation_report",
            "evidence_pack.json"
          ]
        },
        "lean_like_components": {
          "universe": {
            "assets": [
              "user_supplied"
            ],
            "selection_reason": "This template validates the universe defined by the customer request."
          },
          "alpha": {
            "signal_summary": "Signal logic comes from the user-supplied strategy description or code.",
            "signal_horizon": "user_defined"
          },
          "portfolio": {
            "position_sizing": "Sizing is inherited from the user strategy or set to a neutral test baseline.",
            "rebalance_rule": "Rebalance rules are validated as supplied."
          },
          "risk": {
            "risk_controls": [
              "drawdown check",
              "trade-count check",
              "exposure review",
              "stability diagnostics"
            ],
            "failure_modes": [
              "logic ambiguity",
              "overfit sample",
              "insufficient diagnostics",
              "unsafe code assumptions"
            ]
          },
          "execution": {
            "frequency": "user_defined",
            "fee_model": "Validation requires explicit fee assumptions in the final run config.",
            "slippage_model": "Validation requires explicit slippage assumptions in the final run config."
          },
          "evidence": {
            "backtest_required": true,
            "data_requirements": [
              "timeframe",
              "start_at",
              "end_at",
              "strategy input",
              "risk checks"
            ],
            "minimum_diagnostics": [
              "drawdown",
              "trade_count",
              "exposure",
              "slippage",
              "stability"
            ]
          }
        },
        "parameter_schema": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "input_mode",
            "evaluation_window",
            "risk_checks"
          ],
          "properties": {
            "input_mode": {
              "type": "string",
              "enum": [
                "structured_logic",
                "parameter_template",
                "pseudocode",
                "python_code"
              ]
            },
            "evaluation_window": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "timeframe",
                "start_at",
                "end_at"
              ],
              "properties": {
                "timeframe": {
                  "type": "string",
                  "enum": [
                    "15m",
                    "1h",
                    "4h",
                    "1d"
                  ]
                },
                "start_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "end_at": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "risk_checks": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "max_drawdown",
                  "trade_count",
                  "exposure",
                  "slippage",
                  "stability"
                ]
              },
              "minItems": 1
            }
          }
        },
        "display_name": "Crypto Strategy Validation"
      },
      {
        "version": "1.0.0",
        "status": "official_template",
        "supported_service_types": [
          "custom_strategy_experiment",
          "standalone_backtest_service"
        ],
        "supported_strategy_input_types": [
          "natural_language",
          "structured_logic",
          "parameter_template",
          "pseudocode"
        ],
        "supported_delivery_types": [
          "summary_only",
          "artifact"
        ],
        "execution_mode_hint": "standard_run",
        "starter_notes": [
          "Start with a single liquid crypto pair such as BTCUSDT.",
          "Use plain-language goals first; template parameters can be added later.",
          "Treat this as a research asset template, not a live execution recipe."
        ],
        "risk_notes": [
          "This is a strategy asset template for research and artifact generation, not live trading advice or an execution instruction.",
          "Fast breakout entries can look attractive in hindsight but degrade sharply after realistic fees.",
          "Retest confirmation reduces false positives but can also reduce trade count."
        ],
        "source_notes": [
          "Inspired by public strategy research patterns. Implementation wording and safety boundaries are TRADING4AI-owned."
        ],
        "template_id": "crypto_dynamic_breakout_v1",
        "display_name": "Crypto Dynamic Breakout",
        "name": "Crypto Dynamic Breakout",
        "template_family": "dynamic_breakout",
        "strategy_family": "breakout",
        "market_type": "crypto",
        "market_scope": "crypto",
        "summary": "Official strategy-asset template for dynamic breakout confirmation with explicit risk and evidence boundaries.",
        "strategy_card": {
          "one_liner": "Tests whether crypto breakouts stay reliable after confirmation and disciplined risk limits.",
          "best_for": [
            "Trending crypto markets",
            "BTC or ETH breakout research with clear invalidation"
          ],
          "not_for": [
            "Flat low-volume markets",
            "Users expecting one-click live execution"
          ],
          "how_it_works": [
            "Defines a breakout lookback and minimum confirmation buffer.",
            "Requires retest acceptance before the setup counts as valid.",
            "Packages sizing and evidence expectations into a reusable strategy asset."
          ],
          "user_should_notice": [
            "Breakout systems are sensitive to fees, slippage, and noisy intraday spikes.",
            "This template is meant to structure research output, not to promise returns."
          ],
          "deliverables": [
            "strategy_card",
            "parameter_schema",
            "artifact_package",
            "evidence_pack.json"
          ]
        },
        "lean_like_components": {
          "universe": {
            "assets": [
              "BTCUSDT",
              "ETHUSDT"
            ],
            "selection_reason": "Liquid benchmark pairs keep breakout diagnostics easier to interpret."
          },
          "alpha": {
            "signal_summary": "The strategy looks for range expansion followed by confirmation instead of blind breakout chasing.",
            "signal_horizon": "intraday"
          },
          "portfolio": {
            "position_sizing": "Risk per trade is capped explicitly instead of implied through leverage.",
            "rebalance_rule": "No rebalance loop; positions are evaluated per breakout setup."
          },
          "risk": {
            "risk_controls": [
              "risk-per-trade cap",
              "confirmation filter",
              "holding-period cap"
            ],
            "failure_modes": [
              "false breakout",
              "late entry after overextension",
              "fee drag in noisy conditions"
            ]
          },
          "execution": {
            "frequency": "15m",
            "fee_model": "Use explicit taker/maker assumptions during validation.",
            "slippage_model": "Use conservative slippage on fast breakout candles."
          },
          "evidence": {
            "backtest_required": true,
            "data_requirements": [
              "symbol",
              "15m candles",
              "lookback window",
              "fee assumptions",
              "slippage assumptions"
            ],
            "minimum_diagnostics": [
              "breakout_hit_rate",
              "max_drawdown",
              "profit_factor",
              "trade_count"
            ]
          }
        },
        "parameter_schema": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "symbol",
            "timeframe",
            "lookback_bars",
            "breakout_buffer_pct",
            "risk_per_trade_pct"
          ],
          "properties": {
            "symbol": {
              "type": "string",
              "minLength": 3,
              "maxLength": 24
            },
            "timeframe": {
              "type": "string",
              "enum": [
                "15m",
                "1h",
                "4h"
              ]
            },
            "lookback_bars": {
              "type": "integer",
              "minimum": 10,
              "maximum": 80,
              "default": 20
            },
            "breakout_buffer_pct": {
              "type": "number",
              "minimum": 0,
              "maximum": 2,
              "default": 0.2
            },
            "retest_confirmation_bars": {
              "type": "integer",
              "minimum": 0,
              "maximum": 6,
              "default": 1
            },
            "risk_per_trade_pct": {
              "type": "number",
              "minimum": 0.1,
              "maximum": 3,
              "default": 1
            },
            "max_holding_bars": {
              "type": "integer",
              "minimum": 4,
              "maximum": 200,
              "default": 24
            }
          }
        }
      },
      {
        "version": "1.0.0",
        "status": "official_template",
        "supported_service_types": [
          "custom_strategy_experiment"
        ],
        "supported_strategy_input_types": [
          "natural_language",
          "structured_logic",
          "parameter_template",
          "pseudocode"
        ],
        "supported_delivery_types": [
          "summary_only",
          "artifact"
        ],
        "execution_mode_hint": "standard_run",
        "starter_notes": [
          "Good when the user wants simple breakout parameters they can reason about.",
          "Works best as a research template with controlled fee/slippage assumptions.",
          "Use one market first before broadening into many symbols."
        ],
        "risk_notes": [
          "This is a strategy asset template for research and artifact generation, not live trading advice or an execution instruction.",
          "Dual-thrust logic can produce many low-quality triggers in sideways markets.",
          "Band parameters that are too aggressive can create unrealistic turnover."
        ],
        "source_notes": [
          "Inspired by public strategy research patterns. Implementation wording and safety boundaries are TRADING4AI-owned."
        ],
        "template_id": "dual_thrust_v1",
        "display_name": "Dual Thrust",
        "name": "Dual Thrust",
        "template_family": "dual_thrust",
        "strategy_family": "breakout",
        "market_type": "crypto",
        "market_scope": "crypto",
        "summary": "Official strategy-asset template for range-breakout research with transparent parameter boundaries.",
        "strategy_card": {
          "one_liner": "Tests whether a simple range-breakout trigger can produce disciplined entries without overcomplicating the rules.",
          "best_for": [
            "Users who want a transparent breakout baseline",
            "Parameter mapping and rule explanation"
          ],
          "not_for": [
            "Low-liquidity pairs",
            "Users seeking portfolio rotation logic"
          ],
          "how_it_works": [
            "Builds upper and lower breakout bands from a recent range window.",
            "Triggers only when price clears the adaptive band thresholds.",
            "Keeps risk limits explicit so the strategy stays teachable and auditable."
          ],
          "user_should_notice": [
            "Simple breakout systems can overtrade during noisy sessions.",
            "Parameter clarity is a strength, but it does not remove regime sensitivity."
          ],
          "deliverables": [
            "strategy_card",
            "parameter_schema",
            "artifact_package",
            "evidence_pack.json"
          ]
        },
        "lean_like_components": {
          "universe": {
            "assets": [
              "BTCUSDT",
              "ETHUSDT"
            ],
            "selection_reason": "Dual-thrust style breakouts are easier to study on liquid benchmark pairs."
          },
          "alpha": {
            "signal_summary": "Signals appear when price exits an adaptive range built from recent highs, lows, and closes.",
            "signal_horizon": "intraday"
          },
          "portfolio": {
            "position_sizing": "Single-position risk is capped by stop distance and risk budget.",
            "rebalance_rule": "No rebalance loop; the template evaluates sequential breakout trades."
          },
          "risk": {
            "risk_controls": [
              "range filter",
              "stop distance cap",
              "risk-per-trade cap"
            ],
            "failure_modes": [
              "whipsaw breakout",
              "overnight gap distortion",
              "fee drag from overtrading"
            ]
          },
          "execution": {
            "frequency": "1h",
            "fee_model": "Use explicit exchange fee assumptions during validation.",
            "slippage_model": "Use moderate slippage assumptions around band breaks."
          },
          "evidence": {
            "backtest_required": true,
            "data_requirements": [
              "symbol",
              "hourly data",
              "range window",
              "band parameters"
            ],
            "minimum_diagnostics": [
              "trade_count",
              "max_drawdown",
              "expectancy",
              "whipsaw_rate"
            ]
          }
        },
        "parameter_schema": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "symbol",
            "timeframe",
            "range_lookback_bars",
            "upper_k",
            "lower_k",
            "risk_per_trade_pct"
          ],
          "properties": {
            "symbol": {
              "type": "string",
              "minLength": 3,
              "maxLength": 24
            },
            "timeframe": {
              "type": "string",
              "enum": [
                "15m",
                "1h",
                "4h"
              ]
            },
            "range_lookback_bars": {
              "type": "integer",
              "minimum": 8,
              "maximum": 80,
              "default": 20
            },
            "upper_k": {
              "type": "number",
              "minimum": 0.1,
              "maximum": 3,
              "default": 0.5
            },
            "lower_k": {
              "type": "number",
              "minimum": 0.1,
              "maximum": 3,
              "default": 0.5
            },
            "confirmation_timeframe": {
              "type": "string",
              "enum": [
                "none",
                "15m",
                "1h"
              ],
              "default": "none"
            },
            "risk_per_trade_pct": {
              "type": "number",
              "minimum": 0.1,
              "maximum": 3,
              "default": 1
            }
          }
        }
      },
      {
        "version": "1.0.0",
        "status": "official_template",
        "supported_service_types": [
          "custom_strategy_experiment"
        ],
        "supported_strategy_input_types": [
          "natural_language",
          "structured_logic",
          "parameter_template",
          "pseudocode"
        ],
        "supported_delivery_types": [
          "summary_only",
          "artifact"
        ],
        "execution_mode_hint": "standard_run",
        "starter_notes": [
          "Use as a sample-friendly template for explainable sector rotation logic.",
          "Good for users who want a calmer, portfolio-style example instead of a fast trading setup.",
          "ETF or sector proxy availability should be checked during evidence gathering."
        ],
        "risk_notes": [
          "This is a strategy asset template for research and artifact generation, not live trading advice or an execution instruction.",
          "Sector rotation can look stable until macro regimes reverse abruptly.",
          "If ETF-sector data is unavailable, this template should be treated as sample-first research."
        ],
        "source_notes": [
          "Inspired by public strategy research patterns. Implementation wording and safety boundaries are TRADING4AI-owned."
        ],
        "template_id": "sector_momentum_v1",
        "display_name": "Sector Momentum",
        "name": "Sector Momentum",
        "template_family": "sector_momentum",
        "strategy_family": "momentum",
        "market_type": "equities",
        "market_scope": "equities",
        "summary": "Official strategy-asset template for explainable sector rotation and momentum ranking research.",
        "strategy_card": {
          "one_liner": "Ranks sectors by momentum and rotates toward the strongest areas while keeping the logic easy to explain.",
          "best_for": [
            "Explainable portfolio-style research",
            "Users who prefer rotation logic over entry-by-entry trading"
          ],
          "not_for": [
            "Tick-level execution",
            "Users who only care about crypto intraday trading"
          ],
          "how_it_works": [
            "Ranks a fixed universe of sector proxies by momentum over a chosen lookback.",
            "Selects the strongest subset for the next rebalance window.",
            "Optionally parks in a defensive asset when strength deteriorates broadly."
          ],
          "user_should_notice": [
            "Sector proxy data quality matters more than cosmetic parameter tweaks.",
            "This template can be sample-first if production ETF data is not yet connected."
          ],
          "deliverables": [
            "strategy_card",
            "parameter_schema",
            "artifact_package",
            "evidence_pack.json"
          ]
        },
        "lean_like_components": {
          "universe": {
            "assets": [
              "XLF",
              "XLK",
              "XLE",
              "XLV",
              "XLP"
            ],
            "selection_reason": "Sector ETFs are simple, teachable proxies for relative-strength rotation."
          },
          "alpha": {
            "signal_summary": "Momentum ranks sectors and promotes only the strongest cohort into the next rebalance window.",
            "signal_horizon": "position"
          },
          "portfolio": {
            "position_sizing": "Capital is spread across the selected top-ranked sectors with optional defensive fallback.",
            "rebalance_rule": "Rebalance on a scheduled cadence such as monthly or weekly."
          },
          "risk": {
            "risk_controls": [
              "top-N cap",
              "defensive fallback",
              "max sector weight cap"
            ],
            "failure_modes": [
              "sharp regime rotation",
              "crowded momentum unwind",
              "lagging rebalance cadence"
            ]
          },
          "execution": {
            "frequency": "weekly",
            "fee_model": "Assume low ETF-like fees unless the final venue differs.",
            "slippage_model": "Use light slippage assumptions appropriate to liquid sector proxies."
          },
          "evidence": {
            "backtest_required": true,
            "data_requirements": [
              "sector proxy prices",
              "rebalance calendar",
              "lookback window"
            ],
            "minimum_diagnostics": [
              "turnover",
              "max_drawdown",
              "sector_concentration",
              "defensive_allocation_rate"
            ]
          }
        },
        "parameter_schema": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "universe",
            "ranking_lookback_days",
            "top_n",
            "rebalance_frequency"
          ],
          "properties": {
            "universe": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 3,
              "maxItems": 20
            },
            "ranking_lookback_days": {
              "type": "integer",
              "minimum": 20,
              "maximum": 252,
              "default": 90
            },
            "top_n": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10,
              "default": 3
            },
            "rebalance_frequency": {
              "type": "string",
              "enum": [
                "weekly",
                "monthly"
              ],
              "default": "monthly"
            },
            "defensive_asset": {
              "type": "string",
              "default": "SHY"
            },
            "max_sector_weight_pct": {
              "type": "number",
              "minimum": 5,
              "maximum": 100,
              "default": 33.3
            }
          }
        }
      },
      {
        "version": "1.0.0",
        "status": "official_template",
        "supported_service_types": [
          "custom_strategy_experiment"
        ],
        "supported_strategy_input_types": [
          "natural_language",
          "structured_logic",
          "parameter_template",
          "pseudocode"
        ],
        "supported_delivery_types": [
          "summary_only",
          "artifact"
        ],
        "execution_mode_hint": "standard_run",
        "starter_notes": [
          "Use when the user explicitly cares about two-asset relationships rather than outright direction.",
          "Start with one pair only so diagnostics remain interpretable.",
          "Correlation stability should be treated as a first-class evidence item."
        ],
        "risk_notes": [
          "This is a strategy asset template for research and artifact generation, not live trading advice or an execution instruction.",
          "Spread behavior can drift for long periods and invalidate the historical relationship.",
          "Two-leg fees and slippage can erase weak mean-reversion edges."
        ],
        "source_notes": [
          "Inspired by public strategy research patterns. Implementation wording and safety boundaries are TRADING4AI-owned."
        ],
        "template_id": "pairs_trading_v1",
        "display_name": "Pairs Trading",
        "name": "Pairs Trading",
        "template_family": "pairs_trading",
        "strategy_family": "pairs",
        "market_type": "crypto",
        "market_scope": "crypto",
        "summary": "Official strategy-asset template for mean-reversion pairs research with transparent spread diagnostics.",
        "strategy_card": {
          "one_liner": "Tests whether a spread between two related assets mean-reverts reliably enough to justify a pairs setup.",
          "best_for": [
            "Users comparing relative-value ideas",
            "Research flows that need spread diagnostics"
          ],
          "not_for": [
            "Single-asset breakout systems",
            "Users unfamiliar with correlation breakdown risk"
          ],
          "how_it_works": [
            "Chooses a primary and hedge asset with a stable relationship hypothesis.",
            "Builds a spread score such as z-score around the historical relationship.",
            "Tests whether the spread reverts often enough after realistic fees and holding constraints."
          ],
          "user_should_notice": [
            "Pairs relationships can break structurally and stop reverting.",
            "A backtest that ignores hedge ratios and borrow constraints can be misleading."
          ],
          "deliverables": [
            "strategy_card",
            "parameter_schema",
            "artifact_package",
            "evidence_pack.json"
          ]
        },
        "lean_like_components": {
          "universe": {
            "assets": [
              "BTCUSDT",
              "ETHUSDT"
            ],
            "selection_reason": "Liquid crypto pairs are easier to prototype for relative-value experiments."
          },
          "alpha": {
            "signal_summary": "Signals appear when the spread deviates materially from its historical relationship and later reverts.",
            "signal_horizon": "swing"
          },
          "portfolio": {
            "position_sizing": "Exposure is balanced across the pair rather than expressed as a single directional bet.",
            "rebalance_rule": "Hedge ratio and spread state are re-evaluated on a scheduled cadence."
          },
          "risk": {
            "risk_controls": [
              "spread stop",
              "max holding days",
              "hedge ratio review"
            ],
            "failure_modes": [
              "correlation breakdown",
              "funding divergence",
              "spread drift"
            ]
          },
          "execution": {
            "frequency": "4h",
            "fee_model": "Both legs require explicit fee assumptions.",
            "slippage_model": "Model slippage on both legs, especially during spread blowouts."
          },
          "evidence": {
            "backtest_required": true,
            "data_requirements": [
              "primary symbol",
              "hedge symbol",
              "spread history",
              "holding window"
            ],
            "minimum_diagnostics": [
              "spread_half_life",
              "win_rate",
              "drawdown",
              "correlation_stability"
            ]
          }
        },
        "parameter_schema": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "primary_symbol",
            "hedge_symbol",
            "entry_zscore",
            "exit_zscore",
            "max_holding_days"
          ],
          "properties": {
            "primary_symbol": {
              "type": "string",
              "minLength": 3,
              "maxLength": 24
            },
            "hedge_symbol": {
              "type": "string",
              "minLength": 3,
              "maxLength": 24
            },
            "entry_zscore": {
              "type": "number",
              "minimum": 0.5,
              "maximum": 5,
              "default": 2
            },
            "exit_zscore": {
              "type": "number",
              "minimum": 0,
              "maximum": 3,
              "default": 0.5
            },
            "max_holding_days": {
              "type": "integer",
              "minimum": 1,
              "maximum": 60,
              "default": 10
            },
            "risk_per_spread_pct": {
              "type": "number",
              "minimum": 0.1,
              "maximum": 3,
              "default": 1
            }
          }
        }
      },
      {
        "version": "1.0.0",
        "status": "official_template",
        "supported_service_types": [
          "custom_strategy_experiment"
        ],
        "supported_strategy_input_types": [
          "natural_language",
          "structured_logic",
          "parameter_template",
          "pseudocode"
        ],
        "supported_delivery_types": [
          "summary_only",
          "artifact"
        ],
        "execution_mode_hint": "standard_run",
        "starter_notes": [
          "Best for users who care more about capital defense than aggressive upside capture.",
          "Use broad proxies first so the regime logic remains explainable.",
          "This is a portfolio-style research asset, not a live allocation mandate."
        ],
        "risk_notes": [
          "This is a strategy asset template for research and artifact generation, not live trading advice or an execution instruction.",
          "Defensive switches can lag sudden recoveries and reduce upside capture.",
          "Proxy-based regime logic can underperform if the chosen basket is poorly matched to the user goal."
        ],
        "source_notes": [
          "Inspired by public strategy research patterns. Implementation wording and safety boundaries are TRADING4AI-owned."
        ],
        "template_id": "risk_on_risk_off_momentum_v1",
        "display_name": "Risk-On / Risk-Off Momentum",
        "name": "Risk-On / Risk-Off Momentum",
        "template_family": "risk_on_risk_off_momentum",
        "strategy_family": "defensive_rotation",
        "market_type": "multi_asset",
        "market_scope": "multi_asset",
        "summary": "Official strategy-asset template for defensive rotation between risk-on and risk-off exposures.",
        "strategy_card": {
          "one_liner": "Rotates between offensive and defensive exposures based on momentum and regime deterioration signals.",
          "best_for": [
            "Defensive users",
            "Portfolio-style regime switching research"
          ],
          "not_for": [
            "High-frequency trading",
            "Users seeking single-entry crypto setups only"
          ],
          "how_it_works": [
            "Measures momentum across risk-on and defensive proxy baskets.",
            "Moves toward defensive exposure when broad strength deteriorates.",
            "Tests whether simple regime switches reduce drawdowns without excessive churn."
          ],
          "user_should_notice": [
            "Defensive rotation usually sacrifices upside speed in exchange for calmer drawdown behavior.",
            "Proxy selection matters as much as rebalance frequency."
          ],
          "deliverables": [
            "strategy_card",
            "parameter_schema",
            "artifact_package",
            "evidence_pack.json"
          ]
        },
        "lean_like_components": {
          "universe": {
            "assets": [
              "SPY",
              "QQQ",
              "TLT",
              "SHY"
            ],
            "selection_reason": "Risk-on and defensive proxies make regime switching easier to explain."
          },
          "alpha": {
            "signal_summary": "Momentum and regime deterioration decide whether capital stays risk-on or rotates defensive.",
            "signal_horizon": "position"
          },
          "portfolio": {
            "position_sizing": "Capital shifts between offensive and defensive sleeves rather than pure stock picking.",
            "rebalance_rule": "Rebalance on a fixed calendar or when regime state changes materially."
          },
          "risk": {
            "risk_controls": [
              "defensive fallback",
              "drawdown-aware allocation",
              "turnover cap"
            ],
            "failure_modes": [
              "late defensive switch",
              "whipsaw between regimes",
              "proxy mismatch"
            ]
          },
          "execution": {
            "frequency": "weekly",
            "fee_model": "Assume low ETF-like fees unless the final venue differs.",
            "slippage_model": "Use light slippage assumptions on liquid proxies."
          },
          "evidence": {
            "backtest_required": true,
            "data_requirements": [
              "proxy prices",
              "rebalance calendar",
              "momentum window",
              "defensive rules"
            ],
            "minimum_diagnostics": [
              "drawdown_reduction",
              "upside_capture",
              "turnover",
              "defensive_days"
            ]
          }
        },
        "parameter_schema": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "risk_on_universe",
            "risk_off_asset",
            "momentum_lookback_days",
            "rebalance_frequency"
          ],
          "properties": {
            "risk_on_universe": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1,
              "maxItems": 10
            },
            "risk_off_asset": {
              "type": "string",
              "default": "SHY"
            },
            "momentum_lookback_days": {
              "type": "integer",
              "minimum": 20,
              "maximum": 252,
              "default": 90
            },
            "rebalance_frequency": {
              "type": "string",
              "enum": [
                "weekly",
                "monthly"
              ],
              "default": "weekly"
            },
            "defensive_trigger_pct": {
              "type": "number",
              "minimum": 0,
              "maximum": 20,
              "default": 0
            }
          }
        }
      }
    ],
    "total": 8,
    "filters": {
      "market_scope": null,
      "strategy_family": null,
      "service_type": null
    }
  },
  "error": null,
  "request_id": "93a09bde-a5cc-4e34-9fa5-eac8e8d9537d",
  "timestamp": "2026-06-10T10:23:25.016Z"
}