Uptick

Connect a wallet

Uptick reads your balance and asks you to sign each transaction. It never holds your keys.

Docs ยท Vault sizing

The evidence

Vault sizing

Every vault is sized to the pool it trades in. The ceiling is $100,000, a pool must carry at least $10,000 at the share limit, and the binding constraint is usually the pool.

The ceiling

$100,000 is the largest position the strategy is tested at and the largest any vault can take. It is a product decision as much as a risk one: below $10,000, the daily recentre, gas and swap impact cost more than the fees a vault that small can earn. The ceiling keeps the replay and the live vault in the same size range, so the gate figures describe the vault a depositor actually uses.

The share constraint

A vault that owns most of a pool's active liquidity is no longer a price taker. Its own recentre moves the price, its deposits change the fee share of everyone else, and an exit has to trade against a book the vault itself dominates. The rule is a hard share limit instead of a judgment call.

Let depth be the dollar value of active liquidity in the deepest USDG pool, spread across the vault's plus or minus 5% band. After a deposit of V, the vault's share is V / (depth + V). Holding that at or below 20% gives the cap.

keeper/src/universe.ts
V / (depth + V) <= 0.20
V <= depth * 0.20 / 0.80
V <= depth / 4

capUsd = min(100_000, floor(depth / 4))

Depth is not the pool's total value locked. It is the liquidity that can actually fill swaps inside the band the vault holds, valued at the current price. A pool with a large balance parked outside the band does not get credit for it.

The floor

A pool that would carry less than $10,000 at the 20% share is left out. At that size the fixed costs of a daily recentre dominate. Tokens that pass the feed and pool checks but fail this one, or the volume floor, are recorded in the universe with the check that stopped them.

What a token must clear

Sizing is the last of several checks. A token reaches the replay only when every row below passes. The first failure wins and is written into the universe as the reason.

CheckThresholdWhy
Contract codeBytecode at the registry addressA Stock Token address with no code cannot be transferred or priced.
Chainlink feedPresent, readable and positiveThe vault values its USDG leg and its fees from the feed.
Feed ageAt most 346,200 secondsA 24 hour heartbeat plus a ten minute grace and a long weekend. A feed silent longer than that is broken, not closed.
Pool volumeAt least $100,000 per day, 7-day averageA pool with no flow earns no fees, whatever its depth.
Pool depthCap of at least $10,000 at a 20% shareBelow this the recentre costs more than the fees.
Price agreementPool within 300 bps of Chainlink at read timeA pool priced away from the feed is not a market the vault should join.
The deepest USDG v3 pool by in-range depth is the one sized and replayed. v4 pools are replayed for comparison but do not enter eligibility, because StockVault holds a v3 position.

The checks are strict about the feed and looser about the pool. A token whose deepest pool cannot carry a full vault still gets one at the size the pool supports, provided that size is at least $10,000. That is how AMD trades with an $18,436 cap while NVDA carries the full $100,000.

Worked examples

The figures below come from the universe build that produced the current vault list. Depth is rounded in the table; the cap is floored to whole dollars.

VaultPool depth, plus or minus 5%Deposit capBinding limit
NVDA$1.61M$100,000The ceiling
GME$197K$49,212Pool depth
MSTR$89K$22,206Pool depth
AMD$74K$18,436Pool depth
Depth carries the largest whole-dollar vault at a 20% share. NVDA clears the ceiling, so its cap is the ceiling.

The cap on each vault

The live list below is the same file the vault pages read. A cap at $100,000 means the pool carries more than the ceiling; anything lower is the pool's depth divided by four.

VaultDeposit capSet by
MSTR$22,206In-range pool depth
GME$49,212In-range pool depth
CRCL$100,000The $100,000 ceiling
INTC$19,116In-range pool depth
MU$86,710In-range pool depth
AMD$18,436In-range pool depth
PLTR$24,207In-range pool depth
META$24,118In-range pool depth
USO$100,000The $100,000 ceiling
SPCX$100,000The $100,000 ceiling
TSLA$83,206In-range pool depth
NVDA$100,000The $100,000 ceiling
GOOGL$100,000The $100,000 ceiling
AMZN$68,501In-range pool depth
AAPL$73,983In-range pool depth
QQQ$66,787In-range pool depth
SPY$100,000The $100,000 ceiling
Read from web/lib/vault-universe.json at block 93,099,228.

How the contract enforces it

The cap is written into the vault at deployment and changed only by the owner through setDepositCap. Deposits and mints ask maxDeposit for the remaining room and revert with ExceedsMax beyond it. There is no path that adds assets without passing that check.

A cap can rise or fall as the pool changes, but it is not recomputed on chain. The keeper rebuilds the universe from live pool state, and an operator applies a new cap when the pool has moved enough to matter.

Sources

keeper/src/universe.tsThe ceiling, floor, 20% share rule, cap formula and eligibility checks.

keeper/README.mdThe universe table with 7-day volume, band depth and cap for each eligible token.

contracts/src/StockVault.soldepositCap, maxDeposit and setDepositCap.

web/lib/vault-universe.jsonThe live cap and gate state for each vault.