Skip to content
Crifine

Measurement method

The method is the product. A number nobody can reproduce is a marketing claim.

These are commitments, not aspirations. Each one is enforced by the response shape: if a result cannot state its size, its window and its source, it is not published.

  1. Observed, not modeled. Estimates derive from recorded depth snapshots. Where a modeled component is unavoidable, it is labeled as such in the response.
  2. Size is always explicit. There is no *the* fill price, only a fill price *for a size*. Every result states the size it was computed for.
  3. The observation window is disclosed. as_of and days_observed appear on every result.
  4. The depth source is disclosed. Which pools, which venues, which snapshot cadence.
  5. Stress over average. Headline risk fields report the worst observed condition in the window, not the mean.
  6. Verification is keyless. evidence_url resolves for anyone, with no account.
  7. Estimates are scored against outcomes. Every published estimate is retained and compared to realized fills where observable.

What Crifine does not claim

  • It does not predict price. It measures the cost of acting on a price.
  • It does not model MEV, sandwich exposure or adversarial reordering in v1. Those are execution-layer risks stacked on top of depth risk, and conflating them would make the core number less honest, not more complete.
  • It does not guarantee a fill. It reports what observed depth implies, with the window stated.

The ladder walk

For a requested size, each ladder band is filled in turn and its slippage weighted by the amount taken from it. The volume-weighted average is applied to the oracle price to produce realized_price_est.

The calculation, in full
let remaining = sizeUsd;
let weightedBps = 0;
let filled = 0;

for (const level of ladder) {
  if (remaining <= 0) break;
  const take = Math.min(remaining, level.usd);
  weightedBps += take * level.bps;
  filled += take;
  remaining -= take;
}

// Past the last observed band the book is not merely thin, it is unmeasured.
// The remainder is charged at a penalty rate and the result is flagged rather
// than extrapolated — an estimate past the edge of the data is a guess.
const exceedsBook = remaining > 0;
if (exceedsBook) weightedBps += remaining * TAIL_PENALTY_BPS;

const slippageBps = (weightedBps / sizeUsd) * sessionPenalty;
const realizedPriceEst = oraclePrice * (1 - slippageBps / 10_000);

The session penalty

When the underlying market is closed, the observed book is not the book that would absorb the trade — the participants who would have quoted against it have gone home. RWA results apply a session penalty to the walked slippage, and market_open: false is always present so you can strip it back out and reason about the raw ladder yourself.

Why report the worst depth instead of the average?
Because the average is a description of the days you did not need us. A depth series is valuable in proportion to how many stress events it contains, and a consumer paying to avoid a cascade is asking about the tail, not the middle.