Onchain measurement
What it costs to get out of a tokenized stock
Weekend loan-to-value is a function of executable depth, not oracle freshness. A liquidation is an exit, not a valuation. Here is the depth, the cost of using it, and the oracle drift measured against both.
What is left of a 500 bps liquidation bonus on NVDAc once p99 oracle drift is paid. It is negative: the drift alone exceeds the bonus, so no clip clears at any size.
Where the NVDAc book stops. Past this there is no more of the quote asset inside the range that was read, so the book caps capacity rather than the bonus doing it.
Latency windows of six hours or more that are not weekends, across the four tokens with a venue. The feed goes quiet on a Wednesday as readily as a Saturday.
Measured
When the feed is stale, and whether that is a weekend
The reading most people arrive with is that a 24/5 oracle is a weekend problem: markets shut, the feed stops, nothing can be liquidated until Monday. It is the obvious inference. It is not what the windows say.
Every completed window of six hours or more, split by when it fell. Six hours is the bar because a US regular session is six and a half, so it is the shortest gap that cannot be explained by a quiet afternoon.
| Feed | Windows 6h+ | Weekend | Not a weekend | Of those, in a live session |
|---|---|---|---|---|
| AAPLc | 26 | 5 | 21 | 16 |
| GOOGLc | 25 | 6 | 19 | 16 |
| METAc | 25 | 6 | 19 | 11 |
| NVDAc | 18 | 5 | 13 | 8 |
72 of 94 windows across these four are not weekends, and 51 of those 72 overlapped a trading session that was open at the time. Across all 13 feeds, including the nine with no pool, it is 141 of 199.
That distinction decides what a fix would have to be. A weekend problem is fixed by extending hours. A deviation trigger with no off-hours heartbeat is not, because longer sessions do not add a heartbeat.
The thin and clipped flags are deliberately not applied here. Both qualify a divergence, which is measured against a venue. This counts latency, which is a fact about the feed alone, so filtering on the state of the pool beside it would answer a different question.
Measured
Executable depth, by band
Walked from each pool's initialised ticks: every tick in the band is a step change in liquidity, and each sub-range is integrated at its own. Not total value locked, not reported volume. Each figure is the binding side, whichever half of the band runs out first.
| Pool | ±1% | ±2% | ±5% | As of |
|---|---|---|---|---|
| AAPLc | $345,490 | $416,160 | $472,449 | |
| GOOGLc | $288,857 | $357,068 | $442,302 | |
| METAc | $292,105 | $327,396 | $362,269 | |
| NVDAc | $268,552 | $445,933 | $572,208 |
Every book roughly doubles between the first two bands and then adds very little across the next three percent. Liquidity is placed close in and thins out fast, so a clip large enough to matter leaves the dense part of the book almost immediately.
Measured
What an exit costs
The price impact of selling that much of the token, simulated against the tick liquidity actually read, with the pool fee included. This is the number a liquidation bonus has to cover.
| Pool | $100,000 | $250,000 | $500,000 | $1,000,000 | $2,000,000 |
|---|---|---|---|---|---|
| AAPLc | 24 bps | 44 bps | 79 bps | beyond the read | beyond the read |
| GOOGLc | 28 bps | 47 bps | 104 bps | beyond the read | beyond the read |
| METAc | 27 bps | 52 bps | beyond the read | beyond the read | beyond the read |
| NVDAc | 33 bps | 58 bps | 109 bps | beyond the read | beyond the read |
Beyond the read means the simulated sale walked the price down 26% and still had not raised the amount asked for. Past that the cost is withheld rather than extrapolated: an unread tick and a tick with nothing on it look identical to the walk, and guessing between them would report a thin book as a deep one.
Measured
How far the published value drifts before it is corrected
Measured, not taken from the documented update threshold. That trigger fires on the underlying equity price, so off-hours there is no print to deviate from and it does not fire at all.
Each figure is how far an oracle feed moved when it resumed after a latency window: the distance the market had already travelled, revealed at the moment the feed agreed. A liquidator is paid in collateral valued at the published number and sells at the market number, so this distance comes out of the bonus before the book is reached.
| Feed | Windows | p50 | p95 | p99 |
|---|---|---|---|---|
| AAPLc | 27 | 9 bps | 67 bps | 465 bps |
| GOOGLc | 26 | 15 bps | 510 bps | 746 bps |
| METAc | 44 | 9 bps | 86 bps | 88 bps |
| NVDAc | 46 | 14 bps | 128 bps | 627 bps |
The counts are small and the percentiles inherit that. At these sample sizes a p99 is the largest value seen rather than a p99, which is why the denominator sits in the table instead of in a footnote.
Model
The largest position that could be exited profitably
A liquidation pays while the bonus exceeds the cost of getting out:
worth doing while bonus > price impact + gas + oracle drift
For NVDAc, against the book above and the drift band beside it.
The liquidation bonus is the discount a liquidator takes for clearing somebody else's bad position: they take on the collateral below its marked value and keep the difference. Every lending market sets its own, and it is normally readable from that market's contract. None has listed these tokens, so there is no number to read and no honest way to pick one. The table runs a range instead. Read the row matching the bonus you would set.
| Bonus | Oracle drift | Budget for impact | Largest clip | Absorbed in a window |
|---|---|---|---|---|
| 500 bps | p50 / 14 bps | 486 bps | $793,502 | $793,502 |
| 500 bps | p95 / 128 bps | 372 bps | $793,502 | $793,502 |
| 500 bps | p99 / 627 bps | −127 bps | nothing clears | — |
| 750 bps | p50 / 14 bps | 736 bps | $793,502 | $793,502 |
| 750 bps | p95 / 128 bps | 622 bps | $793,502 | $793,502 |
| 750 bps | p99 / 627 bps | 123 bps | $530,288 | $530,288 |
| 1000 bps | p50 / 14 bps | 986 bps | $793,502 | $793,502 |
| 1000 bps | p95 / 128 bps | 872 bps | $793,502 | $793,502 |
| 1000 bps | p99 / 627 bps | 373 bps | $793,502 | $793,502 |
| 1500 bps | p50 / 14 bps | 1486 bps | $793,502 | $793,502 |
| 1500 bps | p95 / 128 bps | 1372 bps | $793,502 | $793,502 |
| 1500 bps | p99 / 627 bps | 873 bps | $793,502 | $793,502 |
Two things read off this table. The clip size stops growing well before the bonus runs out, because the book caps capacity rather than the bonus doing it. And the response window absorbs one clip, not several: each clip starts where the last left the price, so they are charged cumulatively rather than multiplied.
Model
The question in the other direction
A prospective lender does not ask how deep the pool is. They ask how large a market this could carry, and what would have to change. Below: the largest Friday to Monday gap a market of a given size could take before what must be liquidated exceeds what NVDAc absorbs today.
| Collateral | 50% LTV | 60% LTV | 70% LTV | 75% LTV | 80% LTV |
|---|---|---|---|---|---|
| $5,000,000 | 82% | 72% | 62% | 57% | 52% |
| $25,000,000 | 56% | 46% | 36% | 31% | 26% |
| $100,000,000 | 52% | 42% | 32% | 27% | 22% |
Read down a column: the same book carries a smaller shock as the market grows. Read across a row: a lower loan-to-value buys headroom that depth does not have to provide. Capacity used is $793,502, from the 500 bps and p95 row above, at a 50% close factor.
Which reframes the exercise
Nothing in that table goes underwater at a plausible weekend gap. A position at 80% loan-to-value has 20% of headroom, and the widest gap in the range above is smaller than that. So the weekend gap is not what binds. What binds is whether positions already sitting close to their threshold can be exited at all, which is the capacity table above rather than this one.
Measured
A weaker second look at the weekend
The depth series starts when it was built, so its first weekend is its only weekend. Every stored swap also carries the active liquidity at the traded tick, and those reach back across earlier weekends.
| Pool | Weekday trades | Weekend trades | Weekend median vs weekday |
|---|---|---|---|
| AAPLc | 34,568 | 14,105 | 1.5x |
| GOOGLc | 76,266 | 19,645 | 7.8x |
| METAc | 45,479 | 5,009 | 3.1x |
| NVDAc | 116,951 | 26,248 | 2.4x |
This is not executable depth. Active liquidity is what is live inside the current tick range only, and it is weighted by the trades that happened rather than by time. Far more trades happen on weekdays, so the two columns describe different populations and cannot be compared with the depth table above. Offered as a reason to take the direct measurement, not as a finding.
The extreme ratios are an artefact of the denominator rather than a deep weekend book. A median near zero means more than half that pool's weekday trades happened while the price sat in a tick range with almost nothing in it, which says something about weekdays rather than about weekends. Read the direction, not the multiple.
Assumptions
What this assumes, and where it would be wrong
Everything above rests on choices that are defensible and are not the only ones available. They are listed here rather than left for a reader to find, because a model whose weak points have to be discovered is a model nobody can use.
One venue
Depth is the Aerodrome Slipstream pool and nothing else. A liquidator could route to another Base venue, bridge out, or hedge on a centralised venue or a perp. Those routes exist and are not measured here. They are also not atomic: they carry inventory risk across exactly the interval in which the position is underwater, which is the interval this is about. Read these figures as the atomic onchain exit, and therefore as a floor rather than a ceiling.
The book that was actually read
The walk fetches the initialised ticks around the current price, which here spans a 26% fall. An exhausted result means the sale ran the price down that far without filling. It is not a claim that nothing exists beyond it.
Oracle drift charged as a cost, every time
In practice the drift is two-sided: about as often the stale price favours the liquidator. A liquidator who prices it will decline the adverse case, and a declined liquidation is exactly the outcome this is about, so the adverse side is the one that decides feasibility. Anyone modelling expected profit rather than whether a position clears should use the signed distribution instead.
Every borrower at the same loan-to-value
The survivable-gap table treats a whole market as sitting at the stated loan-to-value. Real books hold a distribution, so the true answer depends on how much sits near the threshold, which cannot be read from outside. The single-LTV reading is the conservative one at the top of the range and the optimistic one below it.
Assumed parameters, stated
Close factor 50%, 3 clips inside the response window, and gas charged against a $100,000 reference clip. None of these is readable anywhere, because no market has set them.
Small samples
Roughly three weeks of feed history and days of depth history. The percentiles inherit that, and every table carries its own denominator so the weight of each figure is visible where it is quoted.
What would change the conclusion
If a liquidator can reliably exit off this pool at size, the capacity figures are a floor and the real number is higher. And if the oracle gains an off-hours heartbeat, the drift distribution changes and most of this stops applying. That second one is the question worth putting to the people who publish the feed.
Method
How every number here was produced
Depth is walked from the pool's initialised ticks, each sub-range integrated at its own liquidity. Price impact is the same walk run backwards, with the pool fee charged on the way in. A band or a clip reaching past the ticks actually read is refused rather than answered.
Oracle drift comes from how far each feed moved when it resumed after a latency window. No market calendar, session label or time of day enters it, so it qualifies latency independently rather than restating it.
The market parameters are assumed, and every table runs a range of them. No lending market has listed these tokens, so there is no loan-to-value, liquidation bonus or close factor to read from anywhere. Taking a comparable market's numbers and presenting them as these assets' would be publishing a figure with no source, so the reader supplies their own by reading the row that matches it.
Arithmetic is integer throughout. Everything is reproducible from public chain state on Base. The method is at /methodology.
Withheld
Two numbers deliberately not published
The emissions sensitivity. The figure that would turn a gauge vote into a return calculation is the change in capacity per unit of emissions. One weekend cannot support an emissions-to-depth elasticity. Fitting one would produce the only number here that could not be defended, in front of the readers most able to check it. What is published instead is the change in capacity per unit of depth, which falls out of the book exactly, with the elasticity left as a stated reader input.
The weekend gap distribution. The 99th-percentile Friday close to Monday open move is computed offline from equity history and is not yet done. Until it is, it renders as — and the gap rows above are labelled a sensitivity rather than a probability.