solana-funding-arb

Review·Scanned 2/19/2026

Solana funding-rate arbitrage scanner and auto-trader that scans DEX funding rates, backtests strategies, serves dashboards, and can auto-execute trades. It reads wallet secrets (SOLANA_PRIVATE_KEY, SOLANA_WALLET_PATH), runs shell/cron jobs (npx ts-node, cron-runner.sh), and calls external APIs like https://mainnet-beta.api.drift.trade.

from clawhub.ai·vc4fdf9f·534.3 KB·0 installs
Scanned from 2.1.0 at c4fdf9f · Transparency log ↗
$ vett add clawhub.ai/zedit42/solana-funding-arbReview findings below

Solana Funding Rate Arbitrage (v2.0)

Automated funding rate arbitrage bot for Solana perpetual DEXes.

🔥 What's New in v2.0

  • Auto-Trading: Fully automated position management
  • Multi-DEX Support: Drift Protocol + Flash Trade
  • Position Manager: Track PnL and funding collected
  • Risk Management: Stop-loss, max DD, auto-rebalancing
  • Cron Integration: Scheduled rate checks

Supported DEXes

DEXMarketsTradingData Source
Drift Protocol64✅ FullDirect API
Flash Trade19🔶 DRY_RUNCoinGecko

Strategy Options

StrategyLeverageWin RateAPYMax Drawdown
Ultra Safe1x96%126%2%
Conservative1.5x89%203%4%
Moderate2.5x85%411%9%

Quick Start

cd scripts && npm install

# 1. Scan funding rates (no trading)
npm run trade:scan

# 2. Check position status
npm run trade:status

# 3. Run in DRY_RUN mode (simulated)
npm run trade:dry

# 4. Run live trading (requires wallet)
npm run trade

# Other commands
npm run scan        # Basic rate scanner
npm run dashboard   # Web dashboard (:3456)
npm run monte-carlo # Risk simulations

Configuration

Config file: ~/.secrets/funding-arb-config.json

{
  "strategy": "ultra_safe",
  "max_position_pct": 50,
  "min_spread": 0.5,
  "max_dd_pct": 2,
  "auto_execute": true,
  "dry_run": true,
  "leverage": 1,
  "check_interval_hours": 4,
  "min_apy_threshold": 100,
  "max_position_usd": 100,
  "notification": {
    "telegram": true,
    "on_open": true,
    "on_close": true,
    "on_funding": true
  },
  "risk": {
    "max_positions": 2,
    "stop_loss_pct": 2,
    "take_profit_pct": null,
    "auto_rebalance": true,
    "rebalance_threshold": 0.3
  }
}

Environment Variables

Create .env in scripts directory or ~/.secrets/.env:

# Required for live trading
SOLANA_PRIVATE_KEY=[1,2,3,...]  # Or use wallet file
SOLANA_WALLET_PATH=/path/to/wallet.json

# Optional
SOLANA_RPC_URL=https://mainnet.helius-rpc.com/?api-key=YOUR_KEY
DEBUG=true  # Verbose logging

Cron Setup

Run every 4 hours:

# Add to crontab -e
0 */4 * * * ~/clawd/skills/solana-funding-arb/scripts/cron-runner.sh

How It Works

  1. Scan: Compare funding rates on Drift vs Flash Trade
  2. Identify: Find pairs where one is paying and other is receiving
  3. Execute:
    • Go LONG on exchange with negative rate (receive funding)
    • Go SHORT on exchange with positive rate (receive funding)
  4. Collect: Delta-neutral = collect funding from both sides
  5. Rebalance: Close when spread reverses or DD exceeded

Example Trade

SOL Funding Rates:
- Drift: -500% APY (longs receive)
- Flash: +800% APY (shorts receive)
- Spread: 1300% APY

Action:
→ LONG $50 SOL on Drift (receive 500% APY)
→ SHORT $50 SOL on Flash (receive 800% APY)
→ Net: Delta-neutral, collecting ~1300% APY in funding

Files

scripts/
├── src/trading/
│   ├── auto-trader.ts      # Main trading logic
│   ├── drift-client.ts     # Drift Protocol integration
│   ├── flash-client.ts     # Flash Trade integration
│   └── position-manager.ts # Position tracking
├── cron-runner.sh          # Cron wrapper script
└── ...

~/.clawd/funding-arb/
├── positions.json          # Current positions
├── history.json           # Trade history
├── trader-state.json      # Bot state
└── logs/                  # Cron logs

Risks

⚠️ Smart Contract Risk: DEX bugs, hacks ⚠️ Rate Reversal: 15-18% daily probability ⚠️ Execution Slippage: 0.2-0.4% ⚠️ Liquidation: Only with leverage >1x

Yield Comparison

PlatformAPYvs Ultra Safe
Ultra Safe (1x)126%
US Bank (FDIC)4.5%28x less
Aave V32.5%50x less
Marginfi8.5%15x less

Testing

  1. Start with dry_run: true (default)
  2. Run npm run trade:scan to verify opportunities
  3. Run npm run trade:dry to test execution flow
  4. When ready, set dry_run: false and max_position_usd: 10
  5. Monitor logs at ~/.clawd/funding-arb/logs/

References