{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tradecat.local/contracts/tradecat-auto-paper-backtest-report.schema.json",
  "title": "TradeCat Auto Paper Backtest Report",
  "description": "Deterministic paper backtest metrics derived from a local paper ledger; never reads credentials or places real orders.",
  "type": "object",
  "required": ["schema", "schema_version", "ok", "metrics"],
  "properties": {
    "schema": {"const": "tradecat_auto.paper_backtest_report.v1"},
    "schema_version": {"const": "1.0.0"},
    "ok": {"type": "boolean"},
    "generated_at": {"type": "string"},
    "metrics": {
      "type": "object",
      "required": ["trade_count", "fills_count", "win_rate", "loss_rate", "net_pnl_usdt", "max_drawdown_usdt", "net_return_pct"],
      "properties": {
        "trade_count": {"type": "integer", "minimum": 0},
        "fills_count": {"type": "integer", "minimum": 0},
        "open_positions_count": {"type": "integer", "minimum": 0},
        "win_count": {"type": "integer", "minimum": 0},
        "loss_count": {"type": "integer", "minimum": 0},
        "breakeven_count": {"type": "integer", "minimum": 0},
        "win_rate": {"type": "number", "minimum": 0},
        "loss_rate": {"type": "number", "minimum": 0},
        "gross_profit_usdt": {"type": "number"},
        "gross_loss_usdt": {"type": "number"},
        "net_pnl_usdt": {"type": "number"},
        "profit_factor": {"type": ["number", "null"]},
        "avg_trade_pnl_usdt": {"type": "number"},
        "max_drawdown_usdt": {"type": "number", "minimum": 0},
        "net_return_pct": {"type": "number"},
        "ending_equity_usdt": {"type": "number"}
      },
      "additionalProperties": true
    },
    "closed_positions_count": {"type": "integer", "minimum": 0},
    "fills_count": {"type": "integer", "minimum": 0},
    "equity_curve_points": {"type": "integer", "minimum": 0},
    "safety": {
      "type": "object",
      "required": ["public_readonly_market_data", "public_readonly", "paper_or_watch_only", "paper_only", "real_orders", "signed_requests", "reads_api_keys", "binance_account_state"],
      "properties": {
        "public_readonly_market_data": {"const": true},
        "public_readonly": {"const": true},
        "paper_or_watch_only": {"const": true},
        "paper_only": {"const": true},
        "real_orders": {"const": false},
        "signed_requests": {"const": false},
        "reads_api_keys": {"const": false},
        "binance_account_state": {"const": false}
      },
      "additionalProperties": true
    },
    "error": {"type": "object", "additionalProperties": true}
  },
  "additionalProperties": true
}
