Agents
Agent Performance
Accuracy, probability quality, calibration and confidence buckets, plus the leaderboard endpoint.
Agent performance
GET
/ v1/ agents/ {agent}/ performanceDeveloper PreviewAll plansapi.probora.xyz
Accuracy, Brier skill, calibration and confidence buckets for any scope.
Parameters
| Parameter | In | Type | Description |
|---|---|---|---|
| agentrequired | path | string | Agent slug: trend, momentum, mean-reversion, rsi-divergence, order-flow, volatility, liquidation, oi-funding, whale-flow or meta.Example: order-flow |
| asset | query | string | Restrict to one asset.Example: BTC |
| timeframe | query | string | Restrict to one timeframe.Example: 15m |
Request
# export PROBORA_API_KEY=prb_live_…
curl "https://api.probora.xyz/v1/agents/order-flow/performance?asset=BTC&timeframe=15m" \
-H "Authorization: Bearer $PROBORA_API_KEY"Response
200 OK, returned as application/json. Example:
Response · 200
{
"agent_slug": "order-flow",
"scope": {
"asset": "BTC",
"timeframe": "15m"
},
"markets": 48291,
"wins": 30810,
"losses": 17481,
"pushes": 12,
"accuracy": 0.638,
"accuracy_ci95": [
0.6337,
0.6423
],
"brier": 0.2216,
"brier_skill": 0.1136,
"log_loss": 0.6342,
"calibration_score": 91.4,
"confidence_buckets": [
{
"bucket": "65-70",
"markets": 1423,
"accuracy": 0.681,
"mean_probability": 0.674
},
{
"bucket": "75+",
"markets": 508,
"accuracy": 0.79,
"mean_probability": 0.783
}
],
"data_mode": "live"
}Response fields
| Field | Type | Description |
|---|---|---|
| agent_slug | string | Agent identifier used in paths and filters. |
| scope | object | Asset / timeframe filters applied to the statistics. |
| markets | integer | Scored predictions (wins + losses). FLAT and VOID windows are excluded. |
| wins | integer | Predictions that matched the outcome. |
| losses | integer | Predictions that missed the outcome. |
| pushes | integer | Predictions on FLAT windows, recorded but never scored. |
| accuracy | number | wins / (wins + losses). |
| accuracy_ci95 | array | 95% Wilson confidence interval for accuracy. |
| brier | number | Mean squared error of the called-direction probability. 0.25 equals a 50/50 forecast. |
| brier_skill | number | 1 − brier / 0.25: improvement over an uninformed 50/50 forecast. |
| log_loss | number | Mean negative log-likelihood of the realized outcomes. ln 2 ≈ 0.693 equals 50/50. |
| calibration_score | number | 100 · max(0, 1 − ECE / 0.10): 100 means perfectly calibrated. |
| confidence_buckets | array | Accuracy by called probability: 50–55%, 55–60%, 60–65%, 65–70%, 70–75%, 75%+. |
| data_mode | string | "live" for real price sources, "demo" for the simulated network. The two are never mixed. |
Leaderboard
GET
/ v1/ leaderboardDeveloper PreviewAll plansapi.probora.xyz
Ranked agents for overall, asset, timeframe or asset × timeframe scopes.
Parameters
| Parameter | In | Type | Description |
|---|---|---|---|
| asset | query | string | Asset scope.Example: BTC |
| timeframe | query | string | Timeframe scope.Example: 15m |
Request
# export PROBORA_API_KEY=prb_live_…
curl "https://api.probora.xyz/v1/leaderboard?asset=BTC&timeframe=15m" \
-H "Authorization: Bearer $PROBORA_API_KEY"Response
200 OK, returned as application/json. Example:
Response · 200
{
"scope": {
"asset": "BTC",
"timeframe": "15m"
},
"data": [
{
"rank": 1,
"agent_slug": "meta",
"markets": 48291,
"accuracy": 0.652,
"brier_skill": 0.121,
"calibration_score": 95.2,
"overall": 88.4
},
{
"rank": 2,
"agent_slug": "order-flow",
"markets": 48291,
"accuracy": 0.638,
"brier_skill": 0.114,
"calibration_score": 91.4,
"overall": 84.9
}
],
"updated_at": "2026-11-14T20:15:04.000Z",
"data_mode": "live"
}Response fields
| Field | Type | Description |
|---|---|---|
| scope | object | Asset / timeframe filters applied to the statistics. |
| data | array | Page of results, newest first. |
| updated_at | string | When the statistics were last recomputed. |
| data_mode | string | "live" for real price sources, "demo" for the simulated network. The two are never mixed. |
Fields of each item in data
| Field | Type | Description |
|---|---|---|
| rank | integer | Position on the leaderboard for the requested scope. |
| agent_slug | string | Agent identifier used in paths and filters. |
| markets | integer | Scored predictions (wins + losses). FLAT and VOID windows are excluded. |
| accuracy | number | wins / (wins + losses). |
| brier_skill | number | 1 − brier / 0.25: improvement over an uninformed 50/50 forecast. |
| calibration_score | number | 100 · max(0, 1 − ECE / 0.10): 100 means perfectly calibrated. |
| overall | number | Composite score blending accuracy, probability quality and calibration (0–100). |
Metric definitions
| Field | Definition |
|---|---|
| accuracy | wins / (wins + losses). FLAT (push) and VOID windows are excluded. |
| accuracy_ci95 | 95% Wilson score interval: how much the accuracy could move with more samples. |
| brier | Mean of (p − y)² for the called-direction probability p. Lower is better; 0.25 is a 50/50 forecast. |
| brier_skill | 1 − brier / 0.25. Positive means better probabilities than a coin flip; shown as “Prob. Score”. |
| log_loss | Mean −ln(p) for wins and −ln(1 − p) for losses. ln 2 ≈ 0.693 is the 50/50 baseline. |
| calibration_score | 100 · max(0, 1 − ECE / 0.10), where ECE is the sample-weighted gap between accuracy and mean probability per bucket. |
| overall | Leaderboard score: reliability · (0.40 · accuracy score + 0.35 · probability score + 0.25 · calibration), with reliability = n / (n + 250) so small samples cannot top a leaderboard. |
confidence_buckets group predictions by the probability of the called direction: 50–55%, 55–60%, 60–65%, 65–70%, 70–75%, 75%+. A well-calibrated agent's 65–70% bucket should win roughly 65–70% of the time. Definitions match the public methodology and the leaderboard.
Questions or feedback on the API? [email protected]