Three universal prediction modes

The vast majority of operators support the following three modes — different forms, unified logic:

threshold / binary — binary mode

Set a numerical threshold T; at market expiry the actual value is compared against T — two options, one wins, one loses.

Example: Will BTC break $100k by year-end? Option A: BTC < $100,000 / Option B: BTC ≥ $100,000

Best for: round-number levels, psychological price points, simple yes/no questions.

📊
buckets / range_buckets — range mode

Set N boundary values to divide the number line into N+1 intervals; the option whose interval contains the actual value wins. Rule: left-closed, right-open [a, b); rightmost has no upper bound.

Example (buckets=60k/80k/100k): BTC <60k / [60k,80k) / [80k,100k) / ≥100k

Best for: judging magnitude (small / big / explosive move), distinguishing degree.

🎯
closest / point_estimate — point-guess mode

Preset N candidate values; the option whose candidate value has the smallest absolute difference from the actual value wins. Equal distance: smaller value wins.

Example (targets=60k/70k/80k/90k): actual=73k → |73k-70k|=3k, |73k-80k|=7k → "≈70,000" wins

Best for: precise numerical judgement, akin to futures-pricing strategy — high skill, high reward.

Enumerated operators (ESPORTS, POLITICS, AWARDS, STREAMING) have no mode parameter — options are the candidate set (teams / candidates / nominees); the option containing the winner settles as the winner.

💰 DPM payment & settlement rules

Buy cost (deducted at bet time)

cost = C(q + δ·eᵢ) − C(q), where C(q) = κ·√(Σqᵢ²). The more people buy the same option, the higher the unit cost for latecomers (dynamic pricing).

Winning payout

Each share on the winning option pays 1 TCN; actual gain = shares held (integer). Prize pool = κ·√(Σqᵢ²); surplus over the payout is platform commission.

Sell / exit (during OPEN)

Sell shares before the market locks: refund = C(q) − C(q − δ·eᵢ). If the market has risen, the refund may exceed original cost; if fallen, less than original cost.

Platform commission (rake)

rake = total prize pool − total winning-option shares; collected by the platform for operations. Market creators receive an additional share of trading volume (ratio configurable by admin).

Settlement source

Oracle operators auto-fetch data from linked sources and settle after a 2/3 majority vote; human-judge operators (ESPORTS, POLITICS, etc.) settle after admin manually confirms the result.

📈 Price operators

Auto-fetch real-time market price data and settle automatically. All support threshold / buckets / closest three modes.

🪙
CRYPTO — Cryptocurrency Price
CoinGecko v3 · BTC / ETH / SOL / BNB top-20
Oracle Auto
Data source

CoinGecko v3 public API — no API key required, real-time USD price. Daily UTC 00:00 snapshot used for day-level settlement.

⚡ mode = threshold

Set a price threshold T; at expiry, actual price vs T produces two options.

Params: coin + asof_iso + threshold (positive number)
threshold = "100000"
──────────────────
A: BTC < 100000 USD
B: BTC ≥ 100000 USD
📊 mode = buckets

Multiple boundary values split the range; the option whose interval contains the actual price wins.

Params: buckets (1–63 boundaries, ascending positive numbers)
buckets = ["1500","2000","2500","3000"]
──────────────────
A: ETH < 1500 USD
B: ETH [1500, 2000) USD
C: ETH [2000, 2500) USD
D: ETH [2500, 3000) USD
E: ETH ≥ 3000 USD
🎯 mode = closest

Preset several target prices; the one with smallest absolute difference from actual price wins. Equal distance: smaller value wins.

Params: targets (2–64 target values)
targets = ["60000","70000","80000","90000"]
──────────────────
actual = 73000 → |73k-70k|=3k, |73k-80k|=7k
→ "BTC ≈ 70000 USD" wins
💱
FX_RATES — Foreign Exchange Rate
ECB via Frankfurter · EURUSD / USDCNY / GBPUSD
Oracle Auto

The ECB publishes reference rates every business day at 16:00 CET. asof_iso must be a business day — no data on holidays. Three-mode logic identical to CRYPTO; underlying is an exchange rate, not a coin price.

pair = "EURUSD", threshold = "1.10"
A: EURUSD < 1.10
B: EURUSD ≥ 1.10
pair = "USDCNY", buckets = ["7.0","7.2","7.4","7.6"]
→ 5 options covering the full exchange rate range
🛢️
COMMODITY — Commodity Prices
FRED (St. Louis Fed) · Crude / Gold / Silver / Grains
Oracle Auto
Supported commodities: WTI (West Texas crude, USD/bbl) · BRENT (Brent crude, USD/bbl) · GOLD (USD/oz) · SILVER (USD/oz) · COPPER (USD/lb) · CORN (USd/bu) · WHEAT (USd/bu) · SOYBEAN (USd/bu)
product = "GOLD", buckets = ["2000","2200","2400","2600"]
A: GOLD < 2000 USD/oz
B: GOLD [2000, 2200) USD/oz
C: GOLD [2200, 2400) USD/oz
D: GOLD [2400, 2600) USD/oz
E: GOLD ≥ 2600 USD/oz
📉
EQUITY_NYSE — US Equity Price
Yahoo Finance · NASDAQ / NYSE · AAPL / MSFT / NVDA
Oracle Auto
Supports four fields: close / high / low / open. Ticker entered freely (e.g. AAPL, MSFT, BRK.B). Mode names differ: binary (=threshold) / range_buckets (=buckets) / point_estimate (=closest).
symbol = "AAPL", field = "close"
thresholds = ["180","200","220","240"]
→ AAPL close < 180 / [180,200) / [200,220) / [220,240) / ≥ 240
🏦
FIXED_INCOME — Interest Rates & Bond Yields
FRED · Fed Funds / UST 2Y / 5Y / 10Y / 30Y
Oracle Auto
Supported instruments (all in %): FEDFUNDS_EFF (effective federal funds rate) · FEDFUNDS_TARGET_LOWER/UPPER (Fed target range) · UST3M/2Y/5Y/10Y/30Y (Treasury yields by maturity). Supports negative thresholds (for negative-rate scenarios).
instrument = "FEDFUNDS_TARGET_UPPER"
targets = ["4.00","4.25","4.50","4.75","5.00"]
actual = 4.50% → "FEDFUNDS_TARGET_UPPER ≈ 4.50 %" wins

🌤️ Weather operators

🌡️
GLOBAL_WEATHER — Global City Weather
Open-Meteo · 31 cities · temp / precip / wind
Oracle Auto
Supported cities (31): Beijing(BJS) · Shanghai(SHA) · Hong Kong(HKG) · Tokyo(TYO) · New York(NYC) · London(LON) · Paris(CDG) · Dubai(DXB) · Singapore(SIN) · Sydney(SYD) and more.

Measurements: temp_c_max (daily high, °C) · temp_c_min (daily low, °C) · precip_mm_24h (24h rainfall, mm) · wind_max_kmh (daily max wind, km/h). Supports negative thresholds.
city = "BJS", measurement = "temp_c_min", threshold = "-5"
A: BJS temp_c_min < -5 °C
B: BJS temp_c_min ≥ -5 °C

city = "SHA", measurement = "precip_mm_24h"
buckets = ["0","5","25","50"]
→ <0 / [0,5) / [5,25) / [25,50) / ≥50 mm

⚽ Sports operators

🏆
SPORT_MATCH_WINNER — Match Result
football-data.org · PL / CL / NBA / ATP / WTA
Oracle Auto
No independent mode parameter. Options determined by league type: football (PL/CL/BL1/SA/FL1/PD/WC/EC): 3 options (home win / draw / away win); basketball/tennis (NBA/ATP/WTA): 2 options (home / away, no draw). Settlement: official full-time result incl. extra time, excl. penalties / tiebreak.
league = "PL", home = "Arsenal", away = "Chelsea"
A: Arsenal win · B: Draw · C: Chelsea win

league = "NBA", home = "Lakers", away = "Celtics"
A: Lakers win · B: Celtics win
SPORT_SCORE — Match Score
football-data.org · exact score / goal buckets / closest
Oracle Auto
mode = exact_score

List candidate scorelines; whichever matches the actual full-time score wins. Recommend adding an "Other" option as a catch-all for unlisted scores.

exact_scores = ["1-0","0-0","2-1","1-1","2-0"]
actual = 2-1 → "2-1" wins
mode = total_buckets
total_buckets = ["1","3","5"]
→ <1 / [1,3) / [3,5) / ≥5 goals
mode = total_closest
total_targets = ["0","1","2","3","4","5"]
actual = 3 → "total goals ≈ 3" wins
🏀
PLAYER_PROP_STATS — NBA Player Stats
balldontlie.io · pts / reb / ast / fg3m / PRA
Oracle Auto
Stats: pts (points) · reb (rebounds) · ast (assists) · stl (steals) · blk (blocks) · fg3m (3PM) · pra (pts+reb+ast). Three-mode logic identical to CRYPTO.
player = "LeBron James", field = "pts", threshold = "25"
A: LeBron James PTS < 25 · B: PTS ≥ 25

field = "fg3m", targets = ["2","4","6","8"]
actual = 5 → |5-4|=1, |5-6|=1 → tie → "3PM ≈ 4" wins
🎮
ESPORTS_MAJOR — Esports Champion
Human judge · CS2 / VALORANT / LOL / DOTA2 / APEX +5
Human Judge
No mode parameter; always enumerated. Enter competing team list (2–32) when creating; one option per team; champion team's option wins. Supported games: CS2 · VALORANT · LOL · DOTA2 · APEX · OVERWATCH · FORTNITE · STARCRAFT2 · TEKKEN8 · SF6
game = "LOL", tournament = "worlds-2026"
teams = [T1, JDG, Gen.G, Cloud9, Fnatic, ...]
→ one option per team; admin settles after finals

📰 Economic data operators

📊
ECON_CALENDAR — Macro Economic Data
FRED / ECB · NFP / CPI / GDP / Central bank rates
Oracle Auto
Supported events: US.NFP (nonfarm payrolls, k) · US.CPI_YOY (US CPI YoY, %) · US.FED_RATE (Fed rate, %) · US.UNEMPLOYMENT (unemployment, %) · EU.ECB_RATE (ECB rate, %) · EU.CPI_YOY (eurozone CPI, %) · CN.CPI_YOY (China CPI, %) · CN.GDP_YOY (China GDP growth, %) · GB.BOE_RATE (BoE rate, %) · JP.BOJ_RATE (BoJ rate, %). Mode names: actual_vs_threshold / actual_buckets / actual_closest_point.
event = "US.NFP"
buckets = ["0","100","200","300"]
→ <0 / [0,100) / [100,200) / [200,300) / ≥300 (k jobs)

event = "US.CPI_YOY", threshold = "3.0"
→ US.CPI_YOY actual < 3.0% / ≥ 3.0%

🗳️ Event operators

The following operators are all enumerated: the candidate set is the options, settled after admin manually confirms the result.

🗳️
POLITICS_ELECTION — Political Election
AP Elections / FEC · 2–16 candidates
Human Judge

Suitable for presidential/legislative elections, party primaries, and referendums (Yes/No each count as a candidate). Enter the candidate list when creating the market; admin settles after results are announced.

topic = "us-pres-2028"
candidates = [Candidate A, Candidate B, Other]
→ option: "us-pres-2028: Candidate A"
🏅
AWARDS_ENTERTAINMENT — Award Ceremonies
Official ceremonies · OSCAR / GRAMMY / NOBEL / BAFTA +8
Human Judge
Supported awards: OSCAR · EMMY · GRAMMY · GOLDEN_GLOBE · BAFTA · CANNES · NOBEL · BOOKER · PULITZER · TONY · HUGO · EUROVISION. Enter nominee list (2–12); admin confirms and settles the night of the ceremony.
award = "OSCAR", year = 2026, category = "best-picture"
nominees = [Dune Part III, The Brutalist, Conclave, ...]
→ option: "OSCAR 2026 best-picture: Dune Part III"
🎵
STREAMING_CULTURE — Streaming Year-End Charts
Spotify Wrapped / YouTube / Netflix / TikTok / Steam
Human Judge
Supported platforms: SPOTIFY · YOUTUBE · NETFLIX · TIKTOK · TWITCH · APPLEMUSIC · STEAM. Chart types: year's top song/artist/album/movie/series/game/channel/streamer/creator. Settlement after platform releases official year-end chart.
platform = "SPOTIFY", rank_type = "top_song_year", year = 2026
candidates = [Song A, Song B, Song C, ...]
→ Spotify year-end #1 song's option wins
🚀
SPACE_LAUNCH — Rocket Launch Outcome
Launch Library 2 API · success / failure / partial / hold
Oracle Auto
mode = success_binary

Two fixed options: launch success or failure (including other anomalous outcomes).

A: SpaceX Starship IFT-8 Success
B: SpaceX Starship IFT-8 Failure or Other
mode = status_enum

Distinguishes full success from partial failure (e.g., booster recovery fails but primary mission succeeds). Available statuses: Success · Failure · Partial Failure · Hold · Go for Launch · In Flight · TBC · TBD

statuses = ["Success","Partial Failure","Failure","Hold"]
→ 4 options distinguishing result levels
🤖
AI_TECH_MILESTONE — AI Technology Milestone
Chatbot Arena · by provider or by model
Oracle Auto
mode = top_provider_at_date

On the specified date, which company the top Chatbot Arena model belongs to; that company's option wins. Choices: Anthropic · OpenAI · Google · Meta · DeepSeek · xAI · Mistral · Cohere · Alibaba · 01.AI · Other

snapshot_iso = "2026-12-31T00:00:00Z"
providers = ["Anthropic","OpenAI","Google","DeepSeek","Other"]
mode = top_model_at_date

Predict which specific model will reach the top; you may enter the name of a model not yet released.

models = ["GPT-5","Claude 4 Opus","Gemini 3 Ultra","DeepSeek-V4","Other"]
🎬
BOX_OFFICE — Box Office & Rating
TMDB v3 · revenue threshold / buckets / TMDB rating
Oracle Auto
mode = revenue_threshold

Box office (USD) against a threshold or ranges; the option the actual box office falls into wins.

movie = "Avatar 3", revenue_threshold_usd = "1000000000"
A: Avatar 3 revenue < 1B · B: revenue ≥ 1B
mode = revenue_buckets
revenue_buckets_usd = ["500000000","1000000000","2000000000"]
→ <500M / [500M,1B) / [1B,2B) / ≥2B
mode = rating_threshold

TMDB user rating (0–10) compared against a threshold; two options correspond to rating above / below respectively.

rating_threshold = "7.5"
A: Avatar 3 TMDB rating < 7.5 · B: ≥ 7.5