Oracle3

May 7, 2026 · View on GitHub

Autonomous prediction market trading agent across Kalshi, Polymarket, and Solana.

Tests Lint Type Check codecov Python 3.10+ License Discussions Last Commit Docs DOI

Why this exists

Prediction markets price binary contracts at systematically biased levels — a true 50/50 contract typically trades around 0.57 (favorite-longshot bias, λ^0.183\hat{\lambda} \approx 0.183). Most trading bots ignore this distortion entirely. Oracle3 operationalizes a peer-reviewed pricing model, calibrated on 291,309 resolved contracts across six venues, to systematically harvest the bias through arbitrage detection and Kelly-sized model trades.

This system deploys the exact λ\lambda estimates and covariate model from prediction-market-pricing (Yang, 2026) as its real-time pricing engine.

How oracle3 differs from existing prediction-market tools

Oracle3polymarket-whalesprediction-market-makerpy-clob-client
Pricing modelWang Transform (calibrated MLE)NoneBid-ask MMNone
Constraint-based arbitrage8 strategiesNoneNoneN/A
Multi-venueKalshi + Polymarket + SolanaPolymarket onlyPolymarket onlyPolymarket only
On-chain executionSolana via DFlow + JitoNoNoN/A (SDK)
Working paperYang (2026), SSRNNoNoNo
Tests6330050+
LicenseApache 2.0MITMITMIT

Architecture

graph TD
    A[Wang Transform Pricing Engine<br/>MLE coefficients from paper] --> B[Fair Value Estimator<br/>Model Greeks · Kelly Sizing]
    B --> C[Strategy Layer]
    C --> D[8 Constraint-Based Arbitrage]
    C --> E[2 Model-Driven Strategies]
    C --> F[LLM Agent Strategies]
    D --> G[Trading Engine<br/>SpreadExecutor · Risk Manager · Position Tracker]
    E --> G
    F --> G
    G --> H[Kalshi]
    G --> I[Polymarket]
    G --> J[Solana / DFlow]

Strategies

Constraint-based arbitrage — each exploits a violated probability axiom:

StrategyInvariant
Cross-MarketSame event, same price across exchanges
ExclusivityP(A)+P(B)1P(A) + P(B) \leq 1 for mutually exclusive events
ImplicationP(A)P(B)P(A) \leq P(B) when A implies B
ConditionalP(AB)[L,U]P(A \mid B) \in [L, U] within derived bounds
Event SumP(outcomei)=1\sum P(\text{outcome}_i) = 1 within an event
StructuralP(A)=βP(B)+αP(A) = \beta \cdot P(B) + \alpha from calibrated model

Statistical arbitrage: cointegration spread (self-calibrating z-score), lead-lag (cross-correlation).

Model-driven: fair value divergence (Wang-model edge), premium decay (rides predictable premium lifecycle).

Pricing Engine

Deploys the Wang Transform from Yang (2026), calibrated on 291,309 contracts across 6 platforms:

pmkt=Φ(Φ1(p)+λ),λ^=0.183  (p<1015)p^{\text{mkt}} = \Phi\bigl(\Phi^{-1}(p^*) + \lambda\bigr), \quad \hat{\lambda} = 0.183 \; (p < 10^{-15})

  • Hierarchical model: λi=0.2590.072ln(1+V)+0.143ln(1+D)0.477p0.5\lambda_i = 0.259 - 0.072 \ln(1+V) + 0.143 \ln(1+D) - 0.477 |p-0.5|
  • Model Greeks: p/λ\partial p / \partial \lambda, Kelly fraction, edge decay rate
  • Online calibrator: hybrid batch MLE + streaming EWMA with category shrinkage
  • Correlation-aware risk: EWMA correlation matrix, effective exposure limits

Yang, Y. (2026). Pricing Prediction Markets: Risk Premiums, Incomplete Markets, and a Decomposition Framework. Working Paper, UIUC. [Replication package]

Quick Start

git clone https://github.com/YichengYang-Ethan/oracle3.git && cd oracle3
poetry install

oracle3 market list --exchange polymarket --limit 10
oracle3 dashboard --exchange solana --initial-capital 10000

See docs for full CLI reference.

Key Technical Choices

  • Event-driven async engine with snapshot persistence and Unix socket control (pause/resume/killswitch)
  • SpreadExecutor with automatic LIFO unwind on partial fills — no naked multi-leg positions
  • Dual-layer risk: local position/drawdown/exposure limits + Solana simulateTransaction pre-flight
  • On-chain audit trail via Solana Memo program; Jito bundle submission for MEV protection
  • 633 tests, ruff, mypy, codespell CI on every push

Star History

Star History Chart

Contributors

Contributors

If oracle3 helps your research or trading, please ⭐ star the repo — it helps others find it.

License

Apache 2.0 — see LICENSE for details.

This software is for research and educational purposes. Trading involves financial risk.