ARB

Arb Desk

How this works

Every 10 minutes a free GitHub Actions job pulls prices from public APIs, runs the checks below, and publishes one file, data.json. The dashboard reads that file, re-scores everything for the amount you type in, and shows what to buy. Nothing ever logs in to your accounts or places a trade.

Every number is after fees, assuming you buy immediately at the displayed ask (the price someone is selling at right now). That's the conservative assumption: you pay the spread and the taker fee.

Kalshi fees in one line

Kalshi's fee schedule (effective July 7, 2026) charges takers 0.07 × contracts × price × (1 − price), rounded up to the next $0.0001, times a per-series multiplier the API reports (most are 1; a few year-end crypto series are 0). The fee is largest at 50¢ (1.75¢ per contract) and tiny near 1¢ or 99¢ (0.07¢). Settlement is free. Selling before settlement pays the fee again, which the dashboard never assumes you do.

1 · Kalshi bracket and ladder consistency live

Kalshi lists the same underlying at many levels. Some combinations must be priced consistently or free money appears. The scanner checks every open crypto, commodities, economics and financials event (about 20,000 contracts) four ways:

Worked example (ladder). “BTC above $100,000” has an ask of 40¢. “BTC above $105,000” has a bid of 45¢, so it's priced as more likely than the lower strike. That's impossible.

Buy YES “above $100k” at 40¢ (fee 0.07 × 0.40 × 0.60 = 1.68¢) and NO “above $105k” at 55¢ (fee 0.07 × 0.55 × 0.45 = 1.7325¢, rounded up to 1.74¢). One set costs 98.42¢.

BTC ≤ $100k: the NO pays $1. BTC > $105k: the YES pays $1. In between: both pay, $2. Worst case $1.00 back for 98.42¢, a 1.6% locked gain per set. If it settles in 7 days, that's 1.6% × 365 ÷ 7 = 84% a year.

The scanner deliberately skips “buy YES on every outcome” for named outcomes such as “Who will acquire Pinterest?” or “When will the next recession start?”. There, it's common that none of the listed outcomes happens and every YES loses. On the first live scan that trap looked like a 226% “arbitrage”.

2 · Kalshi vs listed options live

Options on IBIT (Bitcoin), ETHA (Ethereum), GLD (gold), SLV (silver), SPX/XSP (S&P 500) and NDX (Nasdaq-100) put their own price on the same events Kalshi lists, like “Bitcoin above $150,000 on Jan 1”. When the two markets disagree, you buy each side where it's cheap:

Sized so one spread (100 × its width in dollars) covers the same dollars of Kalshi contracts, every normal outcome pays $1 per contract. If both sides together cost less than $1, that difference is your profit.

Worked example (from a live scan). Kalshi's “Bitcoin $150,000 or above at the end of 2026” trades at 2.5¢, while IBIT options price it around 1.8%. IBIT is 0.0005674 BTC per share, so $150k Bitcoin ≈ IBIT $85.11.

Side 1: buy 500 Kalshi NO at 97.5¢ = $487.50 (this series has no Kalshi fee). Side 2: buy the IBIT Dec 18 $75 call and sell the $80 call for 5¢ per share = $5. The spread pays $500 once IBIT is at $80 or above (Bitcoin ≈ $141k).

Bitcoin below $150k: Kalshi pays $500. Bitcoin well above: the options pay $500. Between about $141k and $150k both pay. Cost $492.50, so +$7.50 in every normal outcome.

Why it's not locked in: the options expire Dec 18 but Kalshi settles Jan 1. If Bitcoin sits under $141k on Dec 18, then jumps past $150k by New Year's, both sides lose. The simulation, using the options' own volatility, puts that at about 0.5%. Expected profit ≈ $13 over 3 months ≈ 10% a year. That's under the 14% hurdle for a can-lose trade, so it's rated MARGINAL.

How the “options say” probability is made: the live price, the options' implied volatility at that strike (which keeps the market's view of fat tails), no drift, measured at Kalshi's settle time. How losses are estimated: 20,000 simulated price paths through both dates, plus a small tracking error between the ETF and what Kalshi settles on.

When trades are built: only while options trade (9:30am–4pm ET, weekdays). Outside those hours option prices are frozen at the last close while Kalshi and crypto keep moving, which would create fake edges. The single-bets table still runs, using live prices.

Best matches: S&P 500 and Nasdaq-100 end-of-day contracts against SPX/XSP/NDX options that expire the same day. They settle on the exact same official close, so the timing risk is zero.

3 · Kalshi vs Polymarket US live

Polymarket US (polymarket.us) is a separate, CFTC-regulated exchange from the offshore polymarket.com — it's legal and open to NY residents, and it lists the same kind of year-end BTC/ETH price brackets Kalshi does. The check is the same ladder logic as section 1, just run across two venues instead of within one: if a Polymarket bracket sits strictly inside a Kalshi range (or vice versa), buying the wide side's YES and the narrow side's NO always pays at least $1.

Why this one is treated more cautiously than section 1. Two venues can each be internally consistent and still disagree with each other, for two separate reasons this scanner checks before ever calling a pairing "locked":

Short of both checks passing, a mispriced-looking pair is shown as positive expected value that can still lose to a settlement mismatch — the same honesty the Kalshi-vs-options module (section 2) already applies to timing gaps between Kalshi and option expiries.

Worked example (from a live scan). Both platforms list a BTC "$19,999.99 or below" year-end bracket. Kalshi's is under 1¢; Polymarket's NO is priced at 99¢, so YES-Kalshi + NO-Polymarket costs about 99.7¢ for a $1 payout.

That looks like a lock, but Polymarket's own market description states a trimmed-mean BRTI settlement while Kalshi's is untrimmed — the same real discrepancy above. So the card shows the trade as can-lose, not locked, even though the settlement instants themselves line up to within a few hours.

Order-book depth from both platforms is pulled before sizing any trade, and the fillable size shown is the thinner of the two books — a locked-looking price at the top of book means nothing if only one contract is actually resting there.

4 · Fed and economic contracts vs futures coming in stage 3

Fed funds futures settle on the average fed funds rate for their month, so price = 100 − expected average rate. If a meeting falls partway through the month, the rate after the meeting is backed out from the days before and after it. The size of the implied move divided by 0.25 gives the probability of a quarter-point change.

Worked example. The rate is 3.58% today. The December meeting is on the 9th: 9 days at the old rate, 22 at the new one. The December future trades at 96.50, so the expected December average is 3.50%.

Rate after the meeting = (3.50 − 3.58 × 9/31) ÷ (22/31) = 3.467%. That's 0.113 points lower, and 0.113 ÷ 0.25 = 45% chance of a 25bp cut. If Kalshi's “cut” YES sells for 38¢, the gap is 7 points. You'd buy YES at 38¢: positive expected value that can still lose.

Honest caveat for stage 3: live fed funds futures quotes aren't reliably free. If no free source supports this calculation properly, the module will say “limited data” rather than show fake precision.

5 · Crypto futures basis (cash-and-carry) coming in stage 3

When a crypto future trades above spot, you can buy the coin and sell the future. At expiry they converge and you keep the gap. It's close to locked, but not fully: the short future needs margin, and if the price spikes the broker can demand more cash or liquidate your short. That breaks the hedge at the worst moment.

Worked example. BTC spot $84,000, December future $85,500, 90 days to expiry. The gap is 1.79%, which looks like 7.2% a year.

Now the costs: Coinbase Advanced charges 1.20% to take liquidity at the lowest volume tier, plus futures fees and the cost of cash parked as margin. Net ≈ 0.5% over 90 days ≈ 2% a year: less than T-bills. NOT WORTH IT, even though the headline looked good.

6 · Metal ETFs vs the actual metal coming in stage 2

GLD and SLV hold physical metal. Big institutions can create or redeem shares for metal whenever the price drifts, which keeps the gap to a few hundredths of a percent. Closed-end trusts like PHYS and PSLV can't be redeemed as easily, so they can trade at real premiums or discounts for months.

Worked example. A GLD share holds about 0.09 oz of gold (the fund publishes the exact figure daily). With gold at $4,286, the metal behind a share is worth about $393. A 0.1% gap is noise, not a trade.

If PSLV trades 3% below the value of its silver, buying it is a discount trade, not arbitrage: it may not close. NAV is published once a day, so the comparison can lag by up to a trading day.

7 · Cash-hurdle comparison live, on every card

Money tied up in a trade could be earning the T-bill rate with no effort and no risk. So every opportunity is annualized (return × 365 ÷ days held) and compared with the current 3-month T-bill yield plus a margin: 1 point for locked trades, 10 points for can-still-lose trades (you can change these). Fall short and the card says NOT WORTH IT, however good the raw percentage looks.

Worked example, from the first live scan. Ethereum's year-end brackets could be bought for 96.8¢ a set. They pay exactly $1, and the series has zero fees. Only 44 sets were available at profitable prices, for $0.50 of guaranteed profit.

That's 1.16% over 96 days = 4.4% a year. T-bills pay 4.18%, so the hurdle is 5.18%. Verdict: MARGINAL. It's a real arbitrage, but locking up $43 for three months to beat a Treasury bill by a fraction of a point isn't worth your time.

Verdicts, alerts and confidence

Why real arbitrage is rare, and how to avoid getting burned