Skip to content
Crifine

Method v1

The method is the product

A number nobody can reproduce is a marketing claim. These are commitments, not aspirations — each is enforced by the response shape, because a result that cannot state its size, its window and its source is not published.

Seven commitments

  1. 01

    Observed, not modeled

    Estimates derive from recorded depth snapshots. Where a modeled component is unavoidable, it is labeled as such in the response.

  2. 02

    Size is always explicit

    There is no such thing as the fill price. There is a fill price for a size. Every result states the size it was computed for, and size is a required parameter with no default.

  3. 03

    The observation window is disclosed

    `as_of` and `days_observed` appear on every result. A seven-day window is a weaker claim than a two-hundred-day one, and you are entitled to know which you got.

  4. 04

    The depth source is disclosed

    Which pools, which venues, which snapshot cadence — on the evidence page for every published number.

  5. 05

    Stress over average

    Headline risk fields report the worst observed condition in the window, not the mean. An average is a description of the days you did not need us.

  6. 06

    Verification is keyless

    Every result carries an `evidence_url` that resolves for anyone, with no account, permanently.

  7. 07

    Estimates are scored against outcomes

    Every published estimate is retained and compared to realized fills where observable. The error distribution is published, tail included.

What Crifine does not claim

The limits are stated as plainly as the capabilities. A measurement product that is vague about its own boundaries is asking for exactly the trust it says nobody should extend.

  • 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

A depth ladder buckets resting liquidity by distance from the oracle price. For a requested size, each 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.

let remaining = sizeUsd;
let weightedBps = 0;

for (const level of ladder) {
  if (remaining <= 0) break;
  const take = Math.min(remaining, level.usd);
  weightedBps += take * level.bps;
  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.
if (remaining > 0) 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 is always present so you can strip it back out and reason about the raw ladder yourself.

Versioning

Every result carries method_version. When the method changes, old versions stay resolvable — an estimate published under v1 is still checkable against the v1 rules after v2 ships. Re-scoring old results under a new method would quietly rewrite the accuracy record, which is the one thing this document exists to prevent.

Continuous depth recording began August 22, 2026. The full field reference lives in the documentation.