arbitrage
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseArbitrage 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
最佳实践
- Verify matches manually - Auto-matching can have false positives
- Check liquidity - Ensure you can actually execute
- Account for fees - Platform fees reduce spreads
- Move fast - Arbitrage disappears quickly
- Use limit orders - Avoid slippage
- Track all outcomes - Build performance data
- 手动验证匹配项 - 自动匹配可能存在误判
- 检查流动性 - 确保实际可执行交易
- 考虑手续费 - 平台手续费会缩小价差
- 快速行动 - 套利机会会迅速消失
- 使用限价订单 - 避免滑点损失
- 追踪所有结果 - 构建业绩数据