Digital Oracle
komako-workshop/digital-oracle
Answer prediction questions using market trading data, not opinions.
Professional-grade Polymarket prediction market trading system.
$ npx skills add LeoYeAI/openclaw-master-skills --skill polymarket-quant-trader -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills polymarket-quant-trader --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/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/polymarket-quant-trader .claude/skills/polymarket-quant-trader && 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 "polymarket-quant-trader" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/polymarket-quant-trader into .claude/skills/polymarket-quant-trader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-quant-trader", 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/LeoYeAI/openclaw-master-skills/tree/main/skills/polymarket-quant-traderType 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 LeoYeAI/openclaw-master-skills --skill polymarket-quant-trader -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills polymarket-quant-trader --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/polymarket-quant-trader .agents/skills/polymarket-quant-trader && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "polymarket-quant-trader" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/polymarket-quant-trader into .agents/skills/polymarket-quant-trader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-quant-trader", 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 LeoYeAI/openclaw-master-skills --skill polymarket-quant-trader -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills polymarket-quant-trader --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/polymarket-quant-trader .cursor/skills/polymarket-quant-trader && 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 "polymarket-quant-trader" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/polymarket-quant-trader into .cursor/skills/polymarket-quant-trader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-quant-trader", 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/LeoYeAI/openclaw-master-skills.git --path skills/polymarket-quant-trader--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 LeoYeAI/openclaw-master-skills --skill polymarket-quant-trader -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills polymarket-quant-trader --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/polymarket-quant-trader .gemini/skills/polymarket-quant-trader && 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 "polymarket-quant-trader" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/polymarket-quant-trader into .gemini/skills/polymarket-quant-trader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-quant-trader", 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 LeoYeAI/openclaw-master-skills polymarket-quant-traderInstalls 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 LeoYeAI/openclaw-master-skills --skill polymarket-quant-trader -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/polymarket-quant-trader .github/skills/polymarket-quant-trader && 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 "polymarket-quant-trader" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/polymarket-quant-trader into .github/skills/polymarket-quant-trader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-quant-trader", 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 LeoYeAI/openclaw-master-skills --skill polymarket-quant-trader -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills polymarket-quant-trader --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/polymarket-quant-trader .opencode/skills/polymarket-quant-trader && 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 "polymarket-quant-trader" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/polymarket-quant-trader into .opencode/skills/polymarket-quant-trader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-quant-trader", 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.
polymarket-quant-traderProfessional-grade Polymarket prediction market trading system.
Polymarket Quant Trader is an agent skill from LeoYeAI/openclaw-master-skills. Professional-grade Polymarket prediction market trading system. Includes Kelly Criterion position sizing, EV calculator, Bayesian probability updater, cross-platform arbitrage detector (Polymarket vs 1WIN), and autoresearch loop that self-improves strategy overnight via Brier score optimisation. Use when: user wants to trade prediction markets, find arbitrage opportunities, build a trading bot, or improve prediction accuracy. Triggers: polymarket, prediction markets, kelly criterion, EV trading, arb detector…
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `README.md`, `_meta.json` and `references/arb-mechanics.md`).
It sits in Business, Finance & HR, covering Trading and backtesting and Autonomous loops. It works with Polymarket. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. 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.
Shell commands in SKILL.md call:
npmgitFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
gamma-api.polymarket.comclob.polymarket.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
POLYGON_WALLET_PRIVATE_KEYBINANCE_API_KEYBINANCE_API_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Polymarket Quant Trader loads about 4.7k tokens when it runs, and up to ~7.6k if it reads all its reference files. Until then it costs about 163 tokens; SKILL.md has 903 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 noted patterns worth knowing about, such as sudo or a known installer.
Copy `.env.example` to `.env` and fill in: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 LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 903 words, ~4,727 tokens.
.claude/skills/polymarket-quant-trader/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.A professional quant trading system for Polymarket prediction markets, built and battle-tested in production. Three alpha streams. One integrated system.
This skill gives you a complete quantitative trading system for Polymarket with three independent alpha streams:
Each stream works independently or together. The system ships with TypeScript source, npm scripts for every workflow, and a backtester to validate before going live.
Current production performance: Brier score 0.18 (meaningful edge territory — baseline random is 0.25, professional is sub-0.12).
The core loop: estimate a probability, compare it to the market price, calculate expected value, size the position with Kelly Criterion, and update beliefs as new evidence arrives.
Kelly answers: "Given my edge, what fraction of my bankroll should I bet?"
The formula:
f* = (p * b - q) / b
where:
f* = optimal fraction of bankroll to wager
p = probability of winning (your estimate, 0-1)
b = net odds multiplier (payout per $1 risked)
q = 1 - p (probability of losing)In prediction markets, odds derive from the market price:
b = (1 - marketYesPrice) / marketYesPriceIf YES trades at $0.40, then b = 0.60/0.40 = 1.5 (you risk $0.40 to win $0.60).
Implementation:
// kelly-criterion.ts
export function kelly(p: number, b: number, q?: number): number {
const qVal = q ?? 1 - p;
return (p * b - qVal) / b;
}
export function quarterKelly(p: number, b: number): number {
return 0.25 * kelly(p, b);
}
export function kellySizing(
bankroll: number,
p: number,
b: number,
mode: 'full' | 'half' | 'quarter' = 'quarter'
): number {
const fraction = mode === 'full' ? kelly(p, b)
: mode === 'half' ? 0.5 * kelly(p, b)
: quarterKelly(p, b);
return Math.max(0, bankroll * Math.min(fraction, 0.15));
}Why quarter Kelly? Full Kelly maximizes long-run growth rate but produces brutal drawdowns (50%+ swings). Quarter Kelly captures ~75% of the growth rate with dramatically lower variance. Every serious quant fund uses fractional Kelly.
Expected value quantifies your edge per dollar risked:
// ev-calculator.ts
export interface MarketEV {
marketId: string;
ourP: number; // Your estimated probability
marketP: number; // Market-implied probability (= YES price)
b: number; // Net odds: (1 - marketP) / marketP
ev: number; // Expected value per dollar risked
edgePct: number; // Edge as percentage of market price
kellyFraction: number; // Quarter Kelly optimal fraction
recommend: boolean; // Worth trading? (ev > 0 && edgePct >= 2%)
}
export function calcEV(ourProbability: number, marketYesPrice: number) {
const b = (1 - marketYesPrice) / marketYesPrice;
const ev = ourProbability * b - (1 - ourProbability);
const edgePct = (ev / marketYesPrice) * 100;
return { ev, edgePct, b };
}
export function scoreMarket(market: any, ourP: number): MarketEV {
const { ev, edgePct, b } = calcEV(ourP, market.yesPrice);
const kellyFraction = quarterKelly(ourP, b);
return {
marketId: market.id,
ourP,
marketP: market.yesPrice,
b,
ev,
edgePct,
kellyFraction,
recommend: ev > 0 && edgePct >= 2,
};
}
export function rankByEV(markets: MarketEV[]): MarketEV[] {
return [...markets].sort((a, b) => b.ev - a.ev);
}Reading the output: An edgePct of 5% means your model thinks the market is mispriced by 5%. The recommend flag fires when EV is positive AND edge exceeds 2% (below that, transaction costs eat your edge).
Update your probability estimates as new evidence arrives:
// bayesian-updater.ts
export interface BayesianState {
marketId: string;
priorP: number;
currentP: number;
evidence: Evidence[];
lastUpdated: Date;
}
export interface Evidence {
description: string;
likelihoodRatio: number; // > 1 supports YES, < 1 supports NO
timestamp: Date;
}
export function bayesUpdate(prior: number, likelihoodRatio: number): number {
const posterior = (prior * likelihoodRatio) /
(prior * likelihoodRatio + (1 - prior));
return Math.max(0.001, Math.min(0.999, posterior));
}
export function addEvidence(
state: BayesianState,
evidence: Evidence
): BayesianState {
const newP = bayesUpdate(state.currentP, evidence.likelihoodRatio);
return {
...state,
currentP: newP,
evidence: [...state.evidence, evidence],
lastUpdated: evidence.timestamp,
};
}
export function getRecommendation(
state: BayesianState,
marketPrice: number
): { action: 'buy' | 'sell' | 'hold'; confidence: number; reason: string } {
const diff = state.currentP - marketPrice;
if (Math.abs(diff) < 0.02) return { action: 'hold', confidence: 0, reason: 'Within noise' };
if (diff > 0) return { action: 'buy', confidence: diff, reason: `Model ${(diff*100).toFixed(1)}% above market` };
return { action: 'sell', confidence: -diff, reason: `Model ${(-diff*100).toFixed(1)}% below market` };
}Likelihood ratios: A ratio of 2.0 means "this evidence is twice as likely if YES is true." A ratio of 0.5 means "this evidence is twice as likely if NO is true." The Bayesian updater chains multiple evidence items — each update feeds the next as a new prior.
Combines all signals into a single score for market selection:
// market-scorer.ts — Weighted scoring model
// EV Score: 40% weight — edge percentage
// Kelly Fraction: 30% weight — optimal sizing (higher = more confident)
// Expiry Window: 20% weight — sweet spot 6-72 hours
// Volume Score: 10% weight — log-normalized liquidityMarkets scoring highest get traded first. The expiry window filter avoids two failure modes: too-short expiry (can't exit if wrong) and too-long expiry (capital locked up, edge decays).
Brier score measures prediction calibration — how close your probability estimates are to actual outcomes:
brierScore = mean((predictedProbability - actualOutcome)^2)
where actualOutcome = 1 if resolved YES, 0 if resolved NOInterpretation scale:
| Score | Level | Meaning |
|---|---|---|
| 0.25 | Random | Coin-flip predictions |
| 0.22 | Weak edge | Slightly better than random |
| 0.18 | Meaningful edge | Consistent alpha |
| 0.12 | Professional | Elite forecaster territory |
| < 0.10 | Superforecaster | Top 1% calibration |
Lower is better. The system tracks Brier score as the primary optimization objective.
The strategy is defined by tunable parameters:
// research/strategy.ts
export interface StrategyConfig {
minVolume: number; // Minimum market volume ($)
minEdgePct: number; // Minimum edge to trade (%)
kellyMode: "full"|"half"|"quarter";
maxKellyFraction: number; // Cap on position size
expiryMinHours: number; // Earliest expiry to consider
expiryMaxHours: number; // Latest expiry to consider
}
export const DEFAULT_CONFIG: StrategyConfig = {
minVolume: 10000,
minEdgePct: 3.0,
kellyMode: "quarter",
maxKellyFraction: 0.15,
expiryMinHours: 6,
expiryMaxHours: 72,
};
// Category-specific base rates (priors for YES resolution)
const CATEGORY_PRIORS = {
sports: 0.48,
crypto: 0.45,
politics: 0.50,
tech: 0.50,
weather: 0.45,
misc: 0.50,
};Prediction logic:
const PRIOR_WEIGHT = 0.15; // How much to weight the category prior
ourProbability = marketYesPrice * (1 - PRIOR_WEIGHT) + prior * PRIOR_WEIGHT;
edgePct = Math.abs(ourProbability - marketYesPrice) * 100;
// Decision:
if (edgePct < minEdgePct) → skip
else if (ourP > marketYesPrice) → buy_yes
else → buy_no# One-shot evaluation against resolved markets
npm run research:eval
# Manual iteration (5 rounds, stops on plateau)
npm run research
# Autonomous hill-climbing optimizer (run overnight)
npm run research:autoHow research:auto works:
Parameter search space:
// auto-improve.ts explores:
minEdgePct: [1.0, 1.5, 2.5, 3.0]
PRIOR_WEIGHT: [0.05, 0.10, 0.20, 0.25, 0.30]
maxKellyFraction: [0.08, 0.10, 0.12, 0.20]
minVolume: [5000, 15000, 20000]
expiryMaxHours: [48, 96]
expiryMinHours: [4, 8, 12]
kellyMode: quarter ↔ half
categoryPriors: dynamic adjustments per categoryResults are logged to research/program.md:
## Iteration 4 (Auto 4/8)
- Changed: minEdgePct 2 → 3
- Brier: 0.1804 (prev: 0.1814)
- Improvement: +0.0010
- Status: ✅ KEPT — new best
- Version: 1.0.1When auto-improve exhausts its search space without improvement:
research/strategy.ts with a theory (e.g., "crypto markets are less efficient after 10pm UTC") and run npm run research:evalWhen two platforms price the same event differently, you can profit from the spread:
Polymarket YES price: $0.40 (implied 40%)
1WIN decimal odds: 2.80 (implied 1/2.80 = 35.7%)
Spread = |40% - 35.7%| = 4.3%If Polymarket says 40% and 1WIN says 35.7%, Polymarket is pricing YES higher. The direction depends on which platform you think is wrong — or you can bet both sides if the spread exceeds the combined vig.
// spread-calculator.ts
export function calcSpread(polyProb: number, onewinDecimalOdds: number) {
const onewinProb = 1 / onewinDecimalOdds;
const spread = Math.abs(polyProb - onewinProb);
const spreadPct = spread * 100;
const direction = polyProb < onewinProb ? "buy_poly_yes" : "buy_poly_no";
return { onewinProb, spread, spreadPct, direction };
}
export function calcExpectedProfit(polyProb: number, onewinProb: number): number {
const edge = Math.abs(polyProb - onewinProb);
const ONEWIN_VIG = 0.02;
return Math.max((edge - ONEWIN_VIG) * 100, 0);
}
export function calcKellyFraction(polyProb: number, onewinProb: number): number {
const edge = Math.abs(polyProb - onewinProb);
const fraction = edge / (1 - Math.min(polyProb, onewinProb));
return Math.min(fraction, 0.10); // Hard cap at 10%
}
export function getConfidence(spreadPct: number): "HIGH"|"MEDIUM"|"LOW"|null {
if (spreadPct > 5) return "HIGH";
if (spreadPct >= 3) return "MEDIUM";
if (spreadPct >= 1) return "LOW";
return null; // Skip
}npm run arb:scanWhat it does:
Reading the output:
🟢 HIGH CONFIDENCE | Spread: 6.2%
PM: "Will Bitcoin hit $100k by March?" @ $0.35
1WIN: Same event @ 2.50 odds (40.0%)
Direction: buy_poly_yes
Kelly: 4.8% of bankroll
Expected profit: 4.2%
🟡 MEDIUM CONFIDENCE | Spread: 3.8%
PM: "Lakers vs Celtics Game 5 winner" @ $0.55
1WIN: Same event @ 1.72 odds (58.1%)
Direction: buy_poly_no
Kelly: 2.1% of bankroll
Expected profit: 1.8%The fuzzy matcher handles cross-platform naming differences:
// title-matcher.ts
// Normalizes: lowercase, remove punctuation, strip stop words
// Stop words: vs, v, the, will, who, win, to, in, at, on, a, an,
// of, for, and, or, be, is, are, was, match, game, fight, bout
// Dice coefficient: 2 * |intersection| / (|a| + |b|)
// Threshold: 0.4 minimum for a match// detector.ts — startMonitor()
// Polls every 60 seconds
// Tracks seen arb IDs to alert only on NEW opportunities
// Logs all discoveries with timestampsgit clone <your-polymarket-bot-repo>
cd polymarket-bot
npm installCopy .env.example to .env and fill in:
# Required for live trading
POLYGON_WALLET_PRIVATE_KEY=your_polygon_private_key
POLYMARKET_FUNDER_ADDRESS=your_funder_address
POLYMARKET_API_URL=https://gamma-api.polymarket.com
POLYMARKET_CLOB_URL=https://clob.polymarket.com
# Risk management
STARTING_CAPITAL=1000
MAX_POSITION_SIZE=500
MAX_TOTAL_EXPOSURE=2000
MIN_EDGE_THRESHOLD=0.10
STOP_LOSS_PERCENT=5
TAKE_PROFIT_PERCENT=5
# Optional: CEX for hedging
BINANCE_API_KEY=
BINANCE_API_SECRET=
# Safety
DRY_RUN=true # Start with paper trading!
LOG_LEVEL=info
LOG_TO_FILE=true# Stream 1: Score markets and find EV opportunities
npm run agent:alpha
# Stream 2: Run strategy optimizer overnight
npm run research:auto
# Stream 3: Scan for cross-platform arb
npm run arb:scan
# Full bot (all streams)
npm run bot# 1. Scan for spreads
npm run arb:scan
# 2. Review HIGH confidence opportunities only
# Look for spreadPct > 5% with Kelly > 3%
# 3. Verify the match manually
# Check that the title matcher correctly paired the events
# Open both Polymarket and 1WIN to confirm prices are live
# 4. If confirmed, execute on Polymarket (DRY_RUN=false)
# The bot respects MAX_POSITION_SIZE and STOP_LOSS_PERCENT# 1. Check current Brier score
npm run research:eval
# 2. Start the auto-improver (takes 10-30 minutes)
npm run research:auto
# 3. Check results in the morning
cat research/program.md | tail -30
# 4. If version bumped, verify the checkpoint
ls research/checkpoints/
# 5. Deploy updated strategy
# The agent automatically uses the latest strategy.ts// Run in your TypeScript environment
import { scoreMarket, rankByEV } from './src/quant/ev-calculator';
import { quarterKelly } from './src/quant/kelly-criterion';
// For each active position, score against your current probability
const positions = [
{ id: 'btc-100k', yesPrice: 0.35, ourP: 0.42 },
{ id: 'election-x', yesPrice: 0.60, ourP: 0.55 },
];
const scored = positions.map(p => scoreMarket(p, p.ourP));
const ranked = rankByEV(scored);
ranked.forEach(m => {
console.log(`${m.marketId}: EV=${m.ev.toFixed(3)}, Edge=${m.edgePct.toFixed(1)}%, Kelly=${m.kellyFraction.toFixed(3)}`);
console.log(` → ${m.recommend ? '✅ TRADE' : '⏭️ SKIP'}`);
});import { bayesUpdate, addEvidence } from './src/quant/bayesian-updater';
// Initialize state for a new market
let state = {
marketId: 'fed-rate-cut-march',
priorP: 0.50,
currentP: 0.50,
evidence: [],
lastUpdated: new Date(),
};
// New evidence: Fed minutes suggest dovish stance (LR > 1 → supports YES)
state = addEvidence(state, {
description: 'Fed minutes dovish tone, multiple members favor cut',
likelihoodRatio: 1.8,
timestamp: new Date(),
});
console.log(`Updated probability: ${(state.currentP * 100).toFixed(1)}%`);
// Output: ~64.3% (moved from 50% toward YES)
// More evidence: CPI comes in hot (LR < 1 → supports NO)
state = addEvidence(state, {
description: 'CPI +0.4% MoM, above expectations',
likelihoodRatio: 0.6,
timestamp: new Date(),
});
console.log(`Updated probability: ${(state.currentP * 100).toFixed(1)}%`);
// Pulled back toward 50%// 1. Edit research/strategy.ts with your hypothesis
// Example: change minEdgePct from 3.0 to 2.0
// 2. Run evaluation
// npm run research:eval
// 3. Check the backtest output:
// BacktestResult {
// winRate: 0.54,
// brierScore: 0.1820,
// sharpeEstimate: 1.2,
// recommendation: 'EDGE' // or 'STRONG_EDGE' / 'NO_EDGE'
// }
// Decision matrix:
// STRONG_EDGE (winRate > 56% AND Brier < 0.22) → Deploy immediately
// EDGE (winRate > 52%) → Run for 1 week on paper
// NO_EDGE → Revert the changeThe system is modular by design. Each quant module (kelly-criterion.ts, ev-calculator.ts, bayesian-updater.ts) is pure functions with no side effects — they can be imported independently into any project. The research loop operates on strategy.ts as a single source of truth, with versioned checkpoints for rollback. The arbitrage detector cascades through data sources (1WIN API → CLOB proxy → mock) for reliability.
All trading respects risk constraints: MAX_POSITION_SIZE, STOP_LOSS_PERCENT, and DRY_RUN mode. Start with paper trading. Always.
© LeoYeAI, 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 5 other files (references) in skills/polymarket-quant-trader of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Polymarket Quant Trader 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 |
|---|---|---|---|---|---|---|
| Polymarket Quant Trader this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.7k | Automated safety check: Notes | MIT | |
| Digital Oraclekomako-workshop/digital-oracle | 875 | — | ~5.9k | Automated safety check: Pass | MIT | |
| Polyclawchainstacklabs/polyclaw | 359 | 1 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Polymarket TradingBlockRunAI/ClawRouter | 6.6k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Dr Manhattanguzus/dr-manhattan | 204 | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Fintoolsecond-state/fintool | 316 | — | ~5.9k | Automated safety check: Pass | None |
komako-workshop/digital-oracle
Answer prediction questions using market trading data, not opinions.
chainstacklabs/polyclaw
Trade on Polymarket via split + CLOB execution. An agent skill from chainstacklabs/polyclaw.
BlockRunAI/ClawRouter
A skill your agent uses when the user wants to actually PLACE, manage, or redeem bets on Polymarket (not just read odds — that's the blockrunpredexon data tools).
guzus/dr-manhattan
Trade prediction markets (Polymarket, Kalshi, Opinion, Limitless, Predict.fun) using a unified CCXT-style API.
second-state/fintool
Financial trading CLIs — spot and perp trading on Hyperliquid, Binance, Coinbase, OKX.
livetennisapi/livetennisapi-mcp
Build observe-only Polymarket and Kalshi tennis market tooling on the polymarket-tennis Python package (MIT) plus the Live Tennis API free tier.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Works with
Categories
Professional-grade Polymarket prediction market trading system. Polymarket Quant Trader is an agent skill from LeoYeAI/openclaw-master-skills. Professional-grade Polymarket prediction market trading system.
Polymarket Quant Trader fits situations like: : user wants to trade prediction markets; find arbitrage opportunities; build a trading bot; improve prediction accuracy.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill polymarket-quant-trader -a claude-code`. Or copy the skill folder (skills/polymarket-quant-trader in LeoYeAI/openclaw-master-skills) into .claude/skills/polymarket-quant-trader in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill polymarket-quant-trader -a codex`. Or copy the skill folder (skills/polymarket-quant-trader in LeoYeAI/openclaw-master-skills) into .agents/skills/polymarket-quant-trader 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 LeoYeAI/openclaw-master-skills --skill polymarket-quant-trader -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/polymarket-quant-trader, .gemini/skills/polymarket-quant-trader, .github/skills/polymarket-quant-trader and .opencode/skills/polymarket-quant-trader in your project.
Going by SKILL.md and its folder, Polymarket Quant Trader needs the command-line tools its instructions call (npm and git) and credentials named POLYGON_WALLET_PRIVATE_KEY, BINANCE_API_KEY and BINANCE_API_SECRET.
SKILL.md names 2 domains. In commands or code: gamma-api.polymarket.com and clob.polymarket.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Polymarket Quant Trader is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Polymarket Quant Trader: Digital Oracle (komako-workshop/digital-oracle, 875 stars), Polyclaw (chainstacklabs/polyclaw, 359 stars), Polymarket Trading (BlockRunAI/ClawRouter, 6.6k stars) and Dr Manhattan (guzus/dr-manhattan, 204 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,160 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.