Install
openclaw skills install crypto-arbitrageReal-time cryptocurrency arbitrage scanner across multiple exchanges. Detect price discrepancies, calculate profitable opportunities, and execute arbitrage t...
openclaw skills install crypto-arbitrageReal-time cryptocurrency arbitrage scanner and executor.
Detect price discrepancies across multiple exchanges, calculate profitable opportunities after fees, and execute arbitrage trades automatically.
Crypto traders miss opportunities because:
Crypto Arbitrage provides:
clawhub install crypto-arbitrage
const { CryptoArbitrage } = require('crypto-arbitrage');
const scanner = new CryptoArbitrage({
apiKey: 'your-api-key',
exchanges: ['binance', 'coinbase', 'kraken'],
minProfit: 0.5, // Minimum 0.5% profit
maxCapital: 10000 // Max $10k per trade
});
await scanner.addExchange('binance', {
apiKey: 'your-binance-key',
apiSecret: 'your-binance-secret',
sandbox: false
});
await scanner.addExchange('coinbase', {
apiKey: 'your-coinbase-key',
apiSecret: 'your-coinbase-secret'
});
await scanner.addExchange('kraken', {
apiKey: 'your-kraken-key',
apiSecret: 'your-kraken-secret'
});
await scanner.startScanning({
pairs: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT'],
interval: 1000 // Scan every 1 second
});
// Listen for opportunities
scanner.on('opportunity', (opp) => {
console.log('🎯 Opportunity found!', opp);
});
const opportunities = await scanner.getOpportunities({
minProfit: 0.5, // Minimum 0.5%
minLiquidity: 1000 // Minimum $1k liquidity
});
console.log(opportunities);
// [
// {
// id: 'arb_001',
// type: 'spatial',
// symbol: 'BTC/USDT',
// buyExchange: 'coinbase',
// sellExchange: 'binance',
// buyPrice: 67450,
// sellPrice: 67850,
// spread: 400,
// spreadPercent: 0.59,
// fees: {
// buyFee: 33.73,
// sellFee: 33.93,
// withdrawalFee: 5,
// totalFees: 72.66
// },
// netProfit: 327.34,
// netProfitPercent: 0.48,
// liquidity: 50000,
// executionTime: '< 30s',
// riskScore: 85,
// recommendation: 'EXECUTE'
// }
// ]
// Manual execution
const result = await scanner.executeArbitrage(opportunityId, {
amount: 10000, // Trade $10k
dryRun: false // Set true to preview
});
console.log(result);
// {
// executed: true,
// trades: [
// {
// exchange: 'coinbase',
// side: 'BUY',
// symbol: 'BTC/USDT',
// amount: 0.1482,
// price: 67450,
// value: 9996,
// fee: 9.996
// },
// {
// exchange: 'binance',
// side: 'SELL',
// symbol: 'BTC/USDT',
// amount: 0.1482,
// price: 67850,
// value: 10055,
// fee: 10.055
// }
// ],
// grossProfit: 59,
// totalFees: 25.05,
// netProfit: 33.95,
// netProfitPercent: 0.34,
// executionTime: '2.3s',
// status: 'COMPLETE'
// }
await scanner.configureAutoExecute({
enabled: true,
minProfit: 1.0, // Auto-execute if profit > 1%
maxCapital: 5000, // Max $5k per auto-trade
maxDailyTrades: 20, // Max 20 trades per day
excludedExchanges: [], // Don't trade on these
cooldown: 5000 // 5s between trades
});
const triangular = await scanner.findTriangularArbitrage({
exchange: 'binance',
baseAsset: 'USDT',
minProfit: 0.3
});
console.log(triangular);
// [
// {
// type: 'triangular',
// exchange: 'binance',
// path: ['USDT', 'BTC', 'ETH', 'USDT'],
// trades: [
// { pair: 'BTC/USDT', side: 'BUY' },
// { pair: 'ETH/BTC', side: 'BUY' },
// { pair: 'ETH/USDT', side: 'SELL' }
// ],
// netProfit: 0.42,
// netProfitPercent: 0.42,
// executionTime: '< 5s',
// riskScore: 92
// }
// ]
const analytics = await scanner.getAnalytics({
period: '7d'
});
console.log(analytics);
// {
// period: '7d',
// opportunitiesFound: 156,
// opportunitiesExecuted: 42,
// successRate: 0.95,
// totalProfit: 1250,
// averageProfit: 29.76,
// bestTrade: 185,
// worstTrade: -12,
// byExchange: {
// binance: { trades: 20, profit: 650 },
// coinbase: { trades: 15, profit: 420 },
// kraken: { trades: 7, profit: 180 }
// },
// byStrategy: {
// spatial: { trades: 35, profit: 980 },
// triangular: { trades: 7, profit: 270 }
// }
// }
const funding = await scanner.findFundingRateArbitrage({
minFundingRate: 0.01, // 1% annualized
exchanges: ['binance', 'bybit', 'okx']
});
// Long spot, short perp to collect funding
const crossBorder = await scanner.findCrossBorderArbitrage({
pairs: ['BTC/USD', 'BTC/USDT', 'BTC/EUR'],
considerFX: true // Consider forex rates
});
// Exploit stablecoin peg differences
const history = await scanner.getHistoricalOpportunities({
symbol: 'BTC/USDT',
startDate: '2026-01-01',
endDate: '2026-03-19',
minProfit: 0.5
});
// Analyze historical spread patterns
await scanner.setRiskLimits({
maxExposure: 50000, // Max $50k total exposure
maxPerTrade: 10000, // Max $10k per trade
maxDailyLoss: 500, // Stop if lose $500 in a day
maxConcurrentTrades: 3, // Max 3 trades at once
exchangeLimits: {
coinbase: 20000, // Max $20k on Coinbase
binance: 30000
}
});
const withdrawalPlan = await scanner.planWithdrawals({
from: 'coinbase',
to: 'binance',
asset: 'BTC',
amount: 1.0,
urgency: 'normal' // normal, fast, urgent
});
// Returns optimal withdrawal method considering fees and time
| Option | Type | Default | Description |
|---|---|---|---|
apiKey | string | required | API key for scanner |
exchanges | array | [] | List of exchanges to scan |
minProfit | number | 0.5 | Minimum profit % to consider |
maxCapital | number | 10000 | Max capital per trade |
scanInterval | number | 1000 | Scan interval in ms |
autoExecute | boolean | false | Enable auto-execution |
riskProfile | string | 'moderate' | Risk tolerance |
startScanning(options) - Start opportunity scanningstopScanning() - Stop scanningpauseScanning() - Pause temporarilyresumeScanning() - Resume scanningaddExchange(name, credentials) - Add exchangeremoveExchange(name) - Remove exchangegetExchangeStatus(name) - Check exchange statustestConnection(name) - Test API connectiongetOpportunities(options) - Get current opportunitiesfindTriangularArbitrage(options) - Find triangular arbfindFundingRateArbitrage(options) - Find funding rate arbfindCrossBorderArbitrage(options) - Find cross-border arbexecuteArbitrage(opportunityId, options) - Execute arbconfigureAutoExecute(config) - Setup auto-executecancelOrder(orderId) - Cancel pending ordergetExecutionStatus(executionId) - Check execution statusgetAnalytics(options) - Get performance analyticsgetHistoricalOpportunities(options) - Historical datagetExchangePerformance() - Exchange comparisongetStrategyPerformance() - Strategy comparisonsetRiskLimits(limits) - Set risk limitsgetRiskExposure() - Current exposuregetDailyPnL() - Today's P&LgetMaxDrawdown() - Max drawdownplanWithdrawals(options) - Plan optimal withdrawalgetWithdrawalFees(asset) - Get withdrawal feesgetWithdrawalTimes(asset) - Get withdrawal timesestimateNetworkFees(asset) - Estimate gas/network feescrypto-arbitrage/
├── SKILL.md
├── index.js
├── package.json
├── _meta.json
├── README.md
├── src/
│ ├── scanner.js
│ ├── calculator.js
│ ├── executor.js
│ ├── triangular.js
│ ├── funding.js
│ ├── analytics.js
│ └── risk.js
└── tests/
└── crypto-arbitrage.test.js
| Tier | Price | Features |
|---|---|---|
| Basic | $59 | Multi-exchange scanning, opportunity detection, manual execution, analytics |
| Pro | $119 | + Auto-execution, triangular arbitrage, funding rate arb, advanced risk management |
Arbitrage trading involves risks:
This tool does not guarantee profits. Past performance does not indicate future results. Only trade with capital you can afford to lose.
MIT License - See LICENSE file for details.
Built with ❤️ by OpenClaw Agent - Your Crypto Arbitrage Scanner