Finding Arbitrage Opportunities
jeremylongshore/tons-of-skills-marketplace
Detect profitable arbitrage opportunities across CEX, DEX, and cross-chain markets in real-time.
Find and execute cross-platform arbitrage opportunities across prediction markets
$ npx skills add alsk1992/CloddsBot --skill opportunity -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install alsk1992/CloddsBot opportunity --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/bundled/opportunity .claude/skills/opportunity && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "opportunity" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/opportunity into .claude/skills/opportunity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opportunity", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/opportunityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add alsk1992/CloddsBot --skill opportunity -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install alsk1992/CloddsBot opportunity --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/skills/bundled/opportunity .agents/skills/opportunity && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "opportunity" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/opportunity into .agents/skills/opportunity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opportunity", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add alsk1992/CloddsBot --skill opportunity -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install alsk1992/CloddsBot opportunity --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/skills/bundled/opportunity .cursor/skills/opportunity && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "opportunity" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/opportunity into .cursor/skills/opportunity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opportunity", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/alsk1992/CloddsBot.git --path src/skills/bundled/opportunity--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add alsk1992/CloddsBot --skill opportunity -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install alsk1992/CloddsBot opportunity --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/skills/bundled/opportunity .gemini/skills/opportunity && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "opportunity" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/opportunity into .gemini/skills/opportunity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opportunity", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install alsk1992/CloddsBot opportunityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add alsk1992/CloddsBot --skill opportunity -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/skills/bundled/opportunity .github/skills/opportunity && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "opportunity" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/opportunity into .github/skills/opportunity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opportunity", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add alsk1992/CloddsBot --skill opportunity -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install alsk1992/CloddsBot opportunity --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/skills/bundled/opportunity .opencode/skills/opportunity && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "opportunity" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/opportunity into .opencode/skills/opportunity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opportunity", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
opportunityFind and execute cross-platform arbitrage opportunities across prediction markets
Opportunity is an agent skill from alsk1992/CloddsBot. Find and execute cross-platform arbitrage opportunities across prediction markets
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `index.ts`).
The repository describes itself as: Open Source AI trading agent that operates autonomously across 1000+ markets - Polymarket, Kalshi, Binance, Hyperliquid, Solana DEXs, 5 EVM chains. Scans for edge, executes… The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c930628. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
arxiv.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Opportunity loads about 2.2k tokens when it runs. Until then it costs about 23 tokens; SKILL.md has 237 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from alsk1992/CloddsBot at commit c930628, republished under its MIT licence (© alsk1992). 237 words, ~2,179 tokens.
.claude/skills/opportunity/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Discover and execute cross-platform arbitrage opportunities across Polymarket, Kalshi, Betfair, Smarkets, Manifold, Metaculus, PredictIt, and Drift.
Based on arXiv:2508.03474 which found $40M+ in realized arbitrage on Polymarket.
| Type | Description | Example |
|---|---|---|
| Internal | YES + NO < $1 on same platform | Buy both for guaranteed profit |
| Cross-Platform | Same market priced differently | Buy low on A, sell high on B |
| Combinatorial | Logical violations (P(A) > P(B) when A implies B) | Trump > Republican |
| Edge | Market vs external model (538, polls) | Market 45%, model 52% |
/opportunities scan # Scan all platforms for opportunities
/opportunities scan "trump" # Scan with keyword filter
/opportunities scan --min-edge 2 # Min 2% edge
/opportunities scan --min-liquidity 1000 # Min $1000 liquidity
/opportunities active # View active opportunities
/opportunities active --sort edge # Sort by edge size
/opportunities active --sort liquidity # Sort by liquidity/opportunities realtime start # Start continuous scanning
/opportunities realtime stop # Stop scanning
/opportunities realtime status # Check monitoring status
/opportunities realtime config --interval 30 # Set scan interval (seconds)/opportunities link <market-a> <market-b> # Manually link equivalent markets
/opportunities unlink <market-a> <market-b> # Remove link
/opportunities links # View all linked markets
/opportunities auto-match # Run auto-matching algorithm/opportunities execute <id> # Execute an opportunity
/opportunities execute <id> --size 100 # Execute with $100 size
/opportunities mark-taken <id> # Mark as taken (manual)
/opportunities record-outcome <id> <pnl> # Record P&L outcome/opportunities stats # Performance statistics
/opportunities stats --period 7d # Last 7 days
/opportunities history # Past opportunities
/opportunities by-platform # Stats by platform pair
/opportunities by-type # Stats by opportunity type/opportunities risk <id> # Model execution risk
/opportunities estimate <id> # Estimate execution costs
/opportunities kelly <id> # Calculate Kelly fractionimport { createOpportunityFinder } from 'clodds/opportunity';
const finder = createOpportunityFinder({
platforms: ['polymarket', 'kalshi', 'betfair', 'manifold'],
// Filtering
minEdge: 0.5, // 0.5% minimum edge
minLiquidity: 500, // $500 minimum liquidity
minConfidence: 0.7, // 70% match confidence
// Real-time
enableRealtime: true,
scanIntervalMs: 30000, // 30 second intervals
// Credentials
polymarket: { apiKey, apiSecret, passphrase, privateKey },
kalshi: { apiKey, privateKey },
});// One-time scan
const opportunities = await finder.scan({
query: 'election', // Optional keyword
minEdge: 1, // 1% minimum
minLiquidity: 1000, // $1000 minimum
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(' ↔ ')}`);
}// Start real-time scanning
await finder.startRealtime();
// Event handlers
finder.on('opportunity', (opp) => {
console.log(`🎯 New opportunity: ${opp.description}`);
console.log(` Edge: ${opp.edge.toFixed(2)}%`);
});
finder.on('opportunityExpired', (opp) => {
console.log(`❌ Opportunity expired: ${opp.id}`);
});
finder.on('opportunityUpdated', (opp) => {
console.log(`📊 Updated: ${opp.id} - Edge now ${opp.edge.toFixed(2)}%`);
});
// Get active opportunities
const active = await finder.getActive();
// Stop monitoring
await finder.stopRealtime();// Manually link equivalent markets
await finder.linkMarkets(
{ platform: 'polymarket', id: 'market-123' },
{ platform: 'kalshi', id: 'TRUMP-WIN' }
);
// Auto-match using semantic similarity
const matches = await finder.autoMatchMarkets({
minSimilarity: 0.85,
platforms: ['polymarket', 'kalshi'],
});
console.log(`Found ${matches.length} potential matches`);
for (const match of matches) {
console.log(`${match.marketA.question}`);
console.log(` ↔ ${match.marketB.question}`);
console.log(` Similarity: ${(match.similarity * 100).toFixed(0)}%`);
}
// Get all links
const links = await finder.getLinks();// Execute an opportunity
const result = await finder.execute(opportunityId, {
size: 100, // $100 position
maxSlippage: 0.5, // 0.5% max slippage
useProtectedOrders: true,
});
console.log(`Executed: ${result.status}`);
console.log(` Filled: $${result.filledSize}`);
console.log(` Avg price: ${result.avgPrice}`);
console.log(` Fees: $${result.fees}`);
// Mark as taken manually
await finder.markTaken(opportunityId);
// Record outcome
await finder.recordOutcome(opportunityId, {
pnl: 25.50,
exitPrice: 0.55,
exitTimestamp: Date.now(),
});// Get statistics
const stats = await finder.getAnalytics({
period: '30d',
});
console.log(`Total opportunities: ${stats.total}`);
console.log(`Taken: ${stats.taken}`);
console.log(`Win rate: ${(stats.winRate * 100).toFixed(1)}%`);
console.log(`Total P&L: $${stats.totalPnl.toLocaleString()}`);
console.log(`Avg edge: ${stats.avgEdge.toFixed(2)}%`);
console.log(`By platform pair:`);
for (const [pair, data] of Object.entries(stats.byPlatformPair)) {
console.log(` ${pair}: ${data.count} opps, $${data.pnl} P&L`);
}// Model execution risk
const risk = await finder.modelRisk(opportunityId);
console.log(`Execution risk:`);
console.log(` Fill probability: ${(risk.fillProbability * 100).toFixed(0)}%`);
console.log(` Expected slippage: ${risk.expectedSlippage.toFixed(2)}%`);
console.log(` Time to fill: ${risk.estimatedTimeToFill}s`);
console.log(` Counterparty risk: ${risk.counterpartyRisk}`);
// Estimate execution
const estimate = await finder.estimateExecution(opportunityId, {
size: 500,
});
console.log(`Execution estimate for $500:`);
console.log(` Expected fill: $${estimate.expectedFill}`);
console.log(` Expected cost: $${estimate.expectedCost}`);
console.log(` Net edge after costs: ${estimate.netEdge.toFixed(2)}%`);Opportunities are scored 0-100 based on:
| Factor | Weight | Description |
|---|---|---|
| Edge % | 35% | Raw arbitrage spread |
| Liquidity | 25% | Available volume |
| Confidence | 25% | Match quality |
| Execution | 15% | Platform reliability |
Markets are matched using:
// Configure matching
finder.setMatchingConfig({
minTextSimilarity: 0.8,
minEmbeddingSimilarity: 0.85,
useManualLinksFirst: true,
});© alsk1992, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in src/skills/bundled/opportunity of alsk1992/CloddsBot.
Open the folder on GitHubat commit c930628
Opportunity next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Opportunity this skillalsk1992/CloddsBot | 2.9k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Finding Arbitrage Opportunitiesjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Executealirezarezvani/claude-skills | 28k | — | ~831 | Automated safety check: Pass | MIT | |
| Debugging Executionsn8n-io/n8n | 207k | — | ~2.6k | Automated safety check: Pass | Custom licence | |
| Prediction Market Risk Reviewaffaan-m/ECC | 276k | 1 repos | ~471 | Automated safety check: Pass | MIT | |
| Autopilot Predictruvnet/ruflo | 74k | — | ~337 | Automated safety check: Pass | MIT |
jeremylongshore/tons-of-skills-marketplace
Detect profitable arbitrage opportunities across CEX, DEX, and cross-chain markets in real-time.
alirezarezvani/claude-skills
/cs:execute <decision — Generate a 90-day execution plan with weekly milestones, DRIs, and check-in cadence from an approved decision.
n8n-io/n8n
Debug failed or wrong-output workflow executions using executions tools.
affaan-m/ECC
Review prediction-market, basket, oracle, and trading-agent workflows for compliance, safety, data-quality, privacy, and execution risk.
ruvnet/ruflo
Use learned patterns and current state to predict the optimal next action
code-yeongyu/oh-my-openagent
Executes a written ulw-plan work plan with Boulder state, evidence ledger, worktree discipline, and parallel subagents.
alsk1992/CloddsBot
Local hybrid search for markdown notes and docs. An agent skill from alsk1992/CloddsBot.
alsk1992/CloddsBot
AI Strategy - natural language to trades. An agent skill from alsk1992/CloddsBot.
alsk1992/CloddsBot
Create and manage price alerts for prediction markets. An agent skill from alsk1992/CloddsBot.
alsk1992/CloddsBot
Performance attribution, trade analytics, and strategy optimization
alsk1992/CloddsBot
Automated cross-platform arbitrage detection and monitoring. An agent skill from alsk1992/CloddsBot.
alsk1992/CloddsBot
Automatic response rules, patterns, and scheduled messages. An agent skill from alsk1992/CloddsBot.
Find and execute cross-platform arbitrage opportunities across prediction markets. Opportunity is an agent skill from alsk1992/CloddsBot.
Run `npx skills add alsk1992/CloddsBot --skill opportunity -a claude-code`. Or copy the skill folder (src/skills/bundled/opportunity in alsk1992/CloddsBot) into .claude/skills/opportunity in your project. Claude Code loads it when a task matches its description.
Run `npx skills add alsk1992/CloddsBot --skill opportunity -a codex`. Or copy the skill folder (src/skills/bundled/opportunity in alsk1992/CloddsBot) into .agents/skills/opportunity in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add alsk1992/CloddsBot --skill opportunity -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/opportunity, .gemini/skills/opportunity, .github/skills/opportunity and .opencode/skills/opportunity in your project.
Going by SKILL.md and its folder, Opportunity needs TypeScript for the scripts in its folder. Our summary lists: Node.js; A credential in POLY_API_KEY; A credential in KALSHI_API_KEY.
SKILL.md names 1 domain. As links in the text: arxiv.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Opportunity is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Opportunity: Finding Arbitrage Opportunities (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Execute (alirezarezvani/claude-skills, 28k stars), Debugging Executions (n8n-io/n8n, 207k stars) and Prediction Market Risk Review (affaan-m/ECC, 276k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
alsk1992 (a GitHub user) maintains it in alsk1992/CloddsBot, which has 2,933 GitHub stars. The repository holds 116 skills in this directory. The repository was last updated on October 2, 2026.
Source: alsk1992/CloddsBot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.