Arbitragedashboardfree
BTC hourly arb detector: what it finds, how it matches, where it stops
Last checked 2026-09-08
polymarket-kalshi-btc-arbitrage-bot is a Python backend plus Next.js dashboard that fetches the Bitcoin 1-hour price market on Polymarket, finds the matching Kalshi contract for the same expiry, and sums the cost of opposing legs. Under $1.00 total, it flags an opportunity.
Despite the repo name it is a detector, not an executor. Nothing in the README places an order.
What it does
The backend (FastAPI) polls Polymarket's CLOB and Kalshi's API every second, normalizes prices to a 0.00 to 1.00 scale and serves the result to a shadcn/ui dashboard at localhost:3000 with live prices, a highlighted best opportunity and cost bars per strategy.
A thesis.md in the repo lays out the binary-option math behind the trade.
- make build brings up both services in Docker with no local Python or Node
- Manual path: python3 api.py on port 8000, npm run dev on port 3000
- Two leg pairs checked: Polymarket Down plus Kalshi Yes, Polymarket Up plus Kalshi No
Strategy
The two venues quote different strikes. If the Polymarket price-to-beat is above the Kalshi strike, the bot checks Polymarket Down plus Kalshi Yes; if below, Polymarket Up plus Kalshi No. Sum the two asks and compare with $1.00.
That is the whole logic. There is no fee model, no sizing and no fill simulation in the README.
Setup and requirements
Python 3.9 or newer, Node.js 18 or newer, or Docker with make. No API keys are documented because it reads public market data only.
Activity and maintenance
243 stars and 39 forks as of 2026-09-08. Created 2025-11-25, last push 2026-05-09, 0 open issues. MIT licensed, Python. Four months since the last push; the Docker path is the newest addition.
Where it falls short
It finds the spread. Executing it means opening Kalshi and Polymarket separately, or a cross-venue terminal. Kalshi's taker fee and Polymarket's spread are not subtracted, so a flagged gap under $1.00 can be negative after costs.
The strike mismatch between venues means the two legs are not a true hedge: there is a band between the two strikes where both legs lose. The README's risk-free label does not cover that band.
Who should use it
A trader who wants a live visual of the hourly BTC spread across both venues and will do the fee math and the clicking themselves. Also useful as a tutorial with thesis.md.
Not a bot in the automated sense.
Questions about BTC hourly arb detector
Does the BTC hourly arb detector place trades?
No. It detects and displays opportunities. Execution is manual on each venue.
Is the BTC hourly arb detector free?
Yes, MIT licensed, and it needs no API keys.
Is the arbitrage really risk-free?
Only when both venues share a strike. The bot compares different strikes, so a price landing between them loses both legs, and fees are not modeled.
Which markets does it cover?
The Bitcoin 1-hour up/down market on Polymarket and the matching hourly BTC contracts on Kalshi.
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.