Skip to main content

High-performance C++20 backtesting engine with Python interface

Project description

QuantCore

Build Coverage C++ License

High-performance backtesting engine for trading strategies, written in C++20 with a Python research interface.


Overview

QuantCore is an event-driven backtester built around an enhanced version of my limit order book simulator. It processes market events chronologically through a priority queue, ensuring no look-ahead bias and no unrealistic assumptions about fill prices.

The C++ core handles all the performance-critical work: event dispatch, order matching, position tracking, and execution simulation. Python sits on top via pybind11 bindings and handles strategy development, parameter optimization, and visualization.

Market Data → EventQueue → Strategy → Signal → OrderBook → Fill → Portfolio

Quick Start

import quantcore as qc

class MyStrategy(qc.Strategy):
    def on_data(self, event):
        if not self.has_position(event.symbol):
            self.generate_signal(event.symbol, qc.SignalType.BUY, 1.0, event.timestamp_ns)

results = qc.run_backtest(
    strategy=MyStrategy(),
    data={'AAPL': qc.load_csv_data('AAPL', 'data/aapl.csv')},
    initial_capital=100_000.0,
)
print(results)

The engine handles fills, position tracking, and PnL automatically. For a full tearsheet:

from quantcore.analytics import calculate_all_metrics, calculate_returns
from quantcore.plotting import plot_full_tearsheet
import numpy as np

equity = np.array(results['equity_curve'])
returns = calculate_returns(equity)
print(calculate_all_metrics(equity))
plot_full_tearsheet(equity, returns)

Architecture

Every action goes through the event queue. When a strategy calls generate_signal, that signal becomes an OrderEvent, which goes through the order book, produces a FillEvent, which updates the portfolio. All in timestamp order. This is what prevents look-ahead bias: the strategy never sees data from the future.

img.png


Strategy Development

Python Strategy

Subclass qc.Strategy and implement on_data. Signals drive order execution. You don't place orders directly, you generate signals and the engine handles the rest.

class BollingerBreakout(qc.Strategy):
    def __init__(self, window=20, n_std=2.0):
        super().__init__("BollingerBreakout")
        self.window = window
        self.n_std  = n_std
        self.prices = []

    def on_data(self, event):
        self.prices.append(event.close)
        if len(self.prices) < self.window:
            return

        window_prices = self.prices[-self.window:]
        mean = sum(window_prices) / self.window
        std  = (sum((p - mean) ** 2 for p in window_prices) / self.window) ** 0.5

        upper = mean + self.n_std * std
        lower = mean - self.n_std * std
        pos   = self.get_position(event.symbol)

        if event.close > upper and pos <= 0:
            self.generate_signal(event.symbol, qc.SignalType.BUY,  1.0, event.timestamp_ns)
        elif event.close < lower and pos >= 0:
            self.generate_signal(event.symbol, qc.SignalType.SELL, 1.0, event.timestamp_ns)

    def on_fill(self, fill):
        pass  # optional: react to fills

Portfolio Context

Strategies can access full portfolio state:

def on_data(self, event):
    portfolio = self.get_portfolio()
    if portfolio:
        equity     = portfolio.get_portfolio_value()
        cash       = portfolio.get_cash()
        position   = portfolio.get_position(event.symbol)

Position Sizing

The engine ships with several sizing methods:

from quantcore import FixedPercentage, RiskBased, KellyCriterion

engine = qc.BacktestEngine(100_000.0)
engine.set_position_sizer(qc.FixedPercentage(0.10))  # 10% of capital per trade

Built-in sizers: FixedPercentage, RiskBased, KellyCriterion, EqualWeight, VolatilityTargeting, FixedShares.


Execution Simulation

Order Types

GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL, MARKET, GOOD_FOR_DAY

Fees & Slippage

from quantcore import ExecutionConfig

config = ExecutionConfig()
config.maker_fee     = 0.001   # 0.1% maker
config.taker_fee     = 0.002   # 0.2% taker
config.slippage_pct  = 0.0005  # 0.05% slippage
config.latency_ns    = 1_000_000  # 1ms order latency

engine = qc.BacktestEngine(100_000.0, config)

Risk Management

from quantcore import RiskLimits

limits = qc.RiskLimits()
limits.max_position_pct = 0.20   # max 20% per position
limits.max_leverage     = 2.0
limits.max_loss_pct     = 0.15   # halt at 15% drawdown

engine.set_risk_limits(limits)

Performance

Single-threaded. Measured on Windows (Release build, MSVC). Full results in benchmarks/RESULTS.md.

Order book

Pattern Ops/s
Add + cancel (market-maker quote refresh) 13.0 M ops/s
Add + match (taker sweep) 4.9 M ops/s

These are raw order book operations with no engine overhead. The matching engine is not the bottleneck at daily-bar scale.

End-to-end backtest

Scenario Bars/s Latency (p99)
1-year (252 bars) ~270 K bars/s 0.93 ms
5-year (1,260 bars) ~270 K bars/s -
1,000-year stress (252,000 bars) ~290 K bars/s -

Throughput is stable across dataset sizes. A 1-year daily backtest completes in under 1 ms at p99.

Run the benchmarks yourself:

cmake --build build --target bench_backtest_engine
./build/bench_backtest_engine

python benchmarks/bench_python.py

Analytics

After running a backtest, the results dict contains an equity curve and trade log you can feed straight into the analytics module.

from quantcore.analytics import calculate_all_metrics, calculate_returns

equity  = np.array(results['equity_curve'])
returns = calculate_returns(equity)
metrics = calculate_all_metrics(equity)

print(metrics)
# Total Return:     24.31%
# Annualized:       11.82%
# Sharpe Ratio:     1.43
# Sortino Ratio:    2.01
# Max Drawdown:     -8.74%
# Win Rate:         58.3%

Available metrics: total return, CAGR, Sharpe, Sortino, Calmar, max drawdown, drawdown duration, win rate, profit factor, avg win/loss, largest win/loss.

Visualizations

from quantcore.plotting import (
    plot_full_tearsheet,
    plot_equity_curve,
    plot_underwater,
    plot_returns_distribution,
    plot_rolling_metrics,
    plot_monthly_returns_heatmap,
)

plot_full_tearsheet(equity, returns, timestamps=ts)

Example Notebooks

Notebook Strategy Concepts
mean_reversion.ipynb Z-score mean reversion Parameter sensitivity, OU process
sma_crossover.ipynb SMA crossover Trend following, signal generation
pairs_trading.ipynb Statistical arbitrage Cointegration, spread trading
build_your_own_strategy.ipynb Bollinger Band Breakout Full walkthrough from scratch

Installation

Prerequisites

  • CMake 3.15+
  • C++20 compiler (GCC 10+, Clang 12+, MSVC 2022)
  • Python 3.8+
  • pybind11 (pip install pybind11)

Build

git clone https://github.com/SLMolenaar/quantcore.git
cd quantcore

# build the C++ core
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

# build the Python bindings
cd python
pip install pybind11
python build_module.py

# verify
python -c "import quantcore; print(quantcore.version())"

Run Tests

cmake --build build --target quantcore_tests
./build/quantcore_tests

For the full Python API reference, see docs/usage.md.


Project Structure

quantcore/
├── cpp/
│   ├── backtesting/          # Engine, events, portfolio
│   ├── strategies/           # C++ strategy implementations
│   ├── orderbook/            # Order book (from orderbook-simulator-cpp)
│   └── tests/                # GoogleTest suite
├── python/
│   ├── quantcore/            # Python package
│   │   ├── __init__.py       # Public API
│   │   ├── analytics.py      # Performance metrics
│   │   └── plotting.py       # Visualizations
│   ├── bindings.cpp          # pybind11 bindings
│   └── build_module.py       # Build helper
├── examples/                 # Jupyter notebooks
├── benchmarks/               # Benchmark suite
├── CMakeLists.txt
└── README.md

vs. Alternatives

QuantCore Backtrader Zipline
Core language C++20 Python Python
Order book simulation ✅ Real LOB
Event-driven
Look-ahead prevention ✅ Priority queue
Python strategy API ✅ pybind11 ✅ native ✅ native
Throughput (bars/s) ~270 K ~50 K ~100 K
Maintenance Active Stale Inactive

The main differentiator is the order book. Backtrader and Zipline assume you fill at the bar's close price. QuantCore routes orders through a real price-time priority matching engine, which gives you realistic partial fills, spread simulation, and tick-level execution when you have tick data.


Contributing

See CONTRIBUTING.md. Open areas if you want to dig in:

  • Stop / Stop-Limit orders: order type enum and matching engine
  • VWAP / TWAP algos: ExecutionEngine, child order slicing
  • Tick data pipeline: the engine is bar-agnostic internally; the data loader needs extending
  • Trading calendar: holiday/early-close filtering before bars hit the engine
  • Multi-strategy portfolio: shared capital across strategies with a meta-allocator
  • Parallel sweeps on Linux: n_jobs exists but Windows spawn overhead kills it; a Linux worker pool would make it actually useful

The engine doesn't handle corporate actions, survivorship bias, or timezone normalization. That's the data layer's job. Feed it clean adjusted data and none of those are problems.


License

MIT: see LICENSE.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

quantcore-0.1.1-cp312-cp312-win_amd64.whl (331.4 kB view details)

Uploaded CPython 3.12Windows x86-64

quantcore-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

quantcore-0.1.1-cp312-cp312-musllinux_1_2_i686.whl (1.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

quantcore-0.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (455.1 kB view details)

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

quantcore-0.1.1-cp312-cp312-macosx_15_0_universal2.whl (280.0 kB view details)

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

quantcore-0.1.1-cp311-cp311-win_amd64.whl (329.2 kB view details)

Uploaded CPython 3.11Windows x86-64

quantcore-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

quantcore-0.1.1-cp311-cp311-musllinux_1_2_i686.whl (1.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

quantcore-0.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (455.3 kB view details)

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

quantcore-0.1.1-cp311-cp311-macosx_15_0_universal2.whl (278.7 kB view details)

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

quantcore-0.1.1-cp310-cp310-win_amd64.whl (328.4 kB view details)

Uploaded CPython 3.10Windows x86-64

quantcore-0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

quantcore-0.1.1-cp310-cp310-musllinux_1_2_i686.whl (1.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

quantcore-0.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (454.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

quantcore-0.1.1-cp310-cp310-macosx_15_0_universal2.whl (277.3 kB view details)

Uploaded CPython 3.10macOS 15.0+ universal2 (ARM64, x86-64)

quantcore-0.1.1-cp39-cp39-win_amd64.whl (341.1 kB view details)

Uploaded CPython 3.9Windows x86-64

quantcore-0.1.1-cp39-cp39-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

quantcore-0.1.1-cp39-cp39-musllinux_1_2_i686.whl (1.4 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ i686

quantcore-0.1.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (454.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

quantcore-0.1.1-cp39-cp39-macosx_15_0_universal2.whl (277.5 kB view details)

Uploaded CPython 3.9macOS 15.0+ universal2 (ARM64, x86-64)

File details

Details for the file quantcore-0.1.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: quantcore-0.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 331.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for quantcore-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e00d11acf1f20726672a4f1d804ca244293d480edf3cb153f7d5da60e2ce31cd
MD5 8c88e60eff903d2863f4d27acf9647a4
BLAKE2b-256 9cfe870997d0da84087c763b19925a16c99a18169143db9e8a70e53c7defe916

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 10c84b4ffa96444ab3b874c46480c27ccf00da98b20838081cd1aecddcf30e7a
MD5 b5b3634470838e6ae014e7ac92f8affe
BLAKE2b-256 adc247ccc233f1eb7b0df9c28903d6dd0a432cb8b688fcead2e65fc80117b3ab

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 2769bcee3a5a266eca0d0277f671282652b7903c2434389e67da8f44ad74aa0d
MD5 5c7e5ae8c532e12d836bb8d7cca2db69
BLAKE2b-256 77c850081870832d7b4c1167148eae217ec7f6855b83d7aa084608696dc9f4d4

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d67bcfbbc106b9d183c47fe63cf75fc05b333bc1b30a03b822a4493ed43e0c4
MD5 329cf78b45ecef1fefed84734daef9d6
BLAKE2b-256 dd0bbea7d9c536a5c3577e6d371939f48087c469cdeee817af03e990735b345a

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp312-cp312-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 293ed6058966eaffaf41ab2a39d2bab11c593ea7cd07d45b35908da10f207a23
MD5 611003730ac95bad2fd63b4eeea1ea61
BLAKE2b-256 b9169f16de2a37cd9de756e97d512020d85e8e1e295b5dd28be6ac8fa9144eed

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: quantcore-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 329.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for quantcore-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 46e73cf783591cdd4d6c5c605d47a6c9517e3f13bb83026db7bee97eaf521517
MD5 951bfb8839220fb66d8e023a43e925e6
BLAKE2b-256 12549ba0b2fa297345c34073b7b3518f49b70c04d772bfcd10e6a9e09141d59c

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d2021565fdf4e8b43fcb2b5b851f939d4812936d829b3038edd4538f3cc0b6d6
MD5 2089ca32e53eedc4af2297087fdedd8b
BLAKE2b-256 5a6610ba44bc3434bc6c50a778a240894ff28b3f29358b5365dacb6fbfa75e5d

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 929046b672fcd93b793d44f9a2aacba12eb1508a86e148b268ce019125211d8f
MD5 f050842c3159d3fb3c1e383de265efa5
BLAKE2b-256 d1af238fc7065f7e189e83838927077398379ba7bae8b4a8babd1fa4268d713f

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f2602971ddd1ad889eac389a99612f906a806a8451b9b24feae622e21d86b389
MD5 e0b5747d0c9f682032222a6eb380b205
BLAKE2b-256 67c1f9bffadf994093f4ec20e01f696a7b15fdce239d3351b2d15443ff2a33bb

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp311-cp311-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp311-cp311-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 419fd0d0e6fe4da6931122f2db740e13700de51f85af826f3b29f20ebedef2d2
MD5 4896e53547356ca074e36476c12328fa
BLAKE2b-256 720be47cdc0384ca3b7d549dad8ad0451ed2cd6a473278109877b3375be13571

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: quantcore-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 328.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for quantcore-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 aa3a3e2cbeac4f013dbd3d1175fe2fa2ec670bf5eb36e164cc013a54cf6fcd5c
MD5 b1660206b8ec67b71f61240a9719ba37
BLAKE2b-256 266a53aacf1817b366896a05db336fea97c0d6151296fc91cb4225d37afb69b8

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f3781878201b476c513d55a357d93da53ee6f651f9e0c447d03fe5f5cad1ace0
MD5 908ada75346f200bcf028dd685c2b111
BLAKE2b-256 48b2fad5c2b82c43e02c1cc0c4b6e2577786450ac4c06b7cd32ac6ab8e31d744

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c55ccad31cc497b81d0d8b41151fc530452a07b74f4bf232e3de52fabe49b3bd
MD5 5ce52aa752902656c595529cf28d2b97
BLAKE2b-256 1641231c22dff96017929ba390a290deab7ae65700abbc6e7ea4741fe24e43b8

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6a2634f109934da8a691736301fafbd8c154b6e424208161c9434d8fede4f6d9
MD5 57ff92d4006a78ec2b87945a0a44a761
BLAKE2b-256 3e3d83c1212b0c6efa160831042f868cc2f3a305b9ea5b05f2c5d2e94c985188

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp310-cp310-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp310-cp310-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 776158ab5adcba6c0559876cdb4daca713dc4653fc95dc835ac73965e8765bc5
MD5 1a55b68ff8f98ef3b812793d4392bcc8
BLAKE2b-256 bdccfc8d932b1fc58cfa4d740565d07462ae9c6b5f71976e37219df99ee88aff

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: quantcore-0.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 341.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for quantcore-0.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 371949ac2fa022213d019eb3b34d8e6b048ff147a7f7a28e214778ef9c5bf076
MD5 632fdb19ad0cf5cf40b99b0b146e0f1f
BLAKE2b-256 174fe91ab2e0b359185c104108c45394e0939679c4e4eb84a526c320017b6cf8

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5238f7b392651dceef944d0baa1c37424cc59cca42366b4462646a7e60c8053c
MD5 ba45f381fa353cc700a8e362dfeef394
BLAKE2b-256 0c13d6a781cc8aa6cc12bdfe046a30be38f30e41e5f65b1e6e8e7440ed3498e0

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 07ca95e77db11417dbbd38dacf2ade60648d7b8d9b1ce901b4fc976d8b9c3628
MD5 d9c85645928300a3f8821ee94237eba9
BLAKE2b-256 074e3d1289c559e9141de1062b1184509785abfd0c594eb8b5acb56f889ded19

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aed22e5a2b459164ebf2d1a8872a0b48f7d0b267bcdcb8d96ad5903d54314bf4
MD5 0ae651d002d5ebe6b2ab56ec3ed4dc08
BLAKE2b-256 cbbd3242261cc866e436d4b67a990fb5f6ee8bc8f051dfa53af510122f9f6a80

See more details on using hashes here.

File details

Details for the file quantcore-0.1.1-cp39-cp39-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for quantcore-0.1.1-cp39-cp39-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 d8af8abc190c78ce57c4b50073ffbd2ab6b58bb8263beb413e70cfd48a26cfe9
MD5 0875237fd6b682c98f6972b3c4288196
BLAKE2b-256 f48e2dcdca9b300cb0a2a65e5d6c707fb7780a55924d2f639ec93dd3feecfeda

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 Pingdom Monitoring Sentry Error logging StatusPage Status page