Elon Musk Tweet Markets
Polystrike provides the most accurate and low-latency tracking for Polymarket’s Elon Musk tweet count markets.
Endpoints
Section titled “Endpoints”Metadata Overview
Section titled “Metadata Overview”GET /meta/elon
Public. Returns real-time counters and “Lag Edges” for all active Elon events.
Sample Response:
{ "timestamp": 1771246725679, "data": [ { "event_id": 206602, "event_title": "Elon Musk # tweets February 14 - February 16, 2026?", "start_ts": 1771088400000, "end_ts": 1771261200000, "polymarket_xtracker_counter": 65, "real_counter": 68, "polymarket_ui_counter": 65, "settlement_delta": 3, "display_delta": 3, "internal_delta": 0 } ]}Field Descriptions
Section titled “Field Descriptions”| Field | Type | Description |
|---|---|---|
event_id | number | Unique ID of the Polymarket event. |
event_title | string | Human-readable event title from Polymarket. |
image | string | Event image URL from Polymarket. |
start_ts / end_ts | number | Event window start/end times (UTC milliseconds). |
polymarket_xtracker_counter | number | Settlement oracle count. This is what Polymarket pays out on. |
real_counter | number | Polystrike’s real-time count. Faster than the oracle; includes deleted tweet captures. |
polymarket_ui_counter | number | Count currently displayed on the Polymarket trading UI. |
settlement_delta | number | real_counter − xtracker. Positive = we’re ahead of the oracle. |
display_delta | number | real_counter − ui_counter. Positive = UI is showing a stale number. |
internal_delta | number | ui_counter − xtracker. Positive = UI is ahead of the oracle. |
Predictive Models
Section titled “Predictive Models”GET /prediction/elon
Public (Limited) / Pro (Full).
- Public: Counters + Market Prices only.
- Pro: Forecasts (p5/p50/p95), Signals (Buy/Sell), and Alpha.
Sample Response (Pro):
{ "timestamp": 1771246734873, "data": [ { "event_id": 206602, "seconds_remaining": 14528, "sleep_probability": 0.016, "forecast": { "p5": 68, "p50": 68, "p95": 69 }, "markets": [ { "title": "65-89", "model_prob": 1.0, "market_price": 0.945, "edge": 0.055, "signal": "SLIGHT_BUY" } ] } ]}Field Descriptions
Section titled “Field Descriptions”| Field | Type | Description |
|---|---|---|
forecast.p5/p50/p95 | number | Pro Only. Monte Carlo forecast percentiles. |
sleep_probability | number | Probability Elon is currently sleeping. |
markets.model_prob | number | Pro Only. Our calculated win probability. |
markets.market_price | number | Current “Yes” price on Polymarket. |
markets.edge | number | Pro Only. model_prob - market_price. |
markets.signal | string | Pro Only. STRONG_BUY, BUY, HOLD, SELL. |
EV-Based Signals
Section titled “EV-Based Signals”GET /signals/elon
Pro Only. Returns actionable trading signals optimized for Expected Value (EV), with optimal Kelly Criterion bet sizing and Information Asymmetry edge detection.
Query Parameters:
| Parameter | Required | Description |
|---|---|---|
bankroll | No | Your bankroll in USD (1-1,000,000). Sizes suggested_bet via Kelly criterion. If omitted, a server default is used. |
GET /api/v1/signals/elon?bankroll=100Sample Response:
{ "timestamp": 1771246739535, "data": [ { "event_id": 206602, "signals": [ { "bucket": "65-89", "action": "BUY", "model_prob": 1.0, "market_price": 0.945, "edge": 0.055, "ev": 0.058, "kelly_fraction": 0.058, "suggested_bet": 5.80, "confidence": "HIGH", "moneyness": 0.5, "time_confidence": "HIGH", "asymmetry_edge": 0, "reasons": [ "Strong signal: 100% prob, +5.8% EV" ], "bankroll": 100.0 } ] } ]}Portfolio Analysis
Section titled “Portfolio Analysis”GET /portfolio/elon
Pro Only. Fetches your open Elon tweet market positions directly from Polymarket, then overlays our model predictions to tell you where each position stands.
Query Parameters:
| Parameter | Required | Description |
|---|---|---|
wallet | Yes | Your Ethereum wallet address (e.g. 0xabc...123) |
Sample Response:
{ "timestamp": 1771246750000, "data": [ { "wallet": "0xabc...123", "event": { "id": 206602, "title": "Elon Musk # tweets February 14 - February 16, 2026?", "end_ts": 1771261200000 }, "prediction": { "p5": 68, "p50": 72, "p95": 78, "real_counter": 68, "seconds_remaining": 14528, "velocity_counted_1h": 4.2 }, "positions": [ { "event_id": "206602", "bucket": "65-89", "tokens": 50.0, "avg_price": 0.82, "cost_basis": 41.00, "current_price": 0.945, "current_value": 47.25, "pnl": 6.25, "pnl_percent": 15.24, "analysis": { "win_probability": 1.0, "market_implied": 0.945, "edge": 0.055, "edge_percent": 5.82, "signal": "BUY", "recommendation": "HOLD" } } ], "portfolio": { "total_positions": 1, "total_cost": 41.00, "current_value": 47.25, "total_pnl": 6.25, "total_pnl_percent": 15.24 } } ]}How It Works
Section titled “How It Works”The endpoint has three steps:
- Fetches your open positions from the Polymarket API using your wallet address
- Filters to active Elon tweet markets — positions in other market types are excluded
- Overlays model predictions for each bucket you hold, computing edge and generating a signal
If no active Elon events are running, positions will be empty and a message field explains why.
Field Descriptions — prediction
Section titled “Field Descriptions — prediction”| Field | Type | Description |
|---|---|---|
p5 / p50 / p95 | number | Monte Carlo forecast percentiles for final tweet count. |
real_counter | number | Current real tweet count at time of prediction. |
seconds_remaining | number | Seconds until the event closes. |
velocity_counted_1h | number | Average counted tweets per hour over the last hour. Useful for projecting how much more is likely before close. |
Field Descriptions — positions
Section titled “Field Descriptions — positions”| Field | Type | Description |
|---|---|---|
bucket | string | The Polymarket outcome bucket you hold (e.g. "65-89"). |
tokens | number | Number of shares/tokens you hold. |
avg_price | number | Your average purchase price per token. |
cost_basis | number | Total amount paid for this position. |
current_price | number | Current market price per token. |
current_value | number | Current mark-to-market value. |
pnl | number | Unrealised profit/loss in USDC. |
pnl_percent | number | Unrealised PnL as a percentage. |
Field Descriptions — analysis
Section titled “Field Descriptions — analysis”| Field | Type | Description |
|---|---|---|
win_probability | number | Model’s estimated probability this bucket wins (0–1). |
market_implied | number | Current market price — the crowd’s implied probability. |
edge | number | win_probability − market_implied. Positive = model sees more value than the market. |
edge_percent | number | Edge expressed as a percentage of the market price. |
signal | string | See signal table below. |
recommendation | string | See recommendation table below. |
Signal Values
Section titled “Signal Values”The signal field is based on edge_percent:
| Signal | Condition | Meaning |
|---|---|---|
STRONG_BUY | edge_percent > 30% | Model sees strong undervaluation — consider adding |
BUY | edge_percent > 10% | Clear positive edge exists |
HOLD | edge_percent > 0% | Slight edge — worth keeping |
AVOID | edge_percent > -10% | Near fair value, slightly unfavourable |
SELL | edge_percent ≤ -10% | Model sees meaningful overvaluation — consider exiting |
Recommendation Values
Section titled “Recommendation Values”The recommendation field is based on raw edge (not percentage):
| Recommendation | Condition | Meaning |
|---|---|---|
STRONG_HOLD | edge > 0.20 | High absolute edge — hold firmly |
HOLD | edge > 0.05 | Positive edge — no reason to exit |
MONITOR | edge > -0.05 | Near fair value — watch closely |
CONSIDER_SELLING | edge ≤ -0.05 | Model favours exiting this position |
Error Responses
Section titled “Error Responses”| Status | Condition |
|---|---|
400 | Wallet address is not a valid Ethereum address (0x + 40 hex chars) |
401 | Missing or invalid Pro API key |
503 | Could not reach the Polymarket API to fetch positions |
Raw Tweet Stream
Section titled “Raw Tweet Stream”GET /meta/elon/tweets
Public (Masked) / Pro (Full).
- Public: Fixed at the latest 15 tweets.
is_countedis null. - Pro: Custom pagination using
limit(max 100) andoffset.is_counted(true/false) reveals which tweets count toward resolution.
Query Parameters (Pro Only):
limit: Number of tweets to return (max 100).offset: Number of tweets to skip.
Sample Response:
{ "timestamp": 1771246730263, "data": [ { "tweet_id": "2023331176019370170", "text": "Yes https://t.co/C7Eo7s...", "created_ts": 1771234718000, "is_reply": false, "is_quote": true, "is_retweet": false, "is_counted": true } ], "limit": 15, "offset": 0}Field Descriptions
Section titled “Field Descriptions”| Field | Type | Description |
|---|---|---|
tweet_id | string | Twitter status ID. |
text | string | Tweet content. |
is_counted | boolean|null | Pro Only. Whether tweet counts for resolution. Null for public users. |
is_reply / is_quote / is_retweet | boolean | Tweet type flags. |
limit / offset | number | Pagination values used for the request. |