Skip to main content

walrasquant

walrasquant is a high-performance Python framework for quantitative trading. It is designed for low-latency execution, multi-exchange connectivity, and strategy development at scale.

Highlights

  • Async-first architecture for real-time trading workflows
  • Multi-exchange support (OKX, Binance, Bybit, Hyperliquid, Bitget)
  • Built-in order and position lifecycle management
  • Strategy framework with execution algorithms (including TWAP)
  • Optional web API integration with FastAPI
  • CLI and PM2 tooling for monitoring and operations

Installation

Requirements

  • Python >=3.11,<3.14
  • Redis (recommended for monitoring and shared runtime state)

From PyPI

pip install walrasquant

From source

git clone https://github.com/walras-group/WalrasQuant.git
cd WalrasQuant
uv pip install -e .

Quick start

from decimal import Decimal

from walrasquant.constants import settings, ExchangeType, OrderSide, OrderType
from walrasquant.config import Config, BasicConfig, PublicConnectorConfig, PrivateConnectorConfig
from walrasquant.engine import Engine
from walrasquant.exchange.okx import OkxAccountType
from walrasquant.schema import BookL1, Order
from walrasquant.strategy import Strategy


OKX_API_KEY = settings.OKX.DEMO_1.api_key
OKX_SECRET = settings.OKX.DEMO_1.secret
OKX_PASSPHRASE = settings.OKX.DEMO_1.passphrase


class DemoStrategy(Strategy):
    def __init__(self):
        super().__init__()
        self.subscribe_bookl1(symbols=["BTCUSDT-PERP.OKX"])
        self.signal = True

    def on_filled_order(self, order: Order):
        print(order)

    def on_bookl1(self, bookl1: BookL1):
        if not self.signal:
            return

        self.create_order(
            symbol="BTCUSDT-PERP.OKX",
            side=OrderSide.BUY,
            type=OrderType.MARKET,
            amount=Decimal("0.1"),
        )
        self.create_order(
            symbol="BTCUSDT-PERP.OKX",
            side=OrderSide.SELL,
            type=OrderType.MARKET,
            amount=Decimal("0.1"),
        )
        self.signal = False


config = Config(
    strategy_id="okx_demo_buy_sell",
    user_id="user_test",
    strategy=DemoStrategy(),
    basic_config={
        ExchangeType.OKX: BasicConfig(
            api_key=OKX_API_KEY,
            secret=OKX_SECRET,
            passphrase=OKX_PASSPHRASE,
            testnet=True,
        )
    },
    public_conn_config={
        ExchangeType.OKX: [PublicConnectorConfig(account_type=OkxAccountType.DEMO)]
    },
    private_conn_config={
        ExchangeType.OKX: [PrivateConnectorConfig(account_type=OkxAccountType.DEMO)]
    },
)

engine = Engine(config)

if __name__ == "__main__":
    try:
        engine.start()
    finally:
        engine.dispose()

CLI tools

After installation, the following commands are available:

  • wq for PM2-based strategy process operations

Documentation

  • Local docs source: docs/

Contributing

Contributions are welcome. Please open an issue or submit a PR.

License

MIT License

Download files

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

Source Distribution

walrasquant_lib-0.6.3.tar.gz (406.3 kB view details)

Uploaded Source

Built Distributions

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

walrasquant_lib-0.6.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (648.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

walrasquant_lib-0.6.3-cp314-cp314-macosx_10_15_universal2.whl (523.4 kB view details)

Uploaded CPython 3.14macOS 10.15+ universal2 (ARM64, x86-64)

walrasquant_lib-0.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (647.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

walrasquant_lib-0.6.3-cp313-cp313-macosx_10_13_universal2.whl (521.4 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

walrasquant_lib-0.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (660.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

walrasquant_lib-0.6.3-cp312-cp312-macosx_10_13_universal2.whl (523.1 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

walrasquant_lib-0.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (650.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

walrasquant_lib-0.6.3-cp311-cp311-macosx_10_9_universal2.whl (523.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file walrasquant_lib-0.6.3.tar.gz.

File metadata

  • Download URL: walrasquant_lib-0.6.3.tar.gz
  • Upload date:
  • Size: 406.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for walrasquant_lib-0.6.3.tar.gz
Algorithm Hash digest
SHA256 604ed34ae5f82e6c667950ba4fda088629dac8fff3669cba833ee1a811e5c757
MD5 18f2b2f17d32305fdbe07b41261df98d
BLAKE2b-256 b3bc73e1ac5250bb515211d5d6152065b1db4434ff8e298af6404028dae2ce28

See more details on using hashes here.

File details

Details for the file walrasquant_lib-0.6.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for walrasquant_lib-0.6.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 979447d88f9d76605f15c4c0abb8181577085c239e6169c43a66eaedd351559b
MD5 b37a2ca9e10bb8c4a67ef168c1fe329f
BLAKE2b-256 eaf5ce5a1bd3946424451005720a8a1a738c25750ba39b1aac7cd834d78c618c

See more details on using hashes here.

File details

Details for the file walrasquant_lib-0.6.3-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for walrasquant_lib-0.6.3-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 f256361ebba1b40d6f54580b84375e3c7127dd9bfe43acce66229b16775cda13
MD5 61c6d95f2bd36dc9be9a1aa645661c40
BLAKE2b-256 22bc983f4b84c31840624e2214c7f301975f9ac7a6333e749ac1088eb2334aeb

See more details on using hashes here.

File details

Details for the file walrasquant_lib-0.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for walrasquant_lib-0.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2cfec8b3d32a3b5955681488629f31c1b2e688dbb6ff327615f8c35e6c5bb08a
MD5 c3babb5242b1a76cffcc0e80d9a1ce68
BLAKE2b-256 3f5524a29eb9c6eb7056abdde510baa6d6ac2d2b80e33e1dedcdee2fb21bc9a2

See more details on using hashes here.

File details

Details for the file walrasquant_lib-0.6.3-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for walrasquant_lib-0.6.3-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 675b21cdd92ff514328668b3ab7c60d950c1b4e2a801d38d0e17127a91ed1ddd
MD5 4928f74fbf5636aa1ee6059742c61ffc
BLAKE2b-256 ba03fecb8529f0db1269a3dd093351ed9f728e8ebb11a3249216fc28b2a7c8ca

See more details on using hashes here.

File details

Details for the file walrasquant_lib-0.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for walrasquant_lib-0.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ebe35a6c927bb2a1384bbd6a708e3205e72a9cc285e3ec377a6e4d58044fc7a6
MD5 2fb1aa754d91753b6d1d0e2b20ab16d0
BLAKE2b-256 7a30aface1efa11c3c7d2a3dbede88f2dd7c6521b2bea0bd685e9a47607a4ff9

See more details on using hashes here.

File details

Details for the file walrasquant_lib-0.6.3-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for walrasquant_lib-0.6.3-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 6f9bed6f58adf3d5120cf274f10bb1ddd4e6eb87c149cae1d9726f7ed457fde9
MD5 99e02d6197cd2bd03e31e8a6def6e50f
BLAKE2b-256 76515a446306c1d78245eb19d5d9ed3323c27b37b994991a3c0c45246a17e209

See more details on using hashes here.

File details

Details for the file walrasquant_lib-0.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for walrasquant_lib-0.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2980c7b3a81ece5a6a4b415538d7b500d3e6ee81e15f9b9f76696d73f6d72868
MD5 c50346812b8eb484a6e84f7339f9abb4
BLAKE2b-256 172d1af41403d65803746b17c1511767b9283a70441f4393522d076c0167a31b

See more details on using hashes here.

File details

Details for the file walrasquant_lib-0.6.3-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for walrasquant_lib-0.6.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 36531c5678c0664946995003367d83f99d2dd51545f621e2f5a5e816d4c23200
MD5 cbabda9658caaf5a5c6327f264abe2e0
BLAKE2b-256 21a8d97dff7553d416643622207630e86a65bd3cb21def9cafe353658fc37fb3

See more details on using hashes here.

Supported by

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