What Is Signals v1
Signals v1 is an on-chain prediction market protocol for continuous outcomes. Instead of forcing questions into yes/no buckets, it represents outcomes on a finite tick grid and lets traders buy ranges on that grid. A shared CLMSR curve prices every range, and markets settle once per day with explicit on-chain finality.
Signals v1 treats a continuous outcome as something that can be traded only if two contracts are fixed up front:
- A settlement contract: a deterministic mapping from real-world values to a finite tick grid.
- A pricing contract: a single global curve that assigns a coherent price to every tick and every contiguous range.
Most of the protocol follows from those two contracts. The grid makes settlement objective and removes interpretive edge cases. The curve makes liquidity shared across ranges and makes trade cost depend only on state transitions.
Core objects
Signals v1 can be read as four primitives that show up in every market:
- Outcome grid: a domain divided into ticks of size .
- Range position: a half-open interval with a quantity.
- Shared curve: one CLMSR state that prices every tick and every range.
- Daily finality: a daily settlement tick that locks payouts and opens claims after a delay.
The outcome grid
Every market declares bounds and and a spacing . These values define a finite set of ticks. An observed value maps to a tick by clamping and flooring:
This rule has two implications that show up repeatedly in edge cases:
- Out of range: values below map to tick 0; values at or above map to tick .
- Boundary semantics: adjacent ticks partition the domain; no two ticks claim the same value.
The protocol does not attempt to settle on an infinitely precise number. It settles on a tick index.
Range positions
The traded instrument is a range on the grid. A position specifies:
- a market ID
- a range
- a quantity
After settlement, payout is binary over the interval:
Half-open intervals remove boundary overlap. Two adjacent ranges tile the grid without paying twice on the boundary tick.
Positions are composable. A wider view is a wider range. A more peaked view can be represented as multiple overlapping or adjacent ranges with different quantities. The protocol does not need bespoke instruments for each belief shape.
This composability is easiest to see by treating each tick interval as a basis instrument. If the grid ticks are , then the half-open intervals form a disjoint partition of the domain. A general "histogram payout" can be written as a sum of basis ranges:
where is the payout size assigned to that tick interval. Signals v1 does not implement bespoke payoff functions directly; it implements a small range instrument, and composition is done by holding multiple positions.
Even without using the unit intervals, a small number of overlapping ranges can produce a wide class of shapes. A broad range can express a coarse view, and a narrow range layered on top can express a local concentration. The resulting payout is the sum of the ranges' binary payoffs at the finalized settlement tick.
One curve for every range
Signals v1 does not maintain separate pools per range. One CLMSR curve maintains a pricing state over ticks, and every trade updates that same state.
Tick prices form a normalized distribution:
The price mass of a range is the sum of tick prices in that range:
The cost of buying a range is the change in the CLMSR potential. For quantity on range :
where is the indicator vector for ticks inside .
This is the mechanism-level version of "shared liquidity": the same prices a narrow range and a wide range, so all ranges inherit liquidity from the same state. Precision is priced as concentration on the shared curve, not as a separate pool.
The curve also implies a consistency property that is easy to state at a high level: fee-free cashflow depends only on state changes. If a sequence of trades moves the market through states , then the fee-free cashflow telescopes:
This is the mechanism reason trade splitting does not change the base cost at a fixed final state.
Trading geometry
Execution in Signals v1 is shaped by two explicit degrees of freedom:
- Range width: narrower ranges concentrate mass on fewer ticks.
- Trade size: larger size pushes the shared state further.
Depth scales how sensitive prices are to trades. Higher depth compresses price impact for a given state update. Lower depth makes the same update move prices further along the curve.
Fees are applied after base pricing as an overlay. This yields two comparable quantities for any trade:
- Base price: implied by the curve via the cost-function difference.
- Effective price: base plus fee on buys, base minus fee on sells.
The difference between quoted range price and executed average price is slippage from moving the shared curve. Fees are a separate policy layer on top of that.
A concrete sketch
Consider a market whose domain is with spacing . The range spans 20 ticks. A buy on that range increases the weights of those ticks relative to the rest of the grid. That increases the range's price mass and makes subsequent buys on that range more expensive.
Because the curve is shared, a concentrated buy on a narrow range also changes the state used to price nearby ranges. The market encodes information as a global state update.
Settlement and claims
Markets do not settle continuously. Settlement is a daily finality step that selects one settlement tick and locks payouts to that tick.
Settlement uses a signed pull oracle:
- Signed data is produced off-chain and carried on-chain by any submitter during the sample window.
- The protocol selects a candidate sample using a deterministic closest-to- rule.
- Finalization is an explicit transaction gated by a time window and an authorization layer.
- Claims open only after finalization and a claim delay.
The timeline is expressed by three parameters around the settlement timestamp :
where is the sample window and is the decision window. Claims open at once settlement is finalized.
Settlement finality writes two objects that are easy to reason about:
settlementValue: a fixed-point value derived from the oracle feed.settlementTick: the grid-aligned tick obtained by clamping and aligningsettlementValuetotickSpacing.
Payouts are defined purely in terms of and the half-open interval convention. The claim gate is time-based, but it is also conditional on the finalization transaction being mined. Even if the claim-open timestamp has passed, claims remain closed until the market has been finalized on-chain.
This daily structure turns settlement into a protocol event rather than a social process. Trading ends before finality. Finality fixes one tick. Claims pay out on the fixed tick and the half-open payout rule.
Binary markets as a special case
Binary markets can be represented on the same grid by choosing a domain that has only two meaningful regions. Signals v1 keeps the same instrument and the same curve, but allows the domain to have more structure. A range on a continuous grid is still a binary payout rule over "in the range" and "out of the range"; the difference is that the range can move across a finer settlement surface.
Reference: