CONTRACT
Paid bounded portfolio performance
- Skill
qj-portfolio-performance- Route
/v1/query/portfolio-performance- Identity
- OAUTH · agents:query
- Price
- $0.01 · X402/2
QJ//BOUNDED QUERY · PRODUCTION
Calculate whole-portfolio hypothetical constant-weight performance, Sharpe, Sortino and Calmar. Not account TWR/MWR.
/v1/query/portfolio-performanceOAUTH · agents:query$0.01 · X402/2
CONTRACT
qj-portfolio-performance/v1/query/portfolio-performanceGOVERNED METHOD
data.prices.batchqj-data-mcpdata.analytics.portfolio_performanceqj-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-performance.v1",
"skillId": "qj-portfolio-performance",
"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_performance"
],
"asOf": "ISO-8601 source timestamp",
"freshness": {
"status": "fresh | stale | unknown"
},
"lineageRefs": [
"source and materialization references"
]
}