CONTRACT
Paid bounded portfolio simulation
- Skill
qj-portfolio-simulation- Route
/v1/query/portfolio-simulation- Identity
- OAUTH · agents:query
- Price
- $0.01 · X402/2
QJ//BOUNDED QUERY · PRODUCTION
Simulate a constant-weight portfolio with calibrated lognormal GBM or IID historical bootstrap. Seeded, bounded, not a forecast.
/v1/query/portfolio-simulationOAUTH · agents:query$0.01 · X402/2
CONTRACT
qj-portfolio-simulation/v1/query/portfolio-simulationGOVERNED METHOD
data.prices.batchqj-data-mcpdata.analytics.portfolio_simulationqj-data-mcpNo direct database, provider API or private service access. Missing coverage remains missing—it is never turned into a negative fact.
INVOKE
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"
]
}