{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://polytraders.dev/schemas/StrategyConfig.json",
  "title": "StrategyConfig",
  "description": "What a strategy needs to launch. Portfolio binding + market scope + score contract + params. M2 ships momentum only.",
  "type": "object",
  "required": [
    "strategy_id",
    "family",
    "target_portfolio",
    "score_type",
    "market_scope",
    "params",
    "mode"
  ],
  "properties": {
    "strategy_id": { "$ref": "_common.json#/$defs/StrategyId" },
    "family": {
      "type": "string",
      "enum": ["momentum"],
      "description": "M2 allow-list. Other families (mean_reversion, arb) are M3."
    },
    "target_portfolio": { "$ref": "_common.json#/$defs/PortfolioId" },
    "score_type": { "$ref": "_common.json#/$defs/ScoreType" },
    "market_scope": { "$ref": "MarketScope.json" },
    "params": {
      "type": "object",
      "required": ["lookback_minutes", "min_edge_bps", "max_position_pusd"],
      "properties": {
        "lookback_minutes": { "type": "integer", "minimum": 1, "maximum": 1440 },
        "min_edge_bps":     { "type": "integer", "minimum": 1, "maximum": 1000 },
        "max_position_pusd": { "$ref": "_common.json#/$defs/Decimal" },
        "take_profit_bps":  { "type": "integer", "minimum": 1 },
        "stop_loss_bps":    { "type": "integer", "minimum": 1 }
      },
      "additionalProperties": false
    },
    "mode": {
      "type": "string",
      "enum": ["docs-complete", "demo-wired", "limited_live", "wide_live"],
      "description": "Four-state promotion ladder. New strategies start at docs-complete."
    }
  },
  "additionalProperties": false
}
