소스 정보
- 저장소
- alsk1992/CloddsBot
- 최근 소스 활동
- 2026년 2월 10일 02:15
- 감지된 SKILL.md 언어
- 영어
- 스타
- 716
- 포크
- 155
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/alsk1992/CloddsBot --skill arbitrage명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | arbitrage |
| description | Automated cross-platform arbitrage detection and monitoring |
| emoji | ⚖️ |
| gates | {"envs":{"anyOf":["POLY_API_KEY","KALSHI_API_KEY"]}} |
Automated detection and monitoring of arbitrage opportunities across prediction market platforms.
/arb start # Start arbitrage monitoring
/arb stop # Stop monitoring
/arb status # Check monitoring status
/arb config --interval 60 # Set check interval (seconds)
/arb check # Run one-time scan
/arb check "election" # Scan with keyword
/arb check --platforms poly,kalshi # Specific platforms
/arb compare <market-a> <market-b> # Compare two specific markets
/arb compare poly:12345 kalshi:TRUMP # By platform:id
/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 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 stats # Arbitrage statistics
/arb stats --period 7d # Last 7 days
/arb history # Historical opportunities
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 },
});
// 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();
// 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)}%`);
}
// 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)}%`);
}
// 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`);
// 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);
// 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}`);
}
Market: "Trump wins 2024"
Polymarket YES: 52¢
Kalshi YES: 55¢
Strategy: Buy Polymarket YES, Sell Kalshi YES
Spread: 3¢ (5.8%)
Market: "Will X happen?"
YES: 45¢
NO: 52¢
Total: 97¢
Strategy: Buy both YES and NO
Guaranteed profit: 3¢ per $1
Market A: "Trump wins" = 55¢
Market B: "Trump loses" = 48¢
Total: 103¢ (should be 100¢)
Strategy: Sell both, pocket 3¢
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
});