Methodology
Current version: 1.0.0. Every report links the exact version used to generate it. A formula or threshold change is a release blocker until the version bumps.
Data sources
All market data comes from Polymarket's public Gamma, CLOB, and Data APIs. Probable never places, cancels, or manages orders, and never requests or stores a Polymarket private key or API credential.
Price-selection hierarchy
- Order-book midpoint, when both a best bid and best ask exist.
- Recent last trade (within 10 minutes), when the book is empty or one-sided.
- Gamma's outcome price snapshot, when no live CLOB data is available.
INSUFFICIENT_MARKET_DATA— returned explicitly rather than inventing a price.
Every non-midpoint price carries an explicit warning naming which fallback was used.
Probability vs. confidence
The displayed probability is the market's current price — what traders are willing to pay, not a statement of certainty. Signal confidence is a separate heuristic measuring how trustworthy that price is, given liquidity, related-market agreement, and resolution-rule clarity. It is never a statistical confidence interval and never a prediction of the real-world outcome.
signal_confidence = 0.60 × market_quality + 0.25 × related_market_agreement + 0.15 × resolution_clarity, where resolution_clarity = 100 − resolution_risk. Grades: 80–100 HIGH, 60–79 MODERATE, 40–59 LOW, 0–39 VERY_LOW.
Percentage points vs. percent change
A move from 40% to 48% is reported as +8 percentage points, never "+8%" (which would mean 40% → 43.2%). All movement figures in Probable use percentage points.
Market-quality score
0.25 × spread_score + 0.25 × depth_score + 0.20 × activity_score + 0.15 × open_interest_score + 0.10 × freshness_score + 0.05 × concentration_score
Every component is returned alongside the total — a score without its components is considered incomplete. Depth, activity, and open-interest scores use a log scale so that early liquidity counts more than later liquidity at the margin. Top-holder concentration is approximated from Polymarket's visible top holders, not true total supply (which the public API doesn't expose).
Resolution risk weights
An LLM extracts findings and their exact evidence spans only — it never assigns the score.
- Missing resolution source: +25
- Ambiguous or conflicting deadline: +20
- Timezone omission: +5
- Undefined decisive term: +15
- Subjective decisive verb: +15
- Question/description conflict: +20
- Overlapping or non-exhaustive outcomes: +15
- Missing edge case: +10
- Other finding: +3 / +7 / +12 (low / medium / high)
Capped at 100. Bands: 0–19 LOW, 20–39 MEDIUM, 40–69 HIGH, 70–100 CRITICAL.
A finding is dropped — never shown — if its cited evidence isn't an exact, locatable substring of the market's actual text.
Contradiction scan buffers
Multi-outcome sum(mutually-exclusive outcome groups): flagged only when the combined price exceeds 1.0 by more than a 3-percentage-point base buffer plus half of each market's visible spread — never on a bare excess above zero.
Near-duplicate: two markets with near-identical wording and the exact same stated deadline, priced more than the requested minimum edge (default 3 pp) apart. This is a lexical-similarity check, not a verified semantic equivalence — every result is labeled a candidate inconsistency requiring manual verification, never "arbitrage" or "certain mispricing."
A third mode, logical implication between related markets, requires an LLM relation classifier and is not yet implemented — it is accepted as a request parameter but produces no candidates, with an explicit warning rather than a silent no-op.
Known limitations
- Search relevance currently uses lexical token overlap, not an LLM-based semantic reranker.
- The last-trade fallback (hierarchy step 2) isn't wired up yet; pricing falls straight from the order book to Gamma's snapshot price.
- No caching layer yet — every response is currently a live read.
- Holder concentration is a proxy among visible top holders, not total supply.