LP education · four nested ranges
“Why split one deposit into four ranges?” Because a wide band averages about 25 days before its first exit on the square law while a tight band takes a bigger share of each trade's fee only while the price is inside it; the nest keeps both, in fixed proportions, each on its own snuggle clock.
The short version
One two-sided deposit becomes four vault positions: 50 % of the value in a band ±6 σ either side of today's price, then 30 %, 15 % and 5 % in bands ±3 σ, ±1.5 σ and ±0.7 σ, each with its own rebalance clock.
σ is the pool's measured daily move, so the same nest comes out wider on a wild pool and narrower on a calm one. Watch the picture: the outer band holds half the money and never leaves range in this run; the three inner bands drift out, wait out their own delay, then snuggle to sit beside the price, and the tight core does it most. Nothing here is a timer or a return: the widths are the deposit page's own arithmetic, the delays are example settings you choose later, and the price path is synthetic.
Illustrative, not a promise.
1 · The bands
Look at the band heights in the picture. Every layer's half-width is the pool's daily move σ times a fixed multiplier: 6.0 for Realized Price, 3.0 for Fibonacci, 1.5 for ATR Volatility and 0.7 for Tight Range. The deposit page measures σ itself when you pick a pool: up to 168 hourly candles (about a week) for the volatile side priced in the other token, log returns between consecutive closes, the sample standard deviation, times √24. It needs at least 24 closes and assumes 8 %/day until it has them (“Measuring volatility — assuming 8%/day”), so σ is last week's history, not a forecast. The names are labels: no Fibonacci retracement or average true range is computed.
For each layer, outermost first, the page rounds k × σ to one decimal, doubles it to a target span, converts that to ticks with ln(1 + span) ÷ ln(1.0001), rounds to the nearest whole tick spacing and clamps between one spacing and about 101 % (7,000 ticks at spacing 200). If a layer lands on or above the layer outside it, it is pulled in to one spacing tighter, so the dolls always nest. The real span is then read back from the ticks, and the band is placed around the tick read just before minting: lower = floor((tick − ticks/2) ÷ spacing) × spacing, upper = lower + ticks, so an odd multiple of the spacing sits half a spacing low.
| Layer | Capital | k × σ = half | Target span | Raw ticks | Snapped | Real span | ±half | Edges if the current tick were 0 |
|---|---|---|---|---|---|---|---|---|
| Realized Price | $500 | 6.0 × 3 = 18.0 % | 36.0 % | 3,075 | 3,000 | 34.98 % | ±16.18 % | −1,600 … +1,400 |
| Fibonacci | $300 | 9.0 % | 18.0 % | 1,655 | 1,600 | 17.35 % | ±8.33 % | −800 … +800 |
| ATR Volatility | $150 | 4.5 % | 9.0 % | 862 | 800 | 8.33 % | ±4.08 % | −400 … +400 |
| Tight Range | $50 | 2.1 % | 4.2 % | 411 | 400 | 4.08 % | ±2.02 % | −200 … +200 |
3,000 > 1,600 > 800 > 400, so the nesting rule changes nothing here. The Realized band is 15 spacings, an odd number, so it sits half a spacing low: −1,600 … +1,400.
The legend under the picture gives the split: 50 %, 30 %, 15 % and 5 % of the deposit's value, outermost first. A Russian Doll is a two-sided deposit with equal value on both legs: type one token and the page fills the other at equal value, and a Max or % fill is capped by the smaller-value leg so both stay fundable. On $1,000 that is $500, $300, $150 and $50, minted as four separate vault positions with four IDs, not one. Most of the money sits in the band that leaves range least; the smallest slice sits in the band that takes the biggest share of each trade's fee while the price is inside it (Fee share), leaves range most, and so snuggles most.
| Pool | Layer | Ticks | Real span | Edges from the current tick |
|---|---|---|---|---|
| σ 2 %/day · spacing 60 | Realized Price | 2,160 | 24.11 % | −1,080 … +1,080 |
| Fibonacci | 1,140 | 12.07 % | −600 … +540 | |
| ATR Volatility | 600 | 6.18 % | −300 … +300 | |
| Tight Range | 300 | 3.05 % | −180 … +120 | |
| σ 2 %/day · spacing 200 | Realized Price | 2,200 | 24.61 % | −1,200 … +1,000 |
| Fibonacci | 1,200 | 12.75 % | −600 … +600 | |
| ATR Volatility | 600 | 6.18 % | −400 … +200 | |
| Tight Range | 200 | 2.02 % | −200 … 0 | |
| σ 0.3 %/day · spacing 200 | Realized Price | 400 | 4.08 % | −200 … +200 |
| Fibonacci | 200 | 2.02 % | −200 … 0 | |
| ATR Volatility | 200 (pulled in) | 2.02 % | −200 … 0 | |
| Tight Range | 200 (pulled in) | 2.02 % | −200 … 0 |
On spacing 60 the nest is 2,160 > 1,140 > 600 > 300, so the rule changes nothing; on spacing 200 the same σ 2 % lands the core on the one-spacing floor. The calm-pool edge case, σ 0.3 %/day on spacing 200, gives 400 / 200 / 200 / 200 ticks: the nesting rule fires on ATR and Tight, the floor wins, and three layers share a width.
σ is a week of history, not a forecast; the same pool measured next week gives a different nest. The docs state the live vault accepts 200 to 20,000 ticks in whole spacings. Illustrative, not a promise.
2 · The clocks
The dots in the picture are snuggles. Nothing in the vault runs on a calendar, and the deposit page sets no delay for a Russian Doll layer: the deposit call carries the range, the amounts, the minimums and a deadline, nothing else. Each layer is an ordinary vault position, so it moves only when the pool's 30-minute average price and the live price are both outside its band, it has stayed out for that position's rebalance delay (anything from 0 seconds to 7 days, set by you), Auto Snuggle is switched on for it, and the keeper, which checks about every 1 to 3 minutes on a best-effort basis and pays the gas, acts. If the average slips back inside before the delay ends (once it has been tracked for at least 5 minutes) the clock resets and nothing moves. The snuggle re-mints the same width single-sided just past the price on the side it exited, using only the token the position now holds; it is never a symmetric re-centre, the position gets a new ID and its fees are collected at that moment. That is why the dolls stop being concentric after the first snuggle, and why a band that re-opens beside a price that keeps running fires the same rule again after the next delay: in the picture the core re-opened 26 times in 30 days on a 6 h delay, six of them in the last two days as the price slid.
‘Monthly, weekly, daily, hourly’ are hints for how often each width tends to leave range and how patient a delay to give it, longest outside and shortest inside. With the square law from Time in range the example widths average about 25 days, 7 days, 1.8 days and 11 hours before their first exit at σ = 3 %/day: about k² days before snapping, a little less after.
| Layer | Square-law first exit, k² days | Same for the snapped width | The label |
|---|---|---|---|
| Realized Price | 36 d | 25.0 d | ‘Monthly’ |
| Fibonacci | 9 d | 7.1 d | ‘Weekly’ |
| ATR Volatility | 2.25 d | 1.78 d (43 h) | ‘Daily’ |
| Tight Range | 0.49 d | 0.44 d (10.7 h) | ‘Hourly’ |
| Hour | Day | Layer | Exited | Price (ticks from the mint tick) | New band (ticks) |
|---|---|---|---|---|---|
| 89 | 3.7 | Tight | up | +303 | −197 … +203 |
| 95 | 4.0 | Tight | up | +513 | +13 … +413 |
| 117 | 4.9 | Tight | up | +485 | −15 … +385 |
| 193 | 8.0 | Tight | up | +401 | −99 … +301 |
| 205 | 8.5 | Tight | up | +311 | −189 … +211 |
| 298 | 12.4 | Tight | down | −516 | −416 … −16 |
| 304 | 12.7 | Tight | down | −653 | −553 … −153 |
| 308 | 12.8 | ATR | down | −652 | −552 … +248 |
| 310 | 12.9 | Tight | down | −827 | −727 … −327 |
| 322 | 13.4 | ATR | down | −797 | −697 … +103 |
| 349 | 14.5 | Tight | down | −902 | −802 … −402 |
| 357 | 14.9 | ATR | down | −910 | −810 … −10 |
| 391 | 16.3 | Tight | down | −1,064 | −964 … −564 |
| 399 | 16.6 | ATR | down | −1,027 | −927 … −127 |
| 403 | 16.8 | Tight | down | −1,176 | −1,076 … −676 |
| 409 | 17.0 | Fibonacci | down | −1,033 | −933 … +667 |
| 467 | 19.5 | Tight | up | −536 | −1,036 … −636 |
| 485 | 20.2 | Tight | up | −463 | −963 … −563 |
| 491 | 20.5 | Tight | up | −300 | −800 … −400 |
| 497 | 20.7 | Tight | up | −218 | −718 … −318 |
| 518 | 21.6 | Tight | up | −130 | −630 … −230 |
| 558 | 23.3 | Tight | up | −15 | −515 … −115 |
| 564 | 23.5 | Tight | up | +315 | −185 … +215 |
| 568 | 23.7 | ATR | up | +302 | −598 … +202 |
| 570 | 23.8 | Tight | up | +312 | −188 … +212 |
| 591 | 24.6 | Tight | down | −414 | −314 … +86 |
| 686 | 28.6 | Tight | down | −626 | −526 … −126 |
| 692 | 28.8 | Tight | down | −665 | −565 … −165 |
| 698 | 29.1 | Tight | down | −665 | −565 … −165 |
| 704 | 29.3 | Tight | down | −686 | −586 … −186 |
| 710 | 29.6 | Tight | down | −772 | −672 … −272 |
| 712 | 29.7 | ATR | down | −911 | −811 … −11 |
| 716 | 29.8 | Tight | down | −772 | −672 … −272 |
| Count | Realized | 0× · example delay 48 h | |||
| Count | Fibonacci | 1× · example delay 24 h | |||
| Count | ATR | 6× · example delay 14 h | |||
| Count | Tight | 26× · example delay 6 h | |||
Demo rules: hourly closes; a band is out when the close is outside it; its clock starts at the first out close and a snuggle fires when the current close is delay hours or more after it; the band re-opens with the same width, near edge 100 ticks (half a spacing) past the price on the side the price came from, as a stand-in for just past the price; its clock restarts at once, so a band beside a price that keeps running re-opens again after the next delay (hours 686 and 692 re-open the same band because the price had not moved). Delays 48 / 24 / 14 / 6 h are example settings. The vault uses the 30-minute average plus the live price and a best-effort keeper.
Synthetic path, hourly closes, example delays. Illustrative, not a promise.
3 · Trade-offs
Three dials move together as a band gets tighter. The average time before the price first leaves it shrinks with the square of the width: (½ ln(1 + span) ÷ σ)² days, about 25 days, 7.1 days, 1.78 days and 0.44 days for the four worked-example spans. The liquidity behind each dollar while the price is inside grows: relative to a full-range position it is 1 ÷ (1 − (1 + span)^−¼), about 13.8×, 25.5×, 50.5× and 100.5× for the same spans, which is why a tighter band takes a bigger share of each trade's fee while it is in (Fee share). And every extra exit is another snuggle that locks in impermanent loss, the gap between holding the tokens and holding the position (Impermanent loss), collects fees and spends gas. The nest is a way of buying all four points on that curve at once, weighted so the calm end holds 50 % of the capital and the busy end only 5 %. The core at 0.7 σ is tighter than the Mad Max preset (0.9 σ) and the outer band at 6 σ is wider than Easygoing (3.5 σ), so the nest spans more than any single preset. Width is the only lever: time in range, concentration and how often the position moves all follow from it. It trades width for hold time; that is the whole claim. Whether a busy layer's fees keep up with its snuggles is a question for each pool (Cover value), not something the split settles.
| Layer | Capital | Span | Avg first exit | Liquidity vs full range | Preset for comparison |
|---|---|---|---|---|---|
| Realized Price | $500 | 34.98 % | 25.0 d | 13.8× | wider than Easygoing 3.5 σ |
| Fibonacci | $300 | 17.35 % | 7.1 d | 25.5× | near Easygoing |
| ATR Volatility | $150 | 8.33 % | 1.78 d | 50.5× | between Mad Max and Best Fit |
| Tight Range | $50 | 4.08 % | 0.44 d | 100.5× | tighter than Mad Max 0.9 σ |
First exit = (½ ln(1 + span) ÷ 0.03)² days; liquidity vs full range = 1 ÷ (1 − (1 + span)^−¼); spans are the snapped widths from section 1. Both are geometry on the width alone.
Square-law and concentration figures are geometry, not fee income; they say nothing about volume or what a snuggle costs on the day. Illustrative, not a promise.
4 · On the deposit page
In step 3 of the deposit page, under Both tokens / One token, pick 🪆 Russian Doll Strategy (sub-line ‘Four nested ranges — widest & calmest outside, tightest & busiest inside’); the step-3 hint changes to ‘Equal value each side, split across 4 ranges’ and step 4 turns from ‘Range & delay’ into ‘Ranges’, drawing the nest as dolls, each with its share, dollar slice, span, cadence word and an indicative APR label (a fixed label on the page, not a measurement and not a promise), plus the line ‘Widths are sized to this pool's X %/day volatility’. The vault has no batch mint, so Deposit sends four deposit() transactions, outermost first, each simulated, gas-checked and signed by you; the button reads ‘Deposit $1,000 · 4 nested ranges’ and the gas estimate counts the remaining layers plus any approvals. Every layer takes its share of the frozen totals and is centred on the tick read just before minting. Progress is kept in your browser under the chain, account and pool, so a rejected or stalled layer can be resumed: a reload shows ‘Russian Doll in progress: 2 of 4 layers minted — Deposit mints the remaining 2’, a pending hash is checked on chain before continuing, the layers already signed are never re-sent, and switching modes mid-nest asks first (‘Minted layers stay yours’). The deposit carries no delay and switches nothing on: the completion alert (‘Russian Doll deposited — 4 nested positions’) lists each layer with its span and cadence and asks you to set each layer's rebalance clock from the Rangebook.
‘No positions were minted’ means the first layer failed; ‘Russian Doll stopped at <layer>’ means press Deposit again for the rest. Nothing on this page sets a delay or turns Auto Snuggle on.
5 · Setting the clocks
On the Rangebook (the positions page) each layer is its own card with a Range box and a Delay box; the pencil opens the Auto-rebalance strategy dialog for that one position, with Range width (%) as spacing-snapped chips, Rebalance delay in hours (0 seconds to 7 days on chain, quick picks 1, 4, 6, 8, 14, 24 and 48 h), ‘Enable auto-rebalance (snuggle)’, ‘Allow auto-compound’ and Save on-chain, four times, one signature each. The presets already pair a width with a delay: Mad Max 0.9 σ with 6 h, Best Fit 2.2 σ with 14 h, Easygoing 3.5 σ with 24 h. The nest's layers sit near those widths, so the picture borrows the pairings: 6 h for the 0.7 σ core, 14 h for the 1.5 σ band, 24 h for the 3 σ band and 48 h for the 6 σ shell, so the shell shrugs off a two-day excursion while the core follows the price within hours. They are an example, not a default and not a recommendation; the busier you let the core be, the more snuggles it pays for. A change takes effect at the next snuggle, the minted range keeps its width until then, and every snuggle gives the position a new ID and collects its fees at that moment. Once a layer is out of range you can also snuggle it yourself, skipping the delay and paying the gas (not while the vault is paused).
example settings, not defaults
What to watch. While a layer is out of range its Delay box shows the time left and the Auto Snuggle pill counts down; if the 30-minute average slips back inside before the delay ends, the clock resets and nothing moves. On Metrics each of the four positions is its own row with its Unharvested Fees and its Cover Value, fees earned ÷ impermanent loss against the original deposit, which stays pending until that entry basis is known. Expect the Tight Range and ATR rows to churn; read their Cover Value before deciding to keep them, because every snuggle locks in the gap from holding at that moment.
The keeper acts best-effort after the delay; the manual snuggle button skips the delay but you pay the gas. Illustrative, not a promise.
Optional ETH hedge
If the pool holds WETH, each of the four positions shows a Hedge on/off switch on its Rangebook card, off by default, so any or all of the nest's WETH-holding layers can arm it to offset ETH downside on the WETH leg. Today it is a paper (simulated) ETH short: sized at the position's WETH × 50, 75 or 100 %, a queued hedge arms on that layer's next auto snuggle or manual rebalance, a soft stop at about 10 % of the hedge margin flattens the hedge only (you re-arm it by hand), and the paper PnL is tracked with the position. Because the inner dolls snuggle most, they would arm soonest. No live order is placed yet, so it protects nothing today; it lets you watch how a hedge on the WETH leg would have behaved next to each layer. The principle is in Core principles → 9 · Auto Hedge, and the step-by-step hedge walkthrough lets you drag an ETH move and watch the WETH leg, the hedge and the net offset each other.
paper today · no live order
6 · Try it
Enter a deposit, the pool's daily move σ and its tick spacing; the calculator runs the deposit page's own sizing (multiply, round, double, snap, clamp, nest) and gives each layer's dollar slice, ticks, real span, half-width, edges and square-law average first exit. Move σ and watch the whole nest breathe; try σ 0.3 % at spacing 200 to watch the nesting rule fire.
| Layer | k | half % | target span % | raw ticks | snapped ticks | real span % | real half % | $ slice | ≈ first exit |
|---|---|---|---|---|---|---|---|---|---|
| Realized Price | 6.0 | 18.0 | 36.0 | 3,075 | 3,000 | 34.98 | 16.18 | $500.00 | 25.0 days |
| Fibonacci | 3.0 | 9.0 | 18.0 | 1,655 | 1,600 | 17.35 | 8.33 | $300.00 | 7.1 days |
| ATR Volatility | 1.5 | 4.5 | 9.0 | 862 | 800 | 8.33 | 4.08 | $150.00 | 1.8 days |
| Tight Range | 0.7 | 2.1 | 4.2 | 411 | 400 | 4.08 | 2.02 | $50.00 | 10.7 h |
Widths follow the deposit page's code: half-width = k × σ rounded to one decimal (k = 6.0, 3.0, 1.5, 0.7), ticks = round(ln(1 + 2·half) ÷ ln 1.0001 ÷ spacing) × spacing, clamped to one spacing … 101.4 %, then each inner layer forced at least one spacing tighter than the one outside it. First exit uses the square law from Time in range and is an average, not a prediction. The docs state the live vault accepts 200 to 20,000 ticks in whole spacings.
Honest limits
The nest does one thing: it puts most of the deposit where the clock is slowest and a little where the fee share is densest, and it makes you set four clocks instead of one. It does not change what a range is, what a snuggle costs, or what the pool pays. Every number on this page is the deposit page's arithmetic on a synthetic path; your pool's σ, spacing and price will differ, and public deposits are open on the live venues (Robinhood Chain, Base and BNB Chain); see the audit.
Whether the inner layers' fees keep up with their snuggles is exactly the question Cover value asks; run that page's numbers with the Tight layer's width before you trust the core.
What to do with this
Size the nest to the pool, then set four clocks: longest outside, shortest inside.
The deposit page does the sizing; you do the clocks, one Rangebook dialog per layer, and Auto Snuggle stays off until you switch it on. Public deposits are open on the live venues (Robinhood Chain, Base and BNB Chain); see the audit status. Educational content, not financial advice; nothing here promises returns.
Try the Russian Doll on the deposit page →Educational content, not financial advice. Providing liquidity can lose money; nothing here promises returns.