HODLHODL Docs

Stablecoins & Allocation


The USD Problem

Most naive basket implementations track allocation by token count — e.g. "the vault must always hold equal numbers of MOTO and PILL." This breaks the moment prices diverge.

Example: The vault holds 100 MOTO and 100 PILL. MOTO is worth $1 and PILL is worth $1 — the basket is 50/50 by both count and value.

Now PILL doubles to $2. The vault still holds 100 MOTO ($100) and 100 PILL ($200). By value, the basket is now 33% MOTO / 67% PILL — but a naive token-count system still thinks it's "balanced" because the counts haven't changed. The rebalance trigger never fires. The vault silently drifts further as PILL continues to appreciate.

This is not a theoretical edge case. In a volatile asset basket, prices move constantly. A protocol that only tracks token counts is measuring the wrong thing entirely.

How HODL Solves It

HODL measures allocation by USD-equivalent value. Each token's weight in the basket is its current market value divided by total vault value, expressed in basis points:

allocation_bps =
  tokenValue_USD / totalVaultValue_USD × 10,000

The vault uses live MotoSwap pool reserves as its price feed. At any point in time, it knows the exact MOTO-equivalent value of every PILL in the vault. When that ratio drifts beyond 100 BPS (1%) from the 5000/5000 BPS (50/50) target, rebalancing is triggered.

Using the example above: after PILL doubles, the vault correctly detects the 67% PILL allocation, fires the rebalance condition, and a keeper calls rebalance() to swap excess PILL back to MOTO. The basket returns to 50/50 by value. NAV is stable.

Why Stablecoins Amplify This

Value-based allocation works for any basket, but it becomes especially powerful when one of the basket tokens is a stablecoin.

A stablecoin has a fixed USD value by definition. In a basket with one stable leg and one volatile leg, the math becomes:

stable_allocation_bps = stableValue / (stableValue + volatileValue) × 10,000
volatile_allocation_bps = 10,000 − stable_allocation_bps

Because stableValue never changes in USD, any move in the volatile asset is immediately and precisely reflected in the allocation. There is no ambiguity from price measurement errors or oracle lag — the stable leg is the anchor.

Advantages of a stable leg

  • More precise rebalance triggers: even small price moves in the volatile leg register as drift, enabling tighter basket management
  • More WRK earned: tighter baskets with frequent small rebalances generate more keeper rewards than loose baskets that only rebalance on large swings
  • NAV in real terms: with a 50% stable leg, half of NAV is dollar-denominated. You can express returns as "X% USD APY" meaningfully
  • Lower drawdown risk: in a market downturn, the stable leg preserves value. NAV falls less than a pure-volatile basket
  • Intuitive UX: "100 USDT gets you ~10 HDL at current prices" is easier to reason about than "100 MOTO gets you 10 HDL" when MOTO's own price is uncertain

USDT on OPNet

USDT is being committed to the OPNet chain as a native OP-20 asset. When this deployment goes live, HODL can include USDT in its basket compositions without any bridging or wrapping.

This opens several basket configurations that are not possible today:

VariantCompositionNAV Characteristic
Stable50% USDT + 50% MOTOHalf dollar-stable, half BTC-ecosystem exposure
Conservative80% USDT + 20% MOTOStablecoin-dominant, minimal volatility
Diversified33% USDT + 33% MOTO + 33% PILLFull three-token basket with stable anchor

Each of these would deploy as a separate IndexVault with its own HDL token and NAV — see Index Variants. WRK rebalancing applies to all of them.