World Cup Liquidity Rewards
How Outcome rewards two-sided liquidity and trading across the World Cup champion market and every World Cup match market.
This technical reference explains how rewards are scored and paid so makers and takers can reason about the program and update their strategies with confidence.
The program runs from the opening match on June 11 through the final on July 19. It has two independent reward programs:
- The champion market, covering the single "2026 World Cup champion?" market for the full tournament.
- The match markets, covering every World Cup match, with rewards published per match each day.
Both programs share the same core philosophy and building blocks. They differ in budget allocation and a small number of scoring parameters. Rewards are paid in USDC on Hyperliquid. All trading takes place on Outcome.xyz, and reward computation infrastructure is operated by Monarch.
Core Philosophy
The program pays for liquidity that is genuinely useful to traders: deep, two-sided depth posted close to fair value, with more reward weight directed to the markets and moments that need liquidity most. It stays simple enough that makers can reason about it and continuously adjust.
Three ideas apply across the program:
- Near fair value: Only orders inside a scored band around the current mid earn, and orders closer to the mid earn more.
- Two-sided: Useful depth on bids and asks is scored, and two-sided quotes receive a multiplier.
- Useful: Quotes that actually get filled earn an additional reward, and a smaller share is set aside for takers who use that liquidity.
Shared Concepts
Settlement and Price Convention
A YES contract settles at 1.00 if the outcome occurs and 0.00 if it does not. Order prices range from 0 to 1, a price in this range is equivalent to the implied probability, where one cent equals one percentage point of probability. e.g. 56 cents = 56% implied probability.
Hyperliquid Mid
hyperliquid_mid is the mid price of the market's order book on Hyperliquid. It is used for distance scoring, quote depth scoring, maker fill scoring, taker fill scoring, and probability-weighted reward scoring.
Reward Split
Within each reward budget, the same split applies:
| Component | Share | What it pays for |
|---|---|---|
| Quote rewards | 50% | Sustained displayed depth near fair value. |
| Maker fill rewards | 40% | Maker-side fills, proving useful liquidity. |
| Taker fill rewards | 10% | Taker-side fills, to bootstrap real usage. |
Maker fill rewards pay the execution of resting orders. Combined with quote rewards, the large majority of every budget flows to liquidity providers, with a smaller taker incentive on top.
Builder Code Eligibility
Only orders and trades placed on Outcome.xyz are eligible for rewards. Eligible activity must use the Outcomexyz builder code with the addresses attached to all orders:
0xab5dbc057628bc18523c4cdfc0e1e2ebdbecb704There is currently no additional fee for using the builder code. This keeps attribution simple and makes reward accounting auditable without adding extra trading cost.
Scoring Data
Quote scoring is calculated by recording the live orderbook during the incentivized period. This score is summed up individually for each maker over every block where the scoring criteria relative to that block's mid price is applied.
Quote Depth Scoring
Quote rewards are based on scored bid depth and scored ask depth. One-sided liquidity can score, but balanced two-sided liquidity earns more.
A market block only scores if the maker has at least 50 USD of raw displayed bid-plus-ask order notional inside the scored band, before distance, time, live, two-sided, or probability multipliers:
raw_bid_notional_usd + raw_ask_notional_usd >= 50 USDEach reward program defines how side scores, live multipliers, and the two-sided multiplier are applied. The two-sided multiplier is evaluated independently for every market a maker quotes. Balanced liquidity in one market does not improve the score in another.
Reward Program 1: Champion Market
Market Structure
"2026 World Cup champion?" is a multi-outcome market. The program scores each team's selected YES winner book once. The scored book is the outcome YES-frame book: Monarch reconstructs the selected YES child plus its sibling NO placement stream, mirrors sibling prices as 1 - price, flips bid/ask, and scores the merged liquidity once under the selected YES child. NO book scoring is not a separate reward surface, but NO-placed liquidity and fills on the selected sibling can contribute once after normalization.
Reward Budget
daily_pool = 1,000 USD
reward_period = 1 day
quote_reward_pool = 50%
maker_fill_pool = 40%
taker_fill_pool = 10%
payout_method = pro-rata by probability-weighted scoreThere is one shared daily pool for the full champion campaign and no fixed budget per team.
Team Eligibility
Eligibility is set once per reward day using a blended mid. The blended mid is only used for daily eligibility, not intraday scoring. The eligible team list is published before the start of each reward day, targeted for 09:00 UTC, on the Outcome frontend and via Monarch's API.
eligibility_mid = internal blended mid
team is day-eligible if eligibility_mid >= 1.00% and eligibility_mid <= 99.00%The day-start list avoids constant eligibility churn during the day. If a team is eliminated, scoring for that team stops immediately.
Scoreable Blocks
During the day, quote depth, maker fills, and taker fills only score in blocks where the Hyperliquid mid stays inside the scoring thresholds:
block is scoreable if current_hyperliquid_mid >= 1.00% and current_hyperliquid_mid <= 99.00%If a team starts above 1.00% but the Hyperliquid mid falls below it, blocks below 1.00% score zero, and scoring resumes if the mid moves back above 1.00%. The same applies symmetrically at 99.00%. Eliminated teams stop scoring immediately.
Distance Multiplier
The champion program uses a fixed 3.00 cent distance curve. Orders only score inside the 1.00% to 99.00% rewardable range.
distance_cents = abs(order_price - hyperliquid_mid) * 100
max_distance = 0.03
max_distance_cents = 3.00
lower_scored_bound = max(0.01, hyperliquid_mid - max_distance)
upper_scored_bound = min(0.99, hyperliquid_mid + max_distance)
if lower_scored_bound <= order_price <= upper_scored_bound:
distance_multiplier = ((3 - distance_cents) / 1.5) ^ 2
else:
distance_multiplier = 0Orders outside the scored band receive zero score. The fixed curve keeps the same multiplier across all markets.
Worked cutoffs:
| Hyperliquid mid | Max distance | Scored band |
|---|---|---|
| 16.00% | 3.00 cents | 13.00% to 19.00% |
| 1.10% | 3.00 cents | 1.00% to 4.10% |
| 98.50% | 3.00 cents | 95.50% to 99.00% |
Quote Depth Score
For each maker, team, and block:
raw_bid_notional_usd = sum(bid_order_notional_usd inside the scored band)
raw_ask_notional_usd = sum(ask_order_notional_usd inside the scored band)
raw_in_band_notional_usd = raw_bid_notional_usd + raw_ask_notional_usd
bid_side_score = sum(bid_order_notional_usd * distance_multiplier)
ask_side_score = sum(ask_order_notional_usd * distance_multiplier)
depth_score = bid_side_score + ask_side_score
if max(bid_side_score, ask_side_score) > 0:
balance_ratio = min(bid_side_score, ask_side_score) / max(bid_side_score, ask_side_score)
else:
balance_ratio = 0
two_sided_multiplier = 1 + 2 * balance_ratio
if raw_in_band_notional_usd >= 50:
team_block_score = depth_score * two_sided_multiplier
else:
team_block_score = 0The multiplier ranges from 1.00x for one-sided liquidity to 3.00x for fully balanced two-sided liquidity.
Probability-Weighted Scoring
At the end of the daily reward period, each team's average daily Hyperliquid mid is converted into an adjusted probability weight, with a 2% minimum applied before normalization:
daily_mean_hyperliquid_mid = average hyperliquid_mid across valid blocks for the team
adjusted_probability_weight = max(0.02, daily_mean_hyperliquid_mid)
normalization_total = sum(adjusted_probability_weight across eligible teams)
team_score_weightage = adjusted_probability_weight / normalization_total
final_team_block_score = team_block_score * team_score_weightageReward weight follows the market's own probability distribution, so attention flows to the contenders, while the 2% minimum keeps eligible lower-probability teams worth quoting. Adjusted probability weights can sum to more than 100% before normalization, but team_score_weightage is the actual normalized weight and always sums to 1.00 across eligible teams.
We publish the eligible team list each day. Example weightings may be published alongside it for reference; those figures are illustrative and are not a guaranteed per-team budget.
Champion Rewards
Quote reward, per maker:
maker_quote_score = sum(final_team_block_score across eligible teams and blocks)
maker_quote_reward =
quote_reward_pool * daily_pool * maker_quote_score / total_maker_quote_scoreMaker fill reward, per maker-side fill on an eligible, non-eliminated team while the Hyperliquid mid is inside the scoring thresholds and the builder code is used:
maker_fill_score = maker_fill_notional_usd * team_score_weightage
maker_fill_reward =
maker_fill_pool * daily_pool * maker_fill_score / total_maker_fill_scoreTaker fill reward, per taker-side fill under the same conditions:
taker_fill_score = taker_fill_notional_usd * team_score_weightage
taker_fill_reward =
taker_fill_pool * daily_pool * taker_fill_score / total_taker_fill_scoreFinal payout, per wallet:
total_reward = maker_quote_reward + maker_fill_reward + taker_fill_rewardReward Program 2: Match Markets
Market Structure
Daily match campaigns apply to all World Cup match markets for that reward day. For each match, the program scores the mutually exclusive YES outcome books:
Group-stage matches score three YES books:
Team 1 wins YES
Team 2 wins YES
Draw YESKnockout matches score one selected YES-frame book. The sibling NO placement stream is normalized into that book before scoring, but NO books are not scored as separate reward surfaces:
Team 1 wins/progresses YES (equivalent to Team 2 loses/knocked out)Reward Budget
For each match, Monarch publishes the match list, reward amount, scheduled kickoff time, and incentive window at the 09:00 UTC update before the incentive window begins.
reward_period = match incentive window
quote_reward_pool = 50%
maker_fill_pool = 40%
taker_fill_pool = 10%
payout_method = pro-rata by scoreMatch reward amounts scale with tournament stage:
| Stage | Reward amount |
|---|---|
| Group stage | 100 USD per match |
| Round of 32 | 200 USD per match |
| Round of 16 | 400 USD per match |
| Quarter finals | 600 USD per match |
| Semi finals | 1,000 USD per match |
| Third place | 600 USD for the match |
| Final | 2,000 USD for the match |
The match reward is split equally across its scored YES outcomes, so the program buys liquidity across the full match surface:
scored_outcome_count = number of scored YES outcomes for the match
outcome_reward_amount = match_reward_amount / scored_outcome_count
outcome_quote_pool = 50% * outcome_reward_amount
outcome_maker_fill_pool = 40% * outcome_reward_amount
outcome_taker_fill_pool = 10% * outcome_reward_amountIncentive Window
incentive_start_time = scheduled_kickoff_time - 24 hours
incentive_end_time = final whistle, or when penalties are resolved if the match goes to penaltiesOrders and trades only score inside the match incentive window. This gives makers time to build pre-match liquidity while keeping rewards focused on markets close enough to kickoff to matter.
The stored match configuration includes the tournament stage for reward setup, but the public daily-matches API does not expose stage. The public 09:00 UTC match response includes the match id, reward amount, scheduled kickoff time, incentive start time, incentive end rule, status, live multiplier, and scored outcomes.
Scoreable Blocks
A block scores only where the market can support useful trading and the Hyperliquid mid is inside the scoring thresholds:
block is inside the match incentive window
market is active
market is not resolved
hyperliquid_mid is available
current_hyperliquid_mid >= 1.00%
current_hyperliquid_mid <= 99.00%Blocks before the start time or after the end time score zero. If the mid leaves the 1.00% to 99.00% band, those blocks score zero and resume when it returns. If a market is paused, halted, cancelled, stale, or missing a reliable Hyperliquid mid, those blocks score zero. If a market resolves or becomes impossible to trade normally, scoring stops immediately.
Live Match Multiplier
Liquidity and fills during the live match receive a 3x multiplier, directing rewards toward the period when match markets need liquidity most:
if the match is live:
live_multiplier = 3
else:
live_multiplier = 1The live window runs from the kickoff whistle to the final whistle, or until penalties are resolved. It does not apply before kickoff, after the match ends, while the market is paused or halted, or when normal live trading is not supported.
Distance Multiplier
Match markets move quickly, so the program uses a fixed 5.00 cent cutoff with a curve that still pays more for liquidity closer to fair value:
distance_cents = abs(order_price - hyperliquid_mid) * 100
max_distance_cents = 5.00
if distance_cents <= max_distance_cents:
distance_multiplier = ((5 - distance_cents) / 2.5) ^ 2
else:
distance_multiplier = 0An order at the mid earns a multiplier of 4x, falling to 0 at exactly 5.00 cents away. Orders more than 5.00 cents from the mid score zero.
Quote Depth Score
For each maker, match, outcome, and block:
raw_bid_notional_usd = sum(bid_order_notional_usd inside the scored band)
raw_ask_notional_usd = sum(ask_order_notional_usd inside the scored band)
raw_in_band_notional_usd = raw_bid_notional_usd + raw_ask_notional_usd
base_bid_side_score = sum(bid_order_notional_usd * distance_multiplier)
base_ask_side_score = sum(ask_order_notional_usd * distance_multiplier)
bid_side_score = base_bid_side_score * live_multiplier
ask_side_score = base_ask_side_score * live_multiplier
depth_score = bid_side_score + ask_side_score
if max(bid_side_score, ask_side_score) > 0:
balance_ratio = min(bid_side_score, ask_side_score) / max(bid_side_score, ask_side_score)
else:
balance_ratio = 0
two_sided_multiplier = 1 + 2 * balance_ratio
if raw_in_band_notional_usd >= 50:
match_block_score = depth_score * two_sided_multiplier
else:
match_block_score = 0Match Rewards
Quote reward, per maker, summed over scored outcomes:
maker_outcome_quote_score = sum(match_block_score across eligible blocks)
maker_outcome_quote_reward =
outcome_quote_pool * maker_outcome_quote_score / total_maker_outcome_quote_score
maker_quote_reward = sum(maker_outcome_quote_reward across matches and scored outcomes)Maker fill reward, per maker-side fill on a scored outcome under the block conditions and builder code:
maker_outcome_fill_score = maker_fill_notional_usd * live_multiplier
maker_outcome_fill_reward =
outcome_maker_fill_pool * maker_outcome_fill_score / total_maker_outcome_fill_score
maker_fill_reward = sum(maker_outcome_fill_reward across matches and scored outcomes)Taker fill reward, per taker-side fill under the same conditions:
taker_outcome_fill_score = taker_fill_notional_usd * live_multiplier
taker_outcome_fill_reward =
outcome_taker_fill_pool * taker_outcome_fill_score / total_taker_outcome_fill_score
taker_fill_reward = sum(taker_outcome_fill_reward across matches and scored outcomes)Final payout, per wallet:
total_reward = maker_quote_reward + maker_fill_reward + taker_fill_rewardExclusions
Across both programs, the following do not score:
- Markets that are paused, halted, cancelled, stale, or resolved.
- Blocks outside the eligible period: the reward day for the champion market, or the incentive window for matches.
- Blocks without a reliable Hyperliquid mid.
- Blocks where the Hyperliquid mid is below 1.00% or above 99.00%.
- Orders outside the scored band: 3.00 cents for the champion market, 5.00 cents for matches.
- Teams that were not eligible at reward-day start, and eliminated teams in the champion market.
- NO books as separate reward surfaces; NO-placed liquidity and fills only score once when they belong to the selected sibling and are normalized into the selected YES-frame book.
- Orders or trades that do not use the
@Outcomexyzbuilder code. - Self-trades, related-wallet churn, wash trading, and circular volume.
These exclusions remove the most obvious ways to be paid for liquidity that is stale, duplicated, fake, unattributable, or not useful.
Payout and Settlement
Rewards are paid in USDC on Hyperliquid, pro-rata within each reward pool, based on each wallet's share of scored activity. There are no fixed per-wallet caps. The champion market settles each day; match rewards settle per incentive window.
Quick Reference
| Item | Champion market | Match markets |
|---|---|---|
| Scope | One market, full tournament, eligible teams published daily | Every match, published daily |
| Reward period | 1 day | Match incentive window |
| Budget | 1,000 USD per day | 100 to 2,000 USD per match by stage |
| Split | 50 / 40 / 10 | 50 / 40 / 10 |
| Scored books | Each team's YES book | Mutually exclusive YES books |
| Distance cutoff | Fixed 3.00 cents | Fixed 5.00 cents |
| At-mid multiplier | 4.00x | 4.00x |
| Live multiplier | None | 3x during live play |
| Weighting | Probability-weighted, 2% min weight, normalized | Equal split across scored outcomes |
| Scoring thresholds | 1.00% to 99.00% | 1.00% to 99.00% |
| Minimum depth | 50 USD raw in-band bid+ask notional | 50 USD raw in-band bid+ask notional |
| Two-sided multiplier | 1.00x to 3.00x | 1.00x to 3.00x |
