Features
A complete toolkit for pricing resolution risk in prediction markets.
Risk Scoring
Every market receives an aggregate risk score from 0 to 100, computed deterministically from platform base points, driver contributions, mitigations, and complexity adjustments.
The score maps to four tiers: LOW [0, 20), MEDIUM [20, 50), HIGH [50, 75), CRITICAL [75, 100].
Formula: raw_points = BASE_POINTS(platform) + sum(driver_points) - mitigation + complexity
{
"market_id": "polymarket:0x1234abcd",
"platform": "polymarket",
"aggregate_risk_score": 67,
"tier": "HIGH",
"p_dispute": 0.231,
"drivers": [
{
"driver_type": "AMBIGUOUS_WORDING",
"strength": "HIGH",
"confidence": 0.92,
"points_contribution": 18,
"evidence": {
"text_span": "if the price reaches approximately $100k",
"start_char": 142,
"end_char": 186
}
},
{
"driver_type": "SINGLE_ORACLE_DEPENDENCY",
"strength": "MEDIUM",
"confidence": 0.85,
"points_contribution": 12,
"evidence": {
"text_span": "resolved by CoinGecko API",
"start_char": 201,
"end_char": 226
}
},
{
"driver_type": "TIME_PRESSURE",
"strength": "MEDIUM",
"confidence": 0.78,
"points_contribution": 9,
"evidence": {
"text_span": "resolves within 24 hours of market close",
"start_char": 310,
"end_char": 350
}
}
],
"expected_delay": {
"median_hours": 48,
"p90_hours": 168,
"p99_hours": 504
},
"version": {
"heuristics_version": "1.0.0",
"stat_model_version": "none",
"llm_extractor_version": "v1_extract_all@1",
"driver_taxonomy_version": "1.0.0"
}
}Driver Attribution
Each score includes up to 15 explainable risk drivers, sorted by point contribution. Every driver has a type code, strength (LOW/MEDIUM/HIGH), confidence score, point contribution, and evidence span pointing to the exact text in the resolution rules.
The driver taxonomy includes 15 recognized types:
| Driver Code | Base Points | Description |
|---|---|---|
| AMBIGUOUS_WORDING | 15 | Vague or ambiguous resolution criteria |
| SINGLE_ORACLE_DEPENDENCY | 12 | Single point of failure in data source |
| TIME_PRESSURE | 8 | Tight resolution timeline |
| SUBJECTIVE_JUDGMENT | 14 | Requires subjective interpretation |
| MULTI_STEP_RESOLUTION | 10 | Complex multi-step resolution process |
| EXTERNAL_DEPENDENCY | 9 | Depends on external events or data |
| RETROACTIVE_CHANGE | 18 | Rules may be changed retroactively |
| GEOGRAPHIC_AMBIGUITY | 7 | Unclear geographic scope |
| TEMPORAL_AMBIGUITY | 11 | Unclear time boundaries |
| METRIC_DEFINITION | 10 | Ambiguous metric or measurement |
| COUNTERPARTY_RISK | 13 | Risk from counterparty behavior |
| REGULATORY_RISK | 16 | Potential regulatory intervention |
| PRECEDENT_CONFLICT | 12 | Conflicts with prior resolutions |
| EDGE_CASE | 8 | Unusual edge case scenarios |
| INFORMATION_ASYMMETRY | 11 | Unequal access to resolution info |
Settlement Delay
We model settlement delay as a lognormal distribution, providing median (p50), p90, and p99 estimates in hours. The distribution parameters are adjusted by ambiguity drivers and single-point-of-failure oracle dependencies detected in the resolution rules.
This allows traders to price time-to-resolution into their positions and calculate capital lockup costs.
LOW AAPL Closes Above $250
HIGH BTC > $100K EOY 2026
{
"median_hours": 48,
"p90_hours": 168,
"p99_hours": 504,
"distribution": "lognormal",
"parameters": {
"mu": "ln(median_hours)",
"sigma": "adjusted by ambiguity and spof factors"
}
}Pricing Engine
Our pricing engine is what sets SettleRisk apart. Given a mid-price or event probability, we compute:
- Adjusted fair price — the dispute-probability-adjusted true value
- Risk premium — the spread between mid-price and adjusted fair price
- Capital lockup cost — in basis points, based on expected delay
- Fair spread — in basis points, the minimum spread a market maker should charge
- Do-not-quote flag — when conditions are too risky to provide liquidity
Input validation: exactly one of mid_price or p_event must be provided (XOR).
{
"market_id": "polymarket:0x1234abcd",
"mid_price": 0.65,
"aggregate_risk_score": 67,
"tier": "HIGH",
"p_dispute": 0.231,
"expected_delay_hours": 48,
"adjusted_fair_price": 0.6218,
"risk_premium": 0.0282,
"capital_lockup_cost_bps": 42,
"fair_spread_bps": 185,
"do_not_quote": false
}Batch Processing
Score or price up to 1,000 markets in a single API call. Batch endpoints use partial success semantics: the overall HTTP response is always 200, and each item in the response carries either a result or an error object.
Batch endpoints: POST /v1/risk-scores:batch, POST /v1/expected-delays:batch, POST /v1/pricing:batch
Webhooks
Register webhook endpoints to receive real-time notifications. We support 7 event types with HMAC-signed payloads, at-least-once delivery guarantees, exponential backoff on failures, and manual replay support.
Event types:
score.created— first score for a marketscore.updated— score recalculatedscore.tier_changed— tier transitionrules.changed— resolution rules modifieddelay.updated— delay estimate changedmarket.resolved— market resolvedurl.unhealthy— monitored URL down
Webhook signing: HMAC-SHA256(secret, timestamp + "\n" + body)
gRPC
Full gRPC service with parity to the REST API, plus StreamAlerts for real-time server-sent score updates. Ideal for low-latency trading system integration.
RPCs:
BatchRiskScore, EvaluateRules, Price, BatchPrice,
StreamAlerts
Evaluate Rules
On-demand LLM extraction via POST /v1/evaluate-rules. Submit raw resolution rules text and get back structured risk drivers, ambiguity detection, and scoring — all in a single synchronous call.
This endpoint is stateless: it does not create or modify any persistent market, rule version, or score snapshot records. Only idempotency and audit writes are performed.
See it in action with real resolution rules.