BQuant — Quantitative Research Toolkit
BQuant is a toolkit for quantitative research of financial markets. Its core is a universal zone-analysis pipeline: it is not tied to any particular indicator and works with any oscillator.
- Documentation: https://bquant.readthedocs.io/
- Source: https://github.com/kogriv/bquant
Install
pip install bquant
Python 3.12+.
Quick start
from bquant.data.samples import get_sample_data
from bquant.analysis.zones import analyze_zones
data = get_sample_data('tv_xauusd_1h')
# The pipeline is indicator-agnostic: swap the `.with_indicator()` call,
# everything else stays the same.
result = (
analyze_zones(data)
.with_indicator('pandas_ta', 'rsi', length=14)
.detect_zones('threshold', indicator_role='value',
upper_threshold=70, lower_threshold=30)
.analyze(clustering=True)
.build()
)
print(len(result.zones)) # 64
print(sorted({zone.type for zone in result.zones})) # ['neutral', 'overbought', 'oversold']
A zone is addressed by role (indicator_role='value'), not by column name. Column
names depend on the library and on the call parameters and change with them; roles do not.
MACD zones in one line — a preset over the same pipeline:
from bquant.analysis.zones import analyze_macd_zones
from bquant.data.samples import get_sample_data
result = analyze_macd_zones(get_sample_data('tv_xauusd_1h'))
print(len(result.zones)) # 32
print(sorted({zone.type for zone in result.zones})) # ['bear', 'bull']
Note that the zone vocabulary follows the indicator: an oscillator crossing zero yields
bull/bear, a bounded one yields overbought/neutral/oversold.
What is in the box
Zone analysis. Five detection strategies (zero_crossing, threshold,
line_crossing, preloaded, combined) and five metric families (swing, shape,
divergence, volatility, volume), plus hypothesis testing and clustering over the
resulting zones.
Indicators. Built-in implementations (SMA, EMA, RSI, MACD, Bollinger Bands) and
anything from pandas-ta or TA-Lib through one factory:
from bquant.data.samples import get_sample_data
from bquant.indicators import LibraryManager
data = get_sample_data('tv_xauusd_1h')
LibraryManager.load_all_libraries()
rsi = LibraryManager.create_indicator('pandas_ta', 'rsi', length=14)
print(rsi.calculate(data).data.columns.tolist()) # ['RSI_14']
Data. OHLCV loading, processing and validation, with sample datasets embedded in the package so that every example runs without external files.
Visualization. Interactive financial charts and statistical plots (Plotly, Matplotlib).
Performance. Vectorized computation and a two-level cache (memory + disk).
Command line
bquant list # available sample datasets
bquant analyze tv_xauusd_1h # zones, MACD by default
bquant analyze tv_xauusd_1h --indicator rsi # any supported oscillator
bquant analyze --json --no-chart # structured output, for programs
bquant analyze mt_xauusd_m15 -o chart.html # save the chart
Every flag and the JSON schema: CLI guide.
Documentation
| Quick start | first result in five minutes |
| Zone analysis pipeline | the full builder reference |
| Tutorials | step-by-step scenarios |
| API reference | module by module |
| Developer guide | extending the package |
Development
git clone https://github.com/kogriv/bquant.git
cd bquant
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
pytest
Extras: dev, docs, notebooks, research, and full (= dev + notebooks).
Repository layout: bquant/ is the package itself; tests/, docs/ and examples/
support it; research/ and scripts/ hold notebook-style studies and automation.
Status
Beta. The public API changes between releases without deprecation windows — renames are
carried through in one change, and CHANGELOG.md records every breaking change with its
replacement. Pin an exact version if you need stability.
Not in the package: machine learning. The bquant.ml placeholder was removed in 0.0.7
because both of its public functions only ever raised NotImplementedError.
License
MIT — see LICENSE.
Contact
Author: kogriv · kogriv@gmail.com
Metadata
Release files for bquant 0.0.18
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bquant-0.0.18.tar.gz | 1.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bquant-0.0.18-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.8 MB
Release files / bquant-0.0.18.tar.gz
| Download URL | bquant-0.0.18.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c7b6dd65b3d74c48b5ae28e6f9dd0578dd40db61294c6a429df6822d88e38db2
|
|
BLAKE2b-256 checksum How to use checksums |
a4b03c2e4a8eb1037163a45b5234683285723c21ceecae2fdecc7075095b84bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / bquant-0.0.18-py3-none-any.whl
| Download URL | bquant-0.0.18-py3-none-any.whl |
|---|---|
| Size | 524.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6f8538cc3ba5d8183382034dca73a4a77ab7eceea7a76f58dd885a7e52db82f0
|
|
BLAKE2b-256 checksum How to use checksums |
87ca65f0592953736eec24e69557c001d83ed13a497c4261d71ec81e706e582c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|