Quant Research Tools
Project description
qrt — Quant Research Tools
One consistent import qrt as q API over the fragmented quant Python ecosystem —
market data, technical indicators, return statistics, and interactive plotting,
wired together so the output of one is the input of the next.
import qrt as q
aapl = q.data.sources.yfinance.read("AAPL", "2024-01-01", "2025-01-01", "1d")
spy = q.data.sources.yfinance.read("SPY", "2024-01-01", "2025-01-01", "1d")
strategy = aapl["close"].pct_change().rename("AAPL")
benchmark = spy["close"].pct_change().rename("SPY")
q.stats.benchmark_stats(strategy, benchmark) # alpha, beta, Sharpe, tracking error, ...
q.plot.plot(strategy, benchmark=benchmark) # interactive equity + drawdown report
Why qrt
- No more juggling five libraries with five conventions. TA-Lib and
pandas-ta-classic indicators (
q.indicator.talib,q.indicator.pandas_ta), Yahoo Finance/Binance/DuckDB market data (q.data.sources), and 30+ risk/return metrics inspired by quantstats (q.stats) all speak the same plain pandasDataFrame/SeriesOHLCV and return-stream layout — chain them freely, no glue code, no format conversion. - A canonical trades format, not just return streams. One row per
round-trip trade (entry/exit price & time, direction, MAE/MFE, free-form
feature snapshots) is a first-class citizen:
q.stats.trade_stats,q.stats.trades_to_returns, andq.plot.trades/mae_mfe/trade_distributionall consume it directly. - Built-in robustness checks, not just a backtest score. Bootstrap
Monte Carlo, forward win-rate variance testing, and noise-sensitivity
testing ship as first-class
q.stats/q.plotfunctions, not an afterthought — ask "does this edge survive a different order of draws / a worse win rate / noisier data?" in one call. - Interactive by default. Every chart is a real Plotly figure — zoom,
hover, range-select — exportable to standalone HTML or PNG with
q.plot.show. - Works offline. Bundled sample OHLCV data (AAPL, SPY, BTC-USD) and demo strategy trade logs mean you can try every function with zero network calls or API keys.
Library layout
| Module | Purpose |
|---|---|
q.data |
local parquet/csv I/O, market data sources (Yahoo Finance, Binance, DuckDB), bundled sample datasets |
q.env |
explicit .env loading and environment-variable access |
q.calendar |
exchange sessions, closures, and market-time semantics |
q.indicator |
native single-instrument measurements plus explicit TA-Lib and pandas-ta-classic providers |
q.cross_section |
cross-sectional characteristics and rankings (planned) |
q.feature |
named, versioned model inputs, computation, and materialization |
q.preprocess |
fitted model-input transformations (planned) |
q.signal |
investment intent derived from measurements, factors, models, and rules (planned) |
q.stats |
return-stream & trade-level statistics: performance, alpha/beta, Monte Carlo, variance/noise testing |
q.plot |
interactive Plotly charts and performance reports, for both return streams and trade logs |
q.model |
leakage-aware validation and optional PyTorch helpers |
q.bt |
event-driven backtesting (planned) |
q.portfolio |
portfolio construction and analysis (planned) |
Warning ⚠️
Still in early alpha — APIs may change without notice. Track progress on the Roadmap.
Install
uv add pyqrt
Docs
Full documentation, tutorials, and API reference: https://quantbert.github.io/qrt/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyqrt-0.0.18.tar.gz.
File metadata
- Download URL: pyqrt-0.0.18.tar.gz
- Upload date:
- Size: 17.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76f51d9d0dd438e8f70298c701d024eeb4d72c13722373282b5bcb8ed3713dc1
|
|
| MD5 |
aeb12507e27dc0ee668587d58372f165
|
|
| BLAKE2b-256 |
84d20c06342696328bbb756d4c4082fa108dff39ff64c6c02ffcab3df61369b2
|
File details
Details for the file pyqrt-0.0.18-py3-none-any.whl.
File metadata
- Download URL: pyqrt-0.0.18-py3-none-any.whl
- Upload date:
- Size: 781.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c67213b51668d29f9a816af1d669efc102ff65bab6c12da6fa2b8410e00b515
|
|
| MD5 |
57a4f2a5536b81f7a91d05d9ae3aa1d2
|
|
| BLAKE2b-256 |
28daf2feb3860e7ce163696cae389620b636a03747165529d23c226d5255770b
|