AI Oracle
Multi-LLM concordance engine that resolves markets and surfaces edge signals in under 60 seconds.
The AGON AI Oracle runs multi-LLM concordance to resolve markets and surface edge signals.
| Property | Value |
|---|---|
| Models | Claude Haiku 4.5 + Gemini 2.0 Flash + GPT-4o (+ Bittensor Sportstensor SN41 for sports) |
| Threshold | 2/3 of providers must agree within tolerance window |
| Confidence | Mean confidence across concordant providers must be >= 0.80 |
| Speed | <60 seconds for supported event types |
| Edge signals | AI probability vs market price -- delta >= 10% triggers signal generation; API queries default to >= 5% |
| Fallback | OracleDAO manual review for disputed / ambiguous markets |
PoAIC concordance algorithm
Proof of AI Concordance (PoAIC) is not a blockchain consensus mechanism. Per ADR-002, it is a latency optimization layer above OracleDAO. The AI resolves approximately 95% of markets in under 60 seconds; OracleDAO handles the remaining 5% of edge cases with a human backstop.
The concordance flow is implemented in apps/workers/ai/concordance.py:
-
Prompt construction. A shared prompt is built by
build_oracle_prompt()from the market question, description, current AMM YES price, and optional knowledge-base grounding context (team stats, fixture data, crypto fundamentals injected viaget_market_context()). -
Parallel fan-out. The same prompt is dispatched to all configured providers via
asyncio.gather():anthropic-- Claude Haiku 4.5 (claude-haiku-4-5-20251001)google-- Gemini 2.0 Flash (gemini-2.0-flash)openai-- GPT-4obittensor-- Sportstensor Subnet 41 (optional, sports markets only, activated whenbittensor_subnet41_endpointis configured)
Each provider returns a
ProviderResultwithoutcome(YES/NO/INVALID),probability(0.01-0.99),confidence(0.0-1.0), andreasoning. A 45-second outer timeout caps the entire fan-out. -
Diversity check. If more than 2/3 of valid results come from the same provider family, the aggregation is rejected (Sybil defense).
-
Weighted median. The median probability across all valid results is computed. Each provider result is then checked against a category-specific tolerance window:
Category Tolerance Sports (football, NBA, NFL, etc.) 3% Crypto (token, DeFi, NFT) 5% Politics (election, geopolitics) 10% A result is "concordant" if
|probability - median| < tolerance. -
Uncertainty band. If the median probability falls in the 0.45-0.55 range, the market is forced to human review regardless of concordance -- it is too close to call for automated resolution.
-
Decision. If >= 2/3 of providers are concordant AND mean confidence >= the configured threshold (default 0.80): the concordance is achieved. The outcome is determined by majority vote among concordant providers (ties broken by median probability). The
api_resolverworker then callsAPIResolver.resolve()on-chain.If concordance is NOT met, the market is flagged
ai_needs_human_review = TRUEfor OracleDAO manual resolution.
All provider submissions (including failures) are persisted to the
validator_submissions table for observability and auditing.
Validator role
Per ADR-003, decentralized validators bear their own LLM inference costs. They are remunerated via two channels:
- FeeDistributor: 25% of protocol trading fees are routed to validators proportional to their staking weight.
- ArenaRewards oracle budget: 20 000 000 AGON allocated over the reward horizon for correct resolutions.
On-chain, AIOracleHub.sol manages the validator lifecycle:
- Validators register with a minimum bond of 500 AGON in
ReputationStaking. - The off-chain concordance coordinator collects EIP-712 signed attestations from registered validators.
submitConcordance()verifies signatures, weights, and diversity, then callsMarketFactory.proposeResolution()to enter the 24-hour dispute window.- If OracleDAO overrides the AI resolution,
slashValidator()burns the offending validators' bonds.
The equilibrium KPI for validators is weekly_rewards / weekly_inference_cost.
Edge signal generation
The AI analyst (apps/workers/ai/analyst.py) runs every 15 minutes via
the ai/scheduler.py batch loop. For each open market, it calls Claude
Haiku to produce an independent probability estimate, which is written
to the ai_probability column in the markets table.
The signal generator (workers/signal_generator.py) then compares
ai_probability against the current AMM yes_price. If the absolute
divergence exceeds 10% (EDGE_THRESHOLD = 0.10), it emits an edge
signal to the signals table and fires an SSE event on the Redis
event bus.
Fetching edge signals
// REST -- default min_edge filter is 5%
GET /api/v1/oracle/edges?min_edge=0.05
// MCP tool
get_oracle_edges({ min_edge: 0.05, limit: 20 })The min_edge query parameter controls the minimum divergence returned
by the API. The default of 5% surfaces signals that the signal generator
may not yet have persisted (it uses a 10% threshold for generation).
OracleDAO fallback
When AI concordance fails -- disagreement among providers, insufficient valid results, or the uncertainty band is triggered -- the market enters OracleDAO manual review.
OracleDAO.sol implements a propose-challenge-vote flow:
- Propose: A resolver posts a bond (250 AGON minimum) and proposes an outcome. This starts a 48-hour challenge period.
- Challenge: Any AGON holder can dispute by posting an equal bond and proposing an alternative outcome.
- Vote: If challenged, a 72-hour voting period opens. Voting power
is snapshot-based using
AgonToken(ERC20Votes with delegation and checkpoints, per ADR-007). Minimum quorum: 1 000 AGON in votes. - Settle: The winning outcome is forwarded to
MarketFactory.proposeResolution(). The losing party forfeits their bond. Correct resolvers earn an AGON bonus viaArenaRewards.
Governance parameters (minBond, minQuorum) are adjustable by the
TimelockController.
