Skip to main content
An equity vault is two legs the user holds directly, entered and exited as one atomic batch:
  1. Stock leg — the USDG deposit is swapped to a Robinhood tokenized stock (SPY, NVDA, TSLA, SPCX, AAPL) and posted as the user’s own collateral on a partner Morpho market (curator: Longbow or NetNet Credit). A share of its value — the stock-leg LTV, 50% by default — is borrowed back as USDG.
  2. Yield leg — that USDG is flash-looped into a Spiral yield strategy (syrupUSDG/USDG) at the yield market’s max-safe LTV.
The user stays 1x long the stock and earns the loop’s leveraged yield on the borrowed share. A vault’s leverageApyPct is therefore the net dollar APY on the deposit at the default stock LTV, not a leverage choice.
1

Discover

Each vault carries curator, collateral.description, oracle.type: "market", its stock’s exitLiquidity, and spiralHints.profile.leverageApyMeaning. Two NVDA vaults exist — one per curator.
2

Simulate at the user's size

Read stock.liquidationPriceUsd and priceDropToLiquidationPct (the stock’s fall to liquidation), netApyPct, and the fees. A higher stockLtvPct raises the net APY and shrinks the headroom; above the cap (stock.maxLtvPct) the call is refused.
3

Build the batch

4

Sign as one atomic batch

Submit bundle.calls via EIP-5792 wallet_sendCalls (or a Safe), or hand the user bundle.meta.signingUrl. A wallet that cannot batch sends the calls in order and always sends the final revoke.
5

Monitor

Watch stock.ltvHeadroomPct / priceDropToLiquidationPct on the stock leg and yieldLoops[].ltvPct on the yield leg.
6

Exit

One batch closes the yield loop(s) and unwinds the stock leg; meta.estimatedUsdgOut is what comes back.

Risks to weigh

  • Stock price. The stock leg is priced by a Chainlink market feed; it liquidates if the stock falls to ltvPct.liquidation (a 20% drop at the default 50% LTV on a 62.5% market).
  • Yield-leg rates. The loop runs near its max LTV; if its borrow rate rises above the collateral yield, netApyPct falls and can go negative. simulate_equity_deposit and equityPositions.currentNetApyPct show the live figure.
  • Exit liquidity. The vault exits by selling the stock on the same aggregator it bought it on — read the stock’s exitLiquidity at the position’s size.
  • Liquidity to borrow. The stock market must have liquidityUsd to lend the borrow, and the yield market must fund the flash loop directly; both are checked before quoting.
Never close a vault’s yield loop with build_manage_tx — it is refused, because doing so would leave the stock leg standing with its debt. Always use build_equity_exit_tx.