Skip to main content

Prediction market websocket clients for Polymarket, Kalshi, and Opinion

Project description

predxt

CI PyPI Python License: MIT

Read-only realtime ingestion for prediction market builders.

predxt streams and normalizes websocket data from Polymarket, Kalshi, and Opinion. It is built for dashboards, recorders, research tools, monitoring agents, and orderbook visualizations. It is not a trading, execution, account, or financial-advice library.

Install

pip install predxt

For local development:

uv sync --group dev
uv run pytest -q -s

60-second Polymarket demo

Polymarket market websockets are public. Use any valid Polymarket CLOB asset id:

predxt stream polymarket --asset-id 1234567890 --limit 5 --jsonl

Or from Python:

import asyncio

from predxt.polymarket import PolymarketWsClient


async def main() -> None:
    client = PolymarketWsClient()
    await client.connect()
    await client.subscribe(
        ["market"],
        {"assets_ids": ["1234567890"], "initial_dump": True},
    )

    async for message in client.messages():
        print(message.event_type, message.asset_id, message.raw_data)
        break

    await client.close()


asyncio.run(main())

Venue matrix

Venue Public stream Auth Current support
Polymarket Yes None for market stream market books, price changes, trades
Kalshi No signed websocket headers orderbook snapshots and deltas
Opinion No API key depth diffs, last price, last trade

API contract

Core imports:

from predxt import (
    OrderBookState,
    VenueMessage,
    typed_event_from_message,
)

Venue imports:

from predxt.polymarket import PolymarketWsClient, PolymarketSubscriptionConfig
from predxt.kalshi import KalshiWsClient, build_kalshi_auth_headers
from predxt.opinion import OpinionWsClient, OpinionSubscriptionConfig

Every client emits VenueMessage objects with:

  • venue
  • event_type
  • market_id
  • asset_id
  • timestamp_ms
  • received_at_ms
  • raw_data

Use typed_event_from_message(message) when you want dataclass events such as OrderBookSnapshot, OrderBookDelta, TradeEvent, or PriceChangeEvent. Use OrderBookState when you need a small in-memory orderbook helper.

CLI

Offline parser demo:

predxt parse-fixture --venue polymarket --jsonl tests/fixtures/polymarket_order_books.json

Live streams:

predxt stream polymarket --asset-id 1234567890 --limit 10 --jsonl
KALSHI_KEY_ID=... KALSHI_PRIVATE_KEY_PATH=... predxt stream kalshi --market MARKET-TICKER
OPINION_API_KEY=... predxt stream opinion --market-id 2764

Examples

This repository keeps minimal examples in examples/. Public showcase starters:

What this is not

predxt does not place orders, derive trading credentials, manage positions, execute arbitrage, bypass venue restrictions, or provide financial advice. It is a read-only ingestion SDK. Keep account secrets in environment variables or a secret manager; never hard-code them in examples or agent prompts.

Documentation

Development

uv sync --group dev
uv run ruff check .
uv run mypy
uv run pytest -q -s
uv build
uv run twine check dist/*

Release

Releases use SemVer and tags like v0.1.0. See docs/releasing.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

predxt-0.1.0.tar.gz (44.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

predxt-0.1.0-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file predxt-0.1.0.tar.gz.

File metadata

  • Download URL: predxt-0.1.0.tar.gz
  • Upload date:
  • Size: 44.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for predxt-0.1.0.tar.gz
Algorithm Hash digest
SHA256 86c378353e6fe30482439fb85692bb9938d51ace700d2f062d3a0a7c75434a7b
MD5 3c41365b5b3b8b03ef174a50bc51eac2
BLAKE2b-256 aefb82f42e7d5efc30ed9006370948c5904c18fc619f3d5f721ba59c86790ec1

See more details on using hashes here.

Provenance

The following attestation bundles were made for predxt-0.1.0.tar.gz:

Publisher: release.yml on hzprotocol/predxt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file predxt-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: predxt-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for predxt-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0c5c96b2fe94fd8284d13518fcb1f473bd341ad48f3bf4843badcbf88e57c690
MD5 23589919b244b8181bb2eeb0c7c6f661
BLAKE2b-256 9bb5a9526b5d879ecd5de05e421f8979678996063559bd211f4be9d7fa9395d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for predxt-0.1.0-py3-none-any.whl:

Publisher: release.yml on hzprotocol/predxt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page