Overview
Follow these best practices to create clear, resolvable prediction markets that work seamlessly with delphAI’s AI oracle.Writing Resolution Criteria
The quality of your resolution criteria directly impacts how accurately delphAI can resolve your market.Good Resolution Criteria Example
✅ Well-defined market:- ✅ Clear, unambiguous question
- ✅ Specific data sources with exact endpoints
- ✅ Precise resolution time with timezone
- ✅ Explicit resolution logic
- ✅ Backup data source specified
- ✅ Verification requirements stated
Bad Resolution Criteria Example
❌ Poorly-defined market:- ❌ “Do well” is subjective and vague
- ❌ No data source specified
- ❌ No specific time or date
- ❌ No clear YES/NO logic
- ❌ No backup plan if data unavailable
Resolution Criteria Checklist
Clear Question
Clear Question
Requirements:
- Binary (YES/NO) or clear multiple choice
- Objectively verifiable
- No ambiguous terms
- Time-bound
Specific Data Sources
Specific Data Sources
Requirements:
- Name exact APIs or data providers
- Include API endpoints when possible
- Specify multiple sources for redundancy
- Use reputable, reliable sources
Precise Timing
Precise Timing
Requirements:
- Exact date and time
- Specify timezone (prefer UTC)
- Account for data availability delays
- Consider market close vs resolution time
Explicit Logic
Explicit Logic
Requirements:
- Define exact conditions for each outcome
- Handle edge cases (ties, nulls, etc.)
- Specify rounding rules if needed
- Define what happens if data unavailable
Choosing Data Sources
Select reliable data sources that the AI can access and verify.Recommended Data Sources by Category
Cryptocurrency Prices
Primary Sources:
- CoinGecko
- CoinMarketCap
- Binance API
- Coinbase API
Sports Results
Primary Sources:
- ESPN API
- The Sports DB
- Official league APIs
- SportsData.io
Weather Data
Primary Sources:
- OpenWeatherMap
- NOAA (weather.gov)
- WeatherAPI.com
- AccuWeather API
Financial Markets
Primary Sources:
- Yahoo Finance
- Alpha Vantage
- TradingView
- Bloomberg API
Political Events
Primary Sources:
- Official government sites
- Associated Press
- Reuters
- Ballotpedia
Onchain Data
Primary Sources:
- Etherscan API
- The Graph
- Dune Analytics
- DefiLlama API
Data Source Quality Criteria
When selecting data sources:Criteria | What to Look For |
---|---|
Reliability | 99%+ uptime, established provider |
Accuracy | Official or widely trusted source |
Accessibility | Public API, no authentication required (when possible) |
Freshness | Real-time or frequent updates |
Documentation | Clear API docs available |
Market Timing
Set appropriate resolution times for accurate data availability.Resolution Time Guidelines
Crypto Price Markets
Crypto Price Markets
Recommended gap: 1-5 minutes after target timeReason: Prices update in real-time, brief delay ensures all sources syncedExample: Target time 23:59 UTC → Resolution time 00:01 UTC (next day)
Sports Markets
Sports Markets
Recommended gap: 1-2 hours after game endReason: Official scores may take time to finalize, especially with reviewsExample: Game ends ~9pm → Resolution time 11pm
Financial Markets
Financial Markets
Recommended gap: 30 minutes after market closeReason: Closing prices need time to settle and propagateExample: NYSE closes 4pm ET → Resolution time 4:30pm ET
Political Events
Political Events
Recommended gap: 24-48 hours after polls closeReason: Official results take time, especially with recountsExample: Election day Nov 5 → Resolution Nov 7
Market Close vs Resolution Time
Always leave a buffer between market close and resolution time to ensure the event has fully concluded and data is available.
Market Question Design
Create questions that are objectively resolvable.Question Types That Work Well
Price Comparisons
“Will [ASSET] be >= $X on [DATE]?”Easy for AI to verify with price APIs
Binary Events
“Will [EVENT] happen by [DATE]?”Clear yes/no outcome
Numeric Thresholds
“Will [METRIC] exceed X by [DATE]?”Objective numeric comparison
Rankings
“Will [TEAM] finish in top 3 of [TOURNAMENT]?”Verifiable through official rankings
Question Types to Avoid
Avoid these question types:
- ❌ Subjective: “Will the movie be good?” (opinion-based)
- ❌ Vague: “Will crypto do well?” (undefined criteria)
- ❌ Unverifiable: “Will aliens visit Earth?” (no data source)
- ❌ Ambiguous: “Will it be sunny?” (where? when exactly?)
- ❌ Complex logic: “Will A AND B OR C happen?” (hard to parse)
Multiple Outcome Markets
For markets with more than 2 outcomes, follow these guidelines.Good Multiple Choice Design
- ✅ Include “Other” category for unlisted outcomes
- ✅ Make outcomes mutually exclusive
- ✅ Keep number of outcomes reasonable (5-10)
- ✅ Use official source for verification
Edge Case Handling
Plan for unexpected scenarios.Common Edge Cases
Data Source Unavailable
Data Source Unavailable
Exact Threshold
Exact Threshold
Solution: Define behavior for exact values
Event Cancelled
Event Cancelled
Solution: Define cancellation behavior upfront
Data Discrepancy
Data Discrepancy
Solution: Require consensus from multiple sources
Testing Your Criteria
Before launching, test your resolution criteria.Testing Checklist
1
Read Aloud Test
Read your criteria to someone unfamiliar with the market. Can they understand exactly how it will be resolved?
2
Data Availability Check
Verify all specified data sources are accessible and provide the expected data format
3
Edge Case Review
List all possible edge cases and confirm your criteria addresses them
4
Simulation
Imagine the event happening - can you clearly determine the outcome from your criteria?
5
Peer Review
Have another developer review your criteria for ambiguities
Common Mistakes to Avoid
Top mistakes when creating markets:
- Vague data sources: “Check the price online” → Specify exact API
- Missing timezone: “Jan 1, 2026” → Add timezone (prefer UTC)
- No backup plan: Single data source → Always have backup
- Ambiguous logic: Unclear YES/NO conditions → Be explicit
- Too complex: Multi-part conditions → Keep it simple
- Subjective terms: “Good”, “high”, “significant” → Use numbers
- Unrealistic timing: Resolution too soon after event → Add buffer
- No edge cases: Assuming perfect conditions → Plan for failures