Skip to main content

Quool

Quantitative Toolkit — an extensible event-driven backtesting and live trading framework for quantitative strategies.

Quool provides a modular architecture built around three pillars: Source (market data), Broker (execution & accounting), and Strategy (logic). It supports both backtesting with historical data and paper/live trading with broker integrations.

Installation

pip install quool

Requires Python >= 3.10.

Quick Start

import pandas as pd
from quool import DataFrameSource, Broker, Strategy
from quool import FixedRateCommission, FixedRateSlippage

# 1. Market data source (MultiIndex DataFrame: time x code)
source = DataFrameSource(market_data)

# 2. Broker with commission and slippage models
broker = Broker(
    commission=FixedRateCommission(),
    slippage=FixedRateSlippage(),
)
broker.transfer(pd.Timestamp("2024-01-01"), 1_000_000)  # initial cash

# 3. Implement strategy
class MyStrategy(Strategy):
    def init(self):       # called once before backtest
        pass

    def update(self):     # called every timestamp
        # self.buy("000001", 100)   # buy 100 shares at market
        # self.order_target_percent("000001", 0.1)  # target 10% portfolio
        pass

# 4. Run backtest
strategy = MyStrategy(source, broker)
results = strategy.backtest()

Architecture

┌─────────────────────────────────────────────────────────┐
│                      Strategy                            │
│  init() → preupdate() → update() → stop()               │
└──────────────┬─────────────────────────┬────────────────┘
               │                         │
        ┌──────▼──────┐            ┌──────▼──────┐
        │   Source    │            │   Broker    │
        │ (market    │            │ (execution  │
        │   data)    │            │  & accounting)
        └────────────┘            └──────┬──────┘
                                          │
                                   ┌──────▼──────┐
                                   │   Order /   │
                                   │  Delivery   │
                                   └─────────────┘

Core Concepts

Source

Source is the abstract market data provider. Subclasses implement update() to advance time and return OHLCV snapshots.

Class Description
DataFrameSource Historical data from a pandas DataFrame (MultiIndex: time × code)
DuckPQSource DuckDB/Parquet queries
RealtimeSource Real-time EastMoney API with a rolling buffer
XtDataPreloadSource XtQuant historical data preloaded into a DataFrame

Broker

Broker manages order execution, portfolio accounting (cash & positions), and order matching for backtesting. For live trading, broker subclasses integrate with external systems.

Class Description
Broker Core simulated broker with pluggable commission/slippage models
AShareBroker Enforces A-share 100-share lot-size rules
XueQiuBroker XueQiu paper trading integration
XtBroker XtQuant live trading gateway

Order & Delivery

  • Order tracks the full lifecycle: CREATED → SUBMITTED → PARTIAL → FILLED/CANCELED/EXPIRED/REJECTED
  • Delivery records individual fills (execution details: price, quantity, commission)
  • Execution types: MARKET, LIMIT, STOP, STOPLIMIT, TARGET, TARGETLIMIT

Strategy

Base class for trading strategies. Provides:

  • Lifecycle hooks: init(), preupdate(), update(), stop()
  • Execution helpers: buy(), sell(), close(), order_target_value(), order_target_percent()
  • Backtesting: backtest() — blocking loop; run() / arun() — real-time scheduling
  • Persistence: dump(), load(), store(), restore()

Evaluator

Computes comprehensive performance metrics from broker deliveries:

  • Return: total_return, annual_return, annual_volatility
  • Risk-adjusted: sharpe_ratio, calmar_ratio, sortino_ratio
  • Drawdown: max_drawdown, max_drawdown_period
  • Risk: VaR_5%, CVaR_5%
  • Benchmark: beta, alpha, excess_return, information_ratio
  • Trading: position_duration, trade_win_rate, trade_return
  • Distribution: skewness, kurtosis, day_return_win_rate, monthly_win_rate

Friction Models

Class Description
FixedRateCommission Flat-rate commission with minimum fee and stamp duty
FixedRateSlippage Slippage model adjusting execution price based on volume

Storage

DuckDB-backed Parquet storage for efficient historical data management:

Class Description
DuckTable Single Parquet dataset with SQL querying
DuckPQ Multiple Parquet tables with shared DuckDB connection

Utilities

Function Description
setup_logger Configurable logging with file handlers
notify_task Email notification decorator
proxy_request HTTP requests with proxy failover
generate_usage Auto-generate Markdown documentation for classes/callables

API Reference

For detailed API documentation, see:

License

MIT

Download files

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

Source Distribution

quool-7.0.17.tar.gz (86.5 kB view details)

Uploaded Source

Built Distribution

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

quool-7.0.17-py3-none-any.whl (72.5 kB view details)

Uploaded Python 3

File details

Details for the file quool-7.0.17.tar.gz.

File metadata

  • Download URL: quool-7.0.17.tar.gz
  • Upload date:
  • Size: 86.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quool-7.0.17.tar.gz
Algorithm Hash digest
SHA256 c39150749e29aaf607f0c485a44656a8dc1f2238714fb31051ac0acad7fdf08d
MD5 2daa1d7456c319de2646dbadac5be1f7
BLAKE2b-256 45ae8aaf14fceba4767fff5f4433fef7a5d3d8201246c143535d100698bd76a5

See more details on using hashes here.

File details

Details for the file quool-7.0.17-py3-none-any.whl.

File metadata

  • Download URL: quool-7.0.17-py3-none-any.whl
  • Upload date:
  • Size: 72.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quool-7.0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 d2dec8f459abe4d21a5cbd28a8a719590c908b29e1cf677b8319f5ec7aec2853
MD5 a7d8d9527e4270742c64d0cd585c9357
BLAKE2b-256 910400464bff0d58623a5fe4e74090e31df74f7995b52e545d52abd3821d6362

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

7.0.17 This release

2 files

7.0.16

2 files

7.0.11

2 files

7.0.10

2 files

7.0.9

2 files

7.0.8

2 files

7.0.6

2 files

7.0.5

2 files

7.0.4

2 files

7.0.3

2 files

7.0.2

2 files

7.0.1

2 files

6.0.0

2 files

5.6.0

2 files

5.5.0

2 files

5.4.0

2 files

5.3.2

2 files

5.3.1

2 files

5.2.2

2 files

5.2.0

2 files

5.1.0

2 files

5.0.14

2 files

5.0.13

2 files

5.0.12

2 files

5.0.8

2 files

5.0.7

2 files

5.0.6

1 file

5.0.3

2 files

5.0.1

2 files

5.0.0

2 files

4.4.8

2 files

4.4.5

2 files

4.3.0

2 files

4.2.1

2 files

4.2.0

2 files

4.1.6

2 files

4.1.5

2 files

4.1.3

2 files

4.1.0

2 files

4.0.1

2 files

4.0.0

2 files

3.0.0

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.6.0

1 file

1.5.8

2 files

1.5.7

2 files

1.5.6

2 files

1.5.5

2 files

1.5.4

2 files

1.5.3

2 files

1.5.2

2 files

1.5.1

2 files

1.4.0

2 files

1.3.3

2 files

1.3.2

2 files

1.3.1

2 files

1.3.0

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

0.6.0

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.27

2 files

0.4.26

2 files

0.4.25

2 files

0.4.24

2 files

0.4.23

2 files

0.4.22

2 files

0.4.21

1 file

0.4.19

1 file

0.4.18

1 file

0.4.17

1 file

0.4.16

1 file

0.4.15

1 file

0.4.14

1 file

0.4.12

1 file

0.4.11

1 file

0.4.10

1 file

0.4.9

1 file

0.4.8

1 file

0.4.7

1 file

0.4.6

1 file

0.4.5

1 file

0.4.4

1 file

0.4.3

1 file

0.4.2

1 file

0.4.0

2 files

0.3.1

2 files

0.2.5

2 files

0.2.4

2 files

0.2.1

1 file

0.2.0

2 files

0.1.5

1 file

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

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