Carryfield Open app

Docs

How Carryfield works

What the vault does, the rules it follows and what can go wrong, on one page. The contracts have the final word: where a number lives on chain, this page reads it from there.

How it works

Carryfield is a vault on Elysium, Kinetiq's Hyperliquid L2. You deposit USDC and receive cfUSDC, a share of everything the vault holds.

For each stock it trades, the vault buys the tokenized stock (an xStock) on Elysium and shorts the same stock's HIP-3 perpetual on HyperCore, in equal dollar amounts. When the stock moves, one leg gains what the other loses, so the vault's value barely follows the price.

What is left is funding. Perp longs and shorts pay each other every hour to keep the perp's price near the stock's. When funding is positive, which it usually is on these markets, longs pay shorts, and the vault is the short.

Income
Funding paid to the short leg.
Costs
Spot swaps on Elysium, perp trading fees on HyperCore, and the small gap between the xStock price and the perp price.
Fees
None. The contracts have no management or performance fee. Trading costs are paid by the vault and show up in the price per share; gas for your own transactions is yours.

The backtest runs these rules on real HIP-3 funding history. See the backtest.

Deposits and withdrawals

Requests queue and settle together once per epoch, at one price per share for everyone in that epoch. Epochs are a minimum interval apart or longer.

  1. Queue a deposit. Your USDC moves into the vault and waits there as USDC. Until the epoch settles you can cancel any part of it, and the USDC comes back in the same transaction, even while the vault is paused.
  2. Settlement. The keeper settles the epoch. The vault values everything it holds, sets the price per share, turns each queued deposit into cfUSDC and each queued withdrawal into USDC at that price.
  3. Claim. After settlement you claim from the app. Claims work while the vault is paused.

To withdraw, request it with your cfUSDC. The shares move into the vault, the request settles at the next epoch, and then you claim USDC. A withdrawal request cannot be cancelled, and new requests (deposits and withdrawals) stop while the vault is paused.

Value per share = (idle USDC + margin on its way to HyperCore + xStocks at the price source + the HyperCore margin account's equity) ÷ cfUSDC supply.

Strategy rules

The keeper decides which stocks to hold once a week. The decision is one function, and the backtest calls the same one, so the backtest measures the rules the keeper runs. Every decision is published in the keeper journal with the numbers behind it.

Signal
Mean hourly funding over the trailing 14 days, as a yearly rate.
Enter
Trailing funding at least 15% a year, with at most 35% of those hours negative.
Exit
Trailing funding below 5% a year. A held stock only has to stay above the exit line, so one that hovers near the entry line is not traded back and forth.
Slots
Up to 5 stocks in equal slots. When more stocks qualify than there are free slots, the highest trailing funding wins. Unused slots stay in USDC.
Hedge
Equal dollar amounts on both legs. Perp margin is the position size divided by 3.
Weekends
No new entries from Friday 20:00 to Sunday 23:59 UTC, while US markets are closed and funding on these perps drops.
Size
One slot is at most 1% of the perp's 24-hour volume and 2% of its open interest.
Universe
A stock qualifies only if it has both an xStock and a HIP-3 perp. The list is fixed by that structure, never by which names did best in the backtest.

Vault limits

The contract refuses to settle or trade outside these limits. The guardian can change them, so the values here are read from the vault when the page loads.

Deposit cap
A fixed amount in total. A deposit that would pass it is refused. The cap stays at or below 50,000 USDC until a paid audit.
Price per share
Moves at most a fixed bound per settlement. A larger move holds settlement until the guardian verifies it.
Cadence
At least a minimum interval between settlements, so the price limit is a rate per interval and cannot be stacked.
Fresh data
Price and hedge reports older than a fixed age block settlement.
Hedge balance
Each stock's spot and short must be within a fixed share of each other, or settlement is refused.
Slippage
Keeper trades fill at most a fixed share away from the price source.
Spending
Keeper trades spend only idle USDC, never queued deposits or USDC set aside for settled withdrawals.
Price posts
Each price the keeper posts is bounded against an anchor that moves once per window, so repeated posts cannot walk a price.

Launch and the go/no-go gate

Spot costs on Elysium can only be measured once xStocks trade there, so the vault opens with the strategy locked. Until the admin enables it, the contract refuses to buy spot, send margin to HyperCore or grow a short, and no epoch settles.

  1. Deposits open. USDC waits in the vault and can be cancelled at any time.
  2. Go/no-go gate. Live spot cost at most 0.5% per side for a $15,000 trade on three or more stocks, and a working path for margin to reach HyperCore.
  3. Strategy live. Positions change at the weekly decision.

If the gate fails, the vault pauses and every deposit can be cancelled in full. After launch the guardian can lock the strategy again at any time. Selling spot and covering shorts are never locked, so the vault can always unwind.

Today the keeper reports stock prices and the margin account's value to the vault. After Elysium's HyperCore upgrade the vault is meant to read both on chain instead, and the keeper's reports are retired.

Risks

Read these before you deposit. Any of them can cost you some or all of your deposit.

Audit pending
The contracts have been through two internal reviews (static analysis, invariant tests and a manual review of what the keeper can do). The third-party audit is still pending, so bugs may remain. Until it is done, deposits stay capped.
You trust the keeper
The keeper reports prices and the HyperCore account's value. The limits above bound those reports, but inside them a wrong report still moves the price per share. Whoever holds the HyperCore account key can withdraw its margin. On-chain reads remove the first risk after Elysium's upgrade; the key risk stays until a contract can own that account.
You trust the admin and guardian
The admin can replace the contracts the vault uses for prices, trading and margin, and list new assets. The guardian can pause requests and change the limits. There is no timelock on these yet.
Funding can turn negative
When it does, the short pays instead of earning until the exit rule closes the position at the next weekly decision.
The legs can drift apart
The xStock and the perp track the same stock through different markets. Gaps between their prices, and hours when one of them is closed or halted, can cost money.
The short can be liquidated
If a stock jumps, the short loses margin. Moving USDC from Elysium to HyperCore is slow, so the keeper has to shrink the position rather than top it up, and a fast gap can still reach the liquidation price.
Third parties
xStocks are issued by a third party and depend on its backing. Each HIP-3 perp is run by its deployer, who sets its oracle and can halt it. USDC can lose its peg. Elysium and HyperCore can stop or change.
Slow exits
Withdrawals settle once per epoch. A tripped limit holds settlement until it is resolved, requests stop while the vault is paused, and a withdrawal request cannot be cancelled.
Costs can eat the yield
Every entry and exit pays spot and perp costs. If spot costs run high, the yield shrinks toward nothing.
Restricted persons
The vault holds xStocks, which their issuer does not offer to US persons or to residents of other restricted jurisdictions. If that applies to you, do not deposit.

Contracts and roles

Addresses of the current deployment. Source code is verified on the explorer.

Loading
–

Who can do what

Admin
Enables the strategy, lists assets, sets the contracts the vault uses for prices, trading and margin, and lifts a pause. On mainnet the admin is a single key, not yet a multisig or a timelock.
Guardian
Pauses requests, locks the strategy, changes the limits, and settles an epoch whose price move it has verified.
Keeper
Posts prices and hedge state, trades within the limits, and settles epochs.
Deployer
A key used only to deploy. It hands each role to its own key and renounces everything; the deploy script checks every role afterwards and refuses to finish otherwise.