{
  "tool_id": "synthetic-market-data-generator",
  "slug": "synthetic-market-data-generator",
  "path": "/synthetic-market-data-generator/",
  "mode": "client_side",
  "usage": "Client-side synthetic price series generator. Open https://aifinhub.io/synthetic-market-data-generator/ and select a model (GBM, GARCH(1,1), regime-switching, or Gaussian-copula pairs). Set parameters + optional seed, download CSV or JSON.",
  "methodology": "https://aifinhub.io/methodology/synthetic-market-data-generator/",
  "sample_input": {
    "tool": "synthetic-market-data-generator",
    "seed": 42,
    "s0": 100,
    "drift": 8,
    "vol": 20,
    "days": 252,
    "trading_days_per_year": 252
  },
  "input_schema": {
    "type": "object",
    "properties": {
      "tool": {
        "type": "string"
      },
      "seed": {
        "type": "number"
      },
      "s0": {
        "type": "number"
      },
      "drift": {
        "type": "number"
      },
      "vol": {
        "type": "number"
      },
      "days": {
        "type": "number"
      },
      "trading_days_per_year": {
        "type": "number"
      }
    },
    "required": [
      "tool",
      "seed",
      "s0",
      "drift",
      "vol",
      "days",
      "trading_days_per_year"
    ]
  },
  "output_schema": {
    "type": "object",
    "properties": {
      "model": {
        "type": "string",
        "enum": [
          "gbm",
          "garch",
          "regime",
          "pair"
        ]
      },
      "prices": {
        "type": "array",
        "items": {
          "type": "number"
        },
        "description": "Single-series result (gbm / garch / regime)."
      },
      "stats": {
        "type": "object",
        "properties": {
          "annReturn": {
            "type": "number"
          },
          "annVol": {
            "type": "number"
          },
          "sharpe": {
            "type": "number"
          },
          "maxDrawdown": {
            "type": "number"
          }
        }
      },
      "pricesA": {
        "type": "array",
        "items": {
          "type": "number"
        },
        "description": "Pair result, leg A."
      },
      "pricesB": {
        "type": "array",
        "items": {
          "type": "number"
        },
        "description": "Pair result, leg B."
      },
      "statsA": {
        "type": "object"
      },
      "statsB": {
        "type": "object"
      }
    }
  }
}
