A YES contract and a complementary NO contract can appear to lock in a dollar payoff for less than a dollar. If the Polymarket YES ask is $0.43 and the Kalshi NO ask is $0.51, the combined cost is $0.94 and the theoretical spread is $0.06. That arithmetic is real—but only if the contracts are identical, both quantities fill, all costs are included, and settlement follows the assumed rules.
The practical project is therefore not a “guaranteed profit” machine. It is a system for finding deterministic payoff discrepancies, proving that markets are equivalent, executing two independent orders, and reconciling the result. The difficult parts are contract interpretation and one-sided execution.
The payoff identity behind prediction-market arbitrage
A binary contract settles at either $1 or $0. Buying YES on one venue and NO on another creates a deterministic $1 payoff only when both contracts describe exactly the same event and outcome.
gross_cost = YES ask + NO ask
gross_profit_per_pair = $1.00 - gross_cost
For example:
| Leg | Price |
|---|---|
| Polymarket YES | $0.43 |
| Kalshi NO | $0.51 |
| Combined cost | $0.94 |
| Theoretical spread | $0.06 |
The trade is worth considering only when:
YES cost + NO cost + fees + slippage + funding costs + operational-loss reserve < $1.00
The CFTC’s prediction-market guidance and Kalshi’s market-rules guidance both make the same practical point: each contract has its own terms, verification source, and settlement conditions.
#1 Best Overall
Three strategies that are often confused
Cross-venue complementary arbitrage
Buy YES on one platform and NO on another when the executable combined cost is below $1. This is the strategy that creates the largest matching problem because the venues use separate rulebooks and order systems.
Same-venue binary arbitrage
If YES ask plus NO ask is below $1 on one venue, both legs share a settlement process. Validation is simpler, but fees, depth, stale quotes, and partial fills still apply.
Multi-outcome or negative-risk arbitrage
For mutually exclusive outcomes, the cheapest executable YES positions may total less than $1. This is valid only when outcomes are collectively exhaustive, no “other” outcome is missing, and the venue’s settlement rules treat the set consistently.
A similar headline is not proof of arbitrage. A price difference can reflect different deadlines, data sources, definitions, or trader populations.
Free tools Windows power users keep installed
One-click scans. No signup required.
What “locked in” means
| Stage | What it proves |
|---|---|
| Theoretical arbitrage | The payoff is deterministic if the contracts are held to settlement and all assumptions are correct. |
| Quote arbitrage | Displayed prices imply a spread, but available quantity may be tiny or disappear. |
| Executable arbitrage | The intended size is available after walking both books, fees, and slippage. |
| Operationally hedged arbitrage | Both legs filled, positions are recorded, and settlement logic has been verified. |
Reserve “locked-in” for the last state. A scanner alert is only a candidate.
Why matching Polymarket and Kalshi markets is the hard part
A string matcher can pair two markets about the same broad subject while missing a decisive contractual difference. The matcher must compare:
- event identity and outcome wording;
- threshold, unit, and rounding convention;
- location and time zone;
- observation window and cutoff;
- settlement source and revision policy;
- whether settlement depends on occurrence, announcement, certification, vote count, or another milestone;
- early-close, cancellation, voiding, and missing-data provisions;
- the exact meaning of YES and NO on each venue.
Kalshi’s market API exposes fields such as contract terms, strike information, status, and settlement-related metadata in its Get Market response. Polymarket provides programmatic market and trading access through its API, but availability and account restrictions must be checked at publication time.
Rank #2
- MORE SPACE FOR REAL TRACKING: Designed with extra writing space compared to typical betting trackers—log bets, strategies, and insights instead of just numbers
- DISCIPLINED BETTING SYSTEM: Set limits, track units, and stay consistent. Build smarter habits and eliminate emotional betting with structured logging pages
- BUILT-IN WEEKLY & MONTHLY PROFIT CALCULATOR: Quickly see your performance with dedicated profit tracking pages. Analyze wins, losses, and trends to make smarter bets over time
- PROFESSIONAL LOGGING STRUCTURE: Organized pages feature betting summary, notes, and detailed logs—ideal for serious sports bettors and data-driven users
- PREMIUM QUALITY YOU CAN FEEL: Compact 6x9 size, 124 pages, smooth 120gsm paper, durable thick cover, and strong double metal coil—perfect for daily use anywhere
A practical equivalence checklist
- Copy the full rule text from both venues.
- Identify the authoritative data source and whether revisions count.
- Normalize every timestamp to UTC, then verify the venue’s stated local-time wording.
- Check “greater than” versus “greater than or equal to,” and rounded versus unrounded measurements.
- Confirm that both contracts settle on the same event milestone.
- Check early-close, pause, cancellation, and dispute provisions.
- Store a rules hash and invalidate approval if either contract changes.
The safest first release trades only a manually approved allowlist. Automated matching can generate candidates; it should not grant trading permission by itself.
Recommended Free Tools
Architecture for a defensible bot
A complete system is more than a price scanner:
Market feeds
↓
Normalizer
↓
Candidate matcher
↓
Rules validator
↓
Fee and slippage calculator
↓
Risk engine
↓
Polymarket and Kalshi adapters
↓
Order state machine
↓
Settlement reconciler
Data ingestion and normalization
Use separate adapters and one internal schema:
Market(
venue, market_id, canonical_event_id, outcome, side,
close_time, settlement_source, settlement_rules_hash, status
)
Quote(venue, market_id, side, price, quantity, timestamp)
Kalshi’s documented production REST base is https://external-api.kalshi.com/trade-api/v2. Its public order-book route is:
GET /markets/{ticker}/orderbook
An illustrative request is:
curl "https://external-api.kalshi.com/trade-api/v2/markets/$TICKER/orderbook"
Kalshi returns YES bids and NO bids rather than conventional asks. A YES bid at x is economically equivalent to a NO ask at 1 - x. The documented response uses fixed-point fields such as yes_dollars and no_dollars; see the order-book endpoint and response format.
Use event-driven updates where available, with REST confirmation. Every quote needs a timestamp and a maximum age. Public market-data access does not imply unrestricted high-frequency order access.
Depth-aware pricing
Arbitrage uses the price at which the intended quantity can actually be bought, not a midpoint or last trade. Walk each book and calculate a volume-weighted cost:
available_size = min(size_on_leg_A, size_on_leg_B)
gross_edge = 1.00 - yes_cost - no_cost
net_edge = gross_edge - fees - slippage_buffer - transfer_buffer
Reject a candidate when size is below your minimum, the quote is stale, either market is not open, rules are unverified, or net edge is below your threshold.
Authentication and order controls
Authenticated Kalshi requests require an API key ID, an RSA-PSS signature, and a millisecond timestamp, as described in API environments and request signing. New integrations should use the documented POST /portfolio/events/orders V2 endpoint and check the API changelog; the legacy portfolio-order path is being deprecated no earlier than May 6, 2026.
Rank #3
V2 supports client order IDs, fill-or-kill, immediate-or-cancel, good-till-canceled, post-only, self-trade prevention, cancellation on exchange pause, and fixed-point prices. An illustrative request is:
{
"ticker": "MARKET-TICKER",
"client_order_id": "unique-id",
"side": "bid",
"count": "10.00",
"price": "0.5600",
"time_in_force": "fill_or_kill",
"cancel_order_on_pause": true
}
Verify field meanings against the live documentation before sending production orders.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallFees can consume a small spread
Kalshi’s February 5, 2026 fee schedule gives the general immediately matched formula as:
fee = round_up(0.07 × C × P × (1 − P))
It lists a maker formula of:
maker_fee = round_up(0.0175 × C × P × (1 − P))
Fees vary by market and execution type; recheck the fee schedule and fee explanation before trading. At $0.50, the general formula is approximately $0.0175 per contract before rounding. Polymarket charges and fee treatment must be taken from its current trading documentation rather than assumed.
Best quote, executable quote, and realized result
Suppose the displayed prices are YES at $0.44 and NO at $0.51. The displayed cost is $0.95 and the gross spread is $0.05. For 100 pairs:
gross spread = 100 × $0.05 = $5.00
The three calculations your ledger should show are:
- Displayed: the best visible quotes at detection time.
- Executable: volume-weighted prices for the intended quantity, including estimated fees and slippage.
- Realized: actual fills, fees, failed-leg losses, and final settlement records.
An illustrative scenario—not a current Polymarket fee claim—might subtract $0.80 in Polymarket charges, $1.70 in Kalshi charges, $1.20 in slippage, and a $0.75 operational reserve from the $5.00 gross spread, leaving $0.55 expected net. The reserve is not a fee; it recognizes that independent venues can create losses when one leg fails.
Rank #4
Execution is not atomic across two venues
Independent exchanges cannot guarantee that both legs execute as one transaction. Keep capital pre-funded on both venues; a transfer after the first fill is usually too slow for a short-lived spread.
Order sequencing
- Send the more liquid or reliable leg first, accepting temporary directional exposure.
- Use a strict limit price; never turn an alert into an unbounded market order.
- Use fill-or-kill when avoiding residual exposure is more important than participation.
- Use immediate-or-cancel when partial execution can be managed explicitly.
Kalshi documents both instructions in Create Order V2.
Partial-fill state machine
DISCOVERED → VALIDATED → LEG_A_SUBMITTED → LEG_A_PARTIAL
→ LEG_A_FILLED → LEG_B_SUBMITTED → BOTH_FILLED
→ HEDGE_REQUIRED → CANCELLED → RECONCILIATION_PENDING → SETTLED
If leg A fills and leg B does not:
- Cancel every unfilled order.
- Recheck both books and market status.
- Attempt leg B only within a bounded price tolerance.
- If the edge has vanished, choose a documented response: hold, cross the spread to hedge, close leg A, or send the position for manual review.
- Record the outcome as execution loss or exposure—not arbitrage profit.
Risk controls that belong in the first version
- Maximum dollar exposure per event and maximum unhedged duration.
- Maximum concurrent trades and venue-specific balance reserves.
- Quote-age and slippage limits.
- Minimum order-book depth.
- API-error circuit breaker, duplicate-order prevention, and idempotent client IDs.
- Clock synchronization, remote kill switch, and daily loss limit.
- Automatic pause near market close, settlement, or a venue outage.
- Manual review for every ambiguous contract.
Protect credentials with scoped keys and secure secret storage. A cheap server does not replace persistent order state, monitoring, or recovery logic.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsSettlement and accounting
Reconcile fills and final settlement records rather than inferring profit from acknowledgements or displayed balances. Kalshi’s settlements endpoint returns ticker, event, result, YES and NO counts, costs, revenue, settlement time, fee cost, and settlement value.
Store, for every order:
- venue and market identifiers;
- canonical event ID and side;
- requested and actual prices;
- requested and filled quantities;
- fees, timestamps, API responses, and status transitions;
- settlement result and expected versus realized P&L.
Your final report should separate gross spread, slippage, trading fees, funding or conversion costs, failed-leg losses, infrastructure costs, and net realized P&L.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Failure modes a scanner will not show
Rule mismatch
“Above 2.0%” may differ from “2.0% or higher”; one venue may use preliminary data while another waits for a revised release. Closing price, intraday price, announcement, and certification are not interchangeable.
Early close, cancellation, or voiding
Markets can close before the expected event date or settle under special clauses. Monitor status and early-close fields in Kalshi’s market metadata.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Best Value
- CONVENIENT SIZE - Medium size (8.25" x 5.83")
- RECORDING AND PLANNING - Ideal for recording all your bets with a handy note section on each day page. Ideal for looking back when planning future bets
- SUITABLE FOR ALL SPORTS - Perfect for horse racing, football, tennis, cricket, baseball, basketball, ice hockey, etc
- CONVENIENT AND EASY TO USE - Convenient headlines to record all your betting activities
- Lying Flat The sturdy spiral binding allows the notebook to rotate 360 degrees, making it very convenient to complete the log
Outages and stale data
A venue may serve market data while rejecting orders, or accept an order while delaying its status response. REST polling can display a quote that has already disappeared. Rate limits, repeated cancellations, and unusual activity can also trigger throttling or review.
Funding and eligibility
Capital can be trapped in different currencies or settlement systems. Check each venue’s current account, geographic, identity, and wallet requirements. Kalshi is a CFTC-regulated designated contract market; the market-integrity materials and CFTC guidance explain exchange rules and surveillance. The CFTC’s February 25, 2026 advisory addresses misuse of nonpublic information and fraud in prediction markets (advisory). Polymarket’s integrity policies are at Polymarket Market Integrity.
How to test without risking meaningful capital
- Run a read-only scanner against live feeds.
- Use a manually approved market allowlist.
- Replay historical books and simulate latency, depth, and disappearing quotes.
- Mock accepted, rejected, duplicated, delayed, and partially filled orders.
- Test rule changes, venue pauses, API outages, and settlement discrepancies.
- Paper-trade the complete lifecycle from discovery through settlement.
- Enable tiny live orders only after reconciliation is correct.
- Increase size only when an auditable ledger shows fee-adjusted results and bounded unhedged exposure.
Report candidate count, semantically validated count, quoted and executable edges, fill and partial-fill rates, fee-adjusted net P&L, capital utilization, holding time, and worst unhedged exposure. Do not claim profitability from alerts alone.
Where commercial tools fit
Official access starts with Kalshi and its developer documentation, plus Polymarket’s documentation. An open-source TypeScript example is available at this GitHub repository; inspect its current license and treat it as reference code, not audited production software. Third-party scanners such as KalshiArb should be evaluated alongside their risk disclosure; no scanner can prove cross-venue equivalence for every contract.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →The practical verdict
The $1 payoff identity is sound under explicit assumptions. A live cross-venue trade is not risk-free because execution is non-atomic, contracts may not be equivalent, fees and slippage reduce the edge, and settlement or infrastructure failures can create losses. Build the scanner as a validation and control system first, then add small, recoverable execution. If the bot cannot explain exactly why two contracts settle identically and cannot reconcile every fill to final settlement, it is not an arbitrage system yet.
Frequently Asked Questions
Can a Polymarket–Kalshi spread be guaranteed profit?
Only the theoretical payoff is deterministic when contracts, settlement rules, quantities, and costs are identical and both legs fill. Independent execution means a displayed spread is not a guarantee.
Should I transfer funds after the first leg fills?
No. Cross-venue transfers are generally too slow for short-lived opportunities; pre-fund both venues and enforce a maximum unhedged exposure.
What is the safest first deployment?
Use a read-only scanner, a manually approved market allowlist, paper trading with failure simulations, then tiny live orders with a kill switch and settlement reconciliation.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




