跨平台套利机会发现器Skill opportunity

这个技能用于发现和执行跨预测市场平台的套利机会,通过扫描多个平台、实时监控、市场链接和风险建模,帮助用户识别并利用价格差异实现盈利。关键词:套利机会、预测市场、量化交易、跨平台、实时扫描。

统计套利 0 次安装 11 次浏览 更新于 3/9/2026

name: 机会 description: “发现和执行跨预测市场平台的套利机会” emoji: “🎯” gates: envs: anyOf: - POLY_API_KEY - KALSHI_API_KEY

机会发现器 - 完整API参考

发现和执行跨Polymarket、Kalshi、Betfair、Smarkets、Manifold、Metaculus、PredictIt和Drift平台的套利机会。

基于arXiv:2508.03474,该研究发现Polymarket上实现了4000万美元以上的套利

机会类型

类型 描述 示例
内部 在同一平台上YES + NO < $1 购买两者以获得保证利润
跨平台 相同市场在不同平台价格不同 在A平台低价买入,在B平台高价卖出
组合 逻辑违规(当A隐含B时,P(A) > P(B)) 特朗普 > 共和党
边缘 市场与外部模型(538、民意调查)对比 市场45%,模型52%

聊天命令

扫描

/opportunities scan                         # 扫描所有平台的机会
/opportunities scan "trump"                 # 使用关键词过滤扫描
/opportunities scan --min-edge 2            # 最小2%边缘
/opportunities scan --min-liquidity 1000    # 最小$1000流动性

/opportunities active                       # 查看活动机会
/opportunities active --sort edge           # 按边缘大小排序
/opportunities active --sort liquidity      # 按流动性排序

实时监控

/opportunities realtime start               # 开始连续扫描
/opportunities realtime stop                # 停止扫描
/opportunities realtime status              # 检查监控状态
/opportunities realtime config --interval 30 # 设置扫描间隔(秒)

市场链接

/opportunities link <market-a> <market-b>   # 手动链接等效市场
/opportunities unlink <market-a> <market-b> # 移除链接
/opportunities links                        # 查看所有链接市场
/opportunities auto-match                   # 运行自动匹配算法

执行

/opportunities execute <id>                 # 执行一个机会
/opportunities execute <id> --size 100      # 以$100规模执行
/opportunities mark-taken <id>              # 标记为已获取(手动)
/opportunities record-outcome <id> <pnl>    # 记录盈亏结果

分析

/opportunities stats                        # 性能统计
/opportunities stats --period 7d            # 最近7天
/opportunities history                      # 过去机会
/opportunities by-platform                  # 按平台对统计
/opportunities by-type                      # 按机会类型统计

风险建模

/opportunities risk <id>                    # 建模执行风险
/opportunities estimate <id>                # 估计执行成本
/opportunities kelly <id>                   # 计算凯利分数

TypeScript API参考

创建机会发现器

import { createOpportunityFinder } from 'clodds/opportunity';

const finder = createOpportunityFinder({
  platforms: ['polymarket', 'kalshi', 'betfair', 'manifold'],

  // 过滤
  minEdge: 0.5,           // 0.5%最小边缘
  minLiquidity: 500,      // $500最小流动性
  minConfidence: 0.7,     // 70%匹配置信度

  // 实时
  enableRealtime: true,
  scanIntervalMs: 30000,  // 30秒间隔

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

扫描机会

// 一次性扫描
const opportunities = await finder.scan({
  query: 'election',      // 可选关键词
  minEdge: 1,             // 1%最小
  minLiquidity: 1000,     // $1000最小
  platforms: ['polymarket', 'kalshi'],
});

for (const opp of opportunities) {
  console.log(`${opp.type}: ${opp.description}`);
  console.log(`  Edge: ${opp.edge.toFixed(2)}%`);
  console.log(`  Liquidity: $${opp.liquidity.toLocaleString()}`);
  console.log(`  Confidence: ${(opp.confidence * 100).toFixed(0)}%`);
  console.log(`  Score: ${opp.score}/100`);
  console.log(`  Platforms: ${opp.platforms.join(' ↔ ')}`);
}

实时监控

// 开始实时扫描
await finder.startRealtime();

// 事件处理器
finder.on('opportunity', (opp) => {
  console.log(`🎯 新机会: ${opp.description}`);
  console.log(`   边缘: ${opp.edge.toFixed(2)}%`);
});

finder.on('opportunityExpired', (opp) => {
  console.log(`❌ 机会过期: ${opp.id}`);
});

finder.on('opportunityUpdated', (opp) => {
  console.log(`📊 更新: ${opp.id} - 边缘现在 ${opp.edge.toFixed(2)}%`);
});

// 获取活动机会
const active = await finder.getActive();

// 停止监控
await finder.stopRealtime();

市场链接

// 手动链接等效市场
await finder.linkMarkets(
  { platform: 'polymarket', id: 'market-123' },
  { platform: 'kalshi', id: 'TRUMP-WIN' }
);

// 使用语义相似度自动匹配
const matches = await finder.autoMatchMarkets({
  minSimilarity: 0.85,
  platforms: ['polymarket', 'kalshi'],
});

console.log(`找到 ${matches.length} 个潜在匹配`);
for (const match of matches) {
  console.log(`${match.marketA.question}`);
  console.log(`  ↔ ${match.marketB.question}`);
  console.log(`  相似度: ${(match.similarity * 100).toFixed(0)}%`);
}

// 获取所有链接
const links = await finder.getLinks();

执行机会

// 执行一个机会
const result = await finder.execute(opportunityId, {
  size: 100,              // $100头寸
  maxSlippage: 0.5,       // 0.5%最大滑点
  useProtectedOrders: true,
});

console.log(`执行: ${result.status}`);
console.log(`  填充: $${result.filledSize}`);
console.log(`  平均价格: ${result.avgPrice}`);
console.log(`  费用: $${result.fees}`);

// 手动标记为已获取
await finder.markTaken(opportunityId);

// 记录结果
await finder.recordOutcome(opportunityId, {
  pnl: 25.50,
  exitPrice: 0.55,
  exitTimestamp: Date.now(),
});

分析

// 获取统计
const stats = await finder.getAnalytics({
  period: '30d',
});

console.log(`总机会: ${stats.total}`);
console.log(`已获取: ${stats.taken}`);
console.log(`胜率: ${(stats.winRate * 100).toFixed(1)}%`);
console.log(`总盈亏: $${stats.totalPnl.toLocaleString()}`);
console.log(`平均边缘: ${stats.avgEdge.toFixed(2)}%`);
console.log(`按平台对:`);
for (const [pair, data] of Object.entries(stats.byPlatformPair)) {
  console.log(`  ${pair}: ${data.count} 机会, $${data.pnl} 盈亏`);
}

风险建模

// 建模执行风险
const risk = await finder.modelRisk(opportunityId);

console.log(`执行风险:`);
console.log(`  填充概率: ${(risk.fillProbability * 100).toFixed(0)}%`);
console.log(`  预期滑点: ${risk.expectedSlippage.toFixed(2)}%`);
console.log(`  填充时间: ${risk.estimatedTimeToFill}s`);
console.log(`  交易对手风险: ${risk.counterpartyRisk}`);

// 估计执行
const estimate = await finder.estimateExecution(opportunityId, {
  size: 500,
});

console.log(`$500的执行估计:`);
console.log(`  预期填充: $${estimate.expectedFill}`);
console.log(`  预期成本: $${estimate.expectedCost}`);
console.log(`  成本后净边缘: ${estimate.netEdge.toFixed(2)}%`);

机会评分

机会基于以下因素评分0-100:

因素 权重 描述
边缘 % 35% 原始套利差价
流动性 25% 可用交易量
置信度 25% 匹配质量
执行 15% 平台可靠性

处罚

  • 低流动性 (<$1000): -5 分
  • 跨平台复杂度: -3 每平台
  • 高滑点 (>2%): -5 分
  • 低置信度 (<70%): -5 分
  • 临近到期 (<24h): -3 分

语义匹配

市场使用以下方式匹配:

  1. 精确slug匹配 - 平台特定ID
  2. 文本相似度 - Jaccard系数
  3. 向量嵌入 - 语义相似度
  4. 手动链接 - 用户定义
// 配置匹配
finder.setMatchingConfig({
  minTextSimilarity: 0.8,
  minEmbeddingSimilarity: 0.85,
  useManualLinksFirst: true,
});

最佳实践

  1. 从高置信度匹配开始 - 85%+ 相似度
  2. 检查流动性 - 确保足够交易量执行
  3. 考虑费用 - 考虑平台费用
  4. 使用保护订单 - 避免滑点
  5. 实时监控 - 机会消失快
  6. 跟踪结果 - 构建性能历史