Skip to content

The algo oracle

Every algo on pnl.xyz publishes a cumulative return curve. That curve is an oracle: a paper account the platform runs against live order books, sized the same way for every algo, so two curves differ because the strategies differ and for no other reason.

It is deliberately not a model of anybody’s account — including its deployer’s. Your account nets across every algo you hold, applies your own multiplier and carries your own margin. The oracle answers a narrower question: what does this strategy do, per unit of capital, against real depth?

Fills walk the live order book rather than assuming a mid. A strategy that looks profitable on closing prices and evaporates against actual depth shows that here, which is the whole reason the curve is walked rather than computed.

Only mainnet depth counts. A testnet book is thin and largely market-made by the venue itself, so walking one measures a fiction — and once a curve is drawn, the two are indistinguishable.

The oracle always deploys a $10,000 reference notional.

That number is fixed across the platform on purpose. An algo measured at $1m and one measured at $10k are not describing the same thing: the first pays materially more slippage and would show a worse curve for an identical signal. Holding the size constant makes the difference between two curves a difference between two strategies.

$10,000 is large enough that walking the book is a real measurement rather than a rounding error against the top level, and small enough to clear on every market this platform lists — including thin ones, where a reference that could not fill would report a capacity limit as a strategy failure.

Profit and loss are absorbed by a notional cash buffer that never runs out and never grows. The position is always sized off the reference, never off what the algo has made so far.

This matters more than it sounds. A compounding reference measures a successful algo at ever-larger size and charges its later returns for its earlier success — so two algos running identical signals would publish different curves purely because one started earlier. The oracle exists to be comparable, and a comparison that depends on start date is not one.

An oracle has no meaningful trading volume: it is whatever notional we chose to pretend to trade, so a larger reference would “prove” a busier algo.

What is published instead is turnover — traded notional divided by the reference size. “520×” means the algo turned over its own size 520 times over the period. That is comparable across algos, and it is the number the fee arithmetic already uses, since every basis point costs turnover times the rate.

With an infinite buffer the reference account cannot be closed out, and that is correct rather than a simplification.

Whether you are liquidated depends on the multiplier you chose, the rest of your basket, and the margin in your own venue account. None of those are properties of the algo. The oracle publishes the return stream at the reference exposure; how much of it you carry is a separate decision, and the platform bounds that separately through the leverage cap each listing earns.

Signals move on bars; value moves continuously

Section titled “Signals move on bars; value moves continuously”

The strategy graph is evaluated on closed 15-minute bars. A z-score over a partial bar is not an approximation of the real one — it is a different number, drawn from a distribution the strategy never intended — so a target exposure only changes when a bar closes.

What the position is worth changes with every tick, and the oracle marks it continuously against the live book. So the curve moves between bars even though the strategy has not changed its mind.

Two consequences worth knowing:

Marks use the mid; fills walk the book. Valuing a position at what it would fetch if liquidated right now would make the curve jump with the spread, so a widening book would read as a loss. The mid is what the position is worth; the book is what it would trade at.

The published statistics stay on the bar cadence. Sharpe and volatility are annualised from the interval they are measured over, so computing them from one-second marks would produce a different number from the one the launch gate approved — and the gate’s number is the one that was promised. The fast marks are what you watch; the bar-cadence statistics are what was tested.

Why this is cheap enough to run for everything

Section titled “Why this is cheap enough to run for everything”

One book subscription per market serves every algo that trades it — around thirty subscriptions would cover a hundred algos. Marking them is arithmetic, not network.

Execution is the opposite: every user’s account needs its own orders, its own rate limits and its own key, which is why that side scales horizontally and this side does not. The oracle is a measurement, not anybody’s position, and measurements fan out for free.

Your realised return will differ from every curve you are holding, and the gap is not an error:

  • Netting. Two algos that disagree leave your account holding the difference, which is cheaper and is a different position than either curve describes.
  • Size. You are not trading $10,000, and your slippage is not the reference’s.
  • Timing. The curve runs from the algo’s launch; you bought in on some other day, at some other size.
  • Fees. The builder fee depends on your basket’s turnover, not the algo’s.

See Fees and attribution for the arithmetic of how an account’s P&L is divided among the algos that caused it.