$NTDO | $PMRT markets live on beta now

Keeping Prices Bounded (0-1)

A perpetual market can trade at any price if someone places an order there.

So it’s important to distinguish between:

  • Trade price: what someone can place on the orderbook (not strictly bounded by protocol)

  • Mark / Index price: what drives funding, margin, and settlement mechanics (controllable via HIP-3 oracle ops)

Trove’s goal is:

Keep the mark/index price meaningfully bounded within [0, 1] so the market behaves like a probability.


What HIP-3 lets a deployer control

HIP-3 deployers can update:

  • oraclePxs (oracle/index input)

  • markPxs (mark updates)

  • externalPerpPxs (external reference used to prevent sudden mark deviations)

These are submitted via the HIP-3 setOracle action.

Important operational constraints include:

  • calls must be spaced by at least ~2.5 seconds

  • deployers are expected to update roughly every ~3 seconds even if no changes

  • mark updates are rate-limited/clamped (e.g., 1% step clamps)


Approach for probability markets on HIP-3

Step 1: Keep oracle/index bounded

Define:

  • oraclePx = clamp(p_ref, 0, 1)

This ensures the “fundamental” reference is always within [0, 1].

Step 2: Force mark updates to stay bounded (even if local trading deviates)

Hyperliquid updates mark price using the median of:

  • deployer-provided mark price inputs, and

  • the local mark price (derived from best bid/ask/last trade)

To keep the median bounded, provide two bounded mark price inputs:

  • mark_source_1 = clamp(p_ref, 0, 1)

  • mark_source_2 = clamp(EMA(p_ref), 0, 1)

With two bounded values and one local value:

  • even if local mark prints above 1, the median remains ≤ 1

  • even if local mark prints below 0, the median remains ≥ 0

Step 3: Bound the external reference

Set:

  • externalPerpPx = clamp(EMA(p_ref), 0, 1)

This helps limit sudden deviations and keeps the system anchored.


What this does and does not guarantee

Guarantees (what Trove can make true)

  • oracle/index inputs remain within [0, 1]

  • deployer mark inputs remain within [0, 1]

  • the resulting mark is strongly biased to remain within [0, 1]

Non-guarantees (protocol reality)

  • Someone can still place a limit order at 1.20 and match it if a counterparty accepts.

  • Trove can prevent this in Trove UI, but cannot stop all third-party API usage.


To preserve probability semantics for users:

  • Trove UI should restrict order price input to [0, 1]

  • UI should display price as 0% – 100%

  • UI should clearly label this as a “probability-style perp” with bounded mark/index


Risk parameters

  • Conservative max leverage and margin tables for binary markets

  • Tight open interest caps while liquidity is bootstrapping

  • Funding multipliers calibrated so prolonged divergence becomes expensive

Last updated