Skip to content

Ted Cruz Tweet Markets

Polystrike provides accurate and low-latency tracking for Polymarket’s Ted Cruz tweet count markets.

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
}
]
}
FieldTypeDescription
event_idnumberUnique ID of the Polymarket event.
event_titlestringHuman-readable event title from Polymarket.
imagestringEvent image URL from Polymarket.
start_ts / end_tsnumberEvent window start/end times (UTC milliseconds).
polymarket_xtracker_counternumberSettlement oracle count. This is what Polymarket pays out on.
real_counternumberPolystrike’s real-time count. Faster than the oracle; includes deleted tweet captures.
polymarket_ui_counternumberCount currently displayed on the Polymarket trading UI.
settlement_deltanumberreal_counter − xtracker. Positive = we’re ahead of the oracle.
display_deltanumberreal_counter − ui_counter. Positive = UI is showing a stale number.
internal_deltanumberui_counter − xtracker. Positive = UI is ahead of the oracle.

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"
}
]
}
]
}
FieldTypeDescription
forecast.p5/p50/p95numberPro Only. Monte Carlo forecast percentiles.
sleep_probabilitynumberProbability Cruz is currently sleeping.
markets.model_probnumberPro Only. Our calculated win probability.
markets.market_pricenumberCurrent “Yes” price on Polymarket.
markets.edgenumberPro Only. model_prob - market_price.
markets.signalstringPro Only. STRONG_BUY, BUY, HOLD, SELL.

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:

ParameterRequiredDescription
bankrollNoYour 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=100

Sample 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
}
]
}
]
}
FieldTypeDescription
bucketstringMarket outcome bucket (e.g., “80-99”).
token_idstringPolymarket CLOB token ID for trade execution.
actionstringBUY, HOLD, or SKIP.
model_probnumberModel’s calculated win probability (0-1).
market_pricenumberCurrent market price.
edgenumbermodel_prob - market_price. Positive = undervalued.
evnumberExpected value per $1 bet.
kelly_fractionnumberOptimal bet fraction per Kelly Criterion.
suggested_betnumberDollar amount based on Kelly + your bankroll.
confidencestringHIGH, MEDIUM, or LOW based on multiple factors.
moneynessnumberHow deep p50 falls into bucket (0=edge, 1=center).
time_confidencestringHIGH (<24h), MEDIUM (24-48h), LOW (>72h).
asymmetry_edgenumberXTracker - UI counter. Positive = UI lagging.
reasonsarrayHuman-readable explanations for the signal.

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:

ParameterRequiredDescription
walletYesYour 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
}
}
]
}

The endpoint has three steps:

  1. Fetches your open positions from the Polymarket API using your wallet address
  2. Filters to active Cruz tweet markets — positions in other market types are excluded
  3. 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.

FieldTypeDescription
p5 / p50 / p95numberMonte Carlo forecast percentiles for final tweet count.
real_counternumberCurrent real tweet count at time of prediction.
seconds_remainingnumberSeconds until the event closes.
velocity_counted_1hnumberAverage counted tweets per hour over the last hour. Useful for projecting how much more is likely before close.
FieldTypeDescription
bucketstringThe Polymarket outcome bucket you hold (e.g. "80-99").
tokensnumberNumber of shares/tokens you hold.
avg_pricenumberYour average purchase price per token.
cost_basisnumberTotal amount paid for this position.
current_pricenumberCurrent market price per token.
current_valuenumberCurrent mark-to-market value.
pnlnumberUnrealised profit/loss in USDC.
pnl_percentnumberUnrealised PnL as a percentage.
FieldTypeDescription
win_probabilitynumberModel’s estimated probability this bucket wins (0–1).
market_impliednumberCurrent market price — the crowd’s implied probability.
edgenumberwin_probability − market_implied. Positive = model sees more value than the market.
edge_percentnumberEdge expressed as a percentage of the market price.
signalstringSee signal table below.
recommendationstringSee recommendation table below.

The signal field is based on edge_percent:

SignalConditionMeaning
STRONG_BUYedge_percent > 30%Model sees strong undervaluation — consider adding
BUYedge_percent > 10%Clear positive edge exists
HOLDedge_percent > 0%Slight edge — worth keeping
AVOIDedge_percent > -10%Near fair value, slightly unfavourable
SELLedge_percent ≤ -10%Model sees meaningful overvaluation — consider exiting

The recommendation field is based on raw edge (not percentage):

RecommendationConditionMeaning
STRONG_HOLDedge > 0.20High absolute edge — hold firmly
HOLDedge > 0.05Positive edge — no reason to exit
MONITORedge > -0.05Near fair value — watch closely
CONSIDER_SELLINGedge ≤ -0.05Model favours exiting this position
StatusCondition
400Wallet address is not a valid Ethereum address (0x + 40 hex chars)
401Missing or invalid Pro API key
503Could not reach the Polymarket API to fetch positions

GET /meta/cruz/tweets

Public (Masked) / Pro (Full).

  • Public: Fixed at the latest 15 tweets. is_counted is null.
  • Pro: Custom pagination using limit (max 100) and offset. 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
}
FieldTypeDescription
tweet_idstringTwitter status ID.
textstringTweet content.
is_countedboolean|nullPro Only. Whether tweet counts for resolution. Null for public users.
is_reply / is_quote / is_retweetbooleanTweet type flags.
limit / offsetnumberPagination values used for the request.

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