For the complete documentation index, see llms.txt. This page is also available as Markdown.

Strategy & Modes

ksUSD runs one trade. The vault holds staked SOL and shorts the same amount of SOL on a perp market, so the two largely cancel and SOL's price mostly stops mattering. Traders call this a delta-neutral basis trade; the offset is close but not exact, which is why this book says delta-hedged.

At any moment the trade is either on or off. A funding-rate signal decides which, and a keeper bot flips the switch. Either way the vault's net SOL exposure stays near zero, so holding ksUSD is not a bet on SOL's price.

Two modes: Normal basis shorts SOL-PERP at 1× and holds jitoSOL unlevered, earning funding plus staking; Parked holds no perp and lends the entire NAV as USDC on Kamino, earning lending yield.
The protocol is always in exactly one of two states.

The two modes

Normal basis, the trade is on. The vault holds jitoSOL outright, with nothing borrowed against it. This is the spot leg, and it earns staking yield — the part that pays regardless of what the perp market is doing. Against it, the vault shorts an equal amount of SOL-PERP on Phoenix, posting USDC as margin through Ember. Funding on that short is upside: it is the price of leverage on Phoenix's book, so it arrives as leveraged traders do, and Phoenix's book is still young enough to pay near zero. The long and the short offset, so SOL price moves largely cancel and net exposure sits near zero — not exactly zero, since jitoSOL can drift against SOL and delta moves between rebalances (see Risk). The vault collects both things at once: staking yield on the jitoSOL, and funding on the short. jitoSOL is never posted as perp collateral.

Parked, the trade is off. The vault closes the short, sells the jitoSOL back to USDC, and lends everything on Kamino. This is the default whenever funding doesn't pay enough to be worth it. The liquidity buffer stays in the vault's own USDC account the whole time, so instant withdrawals keep working.


When does the vault turn the trade on?

Most basis products just ask "is funding positive?" That's the wrong question here, because the jitoSOL you hold while short is also earning staking yield. The real question is whether staking plus funding beats plain USDC lending, after costs.

Work that out and the break-even lands at slightly negative funding — −0.78% at jitoSOL's 4.94% published pool APY and the 3.69% Kamino USDC rate measured 2 Sep 2026. Staking on its own still out-earns USDC lending, so the short has room to cost a little and still leave the vault ahead — but the room is thin, and it is thinner than it looks if you reach for Solana's 5.30% network rate instead. The vault holds jitoSOL, so what counts is what the pool pays after validator commission and Jito's fee.

That means the entry point isn't a fixed number. It's a formula:

Term
Meaning

LEND

USDC lending APY — what parking the cash earns

STAKE

jitoSOL staking APY — what the spot leg earns

m

margin fraction (~9% of NAV, earns 0%)

fees

round-trip perp + swap cost

buffer

risk cushion: perp exposure, liquidation on a rally, jitoSOL depeg tail

Once fees and the risk cushion are in, the practical threshold lands near −0.78%. When USDC lending gets rich, parking competes harder and the threshold rises — at 4.50% lending it would be +0.11%, i.e. the vault would need positive funding before hedging paid at all. When staking runs hot, it falls. The keeper recalculates it each cycle from live rates, which is why no number here is a constant.

Why there's a band, not a line

Funding is noisy. The vault picks its mode on a 7-day average but earns or pays day by day, so sitting exactly on the threshold would flip it in and out constantly — and each round trip costs 20–40 bps.

So the vault uses a band: enter only once funding is ~3% clear of the threshold, hold until it drops ~3% below, and do nothing in between.

On Phoenix's measured funding the band is the largest modelling choice in the backtest. Removing it drops net APY from 5.04% to 3.95% — 109 bps — because Phoenix's funding swings between −14% and +14% by month and reacting to every move pays 20–40 bps a time. Nearly all of that 109 bps is switching avoided rather than funding held onto: the band halves the switches, worth 153 bps a year, and gives about 22 bps back in worse mode selection.

It is load-bearing, and it is not tuned for this threshold. The band is ±3 percentage points centred on the threshold, so at −0.78% the vault enters STANDARD only above +2.22% funding and exits below −3.78%. On this window that wide deadband held the position through the profitable months and earned its keep. On a flat-zero funding series the same rule never enters STANDARD at all and the vault parks permanently. The band was sized when the threshold sat near −2.94%, where its entry line landed close to 0% — that alignment was luck, and it no longer holds. Re-derive the band with the threshold, not independently of it.

Why the threshold sits below zero

The threshold sits below zero because staking, not funding, is what pays: while the hedge is on, jitoSOL earns 4.94% on 81.8% of NAV whether funding is positive or not, so the short is allowed to cost up to 78 bps before parking wins. The modeled configuration therefore runs the break-even itself, funding_threshold_normal_bps = -78.

Worth stating plainly: on this particular window a threshold of 0% scores better — 5.35% net against 5.04% — because parking earlier sidestepped February's −14% funding month. That is a path-dependent result over 286 days, not a reason to move a threshold that is derived from the break-even arithmetic, but it does mean the sub-zero threshold cannot be claimed to earn anything here. It is the correct rule; on this sample it cost 31 bps.

As shipped it is −78. The vault deploys with its on-chain floor at the break-even itself, and the keeper can only be tighter than the floor, never looser — so the program will short through mildly negative funding, and the keeper's dynamic rule decides when it actually does. What that gives up is the guarantee that the program can never short into negative funding.

The trade is that holding the short through mildly negative funding holds jitoSOL for longer, which is depeg exposure. The 12-hour dwell bounds how often that happens and the depeg auto-pause bounds how bad it gets.


Why Parked stays in USDC lending, not T-bills

Parked always means USDC lending, never a tokenized T-bill like USDY or OUSG:

  • Tokenized securities carry permissioned transfer hooks, which break permissionless holding and redemption.

  • Their non-US-person restrictions shrink the addressable market.

  • They add a securities-law surface.

Anyone who wants T-bill exposure can redeem and buy a bill directly. ksUSD measures itself against USDC lending, not a T-bill rate.


Keeping the hedge the right size

The two legs cancel on the day the position opens. They don't stay cancelled.

jitoSOL earns its yield by appreciating against SOL, so the spot leg quietly gains SOL value while the short stays exactly the size it was — about 1.6 bps a day, the staking rate. Left alone, the vault accumulates real directional exposure to SOL without ever placing a trade. That is the opposite of what it promises to hold.

So the short gets resized. Two different operations do it, and the difference between them is the whole point.

Short exposure
Long (jitoSOL) exposure
Net exposure

Resize the hedge

changes

unchanged

moves back toward zero

De-lever

decreases

decreases

stays where it was

Resizing the hedge moves one leg. The vault reads its own jitoSOL balance and the jitoSOL/SOL rate, works out how much SOL it is actually holding, and trades the perp to match. It takes no size instruction from anyone — the target is arithmetic on the balance. Under-hedged, it sells more; over-hedged, it buys some back. Either direction, it only ever moves net exposure toward zero, never past it. There is no way to use it to take a position.

It also has a ceiling. Growing a short raises the margin the venue demands, so the increase is capped at what the posted collateral can actually carry. If the target needs more than that, the vault does as much as it can afford and flags the shortfall rather than rebalancing itself toward a liquidation.

De-levering moves both legs together. Buy back part of the short, sell the matching slice of jitoSOL. The position gets smaller, net exposure doesn't move. This is what funds a withdrawal queue larger than the buffer, and what defends margin when it runs thin.

The obvious shortcut — just sell some jitoSOL to raise cash — is the one thing that must not happen. Margin runs short when SOL rallies, because that is when the short is losing. Selling jitoSOL then would shrink the long leg while the short stayed whole, leaving the vault net short into a rising market, with losses compounding in exactly the scenario that triggered the top-up. Moving both legs by the same fraction is what stops the rescue from becoming the risk.

Below a hard margin floor, anyone can trigger the de-lever — not just the keeper. A defence that depends on our bot being awake is not a defence. Such a caller can only push the proceeds back to margin, never to the buffer, so it cannot be used to drain the position.


Mode-switch guardrails

The funding signal decides whether to switch. These parameters bound how.

The keeper only executes; it doesn't decide. It's a permissioned key (authorized_keeper) that cannot open a position the funding rule forbids. And the drawdown, depeg, and oracle-divergence guards can pause the vault without anyone's permission.

Guard
Default
Effect

Funding threshold

−0.78% break-even (the on-chain floor ships at −78), ±3% band

Vault shorts only when funding clears the threshold by the band, holds until it drops below; the band + 7-day mean stop whipsaw

min_dwell_seconds

12 h

Minimum time in a mode before it can switch again

funding_max_staleness_seconds

6 h

Opens revert with FundingSignalStale if settle is overdue

consecutive_dd_settles_required

2

A drawdown trip needs two consecutive bad settles

lst_depeg_bps

5%

settle auto-pauses the vault on a jitoSOL depeg

max_swap_slippage_bps

0.5%

Jupiter swaps revert past this realized slippage


  • What is ksUSD? — overview and yield sources

  • Risk management — drawdown guard, slippage bounds, dwell timers, depeg and staleness guards

  • Whitepaper — full design, NAV math, security, risk disclosures

Last updated