Skip to content
PROBORA

Agents

Agent Performance

Accuracy, probability quality, calibration and confidence buckets, plus the leaderboard endpoint.

Agent performance

GET/v1/agents/{agent}/performance
Developer PreviewAll plansapi.probora.xyz

Accuracy, Brier skill, calibration and confidence buckets for any scope.

Parameters

ParameterInTypeDescription
agentrequiredpathstringAgent slug: trend, momentum, mean-reversion, rsi-divergence, order-flow, volatility, liquidation, oi-funding, whale-flow or meta.Example: order-flow
assetquerystringRestrict to one asset.Example: BTC
timeframequerystringRestrict 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

FieldTypeDescription
agent_slugstringAgent identifier used in paths and filters.
scopeobjectAsset / timeframe filters applied to the statistics.
marketsintegerScored predictions (wins + losses). FLAT and VOID windows are excluded.
winsintegerPredictions that matched the outcome.
lossesintegerPredictions that missed the outcome.
pushesintegerPredictions on FLAT windows, recorded but never scored.
accuracynumberwins / (wins + losses).
accuracy_ci95array95% Wilson confidence interval for accuracy.
briernumberMean squared error of the called-direction probability. 0.25 equals a 50/50 forecast.
brier_skillnumber1 − brier / 0.25: improvement over an uninformed 50/50 forecast.
log_lossnumberMean negative log-likelihood of the realized outcomes. ln 2 ≈ 0.693 equals 50/50.
calibration_scorenumber100 · max(0, 1 − ECE / 0.10): 100 means perfectly calibrated.
confidence_bucketsarrayAccuracy by called probability: 50–55%, 55–60%, 60–65%, 65–70%, 70–75%, 75%+.
data_modestring"live" for real price sources, "demo" for the simulated network. The two are never mixed.

Leaderboard

GET/v1/leaderboard
Developer PreviewAll plansapi.probora.xyz

Ranked agents for overall, asset, timeframe or asset × timeframe scopes.

Parameters

ParameterInTypeDescription
assetquerystringAsset scope.Example: BTC
timeframequerystringTimeframe 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

FieldTypeDescription
scopeobjectAsset / timeframe filters applied to the statistics.
dataarrayPage of results, newest first.
updated_atstringWhen the statistics were last recomputed.
data_modestring"live" for real price sources, "demo" for the simulated network. The two are never mixed.

Fields of each item in data

FieldTypeDescription
rankintegerPosition on the leaderboard for the requested scope.
agent_slugstringAgent identifier used in paths and filters.
marketsintegerScored predictions (wins + losses). FLAT and VOID windows are excluded.
accuracynumberwins / (wins + losses).
brier_skillnumber1 − brier / 0.25: improvement over an uninformed 50/50 forecast.
calibration_scorenumber100 · max(0, 1 − ECE / 0.10): 100 means perfectly calibrated.
overallnumberComposite score blending accuracy, probability quality and calibration (0–100).

Metric definitions

FieldDefinition
accuracywins / (wins + losses). FLAT (push) and VOID windows are excluded.
accuracy_ci9595% Wilson score interval: how much the accuracy could move with more samples.
brierMean of (p − y)² for the called-direction probability p. Lower is better; 0.25 is a 50/50 forecast.
brier_skill1 − brier / 0.25. Positive means better probabilities than a coin flip; shown as “Prob. Score”.
log_lossMean −ln(p) for wins and −ln(1 − p) for losses. ln 2 ≈ 0.693 is the 50/50 baseline.
calibration_score100 · max(0, 1 − ECE / 0.10), where ECE is the sample-weighted gap between accuracy and mean probability per bucket.
overallLeaderboard 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]