The execution stack for prediction-market desks.
River Markets gives hedge funds, proprietary trading firms, and professional traders one execution stack for trading across prediction-market venues, with advanced execution, unified market data, and consolidated positions and P&L.
Run a desk, not a browser tab.
Professional execution, position, and P&L tooling, wired to every venue you trade.
-
Multi-Book view. Work hundreds of orders at the same time. Place, modify, and cancel directly from the book. 360° view of every market, across exchanges.Hundreds of orders at once. Place, modify, cancel from the book.
-
Execution algos. Native Icebergs, Pegs, Take-Profit and Stop-Loss, managed by River, not the venue. Cancel the parent, everything unwinds.Native Iceberg, Peg, TP/SL. Managed by River, not the venue.
-
Baskets & smart routing. We match contracts across exchanges, routing eligible orders to the best available price across connected venues. Smart routing splits fills for an average 2¢ price improvement.Routed across venues for ~2¢ average price improvement.
-
Unified OMS. Place, edit, cancel across venues from one blotter. Positions, open orders, fills history and P&L attribution all live in one place.One blotter. Positions, orders, fills, P&L in one place.
-
Subaccounts. Isolate strategies, books, or capital. No new venue accounts. P&L attributed per subaccount.Isolate strategies, books, or capital. P&L per subaccount.
# pip install rivermarkets. Ed25519-signed, sub-account aware. from rivermarkets import RiverMarkets client = RiverMarkets(key_id=KEY_ID, private_key=PRIV) # Same call, every market. order = client.orders.create_order( subaccount_id="macro-book", river_id=4552150, # KXFEDDECISION-26JUN-C25 order_type="LIMIT", time_in_force="GTC", buy_flag=True, price=0.27, qty=100, ) print(f"resting → {order.river_order_id}")
from rivermarkets import RiverMarkets from rivermarkets.types import IcebergOrderParams client = RiverMarkets(key_id=KEY_ID, private_key=PRIV) order = client.complex_orders.create_complex_order( subaccount_id="macro-book", river_id=4552150, iceberg_order_params=IcebergOrderParams( buy_flag=True, total_qty=1_000, displayed_qty=50, # show 50 at a time limit_price=0.42, post_only=True, # maker-only on every tranche ), )
from rivermarkets import AsyncRiverMarkets client = AsyncRiverMarkets(key_id=KEY_ID, private_key=PRIV) async with client.realtime.orderbooks([6003721, 8927]) as stream: async for msg in stream: if msg.type in ("snapshot", "update"): print(msg.river_id, msg.data["best_bid_price"], msg.data["best_ask_price"]) elif msg.type == "error": print(msg.code, msg.message)
One API for every venue you trade.
Sign locally, place anywhere. REST + WebSockets, sync and async. Integrate once, not per venue.
-
Stop juggling exchange tickers. Manage trading and positions with
river_ids, our standardized numeric identifier for every contract on every venue.Oneriver_idper contract, across every venue. -
Ed25519-signed requests. Every REST call and WebSocket handshake signed locally. Your private key never leaves the process.Every call signed locally. Private key never leaves your process.
-
Streams. One socket each for books, orders, and tradeprints. Subscribe to any number of river_ids.One socket each for books, orders, fills. Subscribe to any river_ids.
-
Complex orders, server-managed. Iceberg, Peg, TP/SL run on River's side. Child orders arrive on the orders WebSocket grouped by parent ID. Cancel one, everything unwinds.Iceberg, Peg, TP/SL run server-side. Cancel parent, all unwind.
-
Official Python SDK. The
rivermarketspackage. Sync and async clients, fully typed. More languages on request.rivermarkets. Sync + async, fully typed. More languages on request.
Trade the leading prediction-market venues.
Live on Kalshi, Polymarket, and Polymarket US. Novig, Crypto.com, and more in integration.
In our live case study, the most expensive venue route cost 7% more all-in. See the numbers
Backed by leading venture firms and operators.
Frequently asked questions.
What is River Markets?
River Markets is an execution and portfolio-management platform for prediction markets. It gives hedge funds, proprietary trading firms, and professional traders one terminal and API for trading across supported venues, with advanced execution, normalized market data, and consolidated orders, positions, and P&L.
Who is River Markets built for?
River is built for hedge funds, proprietary trading firms, and professional traders that require professional execution, API access, multi-venue connectivity, and consolidated portfolio visibility. It is particularly useful for teams that want to scale or automate their trading without building and maintaining separate infrastructure for every venue.
Which exchanges does River support?
River is currently live for trading and market data on Kalshi, Polymarket, and Polymarket US. Additional venues, including Novig and Crypto.com, are in integration.
Does River hold customer funds?
River's current platform connects to customer-controlled accounts at supported exchanges. Funds remain within those venue accounts rather than being pooled in a River trading account.
Can we use River through both a terminal and an API?
Yes. Traders can use River's professional multi-book terminal or integrate through its REST and WebSocket APIs. River also provides an official typed Python SDK with synchronous and asynchronous clients.
Does River provide margin, custody, or cross-venue netting?
River's live platform currently focuses on execution, smart routing, market data, order management, positions, and P&L across supported exchanges. Contact us to discuss your firm's financing, collateral, custody, or cross-venue requirements.
Spend your time on alpha. Not infra.
Execution, routing, settlement, P&L, handled across every venue.
Book a 30-minute demo.