QJ//BOUNDED QUERY · PRODUCTION

Portfolio Simulation

Simulate a constant-weight portfolio with calibrated lognormal GBM or IID historical bootstrap. Seeded, bounded, not a forecast.

PRODUCTION/v1/query/portfolio-simulationOAUTH · agents:query$0.01 · X402/2

CONTRACT

Paid bounded portfolio simulation

Skill
qj-portfolio-simulation
Route
/v1/query/portfolio-simulation
Identity
OAUTH · agents:query
Price
$0.01 · X402/2

GOVERNED METHOD

Exact MCP evidence path

  • data.prices.batchqj-data-mcp
  • data.analytics.portfolio_simulationqj-data-mcp

No direct database, provider API or private service access. Missing coverage remains missing—it is never turned into a negative fact.

INVOKE

Call the bounded resource

Register an OAuth client, request scope agents:query, then call the route with its bearer token. The first unauthorised call returns the exact x402 v2 payment challenge.

REQUEST

{
  "baseCurrency": "USD",
  "positions": [
    {
      "ticker": "AAPL",
      "marketValue": 25000,
      "currency": "USD"
    },
    {
      "ticker": "NVDA",
      "marketValue": 15000,
      "currency": "USD"
    },
    {
      "ticker": "TSM",
      "marketValue": 10000,
      "currency": "USD"
    }
  ],
  "lookbackDays": 120
}

ILLUSTRATIVE RESPONSE SHAPE · NOT LIVE MARKET DATA

{
  "schemaVersion": "qj-agents.portfolio-simulation.v1",
  "skillId": "qj-portfolio-simulation",
  "priceUsd": "0.01",
  "status": "complete | partial",
  "query": {
    "baseCurrency": "USD",
    "positions": [
      {
        "ticker": "AAPL",
        "marketValue": 25000,
        "currency": "USD"
      },
      {
        "ticker": "NVDA",
        "marketValue": 15000,
        "currency": "USD"
      },
      {
        "ticker": "TSM",
        "marketValue": 10000,
        "currency": "USD"
      }
    ],
    "lookbackDays": 120
  },
  "facts": {
    "example": "live fields are returned here"
  },
  "interpretation": [],
  "coverage": [
    {
      "tool": "data.prices.batch",
      "status": "ok"
    }
  ],
  "toolsUsed": [
    "data.prices.batch",
    "data.analytics.portfolio_simulation"
  ],
  "asOf": "ISO-8601 source timestamp",
  "freshness": {
    "status": "fresh | stale | unknown"
  },
  "lineageRefs": [
    "source and materialization references"
  ]
}