com um clique
polymarket-brier
// Brier Score calculator for Polymarket addresses — measures prediction accuracy independent of PnL. Separates skilled predictors from market makers and arbitrageurs.
// Brier Score calculator for Polymarket addresses — measures prediction accuracy independent of PnL. Separates skilled predictors from market makers and arbitrageurs.
Precise PnL calculator for any Polymarket address — reconstructs profit/loss from Data API cashflow (BUY/SELL/REDEEM/MERGE/SPLIT/REBATE) plus unrealized position value. Matches official /profit within ~0.2% MAPE on leaderboard validation. Bring-your-own Python (httpx).
Polymarket address profiler — input any 0x address, get a complete trading profile with PnL, win rate, positions, category breakdown, and top trades. All data from public APIs, no local database needed.
| name | polymarket-brier |
| description | Brier Score calculator for Polymarket addresses — measures prediction accuracy independent of PnL. Separates skilled predictors from market makers and arbitrageurs. |
| allowed-tools | Bash(curl:*) Read Write Edit |
| metadata | {"version":"0.2.0","openclaw":{"skillKey":"polymarket-brier","homepage":"https://leolabs.me","requires":{"anyBins":["curl"]}}} |
Calculate prediction accuracy for any Polymarket address. Brier Score measures how close a trader's positions were to the actual outcomes — independent of PnL, position size, or trading strategy.
PnL tells you who made money. Brier Score tells you who predicted correctly.
User asks about prediction accuracy, Brier score, prediction quality, forecasting skill, or "how accurate is this trader".
The Brier Score is a standard metric in forecasting (used by Metaculus, Good Judgment Project, etc.).
Formula: BS = (1/N) × Σ(forecast_probability - actual_outcome)²
Lower is better.
Same as polymarket-profile — accepts 0x address, username, or profile URL.
curl -s "https://data-api.polymarket.com/positions?user={ADDRESS}&sizeThreshold=0&limit=100&offset=0"
Paginate until all positions are fetched (same as polymarket-profile).
Filter to settled positions only: redeemable == true.
For each settled position, extract:
outcome: "Yes" or "No" — the side the trader heldavgPrice: the trader's average entry price = their implied probability forecastcurrentValue > 0: whether the market resolved in their favor (won) or not (lost)For each settled position:
currentValue > 0 (won): the outcome the trader bet on did happen → actual = 1currentValue == 0 (lost): the outcome the trader bet on did not happen → actual = 0For each settled position:
forecast = avgPrice (what they paid = their implied probability)
squared_error = (forecast - actual)²
Then:
brier_score = sum(squared_error) / count(settled_positions)
Group positions into probability buckets by avgPrice:
| Bucket | Range | Meaning |
|---|---|---|
| High confidence | 0.80-0.99 | "Very likely to happen" |
| Moderate | 0.60-0.79 | "Probably happens" |
| Coin flip | 0.40-0.59 | "Could go either way" |
| Contrarian | 0.01-0.39 | "Betting against the crowd" |
For each bucket:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Brier Score: {ADDRESS_SHORT}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Prediction Accuracy
Brier Score: {score} ({rating})
Settled Markets: {count}
Correct: {wins}/{total} ({win_rate}%)
📐 Calibration
| Confidence | Positions | Avg Forecast | Actual Win% | Gap |
|------------|-----------|-------------|-------------|-----|
| High | 12 | 87% | 83% | -4% |
| Moderate | 8 | 68% | 62% | -6% |
| Coin flip | 5 | 52% | 60% | +8% |
| Contrarian | 3 | 28% | 33% | +5% |
💡 Interpretation
{1-2 sentence plain language summary}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Generated: {timestamp} | Data: Polymarket Public APIs
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Brier Score | Rating | Meaning |
|---|---|---|
| 0.00-0.10 | Excellent | Top-tier forecaster |
| 0.10-0.15 | Good | Consistently better than chance |
| 0.15-0.20 | Average | Some skill, room to improve |
| 0.20-0.25 | Poor | Barely better than guessing |
| 0.25+ | No skill | Worse than a coin flip |
avgPrice is used as the probability forecast. This is a simplification — traders who DCA (buy at multiple prices) will have a blended avgPrice. Acceptable for v0.2.