Tuo docs

Parameters

Every protocol parameter in the Tuo contracts, what it means in plain language, and whether it can ever change.

All protocol parameters live in one library, TuoConstants, and are compiled into the contracts. They cannot be changed after deployment. A handful of settings are stored on the vault and can be adjusted by the treasury Safe; those are listed separately at the bottom.

Compiled constants

Fees and deposits

ConstantValueMeaning
PERFORMANCE_FEE_BPS3,000 (30%)Share of the withdrawn portion of profit taken as a fee. Never charged on principal. No setter
MIN_DEPOSIT_USDC2,500 USDCMinimum USDC credited per deposit or top-up
BPS_DENOMINATOR10,000Basis-point denominator shared by every ratio

Keeper budgets

ConstantValueMeaning
MAX_KEEPER_ACTIONS_PER_WINDOW10Metered keeper actions (swapIdle, mintLp, burnLp, bridgeToHl) per position per window
KEEPER_ACTION_WINDOW24 hoursWindow over which the action allowance fully regenerates (leaky bucket)
MAX_KEEPER_LOSS_BPS_PER_WINDOW150 bpsCumulative TWAP-measured value loss the keeper may cause one position inside the window, as a share of that position's basis
KEEPER_LOSS_WINDOW24 hoursWindow for the loss budget

The loss budget is a rate limiter. 150 bps per day compounds to roughly 36% of a position in a month. The real bound on a compromised keeper is detection plus the treasury Safe revoking the keeper role.

Pricing and slippage

ConstantValueMeaning
TWAP_WINDOW30 minutesWindow for every pool TWAP the vault reads, for valuation and for gates
MIN_OBSERVATION_CARDINALITY2,000Oracle observation slots a pool must have provisioned before the vault will price against it. Checked at deployment; the deployment aborts otherwise
MAX_TWAP_DEVIATION_TICKS200 (about 2%)Largest allowed distance between spot and TWAP before keeper pool operations revert
DEFAULT_SLIPPAGE_BPS50 bpsSlippage floor the vault derives for keeper idle swaps, on top of the keeper's own minimum
LP_PRICE_BAND_TICKS100 (about 1%)Price move an LP mint must survive between the vault's quote and inclusion
LP_BURN_VALUE_FLOOR_BPS9,950 (99.5%)Minimum share of a position's TWAP value a burn must return, measured on both legs combined
MIN_LP_TICK_WIDTH200 ticks (about 2%)Narrowest range the keeper may mint

Hedge and exit

ConstantValueMeaning
MIN_HL_BRIDGE_USDC100 USDCSmallest margin transfer to a Hyperliquid operator
EMERGENCY_WITHDRAW_DELAY24 hoursWait after requestWithdraw before emergencyWithdraw unlocks

USD accounting is USDC with 6 decimals throughout. The vault prices against pool TWAPs only, so no external oracle decimal convention applies.

Product policies

Products are registered in the vault at deployment. The registry is add-only: a code can never be overwritten, and retiring a product only blocks new positions.

ProductCodeHedge cap (maxHedgeBps)Max open LPs (maxLpCount)
Basis Plus Core15,000 bps (50% of basis)3
Delta Hedge Standalone29,000 bps (90% of basis)1

The hedge cap bounds how much of a position's basis may sit on Hyperliquid at once. It is the only on-chain bound on the leg the vault cannot measure.

Treasury-settable values

These live in vault storage and can be changed by the treasury Safe. Every change emits an event.

SettingLaunch valueSetterEvent
Per-position cap25,000 USDCsetPerNftCapPerNftCapUpdated
Fee recipientTreasury SafesetFeeRecipientFeeRecipientUpdated
Hyperliquid operator allowlistSeeded at deploymentsetHlOperatorHlOperatorUpdated
Aggregator allowlist0x AllowanceHolder, 1inch v6addAggregator, removeAggregatorAggregatorAdded, AggregatorRemoved
Product registryThe two products aboveregisterProduct, setProductOpenProductRegistered, ProductOpenUpdated
Deposits pausedNopauseDeposits, unpauseDeposits (pauser role)DepositsPauseUpdated

Frozen at deployment

SettingWhy it cannot change
Pool allowlistNo setter. Every pool must pair its token with USDC and pass the cardinality check
Valuation poolsNo setter
Deposit token setNo setter
USDC, WETH, position manager addressesImmutable
Fee percentageCompiled constant

Changing any of these means deploying a new vault and migrating every position.

On this page