Ted Cruz Tweet Markets
Polystrike provides accurate and low-latency tracking for Polymarket’s Ted Cruz tweet count markets.
Endpoints
Section titled “Endpoints”Metadata Overview
Section titled “Metadata Overview”GET /meta/cruz
Public. Returns real-time counters and “Lag Edges” for all active Cruz events.
Sample Response:
{ "timestamp": 1774250948000, "data": [ { "event_id": 262360, "event_title": "Ted Cruz # posts March 17 - March 24, 2026?", "start_ts": 1773964800000, "end_ts": 1774569600000, "polymarket_xtracker_counter": 67, "real_counter": 67, "polymarket_ui_counter": 67, "settlement_delta": 0, "display_delta": 0, "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/cruz
Public (Limited) / Pro (Full).
- Public: Counters + Market Prices only.
- Pro: Forecasts (p5/p50/p95), Signals (Buy/Sell), and Alpha.
Sample Response (Pro):
{ "timestamp": 1774250948000, "data": [ { "event_id": 262360, "seconds_remaining": 115200, "sleep_probability": 0.092, "forecast": { "p5": 75, "p50": 89, "p95": 105 }, "markets": [ { "title": "80-99", "model_prob": 0.62, "market_price": 0.32, "edge": 0.30, "signal": "STRONG_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 Cruz 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/cruz
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/cruz?bankroll=100Sample Response:
{ "timestamp": 1774250948000, "data": [ { "event_id": 262360, "event_title": "Ted Cruz # posts March 17 - March 24, 2026?", "signals": [ { "bucket": "80-99", "token_id": "0x1234...", "action": "BUY", "model_prob": 0.62, "market_price": 0.32, "edge": 0.30, "ev": 0.938, "kelly_fraction": 0.042, "suggested_bet": 4.20, "confidence": "HIGH", "moneyness": 0.95, "time_confidence": "MEDIUM", "asymmetry_edge": 0, "reasons": [ "Strong signal: 62% prob, +93.8% EV" ], "bankroll": 100.0 } ] } ]}Field Descriptions
Section titled “Field Descriptions”| Field | Type | Description |
|---|---|---|
bucket | string | Market outcome bucket (e.g., “80-99”). |
token_id | string | Polymarket CLOB token ID for trade execution. |
action | string | BUY, HOLD, or SKIP. |
model_prob | number | Model’s calculated win probability (0-1). |
market_price | number | Current market price. |
edge | number | model_prob - market_price. Positive = undervalued. |
ev | number | Expected value per $1 bet. |
kelly_fraction | number | Optimal bet fraction per Kelly Criterion. |
suggested_bet | number | Dollar amount based on Kelly + your bankroll. |
confidence | string | HIGH, MEDIUM, or LOW based on multiple factors. |
moneyness | number | How deep p50 falls into bucket (0=edge, 1=center). |
time_confidence | string | HIGH (<24h), MEDIUM (24-48h), LOW (>72h). |
asymmetry_edge | number | XTracker - UI counter. Positive = UI lagging. |
reasons | array | Human-readable explanations for the signal. |
Portfolio Analysis
Section titled “Portfolio Analysis”GET /portfolio/cruz
Pro Only. Fetches your open Cruz 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": 1774250948000, "data": [ { "wallet": "0xabc...123", "event": { "id": 262360, "title": "Ted Cruz # posts March 17 - March 24, 2026?", "end_ts": 1774569600000 }, "prediction": { "p5": 75, "p50": 89, "p95": 105, "real_counter": 67, "seconds_remaining": 115200, "velocity_counted_1h": 2.1 }, "positions": [ { "event_id": "262360", "bucket": "80-99", "tokens": 50.0, "avg_price": 0.30, "cost_basis": 15.00, "current_price": 0.32, "current_value": 16.00, "pnl": 1.00, "pnl_percent": 6.67, "analysis": { "win_probability": 0.62, "market_implied": 0.32, "edge": 0.30, "edge_percent": 93.75, "signal": "STRONG_BUY", "recommendation": "STRONG_HOLD" } } ], "portfolio": { "total_positions": 1, "total_cost": 15.00, "current_value": 16.00, "total_pnl": 1.00, "total_pnl_percent": 6.67 } } ]}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 Cruz 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 Cruz 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. "80-99"). |
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/cruz/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": 1774250948000, "data": [ { "tweet_id": "1771234567890123456", "text": "Great meeting with constituents today...", "created_ts": 1774234718000, "is_reply": false, "is_quote": false, "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. |
Model Characteristics
Section titled “Model Characteristics”The Cruz prediction model uses the same Monte Carlo simulation approach as the Elon model, but with Cruz-specific parameters:
- Sleep Probability: ~9.2% (calculated from Cruz’s actual tweet gaps)
- Rolling Window: 14-day lookback for velocity estimation
- Bias Correction: Uses Cruz-specific historical event data (when sufficient data available)
- Independence: Completely separate from Elon model - no cross-contamination