WealthVille
Churn & position sizing·June 2026

The pool the vault could not quit: an hourly exit-and-re-enter loop

~hourly

Churn cadence

±0.2% (11 bins)

Position band

quarantine + adaptive width

Fix

TL;DR

A vault churned the same Meteora DLMM pool roughly every hour: exit for being out of range, then get re-selected by the ranker an hour later, re-enter, drift out, exit again. Two real bugs compounded: a re-entry window fractionally shorter than the tick interval, and a hardcoded 11-bin position width that meant a ±0.2% price band on a fine-grained pool — a range almost designed to fall out of. Every loop cost transaction fees and slippage.

What happened

One pool in a live vault showed a strange rhythm in the automation logs: divest with reason "out of range — better pool exists", then about 62 minutes later a fresh invest into the same pool, then out-of-range again, then exit again. Meanwhile the vault ran 45–78% idle. Capital was being run in a circle and shaved by fees and slippage on every lap.

The first bug was a timing edge: the flip-flop guard blocked re-trading a pool within 60 minutes — and the analysis loop ran every 60 minutes. The re-invest landed at minute 62, comfortably past the guard, every single time. Once the exit closed the position, the pool (still showing good APR) was simply the best-ranked destination again, so the ranker picked it — with no memory of why it had just been abandoned.

The deeper cause: one width does not fit all pools

Why did every fresh position drift out of range within the hour? Our other position types (CLMM, Whirlpool) sized their price range from the analyzer's volatility model — wider ranges in volatile regimes, tighter in calm ones. The DLMM path ignored all of that and opened a fixed 11-bin position regardless of the pool's bin step.

On this pool's fine bin step, 11 bins works out to roughly a ±0.2% price band. Nearly any market movement walks out of a band that narrow within minutes. The out-of-range exits were not bad luck; they were the geometry of the position.

The fix

  • Out-of-range re-entry quarantine. A pool exited for range-drift is barred from receiving new capital for 6 hours — enforced on both decision paths (the rule engine and the AI path), so neither can undo the other's exit.
  • One volatility model, three venues. DLMM position width is now derived from the same volatility-tuned range percentage the other venue types use, converted to bins from the pool's actual bin step and clamped to the protocol's limits. On the affected pool that meant roughly a 7× wider band.
  • The interaction of tick cadence and guard windows is now treated as a design constraint: any cooldown shorter than the loop interval is no cooldown at all.

What we took away

1

A cooldown shorter than your loop interval is a no-op with extra steps. Guard windows must be sized against the cadence that retries them.

2

When a system exits a position, the **reason** must persist — otherwise the ranker will cheerfully walk back into the same trap while the exit reason is still true.

3

Hardcoded position geometry is a silent tax. Range width must come from measured volatility and the venue's actual granularity, not a constant that happened to work on one pool.

This case study describes an engineering incident on a small live test vault, published for transparency and education. It is not financial advice. See all case studies or the live signal track record.

Explore more on WealthVille

Latest insights

Research, Recaps & Solana Alpha

Data-driven yield analysis and weekly market wraps — written for active LPs.

All insights