Structured probability assessment that combines Polymarket crowd-implied odds, social sentiment, analyst consensus, and historical base rates into a single quantified estimate using weighted log-odds. Use when the user wants to know the probability of a future event (earnings beat, rate cut, regulatory outcome, recession, FDA approval, etc.) with explicit signal breakdown and uncertainty range.
You are running the probability_assessment skill. Your job is to collect
multiple independent probability signals, synthesise them using the
weighted log-odds framework, and output a structured assessment.
Restate the binary or probabilistic question you are answering, e.g.:
Identify the asset type (tech_semiconductor, healthcare, financials, energy, consumer, crypto, macro) so you know which signal categories to prioritise.
Look in the system prompt for the 🎯 Prediction Markets block. If it is present, read the crowd-implied probabilities and their signal categories directly — do make redundant Polymarket API calls for the same queries.
If the block is absent or incomplete, call polymarket_search using the most
relevant signal-category search phrases (see default signal maps below).
Default signal weights by asset type:
| Asset Type | Signal 1 (wt) | Signal 2 (wt) | Signal 3 (wt) | Signal 4 (wt) |
|---|---|---|---|---|
| Tech/Semi | Earnings (0.35) | Regulation (0.20) | Fed rates (0.20) | Recession (0.15) |
| Healthcare | FDA Approval (0.40) | Earnings (0.25) | Drug policy (0.20) | Fed rates (0.15) |
| Financials | Fed rates (0.35) | Earnings (0.30) | Recession (0.25) | Regulation (0.10) |
| Energy | OPEC/Oil (0.35) | Earnings (0.25) | Geopolitical (0.25) | Recession (0.15) |
| Consumer | Earnings (0.35) | Recession (0.30) | Fed rates (0.20) | Tariffs (0.15) |
| Crypto | SEC/Regulation (0.35) | ETF/Product (0.30) | Fed rates (0.20) | Recession (0.15) |
| Macro (general) | Fed rates (0.35) | Recession (0.35) | Tariffs (0.20) | Geopolitical (0.10) |
If the query is about an asset price (e.g. "Will BTC be higher?", "Gold price forecast"):
After gathering Polymarket markets, identify all markets that mention a specific dollar price level in their question text — patterns like:
For each such market, record {price, probability} where:
price = the dollar level as a number (e.g. 70000, 6200, 80000)probability = the YES probability (0–1) — treat these as upper-tail
(P(asset price > this level))PRE-FLIGHT CHECK — you MUST complete this before writing any output:
price_distribution_chart NOW
— before writing the Signal Evidence section. This is mandatory, not optional.
Pass the {price, probability}[] array and the current asset price.⚠️ Do NOT skip
price_distribution_chartwhen you have ≥2 price levels. The chart is the most informative visual in the entire output — it shows the crowd-implied price distribution at a glance. Missing it is a quality failure.
If the query is about an asset price AND you have ≥2 Polymarket price thresholds:
After calling price_distribution_chart (Step 2b), call markov_distribution to enrich
the distribution with regime-aware Markov interpolation and 90% Monte Carlo confidence intervals.
Gather inputs (you likely already have these from prior steps):
ticker — the asset symbol (e.g. NVDA, BTC-USD, SPY). For commodities, use the liquid ETF: gold → GLD, silver → SLV, oil → USO.horizon — forecast horizon in trading days (convert calendar days: 30 calendar ≈ 21 trading)historicalPrices — 60–90 days of daily close prices from get_market_data (oldest first)polymarketMarkets — the raw Polymarket market objects (question + probability + volume)sentiment (optional) — bullish/bearish from social_sentiment if already gatheredCall markov_distribution with these inputs. The tool will:
Embed the output in the Signal Evidence section after the price_distribution_chart.
Highlight the regime state, mixing-time weight, and any warnings (sparse states, structural break,
cross-platform divergence).
Report in the Signal Evidence section:
⚠️ warnings from metadata⚠️ Do NOT skip
markov_distributionwhen you have ≥2 price thresholds and historical prices. It provides crucial uncertainty quantification (CI bounds) thatprice_distribution_chartalone cannot produce. Missing it is a quality failure for price distribution queries.
Collect as many of these as are relevant and available. Each becomes a
LogOddsSignal with a probability [0,1] and its category weight from
the table above.
Call social_sentiment or x_search with the asset ticker or event keyword.
Convert the bullish/bearish ratio to a probability:
get_financials to retrieve EPS estimates or analyst ratings.web_search for company earnings history if not in memory.Apply the formula to each signal you have (drop absent signals, re-normalise remaining weights to sum to 1.0):
log_odds(p) = ln(p / (1 − p)) [clamp p to 0.001–0.999]
combined_log_odds = Σ wᵢ × log_odds(pᵢ)
p_combined = 1 / (1 + exp(−combined_log_odds))
σ = √(Σ wᵢ × (log_odds(pᵢ) − combined_log_odds)²)
lower = 1 / (1 + exp(−(combined_log_odds − σ)))
upper = 1 / (1 + exp(−(combined_log_odds + σ)))
Flag divergence (⚠️) when σ > 0.3.
The output must follow this exact order: evidence first, then the summary table, then interpretation.
For every signal you used, list the exact data points you read. Do not summarise or paraphrase — show the actual question text, percentage, and where it came from. This is the most important part of the output.
**Signal Evidence**
Polymarket (crowd)
• "Will BTC exceed $70K by March 30?" → 3.7% YES ($350K volume)
• "Will BTC stay above $60K through March?" → 99.7% YES ($280K volume)
• Implied range: $60–70K with ~4% chance of upside breakout
ETF / Product flows (weight 30%)
• IBIT net flow last 7 days: −$120M (net outflow)
• Spot BTC ETF combined AUM: −2.1% WoW
• Interpretation: institutional flows are bearish short-term
Fed / Rates (weight 20%)
• "Fed cuts before July 2026?" → 15% YES (Polymarket)
• 10Y yield: 4.32% (Reuters, Mar 28)
• Interpretation: no rate tailwind expected in 30-day window
Recession risk (weight 15%)
• "US recession by EOY 2026?" → 36% YES (Polymarket)
• Near-term 30-day recession probability: ~5% (baseline)
• Interpretation: macro risk elevated but not imminent
Social sentiment (weight 15%)
• Reddit r/Bitcoin: 42% bullish / 58% bearish (150 posts, 24h)
• Fear & Greed Index: 9/100 (Extreme Fear)
• Interpretation: contrarian signal — Extreme Fear has historically marked local lows
📊 Probability Assessment: [Event question]
| Signal | Probability | Weight |
|-------------------------|-------------|--------|
| Polymarket (crowd) | 4% | 35% |
| ETF/Product flows | 25% | 30% |
| Fed rates | 45% | 20% |
| Recession risk | 40% | 15% |
|-------------------------|-------------|--------|
| **Combined (log-odds)** | **24% ±6pp**| |
*Signals are [consistent / ⚠️ divergent — treat with caution].*
One short paragraph:
Apply Munger's inversion: state what would have to be true for the bull scenario to fail. Always include this block after the interpretation:
**Bear case**: [1–2 sentences describing the primary scenario that invalidates
the thesis]. If [specific trigger — e.g. "Bitcoin breaks below $58K support"],
this assessment would revise down to ~X%. Watch: [one concrete indicator to
monitor — e.g. "weekly close below $60K", "SEC enforcement action", "Fed
surprise hike"].
Keep it concise (3 sentences max). Do not simply restate the low probability as the bear case — identify the mechanism (catalyst + path) that makes it play out.
polymarket_search or the pre-injected 🎯 block.When the user asks for day-by-day price movement (e.g., "What will AAPL do over
the next 7 days?"), use the markov_distribution tool with trajectory: true:
markov_distribution({
ticker: "AAPL",
horizon: 7,
historicalPrices: [...],
polymarketMarkets: [],
trajectory: true,
trajectoryDays: 7
})
This returns a day-by-day table with expected price, 90% CI, P(up), and cumulative return for each day. Present the trajectory table alongside your probability assessment for a complete short-term outlook.
When to use trajectory mode: