Prediction markets
Creating a market
Which questions can be asked, which currencies can be staked, what creation costs and who puts up the opening stakes.
Status#
PredictionMarketFactory.createMarket charges the fee, deploys the market clone, registers its question with LaunchOutcomeOracle and posts the opening stakes, all in one transaction.
Which questions can be asked#
The oracle checks a question at registration, so a market that cannot be settled is never created. Only metrics a staker cannot cheaply move inside the settlement window are accepted.
| Metric | Subject | Condition |
|---|---|---|
GRADUATED | A launch token | Not a dev launch |
CURVE_COMPLETE | A launch token | Not a dev launch |
CREATOR_GRADUATED_COUNT | A creator | The creator has indexed launches |
SUPPLY_BURNED | A launch token | Graduated launches only |
CURVE_TRADE_FEES_WEI | A launch token | ETH launches only |
PROTOCOL_FEES_METERED_WEI | ProtocolFeeSplitter | The splitter the factory pays |
| Question | Refusal |
|---|---|
| Net raised, tokens sold, progress, curve FDV, creator tier, creator launch count | MetricNotSettleable |
| A comparison with only one possible answer | PredicateIsNotAQuestion |
| An outcome already final at creation | OutcomeAlreadyLocked |
| A deadline more than 10 years out | DeadlineTooFar |
| A settlement window outside 15 minutes – 7 days | SettlementWindowOutOfRange |
Comparators: EQ, NEQ, GT, GTE, LT, LTE. A window left at zero takes the factory’s default, 6 hours. Ids and reads: Prediction markets metrics.
Listing a settlement currency#
A graduated Hood launch token can become a settlement currency through SettlementRegistry’s listing gate. Anyone may propose it, once, by paying the listing fee through ListingFeeDesk.payAndPropose.
| Requirement | Production value |
|---|---|
| Launched here and graduated | Issued by the launch factory, in its locked pool |
| Held valuation | Minimum FDV across the trailing 7 days of PoolMetrics samples at or above $100,000,000 |
| Pool buy volume | At or above the bar recorded for the launch’s raise currency at launch; 10,000 ETH for an unstamped ETH launch |
| Listing fee | $5,000, paid in the token itself, once per token |
| Notice before activation | 7 days — LISTING_LEAD_TIME, immutable |
| Activation | activateListing, by anyone, after the notice; re-checks only the denylist |
feeTokens = feeUsd × totalSupply / twapFdvUsd // rounded up
twapFdvUsd = time-weighted mean of PoolMetrics' samples over its 7-day windowThe fee goes to FeeConverter, is sold to ETH along the token’s registered route and paid to ProtocolFeeSplitter, where it counts toward the fee meter. A token with no registered route waits in the converter until one exists. A token that fails a bar reverts before any token moves.
The creation fee#
MarketCreationDesk prices every creation from the PricingRules market creation price — $1 on production, converted at the posted price into the market’s own currency — and the factory splits it.
| Leg | Share | Where it goes |
|---|---|---|
| Opening stake on YES | 25% | Into the market, credited to MarketSeeder |
| Opening stake on NO | 25% | Into the market, credited to MarketSeeder |
| Fortune Wheel jackpot | 10% | Accrued on the factory, pushed to the wheel |
| Protocol | 40% | ETH: ProtocolFeeSplitter, metered. ERC-20: PredictTokenFeeDesk → FeeConverter → splitter, metered as the ETH it realised |
A voucher or a discount lowers what the creator pays, never the opening stakes. Fees are the same before and after TGE and are always paid in the market’s currency: no THD, no burn.
The surge, and unsigned creations#
A signed creation pays the base fee plus a per-creator surge. Each creator has a level in ETH value that halves every half-life and steps up after every creation. There is no cap.
| Setting | Production |
|---|---|
| Step per creation | 0.005 ETH of value |
| Half-life | 2 hours |
| Owner-settable range | Step 0 – 1 ETH; half-life 1 minute – 30 days |
| Premium battlepass | Pays half the surge — PREMIUM_SURGE_DISCOUNT_BPS 5,000; the level still steps by the full step |
| Split | 20% jackpot / 80% protocol |
| Signed (the app) | Unsigned (direct calls) | |
|---|---|---|
| Currency | Any listed currency | Native ETH only — UnsignedMarketMustBeNative |
| Charge | Base fee plus surge | A flat 0.1 ETH |
| Split | Base 25 / 25 / 10 / 40; surge 20 / 80 | The base-price part 25 / 25 / 10 / 40; the rest to the protocol |
| Voucher | Allowed, base fee only | Refused — UnsignedMarketCannotUseVoucher |
Signed creations verify against the launchpad’s LaunchAttestor. Markets carry no referrer. ETH attached above the amount owed is refunded in the same transaction; an ERC-20 fee must arrive in full (CreationFeeShortfall).
Opening stakes#
Every market in a priced currency opens with an equal opening stake on YES and NO — 25% of the base price each — credited to MarketSeeder. Both pots are non-empty from the first block, so the market always has a counterparty.
| Function | Who | Effect |
|---|---|---|
fundSeed | The factory | Tops up the seeds when a voucher or discount lowered the fee |
sweep(markets) | Anyone | Claims the seeder’s position in each settled market |
withdraw(currency) | Anyone | Pays everything above the buffer to the protocol treasury, read live and checked on TreasuryRegistry |
The buffer is 100 markets’ worth of opening stakes per currency (BUFFER_MARKETS). A seeder too short to top up a discounted creation refuses the market rather than opening it thin. The seeder has no owner, no pause and no setter.
Featured markets#
A creator may buy a featured placement. It is charged at settlement as a share of the pot, on top of the protocol fee, and paid to the marketing treasury — never metered. A voided or one-sided market pays nothing.
| Tier | Carousel (5 slots) | Standard (20 slots) |
|---|---|---|
| 1 · common | 50 bps | 25 bps |
| 2 · uncommon | 100 bps | 50 bps |
| 3 · rare | 150 bps | 75 bps |
| 4 · epic | 200 bps | 100 bps |
| 5 · legendary | 250 bps | 125 bps |
| Rule | Value |
|---|---|
| Board on sale | The carousel until full, then the standard board; never both |
| Longest run | 30 days to the deadline — FeaturedRunTooLong |
| Slot frees | When the market resolves or its settlement window closes |