Keystone Neutral Fund
Basis and funding carry — stable and sideways markets
Market-neutral relative value fund. Runs either the standard basis trade (long jitoSOL spot + short SOL-PERP) when funding is positive, or the reverse basis trade (long SOL-PERP + short jitoSOL spot) when funding is negative. USDC sits idle when funding is near-zero and below the deployment threshold. The fund always has an active position when spreads are wide enough to justify the risk.
Zero net SOL exposure in all three states. A 50% SOL move produces equal and opposite effects on the two legs regardless of which direction the trade is running.
Yield estimates are not guaranteed. Actual returns depend on funding rate conditions, staking reward rates, and (when reverse basis is live) Kamino KLend borrow rates and fees.
Protocol roles (Neutral only)
Jupiter Perps
SOL-PERP: short in standard basis, long in reverse basis (PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu).
Jupiter V6
Spot swaps (e.g. USDC ↔ jitoSOL) around deploys and unwinds.
Kamino KLend
Reverse basis only: borrow jitoSOL against USDC collateral in a Kamino obligation (enable_reverse_basis once, then deploy_reverse / close_reverse). Not used in standard basis or for Marginfi-style parking. Program: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD.
Marginfi
Optional idle USDC lending / parking paths --- separate integration from Kamino borrow.
Pyth
Oracle inputs for sizing and risk checks.
The Two Trade Structures
Standard Basis — when funding is positive (perp at premium to spot):
Long: 500 jitoSOL @ $200 = $100,000 → ~5.8% APY staking
Short: 500 SOL-PERP @ $200 = $100,000 → ~5–15% APY funding received
Longs pay shorts every funding period. Fund collects.
Net SOL delta: zero.Reverse Basis — when funding is negative (perp at discount to spot):
Both structures are delta-neutral. The fund earns funding regardless of which direction it flows.
Automated Position Management
Three states. All transitions are permissionless.
The fund cycles between states autonomously. No admin intervention required.
Protective Controls
NAV Drawdown Guard
Automatically closes the active position if share price falls more than a configurable number of basis points from its all-time high. Configured via nav_drawdown_guard_bps (e.g., 500 = 5% maximum drawdown). Default: disabled (0).
Consecutive Period Gate
Blocks deployment until at least min_positive_periods_to_deploy consecutive snapshots confirm the target direction. Prevents entering a trade into an ambiguous or reversing funding environment. Default: 2 periods required.
Funding Rate Floor
Blocks deploy_capital when the most recent snapshot is below min_funding_rate_to_deploy. Acts as an absolute minimum — spread must be wide enough to justify execution costs. Default: disabled (0).
jitoSOL Parking Mode
When the funding floor blocks deployment, idle capital earns nothing by default. jitoSOL parking mode fixes this: instead of sitting in USDC, the fund swaps idle capital to jitoSOL and earns staking yield (~5–8% APY) while waiting for carry conditions to recover.
How it works:
Admin sets
swap_to_jitosol_when_parking = trueviaupdate_fund_paramsWhen the gate blocks redeployment, the keeper calls
park_in_jitosol(permissionless when the flag is set)Fund swaps USDC → jitoSOL via Jupiter — capital earns staking yield
When the funding gate eventually passes,
deploy_capitalis called withjupiter_account_count = 0— jitoSOL is already in the fund, skipping the intermediate swap; USDC portion opens the Jupiter Perps short
This eliminates the zero-yield months that historically dragged Sharpe ratio the most. The fund is always earning something.
Risk Management
Volatility-Adjusted Position Sizing
Position size scales with realized volatility at deployment:
< 2%
150%
2–6%
100%
6–12%
75%
> 12%
50%
Health Factor Monitoring
The fund monitors the Jupiter Perps position health continuously:
> 1.5
Normal operation
1.2–1.5
Reduce position size
< 1.2
Auto-deleverage
Key Risks
Sustained negative funding (standard basis)
Automated close → reverse basis
Borrow cost exceeds funding (reverse basis)
Reverse basis only deployed when spread covers Kamino borrow rate
NAV drawdown
NAV drawdown guard (configurable)
Liquidation
1x effective leverage + continuous health monitoring
jitoSOL depeg
Circuit breaker on deviation > 2% from fair value
Jupiter Perps smart contract risk
Audited protocol; validate via program ID PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu
Permissionless Operations
All fund operations are callable by any wallet. The keeper bot executes them automatically.
deploy_capital
Idle USDC ≥ 1,000 + funding above gate
Split USDC: collateral portion → Jupiter Perps short; remainder → jitoSOL for staking yield
park_in_jitosol
Funding gate blocking + swap_to_jitosol_when_parking = true
Swap idle USDC → jitoSOL for staking yield while waiting
deploy_reverse
Idle USDC ≥ 1,000 + N consecutive negative periods
Borrow jitoSOL from Kamino + sell for USDC collateral → open SOL-PERP long on Jupiter Perps
settle_funding
Every 4 hours
Read Jupiter Perps position account, compute carry delta, update NAV and high-water mark
adjust_position
Hedge ratio drifts from target
Rebalance short size on Jupiter Perps
emergency_close_position
Negative funding threshold met, or NAV drawdown guard triggered
Close short on Jupiter Perps; USDC returned to fund; swap jitoSOL to USDC
close_reverse
Funding recovers or near-zero
Close long + repay Kamino borrow
unwind_position
Pending withdrawals > 0
Close active position + swap to USDC
claim_withdrawal
After unwind
Transfer USDC to user, close pending withdrawal PDA
Deposits
Deposits into the Neutral fund arrive as USDC via Keystone Core. On deployment the fund splits USDC: a portion (controlled by collateral_bps) goes to Jupiter Perps as short collateral, and the remainder is swapped to jitoSOL via Jupiter for staking yield.
USDC
Deployed to jitoSOL (standard basis) or held idle (reverse basis / idle mode)
Direct deposits to this fund are not supported. All deposits route through Keystone Core, which handles any LST or SOL conversion to USDC before routing here.
Parameters
Settle interval
4 hours
Minimum time between settle_funding calls
Min deploy amount
1,000 USDC
Idle USDC threshold for deployment
Max slippage
1%
Maximum swap slippage
Min health factor
1.2x
Auto-deleverage trigger
Target health factor
1.5x
Target Jupiter Perps position health
Max position
90% of NAV
Maximum deployed allocation
Negative funding threshold
-50
Per-period trigger for position close
Max negative periods
2
Consecutive negative periods before close
Auto-close on negative funding
true
Enable automated emergency close
Max funding loss per period
30 bps
Single-period loss trigger for immediate close
NAV drawdown guard
0 (disabled)
Basis points from peak share price to trigger close
Min funding rate to deploy
0 (disabled)
Minimum rate required for deployment
Min positive periods to deploy
2
Consecutive positive periods required before deploying
Swap to jitoSOL when parking
false
Enable permissionless jitoSOL parking mode (earns staking yield when gate is blocking)
Volatility Sizing Parameters
Low vol threshold
2%
High vol threshold
6%
Size multiplier: low vol
150%
Size multiplier: normal
100%
Size multiplier: high vol
75%
Size multiplier: extreme
50%
Fees: 0.5% management + 20% performance (above high-water mark). Details →
Last updated