Pricing and Skew

MarkIt uses a skew-based dynamic pricing model that adjusts prices based on demand imbalance. When one side gets crowded, it becomes more expensive, and the other side gets cheaper. This page explains the model at an intuitive level, with the full math available for the technically curious.

The Intuition

Imagine a market starts perfectly balanced: YES and NO are both priced at 0.50 USDC. If traders start piling into YES, the protocol responds:

  1. YES price rises — Reflecting higher demand and making it more expensive to follow the crowd

  2. NO price falls — Making the contrarian position cheaper and more attractive

  3. Fees increase on YES — The dynamic fee penalizes crowded-side flow

  4. Fees decrease on NO — Rewarding contrarian flow with lower fees

This feedback loop pushes the market toward balance and ensures prices reflect collective information about the likely outcome.

Worked Example

Market: "Will the Rockets beat the Hornets?"

Scenario
YES Price
NO Price
Spread

Perfectly balanced (equal flow)

0.50

0.51

0.01

Slight YES lean (60% on YES)

0.57

0.44

0.01

Strong YES lean (80% on YES)

0.72

0.30

0.02

Extreme YES lean (near cap)

0.82

0.21

0.03

As skew increases, the spread also widens — LPs earn higher fees when the market is imbalanced, compensating for the increased risk.

Pool-Relative Pricing

One key design choice: MarkIt normalizes imbalance by the pool's total backing, not by total open interest. This means:

  • A 5,000 USDC imbalance in a 10,000 USDC pool moves prices significantly

  • The same 5,000 USDC imbalance in a 100,000 USDC pool barely moves prices

This prevents the first large position from saturating the price curve. Bigger pools absorb larger positions with less price impact.

Piecewise Integration

When you take a large position, you don't get all your tokens at the displayed price. Instead, the contract splits your order into 16 steps. Each step:

  1. Calculates the current mark price

  2. Fills a portion of your order at that price

  3. Updates the liabilities (which shifts the price slightly)

  4. Moves to the next step

This means large positions pay progressively higher prices per token, preventing a single large order from extracting value at a stale price. The trade form shows your effective price — the average across all 16 steps.

Seed Imbalance

Some markets open with a non-50/50 price. The operator can set a seed imbalance that shifts the starting mark price to reflect prior information (like pre-game analytics for NBA markets). For example, a market seeded at 65% YES opens with YES at ~0.65 and NO at ~0.36.

The seed only affects pricing — it does not create any real liabilities or impact solvency calculations.


For the Technically Curious: The Pricing Formula

The mark price is calculated using a capital-aware rational curve:

Where:

  • curveA (default: 0.30) controls the steepness of the curve

  • virtualLiquidity adds damping, equal to the minimum LP threshold

  • All internal math uses 18-decimal fixed-point (WAD)

Dynamic fee formula:

Default parameters: baseFeeBps = 100 (1%), feeK = 400, minFeeBps = 25 (0.25%). At maximum skew, the crowded side pays up to 5% in fees while the contrarian side pays as low as 0.25%.

Last updated