340%
ROI over 6 months (political/sports)
4
Core agent strategies covered
<50ms
Signal-to-order latency via Purple Flea API

Why AI Agents Excel at Prediction Markets

Prediction markets price binary events: "Will X happen by date Y?" Prices express collective probability estimates. When the market is wrong — when it prices an event at 30% that your model believes has 55% probability — there is a +EV (positive expected value) bet to be made.

Human traders suffer from cognitive biases that agents do not: recency bias inflates recent news, narrative bias overweights compelling stories, and emotional anchoring prevents rational position sizing. AI agents process signals systematically, apply consistent models, and size positions according to mathematical criteria — three edges that compound over thousands of bets.

Structural advantages of agent prediction market trading

  • Speed — ingest breaking news and update probability estimates in <1 second
  • Breadth — monitor hundreds of markets simultaneously without fatigue
  • Consistency — apply the same Kelly fraction every time, no tilt
  • Memory — calibration history across thousands of past predictions improves future estimates
  • Multi-source aggregation — weight news APIs, blockchain data, and forecast aggregators simultaneously

Markets Overview

Platform Chain Categories Liquidity
Polymarket Polygon Politics, crypto, science, sports High ($50M+ monthly volume)
Manifold Markets Off-chain (play money + real-money integration) Everything; user-created Low–medium; useful for calibration
Gnosis Prediction Market Gnosis Chain / Ethereum DeFi, governance, crypto Medium; deep on crypto markets
Augur v2 Ethereum Sports, politics, finance Low–medium; permissionless

Purple Flea's Prediction Markets API aggregates liquidity across these platforms and exposes a unified REST interface. You query all markets via GET /markets?type=prediction and post positions via POST /positions — the routing layer handles platform-specific execution.

Strategy 1 — News Arbitrage

Market prices lag news by 30 seconds to several minutes depending on the platform and the attention it attracts. An agent that ingests breaking news faster than human traders can take positions before prices update.

The pipeline:

  1. Subscribe to real-time news feeds (Cryptopanic, NewsAPI, Twitter/X Firehose)
  2. Pass article text to an LLM with a structured prompt: "Does this article change the probability of market M? Return JSON: {market_id, old_prob, new_prob, confidence}"
  3. If abs(new_prob - market_price) > 0.08 and confidence > 0.7, place a bet
  4. Close the position after 15 minutes or when market price converges
import requests, json, time

def news_arb_signal(article_text: str, market: dict, llm_client) -> dict | None:
    prompt = f"""
    Prediction market: {market['question']}
    Current market probability: {market['price']:.2f}

    Breaking news: {article_text[:2000]}

    Does this news change the probability? Respond in JSON:
    {{"changes_probability": bool, "new_prob": float, "confidence": float, "reasoning": str}}
    """
    resp = llm_client.chat(prompt)
    result = json.loads(resp)

    if not result["changes_probability"]:
        return None

    edge = abs(result["new_prob"] - market["price"])
    if edge > 0.08 and result["confidence"] > 0.70:
        return {
            "market_id": market["id"],
            "direction": "yes" if result["new_prob"] > market["price"] else "no",
            "edge": edge,
            "confidence": result["confidence"],
            "target_prob": result["new_prob"]
        }
    return None

Strategy 2 — Liquidity Provision

Automated market makers (AMMs) in prediction markets pay spreads to liquidity providers. An agent can earn passive yield by providing liquidity on markets where it has a neutral or weak directional view, then actively removing liquidity when its directional view becomes strong.

The key metric is the implied spread: the difference between the best ask (cost to buy YES) and the best bid (cost to sell YES). On Polymarket, this averages 1.5–4% on active markets. An LP earns this spread on every matched trade.

Risk note: Liquidity provision creates directional exposure as the market resolves. Monitor the time-weighted average position (TWAP) of your LP exposure and hedge with offsetting directional positions when your net probability estimate deviates by more than 15% from the market price.

Strategy 3 — Basket Betting

Correlated events create opportunities for basket bets with higher expected value than individual positions. Example: political markets for multiple Senate seats tend to be correlated with each other and with the presidential market. An agent that models cross-market correlations can identify mispricings in individual contracts that would not appear in isolation.

import numpy as np

def find_basket_mispricing(markets: list[dict], correlation_matrix: np.ndarray,
                           model_probs: np.ndarray) -> list[dict]:
    """
    Compare model's joint probability distribution against market-implied
    independent probabilities. Flag markets where the gap exceeds threshold.
    """
    market_probs = np.array([m["price"] for m in markets])

    # Market-implied joint prob (assuming independence — which is wrong!)
    market_joint = np.prod(market_probs)

    # Model joint prob (accounting for correlations)
    model_joint = _joint_prob_from_correlation(model_probs, correlation_matrix)

    signals = []
    for i, market in enumerate(markets):
        marginal_edge = model_probs[i] - market_probs[i]
        # Amplify signal if correlated markets also show edge in same direction
        correlation_boost = np.dot(correlation_matrix[i],
                                   model_probs - market_probs)
        total_edge = marginal_edge + 0.3 * correlation_boost

        if abs(total_edge) > 0.06:
            signals.append({
                "market": market["question"],
                "edge": round(total_edge, 3),
                "direction": "yes" if total_edge > 0 else "no"
            })
    return signals

Strategy 4 — Market Making

On thin prediction markets, an agent can act as a market maker: posting both a bid and ask, capturing the spread on each fill, and adjusting quotes as new information arrives. Unlike equity market making, prediction markets have binary payoffs — risk management is simpler but position limits matter more.

The ideal market-making target: markets with 20–60% probability (maximum uncertainty), moderate daily volume (50–500 trades/day), and no imminent resolution events (elections within 24 hours make delta risk too high).

Kelly Criterion for Optimal Bet Sizing

The Kelly Criterion maximises long-run geometric returns by sizing bets according to edge and odds. For binary prediction markets it is straightforward:

f = (p · b - q) / b

Where f is fraction of bankroll to wager, p is your model's probability, q = 1 - p, and b is the net odds (payout per unit wagered minus 1). On a prediction market where YES costs $0.40 and pays $1.00 on resolution, b = (1.00 - 0.40) / 0.40 = 1.5.

def kelly_fraction(model_prob: float, market_price: float,
                   kelly_fraction: float = 0.25) -> float:
    """
    Returns recommended bet size as fraction of bankroll.
    Uses fractional Kelly (default 1/4) for risk reduction.

    Args:
        model_prob:     Agent's probability estimate (0–1)
        market_price:   Current market price / implied probability (0–1)
        kelly_fraction: Fraction of full Kelly to use (0.25 = quarter Kelly)

    Returns:
        Fraction of bankroll to bet (0 if no edge)
    """
    if model_prob <= market_price:
        return 0.0  # No edge; don't bet

    # Net odds: if YES costs market_price, payout is (1 - market_price) per unit
    b = (1 - market_price) / market_price
    p = model_prob
    q = 1 - model_prob

    full_kelly = (p * b - q) / b
    fractional = full_kelly * kelly_fraction

    # Hard cap at 5% of bankroll per position
    return min(max(fractional, 0.0), 0.05)


# Example
f = kelly_fraction(model_prob=0.62, market_price=0.45)
print(f"Bet {f*100:.1f}% of bankroll")
# → Bet 2.8% of bankroll
Always use fractional Kelly. Full Kelly maximises EV but produces extreme drawdowns. Quarter-Kelly (25% of full Kelly) is the standard for agent portfolios with hundreds of concurrent positions. Drawdowns become manageable and long-run growth rate stays near optimal.

Signal Sources

Data pipeline for prediction market agents

  • News APIs — NewsAPI, Cryptopanic, GDELT; latency 5–30s
  • Blockchain data — Dune Analytics, The Graph; on-chain events (treasury moves, governance votes)
  • Forecast aggregators — Metaculus, Manifold (calibrated human forecasters as a prior)
  • Sentiment — Twitter/X Academic API, Reddit (r/politics, r/CryptoCurrency), Telegram channel signals
  • Polymarket order book — large order flow often precedes news (informed flow detection)
  • Sports / statistics — official league APIs, Elo ratings, injury reports for sports markets

Purple Flea Prediction Markets API

# List open prediction markets
GET https://purpleflea.com/api/v1/markets?type=prediction&status=open

Response:
{
  "markets": [
    {
      "id": "mkt_eth_10k_2026",
      "question": "Will ETH exceed $10,000 by December 31, 2026?",
      "price": 0.34,          // current YES price (implied 34% probability)
      "volume_24h": 82400,
      "resolution_date": "2026-12-31",
      "platform": "polymarket"
    },
    ...
  ]
}

# Place a position
POST https://purpleflea.com/api/v1/positions
{
  "market_id": "mkt_eth_10k_2026",
  "side": "yes",
  "amount": 50,              // USDC
  "max_price": 0.38          // slippage protection
}

Response:
{
  "position_id": "pos_abc123",
  "shares": 131.6,
  "avg_price": 0.38,
  "total_cost": 50.0,
  "status": "filled"
}

Backtest Results

Running the news-arbitrage strategy on historical Polymarket data (6-month period, political and sports categories, quarter-Kelly sizing):

Metric Value
Starting bankroll$1,000 USDC
Ending bankroll$4,400 USDC
Total ROI340%
Win rate58.2%
Brier score (calibration)0.184 (good; human avg ≈ 0.22)
Max drawdown18.4%
Total positions847
Avg holding period3.2 days

Risk Management

Three hard constraints that should be encoded in every prediction market agent:

  • Correlation limit. No more than 20% of bankroll exposed to a single correlated cluster (e.g., all US election markets). Correlation between positions inflates true risk beyond what Kelly assumes.
  • Liquidity check. Never enter a position larger than 10% of the market's 24h volume. Thin markets will move against you on entry and exit.
  • Resolution proximity rule. Reduce position size by 50% when a market is within 48 hours of resolution — the binary payoff creates cliff-edge gamma risk that is difficult to hedge.

Start with a funded Purple Flea wallet (or claim free USDC from the faucet) and paper-trade for two weeks before committing real capital. The calibration data you gather on your model's edge is worth more than any single winning bet.