Skip to main content
Standard automated vaults wrap one pool and re-centre on a fixed rule. Dionysus runs positions across pools as one connected system — a mesh — under an objective you can read and hold us to.

The mesh

Tokens are nodes, pools are edges. With nn assets there are up to n(n1)2\tfrac{n(n-1)}{2} candidate pools; the screen admits a subgraph, and the agent builds topologies where every asset sits on more than one edge. That buys what a silo cannot have:
  • Multiple exit paths. Every asset has ≥2 routes home — no single pool can strand inventory.
  • Residual recycling. Re-centring releases skewed inventory (geometry, not error). A silo swaps it back through the market and pays impact; the mesh routes it to an adjacent pool that wants it.
  • Self-directed migration. Positions accumulate what falls, shed what rises — in a mesh the surplus flows to where it’s productive. No router, no oracle.
Allocation is capacity-aware: no position sized past what its pool can absorb without the vault becoming the market. A $10k mesh and a $1M mesh are genuinely different objects.

The yield equation

income=fvindtfees  +  LyouLactiveE(t)dtemissions  +  Rincentives\text{income} = \underbrace{\int f \cdot v_{\text{in}}\,dt}_{\text{fees}} \;+\; \underbrace{\int \frac{L_{\text{you}}}{L_{\text{active}}}\, E(t)\,dt}_{\text{emissions}} \;+\; \underbrace{R}_{\text{incentives}} Two facts fall out: concentration is leverage (halve the range → roughly double the earn rate, while price stays inside), and out of range earns zero — not less, zero. Per position, the objective is L-share×time-in-rangeL\text{-share} \times \text{time-in-range}, and the two pull against each other. Most vaults stop there. We don’t, because the portfolio dominates the position: Y=iwiyi    C(w,moves)Y = \sum_i w_i\, y_i \;-\; C(w, \text{moves}) Which pools carry weight matters more than how well any range is tended. Cross-venue, the question isn’t “am I in range?” — it’s “is this the range worth being in?” Rotation answers it; a single-pool vault can’t ask it.

The σ² law

The structural cost of concentrated liquidity scales with the square of volatility, while income scales roughly linearly with activity: dragσ2\text{drag} \propto \sigma^2 So for every pool there is a σ above which no width, no trigger, no management is net-positive — the game is won or lost at selection. The screen gates on sustained yield vs. σ²-drag at realised volatility (grounded in published LP-microstructure results), which is why a rich APR on a violent token reads as risk compensation, not opportunity.

The cost of moving

Every action — re-centre, residual swap, rotation — must first clear one inequality: Δy×H  >  C×m\Delta y \times H \;>\; C \times m Expected gain over a payback horizon must exceed the full cost of acting, with margin. CC is measured, not assumed (impact quoted live at execution size); Δy\Delta y is persistent, not instantaneous (smoothed — a trigger that trusts one reading rotates into every transient); mm overestimates uncertain costs so estimation error pushes toward not acting. The deepest consequence: on most days the optimal action is nothing. An engine that always finds something to do has thresholds tuned to generate activity, not returns. Every move the agent does make lands in your statement, its costs booked against its own performance.

Silos vs. the mesh

The standard product — a public vault wrapping one pool, shares against a common pot — fails on structure, not parameters: Silos are simpler to audit and fine for passive exposure to exactly one pair. But sold as automated yield, they automate the easy 20% of the job. The hard 80% — selection, allocation, disciplined movement — is where the yield is.
The structure above is the arithmetic of the instrument; we publish it so you can hold us to it. The constants — thresholds, widths, horizons, weights — are closed source, calibrated by replaying the policy against recorded production history.