arbitrage

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Arbitrage Service - Complete API Reference

套利服务 - 完整API参考

Automated detection and monitoring of arbitrage opportunities across prediction market platforms.
跨预测市场平台的套利机会自动化检测与监控。

Supported Platforms

支持的平台

  • Polymarket
  • Kalshi
  • Manifold
  • Metaculus
  • PredictIt
  • Drift
  • Betfair
  • Smarkets

  • Polymarket
  • Kalshi
  • Manifold
  • Metaculus
  • PredictIt
  • Drift
  • Betfair
  • Smarkets

Chat Commands

聊天命令

Monitoring Control

监控控制

/arb start                                  # Start arbitrage monitoring
/arb stop                                   # Stop monitoring
/arb status                                 # Check monitoring status
/arb config --interval 60                   # Set check interval (seconds)
/arb start                                  # 启动套利监控
/arb stop                                   # 停止监控
/arb status                                 # 查看监控状态
/arb config --interval 60                   # 设置检测间隔(秒)

Manual Scanning

手动扫描

/arb check                                  # Run one-time scan
/arb check "election"                       # Scan with keyword
/arb check --platforms poly,kalshi          # Specific platforms
/arb check                                  # 执行一次性扫描
/arb check "election"                       # 按关键词扫描
/arb check --platforms poly,kalshi          # 指定平台扫描

Market Comparison

市场对比

/arb compare <market-a> <market-b>          # Compare two specific markets
/arb compare poly:12345 kalshi:TRUMP        # By platform:id
/arb compare <market-a> <market-b>          # 对比两个特定市场
/arb compare poly:12345 kalshi:TRUMP        # 通过平台:ID对比

View Opportunities

查看套利机会

/arb opportunities                          # List current opportunities
/arb opportunities --min-spread 2           # Min 2% spread
/arb opportunities --format table           # Table format
/arb opportunities --format detailed        # Detailed view
/arb opportunities                          # 列出当前套利机会
/arb opportunities --min-spread 2           # 筛选最小价差2%的机会
/arb opportunities --format table           # 表格格式展示
/arb opportunities --format detailed        # 详细视图展示

Market Linking

市场关联

/arb link <market-a> <market-b>             # Manually link markets
/arb unlink <market-a> <market-b>           # Remove link
/arb links                                  # View all links
/arb auto-match                             # Auto-detect matches
/arb link <market-a> <market-b>             # 手动关联市场
/arb unlink <market-a> <market-b>           # 取消市场关联
/arb links                                  # 查看所有关联
/arb auto-match                             # 自动检测匹配市场

Statistics

统计信息

/arb stats                                  # Arbitrage statistics
/arb stats --period 7d                      # Last 7 days
/arb history                                # Historical opportunities

/arb stats                                  # 套利统计数据
/arb stats --period 7d                      # 最近7天统计
/arb history                                # 历史套利机会

TypeScript API Reference

TypeScript API参考

Create Arbitrage Service

创建套利服务

typescript
import { createArbitrageService } from 'clodds/arbitrage';

const arbService = createArbitrageService({
  platforms: ['polymarket', 'kalshi', 'manifold', 'betfair'],

  checkIntervalMs: 30000,    // Check every 30 seconds
  minSpread: 0.5,            // 0.5% minimum spread
  minLiquidity: 100,         // $100 minimum

  // Platform credentials
  polymarket: { apiKey, apiSecret, passphrase },
  kalshi: { apiKey },
});
typescript
import { createArbitrageService } from 'clodds/arbitrage';

const arbService = createArbitrageService({
  platforms: ['polymarket', 'kalshi', 'manifold', 'betfair'],

  checkIntervalMs: 30000,    // 每30秒检测一次
  minSpread: 0.5,            // 最小价差0.5%
  minLiquidity: 100,         // 最小流动性100美元

  // 平台凭证
  polymarket: { apiKey, apiSecret, passphrase },
  kalshi: { apiKey },
});

Start/Stop Monitoring

启动/停止监控

typescript
// Start continuous monitoring
await arbService.start();

// Event handlers
arbService.on('arbitrage', (opp) => {
  console.log(`⚖️ Arbitrage found!`);
  console.log(`  ${opp.marketA.platform}: ${opp.marketA.price}`);
  console.log(`  ${opp.marketB.platform}: ${opp.marketB.price}`);
  console.log(`  Spread: ${opp.spread.toFixed(2)}%`);
});

arbService.on('arbitrageExpired', (opp) => {
  console.log(`Arbitrage expired: ${opp.id}`);
});

// Check status
const isRunning = arbService.isRunning();

// Stop monitoring
await arbService.stop();
typescript
// 启动持续监控
await arbService.start();

// 事件处理器
arbService.on('arbitrage', (opp) => {
  console.log(`⚖️ 发现套利机会!`);
  console.log(`  ${opp.marketA.platform}: ${opp.marketA.price}`);
  console.log(`  ${opp.marketB.platform}: ${opp.marketB.price}`);
  console.log(`  价差: ${opp.spread.toFixed(2)}%`);
});

arbService.on('arbitrageExpired', (opp) => {
  console.log(`套利机会已过期: ${opp.id}`);
});

// 检查状态
const isRunning = arbService.isRunning();

// 停止监控
await arbService.stop();

One-Time Check

一次性检测

typescript
// Run a single scan
const opportunities = await arbService.checkArbitrage({
  query: 'trump',
  platforms: ['polymarket', 'kalshi'],
  minSpread: 1,
});

for (const opp of opportunities) {
  console.log(`${opp.question}`);
  console.log(`  Buy on ${opp.buyPlatform} @ ${opp.buyPrice}`);
  console.log(`  Sell on ${opp.sellPlatform} @ ${opp.sellPrice}`);
  console.log(`  Spread: ${opp.spread.toFixed(2)}%`);
}
typescript
// 执行单次扫描
const opportunities = await arbService.checkArbitrage({
  query: 'trump',
  platforms: ['polymarket', 'kalshi'],
  minSpread: 1,
});

for (const opp of opportunities) {
  console.log(`${opp.question}`);
  console.log(`${opp.buyPlatform}${opp.buyPrice}买入`);
  console.log(`${opp.sellPlatform}${opp.sellPrice}卖出`);
  console.log(`  价差: ${opp.spread.toFixed(2)}%`);
}

Compare Specific Markets

对比特定市场

typescript
// Compare two specific markets
const comparison = await arbService.compareMarkets(
  { platform: 'polymarket', id: 'market-123' },
  { platform: 'kalshi', id: 'TRUMP-WIN' }
);

if (comparison.hasArbitrage) {
  console.log(`Arbitrage exists!`);
  console.log(`  Buy ${comparison.buySide} on ${comparison.buyPlatform}`);
  console.log(`  Sell ${comparison.sellSide} on ${comparison.sellPlatform}`);
  console.log(`  Spread: ${comparison.spread.toFixed(2)}%`);
} else {
  console.log(`No arbitrage. Price difference: ${comparison.priceDiff.toFixed(2)}%`);
}
typescript
// 对比两个特定市场
const comparison = await arbService.compareMarkets(
  { platform: 'polymarket', id: 'market-123' },
  { platform: 'kalshi', id: 'TRUMP-WIN' }
);

if (comparison.hasArbitrage) {
  console.log(`存在套利机会!`);
  console.log(`${comparison.buyPlatform}买入${comparison.buySide}`);
  console.log(`${comparison.sellPlatform}卖出${comparison.sellSide}`);
  console.log(`  价差: ${comparison.spread.toFixed(2)}%`);
} else {
  console.log(`无套利机会。价格差异: ${comparison.priceDiff.toFixed(2)}%`);
}

Market Linking

市场关联

typescript
// Add a manual match
await arbService.addMatch(
  { platform: 'polymarket', id: 'market-123', question: 'Will Trump win?' },
  { platform: 'kalshi', id: 'TRUMP-WIN', question: 'Trump wins 2024' }
);

// Remove a match
await arbService.removeMatch('polymarket:market-123', 'kalshi:TRUMP-WIN');

// Auto-detect matches using question similarity
const autoMatches = await arbService.autoMatchMarkets({
  minSimilarity: 0.85,
});

console.log(`Found ${autoMatches.length} auto-matches`);
typescript
// 添加手动匹配
await arbService.addMatch(
  { platform: 'polymarket', id: 'market-123', question: 'Will Trump win?' },
  { platform: 'kalshi', id: 'TRUMP-WIN', question: 'Trump wins 2024' }
);

// 移除匹配
await arbService.removeMatch('polymarket:market-123', 'kalshi:TRUMP-WIN');

// 通过问题相似度自动检测匹配
const autoMatches = await arbService.autoMatchMarkets({
  minSimilarity: 0.85,
});

console.log(`发现${autoMatches.length}个自动匹配项`);

Get Opportunities

获取套利机会

typescript
// Get current opportunities
const opportunities = await arbService.getOpportunities({
  minSpread: 1,
  sortBy: 'spread',  // 'spread' | 'liquidity' | 'confidence'
});

// Format for display
const formatted = await arbService.formatOpportunities(opportunities);
console.log(formatted);
typescript
// 获取当前套利机会
const opportunities = await arbService.getOpportunities({
  minSpread: 1,
  sortBy: 'spread',  // 'spread' | 'liquidity' | 'confidence'
});

// 格式化展示
const formatted = await arbService.formatOpportunities(opportunities);
console.log(formatted);

Statistics

统计信息

typescript
// Get arbitrage statistics
const stats = await arbService.getStats({
  period: '30d',
});

console.log(`Total opportunities: ${stats.totalOpportunities}`);
console.log(`Avg spread: ${stats.avgSpread.toFixed(2)}%`);
console.log(`Max spread seen: ${stats.maxSpread.toFixed(2)}%`);
console.log(`By platform pair:`);
for (const [pair, count] of Object.entries(stats.byPlatformPair)) {
  console.log(`  ${pair}: ${count}`);
}

typescript
// 获取套利统计数据
const stats = await arbService.getStats({
  period: '30d',
});

console.log(`总套利机会数: ${stats.totalOpportunities}`);
console.log(`平均价差: ${stats.avgSpread.toFixed(2)}%`);
console.log(`最大价差记录: ${stats.maxSpread.toFixed(2)}%`);
console.log(`按平台组合统计:`);
for (const [pair, count] of Object.entries(stats.byPlatformPair)) {
  console.log(`  ${pair}: ${count}`);
}

Arbitrage Types Detected

可检测的套利类型

1. Cross-Platform Price Difference

1. 跨平台价差套利

Market: "Trump wins 2024"
Polymarket YES: 52¢
Kalshi YES: 55¢

Strategy: Buy Polymarket YES, Sell Kalshi YES
Spread: 3¢ (5.8%)
市场: "Trump wins 2024"
Polymarket YES: 52美分
Kalshi YES: 55美分

策略: 在Polymarket买入YES,在Kalshi卖出YES
价差: 3美分(5.8%)

2. Internal Arbitrage (Rebalancing)

2. 内部套利(再平衡)

Market: "Will X happen?"
YES: 45¢
NO: 52¢
Total: 97¢

Strategy: Buy both YES and NO
Guaranteed profit: 3¢ per $1
市场: "Will X happen?"
YES: 45美分
NO: 52美分
总计: 97美分

策略: 同时买入YES和NO
保证利润: 每1美元获利3美分

3. Inverse Markets

3. 反向市场套利

Market A: "Trump wins" = 55¢
Market B: "Trump loses" = 48¢
Total: 103¢ (should be 100¢)

Strategy: Sell both, pocket 3¢

市场A: "Trump wins" = 55美分
市场B: "Trump loses" = 48美分
总计: 103美分(应为100美分)

策略: 同时卖出两者,获利3美分

Configuration

配置

typescript
arbService.configure({
  // Scanning
  checkIntervalMs: 30000,
  batchSize: 50,

  // Filtering
  minSpread: 0.5,
  minLiquidity: 100,
  minConfidence: 0.7,

  // Matching
  autoMatchEnabled: true,
  minMatchSimilarity: 0.85,

  // Alerts
  alertOnNewArb: true,
  alertThreshold: 2,  // Alert on 2%+ spreads
});

typescript
arbService.configure({
  // 扫描设置
  checkIntervalMs: 30000,
  batchSize: 50,

  // 过滤设置
  minSpread: 0.5,
  minLiquidity: 100,
  minConfidence: 0.7,

  // 匹配设置
  autoMatchEnabled: true,
  minMatchSimilarity: 0.85,

  // 告警设置
  alertOnNewArb: true,
  alertThreshold: 2,  // 价差2%及以上时触发告警
});

Best Practices

最佳实践

  1. Verify matches manually - Auto-matching can have false positives
  2. Check liquidity - Ensure you can actually execute
  3. Account for fees - Platform fees reduce spreads
  4. Move fast - Arbitrage disappears quickly
  5. Use limit orders - Avoid slippage
  6. Track all outcomes - Build performance data
  1. 手动验证匹配项 - 自动匹配可能存在误判
  2. 检查流动性 - 确保实际可执行交易
  3. 考虑手续费 - 平台手续费会缩小价差
  4. 快速行动 - 套利机会会迅速消失
  5. 使用限价订单 - 避免滑点损失
  6. 追踪所有结果 - 构建业绩数据