Arbitragebotfree
prediction-market-arbitrage-bot: what it does, how it executes, where it stops
Last checked 2026-09-08
prediction-market-arbitrage-bot is a small JavaScript bot that watches one Polymarket event and one Kalshi market, matches their outcomes by name, and when YES on one venue plus NO on the other costs less than $1.00, sends market orders to both.
It is labeled educational in its own README, twice. It ignores fees, gas and slippage, and it has not been pushed since 2026-01-16.
What it does
You set a Polymarket event URL and a Kalshi market URL in config.js, a poll interval (default 30 seconds), a minimum profit in cents (default 1) and a trading mode. On each poll it fetches both books through PMXT, pairs outcomes with Jaccard and Levenshtein matching at a 0.7 threshold, and computes both legs.
The README example: Kevin Warsh YES at 41 cents on Polymarket, Warsh NO at 57 cents on Kalshi, total 98 cents against a 100-cent payout.
- Pure JavaScript, no frameworks; npm install then npm start
- dryRun defaults to true
- Two modes: YOLO (all available capital into the best spread) and CONSERVATIVE (fixed tradeAmountCents, default 100)
Strategy
For each matched outcome it evaluates YES-Polymarket plus NO-Kalshi and YES-Kalshi plus NO-Polymarket and takes the higher-profit leg pair. Execution takes liquidity with market orders on both venues at once; it does not rest limit orders.
Exit logic sells when the spread converges below 1 cent, and rotates out of a position when a better spread appears elsewhere.
Setup and requirements
Node.js and the pmxt package. For live trading, .env holds POLYMARKET_PRIVATE_KEY, KALSHI_API_KEY and KALSHI_API_SECRET. Dry run needs no credentials.
Activity and maintenance
177 stars and 42 forks as of 2026-09-08. Created 2026-01-15, last push 2026-01-16, 2 open issues. MIT licensed. The whole project was written in about a day and has not changed since, so it is unmaintained by any practical definition.
Where it falls short
The two venues settle in different currencies and under different rules, and the bot does not model either. A synthetic pair is only riskless if both markets resolve on the same question with the same source, which fuzzy name matching cannot verify.
Market orders on both sides means paying two spreads to capture a 1-cent edge, and the README says fees and slippage are ignored. Prices also move between the two API calls.
Who should use it
Someone who wants to read 4 source files and understand cross-venue arbitrage mechanics, or who wants a minimal PMXT example to extend. Run it in dry run.
Not for real capital as written.
Questions about prediction-market-arbitrage-bot
Is prediction-market-arbitrage-bot free?
Yes, MIT licensed. It depends on PMXT, which has its own hosted key model.
Does prediction-market-arbitrage-bot make money?
The README calls it educational, says it ignores fees and slippage, and says it is not optimized for real-world profitability.
Is prediction-market-arbitrage-bot maintained?
No. Created and last pushed in January 2026, with no changes since as of 2026-09-08.
What does it need to run live?
A Polymarket private key and a Kalshi API key and secret in .env, plus Node.js and the pmxt package.
Bots die in execution. Terminals are execution.
Wanted a bot for speed and cross-venue vision? The free Kairos terminal trades Kalshi, Polymarket and Predict.fun from one book, no keys to manage.