Arbitrage · Python
Prediction Market Factory
Claude-hosted research and arbitrage agents that turn live Polymarket data into sourced probability notes and human-reviewed order tickets.
View repositoryGordon boundary
Gordon governs the project's paid agent actions. The repository keeps its own strategy, runtime, data ingestion, and execution logic.
Representative output
Factory dashboard
A first-pass view of the artifacts produced by the hosted research and arbitrage agents. Live output ingestion is the next connection step.
24
markets scanned
6
research signals
3
tickets to review
$0.18
Gordon research spend
Ranked order tickets
Human review required| Market | Strategy | Net edge | Annualized | Size | Profit | State |
|---|---|---|---|---|---|---|
| Fed cuts rates before September? | complete_set | 2.8% | 34.1% | $420 | $11.76 | Review |
| 2026 Atlantic hurricane count above 14? | resolution_lag | 4.1% | 27.5% | $180 | $7.38 | Research check |
| BTC above $150k before Dec 31? | logical_relationship | 1.9% | 22.4% | $300 | $5.70 | Review |
Research notes
Representative runFed cuts rates before September?
Market
62%
Model
69%
Evidence
8 sources
2026 Atlantic hurricane count above 14?
Market
41%
Model
52%
Evidence
6 sources
BTC above $150k before Dec 31?
Market
28%
Model
34%
Evidence
11 sources
How it works
The research agent runs on Claude every 6 hours. It reads live Polymarket order books, then calls Exa (web search) and CoinGecko (prices) through Gordon to gather supporting evidence. Gordon enforces per-call and daily spend limits. Each successful paid x402 call receives a settlement receipt, and the session_id groups calls by the research run that triggered them. The arbitrage agent reads the resulting research notes offline and produces ranked order tickets — it never calls Gordon directly.
Integration recipe
How Gordon fits
Research spend
VerifiedRoute paid Exa and CoinGecko calls through Gordon MCP so each paid x402 call is policy-governed and receives a settlement receipt.
Run audit
VerifiedPass a session_id matching each scheduled run so Gordon groups its paid calls in the session activity view.
Trade approval
PlannedGate future live order execution with a Gordon policy that blocks orders above a threshold without human review.
Integration code
# Gordon MCP is added to the Claude managed agent via the Console.
# The agent is given this system-prompt excerpt:
SYSTEM_PROMPT = """
You are the Polymarket Research Analyst.
Every 6 hours you:
1. Fetch open markets from the Polymarket REST API.
2. For each market, call gordon_call_service to gather evidence:
gordon_call_service({
"operation": "exa.search.web",
"params": {"query": "<market title> evidence 2026", "numResults": 8},
"max_payment_units": 20000, # $0.02 hard cap
"session_id": run_id # ties spend to this run
})
3. Estimate P(YES) from the evidence.
4. Write a research note: { market, market_price, model_prob, evidence, confidence }
Gordon policy for this agent:
- Allowed services: exa, coingecko
- Per-call ceiling: $0.02
- Daily budget: $1.00
"""Connection path
Create an agent
Give this project its own Gordon identity, wallet, and API key.
Add MCP or SDK
Use Gordon MCP for hosted agents or gordon.fetch for application code.
Set policy
Allow only required services, then cap calls and daily spend.