How Prices Form

Sentiment Pricing

Prices on KangarooDeFi are AMM-derived demand signals, not oracle-set probabilities. This page explains the constant-product model, how sentiment shares are computed, and what manipulation resistance looks like.

TradersResearchersDevelopers
Oracle-Free

No external data feed. Markets close on a schedule and archive final sentiment — no oracle dependency, ever.

Dual Liquidity

Virtual KUSD seeds equal initial depth. Backed KUSD from real deposits defines actual exit capacity. The two are always tracked separately.

Hardened Risk Controls

25% max price impact, 50% virtual-seed buy cap, and optional trade cooldowns bound single-actor displacement on-chain.

Constant-Product AMM

Each answer pool is a V2-style pair (KUSD × AnswerToken) governed by the invariant x · y = k. The marginal price of the answer token is p = x / y (KUSD per token).

When you buy Δx KUSD worth of answer tokens, creator/protocol/platform buy fees are 0%, but the V2-style AMM retains a 0.3% pool fee. Output is: Δy = y − (x · y) / (x + Δx · 0.997). The price moves nonlinearly as larger buys displace the reserves.

Buy example:
  x (KUSD reserve)      = 1000
  y (token reserve)     = 9000
  p = 1000 / 9000       = 0.111 KUSD/token

  Buy Δx = 100 KUSD (10% of reserve)
  Δy ≈ 818 tokens out
  New x = 1100, new y ≈ 8182
  New p ≈ 0.134 KUSD/token  (+20.7% price impact)

Sentiment Share Calculation

The displayed percentage for answer i is: s_i = p_i / (p_1 + p_2 + ... + p_n) × 100%. All pools start with the same virtual KUSD seed and the same token seed, so all answers begin at equal weight (e.g., 50/50 for a two-answer market).

As participants buy one answer more than others, its reserves shift, its price rises, and its share grows. This is pure demand-weighted sentiment measurement — no external input is required or trusted.

Manipulation Resistance

Three contract-level controls bound single-actor displacement:

  • maxBuyPriceImpactBps = 2500 (25%) — one buy cannot move the price of one answer pool by more than 25%.
  • maxBuyKusdBpsOfVirtualSeed = 5000 (50%) — one buy cannot inject more than 50% of the initial virtual seed into a single answer pool.
  • tradeCooldownSeconds — optional per-market cooldown between successive trades from the same address.

These controls do not eliminate manipulation — they bound it and make it measurable. Because impact limits are explicit protocol parameters, the maximum single-trade price displacement is governance-defined, not dependent on liquidity depth alone.

Equal initial depth

Virtual liquidity ensures all answers start at equal weight. No answer begins with an artificial price advantage. Higher virtual liquidity makes it harder (more expensive) to push any single answer above 70%.

Reading Prices as Signals

A sentiment share above 60% on one answer tells you: more KUSD has flowed into this answer relative to alternatives. It does not tell you that this answer is correct, likely, or even that the crowd understands the question accurately.

Useful reads: watch for rapid price shifts near major events. A sudden 10-point swing in a two-answer market may reflect new information entering the crowd faster than any oracle could capture. That real-time responsiveness is the unique value of on-chain sentiment markets.