Frequently Asked Questions

Quick answers to common questions about Wealth trading bot


General Questions

What is funding rate arbitrage?

Funding rate arbitrage exploits the difference in funding rates between perpetual futures exchanges. When one exchange has a high positive funding rate and another has a lower (or negative) rate for the same asset, you can:

  1. Go long on the exchange with the lower/negative rate (receive funding or pay less)
  2. Go short on the exchange with the higher rate (receive funding)

Since positions are hedged (equal and opposite), you're delta-neutral — price movements don't affect you, but you collect the funding rate difference.

📖 Learn more: Trading Strategy


Is this risk-free?

No. While delta-neutral positions eliminate directional price risk, other risks remain:

RiskDescriptionMitigation
LiquidationExtreme price moves can liquidate one legUse conservative leverage (5-10x)
Exchange riskExchange hack, downtime, or insolvencyDiversify across exchanges
Execution riskPartial fills leaving unhedged exposureAtomic execution with rollback
Funding reversalFunding rates can flip directionExit strategy with narrow_spread_exit_periods
SlippageEntry/exit costs eating into profitsMin spread thresholds, slippage limits

📖 Learn more: Strategy Formulas


How much capital do I need?

Minimum recommended: $5,000–$10,000 per exchange

With smaller amounts:

  • Position sizes are too small for meaningful returns
  • Fixed costs (fees) eat a larger percentage of profits
  • Diversification across multiple pairs is limited

Optimal: $20,000+ total across exchanges for better position sizing and diversification.


Which exchanges are supported?

ExchangeTypeFunding Interval
Binance FuturesCentralized8 hours
BybitCentralized4-8 hours*
HyperLiquidDecentralized1 hour
AsterDecentralized4-8 hours*

*Bybit and Aster funding intervals vary per symbol (fetched automatically by the bot)

📖 Setup: Getting Started


Paper trading vs Live trading — what's the difference?

ModeOrdersFillsUse Case
PaperSimulatedInstant at mark priceTesting, learning
LiveReal exchange ordersActual market executionProduction
DryrunLogged onlyNoneStrategy validation

Start with paper mode to understand the bot's behavior before risking real funds.

# Paper trading (default)
wealth run

# Live trading
export WEALTH__EXECUTION__MODE=live
wealth run

Configuration Questions

What's a good min_funding_spread setting?

SettingRisk/RewardBest For
0.02 (2 bps)Low profit, high frequencyHigh-volume, low-fee accounts
0.04 (4 bps)BalancedMost users (default)
0.06 (6 bps)Higher profit, fewer tradesConservative, higher fees
0.10 (10 bps)Very selectiveVIP fee tiers only

Remember: This is the minimum spread before accounting for fees. The bot also calculates expected value (EV) factoring in all costs.


Should I use Kelly Criterion for position sizing?

Yes for most users. Kelly Criterion dynamically sizes positions based on:

  • Win probability (historical funding capture rate)
  • Expected return vs. risk

Use fixed sizing (use_kelly_criterion = false) if you prefer:

  • Predictable, consistent position sizes
  • Simpler mental accounting
  • New to the strategy
[trading]
use_kelly_criterion = true
kelly_fraction = 0.25  # Quarter-Kelly (conservative)

How do I set leverage?

Conservative: 5-10x (recommended for beginners) Moderate: 10-15x (experienced traders) Aggressive: 15-20x (requires active monitoring)

[leverage]
default = 10

[leverage.overrides]
BTCUSDT = 5   # Lower for BTC (less volatile)
SOLUSDT = 8   # Medium for SOL

⚠️ Never use maximum leverage unless you fully understand liquidation risks and have stop-losses.


What does max_exchange_utilization do?

Limits total capital deployed per exchange as a percentage of balance:

[trading]
max_exchange_utilization = 0.50  # Use max 50% of exchange balance

Why limit?

  • Reserve capital for margin maintenance during volatility
  • Allow opening new positions when opportunities arise
  • Prevent over-concentration on one exchange

Operations Questions

How do I check if the bot is running correctly?

# Check health endpoint
curl http://localhost:9090/health | jq

# View current positions
wealth positions

# Check balances
wealth balance

# Validate configuration
wealth verify

📖 More: Monitoring Guide


Why isn't the bot opening positions?

Common reasons:

  1. Spread too low — Current funding spreads don't meet min_funding_spread

    wealth funding  # Check current rates
    
  2. Insufficient balance — Not enough margin on exchanges

    wealth balance
    
  3. Max positions reached — Already at max_concurrent_positions limit

    wealth positions
    
  4. Paper mode — Running in simulation (positions won't show on exchange)

    wealth config show | grep execution.mode
    
  5. Pair not configured — Symbol not in [[instruments]] config

📖 Debug: Troubleshooting


How do I close all positions?

# Close all positions across all exchanges (requires confirmation)
wealth close --all --confirm

# Close positions for a specific symbol
wealth close --symbol BTCUSDT --confirm

# Close positions on a specific exchange
wealth close --exchange binance --all --confirm

Can I run multiple bot instances?

Not recommended with the same API keys. Issues:

  • Race conditions on position sizing
  • Conflicting order management
  • Rate limit exhaustion

If needed:

  • Use separate API keys per instance
  • Configure different symbols per instance
  • Use different service_name for observability

How do I update the bot?

# Download latest release
curl -L https://github.com/thiras/wealth/releases/latest/download/wealth-linux-x86_64 -o wealth

# Make executable
chmod +x wealth

# Verify version
./wealth --version

# Restart
./wealth run

⚠️ Check Changelog for breaking changes before updating.


Troubleshooting Questions

"Timestamp out of sync" error?

Your system clock is drifting. Exchanges reject requests with timestamps >1 second off.

# Sync clock
sudo ntpdate -s time.nist.gov

# Or install chrony (recommended)
sudo apt install chrony
sudo systemctl enable chrony

📖 More: Troubleshooting - Timestamp Errors


"Margin insufficient" error?

Not enough balance for the requested position size.

# Check balances
wealth balance

# Reduce position size in config
[trading]
max_position_usd = 5000  # Lower this

Or transfer more funds to your futures wallet on the exchange.


WebSocket keeps disconnecting?

  1. Check internet stability

    ping fapi.binance.com
    
  2. Verify firewall allows WebSocket (port 443)

  3. Check exchange status pages for maintenance

The bot auto-reconnects, but persistent issues indicate network problems.


How do I read the logs?

# Run with verbose logging
wealth run --verbose

# Or set log level via environment
RUST_LOG=debug wealth run

# Save to file
wealth run 2>&1 | tee bot.log

Key log patterns:

  • Opportunity detected — Found potential trade
  • Position opened — Trade executed
  • Funding collected — Received funding payment
  • Position closed — Exited trade

📖 More: Logging Guide


Performance Questions

What returns can I expect?

Typical ranges (highly variable based on market conditions):

Market ConditionAnnualized Return
High volatility (bull/bear)20-50% APY
Normal conditions10-25% APY
Low volatility (sideways)5-15% APY

Factors affecting returns:

  • Funding rate spreads (market-dependent)
  • Exchange fee tier (VIP levels reduce costs)
  • Position sizing efficiency
  • Number of active pairs

⚠️ Past performance doesn't guarantee future results. Funding rates are highly variable.


How can I reduce fees?

  1. Upgrade exchange tier — VIP levels significantly reduce fees
  2. Use maker orders — Lower fees than taker orders
  3. Choose HyperLiquid — 0% maker fees
  4. Increase minimum spread — Only take higher-margin opportunities
[risk.fees.binance]
maker = 0.0001  # Update to your actual VIP tier
taker = 0.0003

See Also