hftbacktest


Namehftbacktest JSON
Version 2.4.2 PyPI version JSON
download
home_pageNone
SummaryA high-frequency trading and market-making backtesting tool accounts for limit orders, queue positions, and latencies, utilizing full tick data for trades and order books.
upload_time2025-08-24 03:58:42
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseNone
keywords hft high-frequency trading trading market-making backtest
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ===========
HftBacktest
===========

|codeql| |python| |pypi| |downloads| |rustc| |crates| |license| |docs| |roadmap| |github|

High-Frequency Trading Backtesting Tool
=======================================

This framework is designed for developing high frequency trading and market making strategies. It focuses on accounting for both feed and order latencies, as well as the order queue position for order fill simulation. The framework aims to provide more accurate market replay-based backtesting, based on full order book and trade tick feed data.

Key Features
============

* Working in `Numba <https://numba.pydata.org/>`_ JIT function (Python).
* Complete tick-by-tick simulation with a customizable time interval or based on the feed and order receipt.
* Full order book reconstruction based on Level-2 Market-By-Price and Level-3 Market-By-Order feeds.
* Backtest accounting for both feed and order latency, using provided models or your own custom model.
* Order fill simulation that takes into account the order queue position, using provided models or your own custom model.
* Backtesting of multi-asset and multi-exchange models
* Deployment of a live trading bot for quick prototyping and testing using the same algorithm code: currently for Binance Futures and Bybit. (Rust-only)

Documentation
=============

See `full document here <https://hftbacktest.readthedocs.io/>`_.

Tutorials you’ll likely find interesting:

* `High-Frequency Grid Trading - Simplified from GLFT <https://hftbacktest.readthedocs.io/en/latest/tutorials/High-Frequency%20Grid%20Trading%20-%20Simplified%20from%20GLFT.html>`_
* `Market Making with Alpha - Order Book Imbalance <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20Order%20Book%20Imbalance.html>`_
* `Market Making with Alpha - APT <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20APT.html>`_
* `Accelerated Backtesting <https://hftbacktest.readthedocs.io/en/latest/tutorials/Accelerated%20Backtesting.html>`_

Why Accurate Backtesting Matters — Not Just Conservative Approach
=================================================================

Trading is a highly competitive field where only the small edges usually exist, but they can still make a significant
difference. Because of this, backtesting must accurately simulate real-world conditions.: It should neither rely on an
overly conservative approach that hides these small edges and profit opportunities, nor on an overly aggressive one that
overstates them through unrealistic simulation. Or at the very least, you should clearly understand what differs from
live trading and by how much, since sometimes fully accurate backtesting is not practical due to the time it requires.

This is not about overfitting at the start—before you even consider issues like overfitting, you need confidence that
your backtesting truly reflects real-world execution. For example, if you run a live trading strategy in January 2025,
the backtest for that exact period should produce results that closely align with the actual results. Once you’ve
validated that your backtesting can accurately reproduce live trading results, then you can proceed to deeper research,
optimization, and considerations around overfitting.

Accurate backtesting is the foundation. Without it, all further analysis—whether conservative or aggressive—becomes
unreliable.

Getting started
===============

Installation
------------

hftbacktest supports Python 3.11+. You can install hftbacktest using ``pip``:

.. code-block:: console

 pip install hftbacktest

Or you can clone the latest development version from the Git repository with:

.. code-block:: console

 git clone https://github.com/nkaz001/hftbacktest

Data Source & Format
--------------------

Please see `Data <https://hftbacktest.readthedocs.io/en/latest/data.html>`_ or `Data Preparation <https://hftbacktest.readthedocs.io/en/latest/tutorials/Data%20Preparation.html>`_.

You can also find some data `here <https://reach.stratosphere.capital/data/usdm/>`_, hosted by the supporter.

A Quick Example
---------------

Get a glimpse of what backtesting with hftbacktest looks like with these code snippets:

.. code-block:: python

    @njit
    def market_making_algo(hbt):
        asset_no = 0
        tick_size = hbt.depth(asset_no).tick_size
        lot_size = hbt.depth(asset_no).lot_size

        # in nanoseconds
        while hbt.elapse(10_000_000) == 0:
            hbt.clear_inactive_orders(asset_no)

            a = 1
            b = 1
            c = 1
            hs = 1

            # Alpha, it can be a combination of several indicators.
            forecast = 0
            # In HFT, it can be various measurements of short-term market movements,
            # such as the high-low range in the last X minutes.
            volatility = 0
            # Delta risk, it can be a combination of several risks.
            position = hbt.position(asset_no)
            risk = (c + volatility) * position
            half_spread = (c + volatility) * hs

            max_notional_position = 1000
            notional_qty = 100

            depth = hbt.depth(asset_no)

            mid_price = (depth.best_bid + depth.best_ask) / 2.0

            # fair value pricing = mid_price + a * forecast
            #                      or underlying(correlated asset) + adjustment(basis + cost + etc) + a * forecast
            # risk skewing = -b * risk
            reservation_price = mid_price + a * forecast - b * risk
            new_bid = reservation_price - half_spread
            new_ask = reservation_price + half_spread

            new_bid_tick = min(np.round(new_bid / tick_size), depth.best_bid_tick)
            new_ask_tick = max(np.round(new_ask / tick_size), depth.best_ask_tick)

            order_qty = np.round(notional_qty / mid_price / lot_size) * lot_size

            # Elapses a process time.
            if not hbt.elapse(1_000_000) != 0:
                return False

            last_order_id = -1
            update_bid = True
            update_ask = True
            buy_limit_exceeded = position * mid_price > max_notional_position
            sell_limit_exceeded = position * mid_price < -max_notional_position
            orders = hbt.orders(asset_no)
            order_values = orders.values()
            while order_values.has_next():
                order = order_values.get()
                if order.side == BUY:
                    if order.price_tick == new_bid_tick or buy_limit_exceeded:
                        update_bid = False
                    if order.cancellable and (update_bid or buy_limit_exceeded):
                        hbt.cancel(asset_no, order.order_id, False)
                        last_order_id = order.order_id
                elif order.side == SELL:
                    if order.price_tick == new_ask_tick or sell_limit_exceeded:
                        update_ask = False
                    if order.cancellable and (update_ask or sell_limit_exceeded):
                        hbt.cancel(asset_no, order.order_id, False)
                        last_order_id = order.order_id

            # It can be combined with a grid trading strategy by submitting multiple orders to capture better spreads and
            # have queue position.
            # This approach requires more sophisticated logic to efficiently manage resting orders in the order book.
            if update_bid:
                # There is only one order at a given price, with new_bid_tick used as the order ID.
                order_id = new_bid_tick
                hbt.submit_buy_order(asset_no, order_id, new_bid_tick * tick_size, order_qty, GTX, LIMIT, False)
                last_order_id = order_id
            if update_ask:
                # There is only one order at a given price, with new_ask_tick used as the order ID.
                order_id = new_ask_tick
                hbt.submit_sell_order(asset_no, order_id, new_ask_tick * tick_size, order_qty, GTX, LIMIT, False)
                last_order_id = order_id

            # All order requests are considered to be requested at the same time.
            # Waits until one of the order responses is received.
            if last_order_id >= 0:
                # Waits for the order response for a maximum of 5 seconds.
                timeout = 5_000_000_000
                if not hbt.wait_order_response(asset_no, last_order_id, timeout):
                    return False

        return True


Tutorials
=========
* `Data Preparation <https://hftbacktest.readthedocs.io/en/latest/tutorials/Data%20Preparation.html>`_
* `Getting Started <https://hftbacktest.readthedocs.io/en/latest/tutorials/Getting%20Started.html>`_
* `Working with Market Depth and Trades <https://hftbacktest.readthedocs.io/en/latest/tutorials/Working%20with%20Market%20Depth%20and%20Trades.html>`_
* `Integrating Custom Data <https://hftbacktest.readthedocs.io/en/latest/tutorials/Integrating%20Custom%20Data.html>`_
* `Making Multiple Markets - Introduction <https://hftbacktest.readthedocs.io/en/latest/tutorials/Making%20Multiple%20Markets%20-%20Introduction.html>`_
* `High-Frequency Grid Trading <https://hftbacktest.readthedocs.io/en/latest/tutorials/High-Frequency%20Grid%20Trading.html>`_
* `High-Frequency Grid Trading - Comparison Across Other Exchanges <https://hftbacktest.readthedocs.io/en/latest/tutorials/High-Frequency%20Grid%20Trading%20-%20Comparison%20Across%20Other%20Exchanges.html>`_
* `High-Frequency Grid Trading - Simplified from GLFT <https://hftbacktest.readthedocs.io/en/latest/tutorials/High-Frequency%20Grid%20Trading%20-%20Simplified%20from%20GLFT.html>`_
* `Impact of Order Latency <https://hftbacktest.readthedocs.io/en/latest/tutorials/Impact%20of%20Order%20Latency.html>`_
* `Order Latency Data <https://hftbacktest.readthedocs.io/en/latest/tutorials/Order%20Latency%20Data.html>`_
* `Guéant–Lehalle–Fernandez-Tapia Market Making Model and Grid Trading <https://hftbacktest.readthedocs.io/en/latest/tutorials/GLFT%20Market%20Making%20Model%20and%20Grid%20Trading.html>`_
* `Making Multiple Markets <https://hftbacktest.readthedocs.io/en/latest/tutorials/Making%20Multiple%20Markets.html>`_
* `Risk Mitigation through Price Protection in Extreme Market Conditions <https://hftbacktest.readthedocs.io/en/latest/tutorials/Risk%20Mitigation%20through%20Price%20Protection%20in%20Extreme%20Market%20Conditions.html>`_
* `Level-3 Backtesting <https://hftbacktest.readthedocs.io/en/latest/tutorials/Level-3%20Backtesting.html>`_
* `Market Making with Alpha - Order Book Imbalance <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20Order%20Book%20Imbalance.html>`_
* `Market Making with Alpha - Basis <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20Basis.html>`_
* `Market Making with Alpha - APT <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20APT.html>`_
* `Queue-Based Market Making in Large Tick Size Assets <https://hftbacktest.readthedocs.io/en/latest/tutorials/Queue-Based%20Market%20Making%20in%20Large%20Tick%20Size%20Assets.html>`_
* `Fusing Depth Data <https://hftbacktest.readthedocs.io/en/latest/tutorials/Fusing%20Depth%20Data.html>`_
* `Accelerated Backtesting <https://hftbacktest.readthedocs.io/en/latest/tutorials/Accelerated%20Backtesting.html>`_

Examples
========

You can find more examples in `examples <https://github.com/nkaz001/hftbacktest/tree/master/examples>`_ directory and `Rust examples <https://github.com/nkaz001/hftbacktest/blob/master/hftbacktest/examples/>`_.

The complete process of backtesting Binance Futures
---------------------------------------------------
`high-frequency gridtrading <https://github.com/nkaz001/hftbacktest/blob/master/hftbacktest/examples/gridtrading.ipynb>`_: The complete process of backtesting Binance Futures using a high-frequency grid trading strategy implemented in Rust.

Migration to V2
===============
Please see the `migration guide <https://hftbacktest.readthedocs.io/en/latest/migration2.html>`_.

Roadmap
=======

Please see the `roadmap <https://github.com/nkaz001/hftbacktest/blob/master/ROADMAP.md>`_.

Contributing
============

Thank you for considering contributing to hftbacktest! Welcome any and all help to improve the project. If you have an
idea for an enhancement or a bug fix, please open an issue or discussion on GitHub to discuss it.

The following items are examples of contributions you can make to this project:

Please see the `roadmap <https://github.com/nkaz001/hftbacktest/blob/master/ROADMAP.md>`_.

.. |python| image:: https://shields.io/badge/python-3.11+-blue
    :alt: Python Version
    :target: https://www.python.org/

.. |codeql| image:: https://github.com/nkaz001/hftbacktest/actions/workflows/codeql.yml/badge.svg?branch=master&event=push
    :alt: CodeQL
    :target: https://github.com/nkaz001/hftbacktest/actions/workflows/codeql.yml

.. |pypi| image:: https://badge.fury.io/py/hftbacktest.svg
    :alt: Package Version
    :target: https://pypi.org/project/hftbacktest

.. |downloads| image:: https://static.pepy.tech/badge/hftbacktest
    :alt: Downloads
    :target: https://pepy.tech/project/hftbacktest

.. |crates| image:: https://img.shields.io/crates/v/hftbacktest.svg
    :alt: Rust crates.io version
    :target: https://crates.io/crates/hftbacktest

.. |license| image:: https://img.shields.io/badge/License-MIT-green.svg
    :alt: License
    :target: https://github.com/nkaz001/hftbacktest/blob/master/LICENSE

.. |docs| image:: https://readthedocs.org/projects/hftbacktest/badge/?version=latest
    :target: https://hftbacktest.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

.. |roadmap| image:: https://img.shields.io/badge/Roadmap-gray
    :target: https://github.com/nkaz001/hftbacktest/blob/master/ROADMAP.md
    :alt: Roadmap

.. |github| image:: https://img.shields.io/github/stars/nkaz001/hftbacktest?style=social
    :target: https://github.com/nkaz001/hftbacktest
    :alt: Github

.. |rustc| image:: https://shields.io/badge/rustc-1.89-blue
    :alt: Rust Version
    :target: https://www.rust-lang.org/


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "hftbacktest",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "hft, high-frequency trading, trading, market-making, backtest",
    "author": null,
    "author_email": "nkaz001 <nkaz001@protonmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/28/05/973fd279e6efb9167165e609288bc830a36568e74d1730d57e6bcbf69afb/hftbacktest-2.4.2.tar.gz",
    "platform": null,
    "description": "===========\nHftBacktest\n===========\n\n|codeql| |python| |pypi| |downloads| |rustc| |crates| |license| |docs| |roadmap| |github|\n\nHigh-Frequency Trading Backtesting Tool\n=======================================\n\nThis framework is designed for developing high frequency trading and market making strategies. It focuses on accounting for both feed and order latencies, as well as the order queue position for order fill simulation. The framework aims to provide more accurate market replay-based backtesting, based on full order book and trade tick feed data.\n\nKey Features\n============\n\n* Working in `Numba <https://numba.pydata.org/>`_ JIT function (Python).\n* Complete tick-by-tick simulation with a customizable time interval or based on the feed and order receipt.\n* Full order book reconstruction based on Level-2 Market-By-Price and Level-3 Market-By-Order feeds.\n* Backtest accounting for both feed and order latency, using provided models or your own custom model.\n* Order fill simulation that takes into account the order queue position, using provided models or your own custom model.\n* Backtesting of multi-asset and multi-exchange models\n* Deployment of a live trading bot for quick prototyping and testing using the same algorithm code: currently for Binance Futures and Bybit. (Rust-only)\n\nDocumentation\n=============\n\nSee `full document here <https://hftbacktest.readthedocs.io/>`_.\n\nTutorials you\u2019ll likely find interesting:\n\n* `High-Frequency Grid Trading - Simplified from GLFT <https://hftbacktest.readthedocs.io/en/latest/tutorials/High-Frequency%20Grid%20Trading%20-%20Simplified%20from%20GLFT.html>`_\n* `Market Making with Alpha - Order Book Imbalance <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20Order%20Book%20Imbalance.html>`_\n* `Market Making with Alpha - APT <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20APT.html>`_\n* `Accelerated Backtesting <https://hftbacktest.readthedocs.io/en/latest/tutorials/Accelerated%20Backtesting.html>`_\n\nWhy Accurate Backtesting Matters \u2014 Not Just Conservative Approach\n=================================================================\n\nTrading is a highly competitive field where only the small edges usually exist, but they can still make a significant\ndifference. Because of this, backtesting must accurately simulate real-world conditions.: It should neither rely on an\noverly conservative approach that hides these small edges and profit opportunities, nor on an overly aggressive one that\noverstates them through unrealistic simulation. Or at the very least, you should clearly understand what differs from\nlive trading and by how much, since sometimes fully accurate backtesting is not practical due to the time it requires.\n\nThis is not about overfitting at the start\u2014before you even consider issues like overfitting, you need confidence that\nyour backtesting truly reflects real-world execution. For example, if you run a live trading strategy in January 2025,\nthe backtest for that exact period should produce results that closely align with the actual results. Once you\u2019ve\nvalidated that your backtesting can accurately reproduce live trading results, then you can proceed to deeper research,\noptimization, and considerations around overfitting.\n\nAccurate backtesting is the foundation. Without it, all further analysis\u2014whether conservative or aggressive\u2014becomes\nunreliable.\n\nGetting started\n===============\n\nInstallation\n------------\n\nhftbacktest supports Python 3.11+. You can install hftbacktest using ``pip``:\n\n.. code-block:: console\n\n pip install hftbacktest\n\nOr you can clone the latest development version from the Git repository with:\n\n.. code-block:: console\n\n git clone https://github.com/nkaz001/hftbacktest\n\nData Source & Format\n--------------------\n\nPlease see `Data <https://hftbacktest.readthedocs.io/en/latest/data.html>`_ or `Data Preparation <https://hftbacktest.readthedocs.io/en/latest/tutorials/Data%20Preparation.html>`_.\n\nYou can also find some data `here <https://reach.stratosphere.capital/data/usdm/>`_, hosted by the supporter.\n\nA Quick Example\n---------------\n\nGet a glimpse of what backtesting with hftbacktest looks like with these code snippets:\n\n.. code-block:: python\n\n    @njit\n    def market_making_algo(hbt):\n        asset_no = 0\n        tick_size = hbt.depth(asset_no).tick_size\n        lot_size = hbt.depth(asset_no).lot_size\n\n        # in nanoseconds\n        while hbt.elapse(10_000_000) == 0:\n            hbt.clear_inactive_orders(asset_no)\n\n            a = 1\n            b = 1\n            c = 1\n            hs = 1\n\n            # Alpha, it can be a combination of several indicators.\n            forecast = 0\n            # In HFT, it can be various measurements of short-term market movements,\n            # such as the high-low range in the last X minutes.\n            volatility = 0\n            # Delta risk, it can be a combination of several risks.\n            position = hbt.position(asset_no)\n            risk = (c + volatility) * position\n            half_spread = (c + volatility) * hs\n\n            max_notional_position = 1000\n            notional_qty = 100\n\n            depth = hbt.depth(asset_no)\n\n            mid_price = (depth.best_bid + depth.best_ask) / 2.0\n\n            # fair value pricing = mid_price + a * forecast\n            #                      or underlying(correlated asset) + adjustment(basis + cost + etc) + a * forecast\n            # risk skewing = -b * risk\n            reservation_price = mid_price + a * forecast - b * risk\n            new_bid = reservation_price - half_spread\n            new_ask = reservation_price + half_spread\n\n            new_bid_tick = min(np.round(new_bid / tick_size), depth.best_bid_tick)\n            new_ask_tick = max(np.round(new_ask / tick_size), depth.best_ask_tick)\n\n            order_qty = np.round(notional_qty / mid_price / lot_size) * lot_size\n\n            # Elapses a process time.\n            if not hbt.elapse(1_000_000) != 0:\n                return False\n\n            last_order_id = -1\n            update_bid = True\n            update_ask = True\n            buy_limit_exceeded = position * mid_price > max_notional_position\n            sell_limit_exceeded = position * mid_price < -max_notional_position\n            orders = hbt.orders(asset_no)\n            order_values = orders.values()\n            while order_values.has_next():\n                order = order_values.get()\n                if order.side == BUY:\n                    if order.price_tick == new_bid_tick or buy_limit_exceeded:\n                        update_bid = False\n                    if order.cancellable and (update_bid or buy_limit_exceeded):\n                        hbt.cancel(asset_no, order.order_id, False)\n                        last_order_id = order.order_id\n                elif order.side == SELL:\n                    if order.price_tick == new_ask_tick or sell_limit_exceeded:\n                        update_ask = False\n                    if order.cancellable and (update_ask or sell_limit_exceeded):\n                        hbt.cancel(asset_no, order.order_id, False)\n                        last_order_id = order.order_id\n\n            # It can be combined with a grid trading strategy by submitting multiple orders to capture better spreads and\n            # have queue position.\n            # This approach requires more sophisticated logic to efficiently manage resting orders in the order book.\n            if update_bid:\n                # There is only one order at a given price, with new_bid_tick used as the order ID.\n                order_id = new_bid_tick\n                hbt.submit_buy_order(asset_no, order_id, new_bid_tick * tick_size, order_qty, GTX, LIMIT, False)\n                last_order_id = order_id\n            if update_ask:\n                # There is only one order at a given price, with new_ask_tick used as the order ID.\n                order_id = new_ask_tick\n                hbt.submit_sell_order(asset_no, order_id, new_ask_tick * tick_size, order_qty, GTX, LIMIT, False)\n                last_order_id = order_id\n\n            # All order requests are considered to be requested at the same time.\n            # Waits until one of the order responses is received.\n            if last_order_id >= 0:\n                # Waits for the order response for a maximum of 5 seconds.\n                timeout = 5_000_000_000\n                if not hbt.wait_order_response(asset_no, last_order_id, timeout):\n                    return False\n\n        return True\n\n\nTutorials\n=========\n* `Data Preparation <https://hftbacktest.readthedocs.io/en/latest/tutorials/Data%20Preparation.html>`_\n* `Getting Started <https://hftbacktest.readthedocs.io/en/latest/tutorials/Getting%20Started.html>`_\n* `Working with Market Depth and Trades <https://hftbacktest.readthedocs.io/en/latest/tutorials/Working%20with%20Market%20Depth%20and%20Trades.html>`_\n* `Integrating Custom Data <https://hftbacktest.readthedocs.io/en/latest/tutorials/Integrating%20Custom%20Data.html>`_\n* `Making Multiple Markets - Introduction <https://hftbacktest.readthedocs.io/en/latest/tutorials/Making%20Multiple%20Markets%20-%20Introduction.html>`_\n* `High-Frequency Grid Trading <https://hftbacktest.readthedocs.io/en/latest/tutorials/High-Frequency%20Grid%20Trading.html>`_\n* `High-Frequency Grid Trading - Comparison Across Other Exchanges <https://hftbacktest.readthedocs.io/en/latest/tutorials/High-Frequency%20Grid%20Trading%20-%20Comparison%20Across%20Other%20Exchanges.html>`_\n* `High-Frequency Grid Trading - Simplified from GLFT <https://hftbacktest.readthedocs.io/en/latest/tutorials/High-Frequency%20Grid%20Trading%20-%20Simplified%20from%20GLFT.html>`_\n* `Impact of Order Latency <https://hftbacktest.readthedocs.io/en/latest/tutorials/Impact%20of%20Order%20Latency.html>`_\n* `Order Latency Data <https://hftbacktest.readthedocs.io/en/latest/tutorials/Order%20Latency%20Data.html>`_\n* `Gu\u00e9ant\u2013Lehalle\u2013Fernandez-Tapia Market Making Model and Grid Trading <https://hftbacktest.readthedocs.io/en/latest/tutorials/GLFT%20Market%20Making%20Model%20and%20Grid%20Trading.html>`_\n* `Making Multiple Markets <https://hftbacktest.readthedocs.io/en/latest/tutorials/Making%20Multiple%20Markets.html>`_\n* `Risk Mitigation through Price Protection in Extreme Market Conditions <https://hftbacktest.readthedocs.io/en/latest/tutorials/Risk%20Mitigation%20through%20Price%20Protection%20in%20Extreme%20Market%20Conditions.html>`_\n* `Level-3 Backtesting <https://hftbacktest.readthedocs.io/en/latest/tutorials/Level-3%20Backtesting.html>`_\n* `Market Making with Alpha - Order Book Imbalance <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20Order%20Book%20Imbalance.html>`_\n* `Market Making with Alpha - Basis <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20Basis.html>`_\n* `Market Making with Alpha - APT <https://hftbacktest.readthedocs.io/en/latest/tutorials/Market%20Making%20with%20Alpha%20-%20APT.html>`_\n* `Queue-Based Market Making in Large Tick Size Assets <https://hftbacktest.readthedocs.io/en/latest/tutorials/Queue-Based%20Market%20Making%20in%20Large%20Tick%20Size%20Assets.html>`_\n* `Fusing Depth Data <https://hftbacktest.readthedocs.io/en/latest/tutorials/Fusing%20Depth%20Data.html>`_\n* `Accelerated Backtesting <https://hftbacktest.readthedocs.io/en/latest/tutorials/Accelerated%20Backtesting.html>`_\n\nExamples\n========\n\nYou can find more examples in `examples <https://github.com/nkaz001/hftbacktest/tree/master/examples>`_ directory and `Rust examples <https://github.com/nkaz001/hftbacktest/blob/master/hftbacktest/examples/>`_.\n\nThe complete process of backtesting Binance Futures\n---------------------------------------------------\n`high-frequency gridtrading <https://github.com/nkaz001/hftbacktest/blob/master/hftbacktest/examples/gridtrading.ipynb>`_: The complete process of backtesting Binance Futures using a high-frequency grid trading strategy implemented in Rust.\n\nMigration to V2\n===============\nPlease see the `migration guide <https://hftbacktest.readthedocs.io/en/latest/migration2.html>`_.\n\nRoadmap\n=======\n\nPlease see the `roadmap <https://github.com/nkaz001/hftbacktest/blob/master/ROADMAP.md>`_.\n\nContributing\n============\n\nThank you for considering contributing to hftbacktest! Welcome any and all help to improve the project. If you have an\nidea for an enhancement or a bug fix, please open an issue or discussion on GitHub to discuss it.\n\nThe following items are examples of contributions you can make to this project:\n\nPlease see the `roadmap <https://github.com/nkaz001/hftbacktest/blob/master/ROADMAP.md>`_.\n\n.. |python| image:: https://shields.io/badge/python-3.11+-blue\n    :alt: Python Version\n    :target: https://www.python.org/\n\n.. |codeql| image:: https://github.com/nkaz001/hftbacktest/actions/workflows/codeql.yml/badge.svg?branch=master&event=push\n    :alt: CodeQL\n    :target: https://github.com/nkaz001/hftbacktest/actions/workflows/codeql.yml\n\n.. |pypi| image:: https://badge.fury.io/py/hftbacktest.svg\n    :alt: Package Version\n    :target: https://pypi.org/project/hftbacktest\n\n.. |downloads| image:: https://static.pepy.tech/badge/hftbacktest\n    :alt: Downloads\n    :target: https://pepy.tech/project/hftbacktest\n\n.. |crates| image:: https://img.shields.io/crates/v/hftbacktest.svg\n    :alt: Rust crates.io version\n    :target: https://crates.io/crates/hftbacktest\n\n.. |license| image:: https://img.shields.io/badge/License-MIT-green.svg\n    :alt: License\n    :target: https://github.com/nkaz001/hftbacktest/blob/master/LICENSE\n\n.. |docs| image:: https://readthedocs.org/projects/hftbacktest/badge/?version=latest\n    :target: https://hftbacktest.readthedocs.io/en/latest/?badge=latest\n    :alt: Documentation Status\n\n.. |roadmap| image:: https://img.shields.io/badge/Roadmap-gray\n    :target: https://github.com/nkaz001/hftbacktest/blob/master/ROADMAP.md\n    :alt: Roadmap\n\n.. |github| image:: https://img.shields.io/github/stars/nkaz001/hftbacktest?style=social\n    :target: https://github.com/nkaz001/hftbacktest\n    :alt: Github\n\n.. |rustc| image:: https://shields.io/badge/rustc-1.89-blue\n    :alt: Rust Version\n    :target: https://www.rust-lang.org/\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A high-frequency trading and market-making backtesting tool accounts for limit orders, queue positions, and latencies, utilizing full tick data for trades and order books.",
    "version": "2.4.2",
    "project_urls": {
        "Repository": "https://github.com/nkaz001/hftbacktest"
    },
    "split_keywords": [
        "hft",
        " high-frequency trading",
        " trading",
        " market-making",
        " backtest"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4e501eaab16727ad4b9051e70905d1a96d26bfc25d96e825d3b2512e3ba3e51d",
                "md5": "54584a66d630ef0401212c7b7d73b94f",
                "sha256": "9deb1f5c833254e93f6d199d8e2eb2d3a2698d6c711024d43a649110470d72ff"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "54584a66d630ef0401212c7b7d73b94f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.11",
            "size": 1307402,
            "upload_time": "2025-08-24T03:58:15",
            "upload_time_iso_8601": "2025-08-24T03:58:15.327994Z",
            "url": "https://files.pythonhosted.org/packages/4e/50/1eaab16727ad4b9051e70905d1a96d26bfc25d96e825d3b2512e3ba3e51d/hftbacktest-2.4.2-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "79e9f099bd7df35883920f5fce1a67f0f0e64e3cb26e90703e7b1f20025b51f3",
                "md5": "d4b6ddc5020b14dce4406b1cf8392277",
                "sha256": "35c3a5971ccbbe69ea32c9facb280378db7ddece91a8d4f2f8d8a7acf1891d0b"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d4b6ddc5020b14dce4406b1cf8392277",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.11",
            "size": 1041425,
            "upload_time": "2025-08-24T03:58:10",
            "upload_time_iso_8601": "2025-08-24T03:58:10.846085Z",
            "url": "https://files.pythonhosted.org/packages/79/e9/f099bd7df35883920f5fce1a67f0f0e64e3cb26e90703e7b1f20025b51f3/hftbacktest-2.4.2-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "67ec6fa8762bb90d228f22cbfe76170531a5c0bf8e023a29ae3c0501d6474b6b",
                "md5": "0d8a0a77cd8bb4cd1ffef48e8fa4500a",
                "sha256": "3c63fcef52972436ac2de1eefd57fe5764b80265fbcb297899caf92db6abcf43"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp311-cp311-manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "0d8a0a77cd8bb4cd1ffef48e8fa4500a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.11",
            "size": 1104889,
            "upload_time": "2025-08-24T03:57:48",
            "upload_time_iso_8601": "2025-08-24T03:57:48.918486Z",
            "url": "https://files.pythonhosted.org/packages/67/ec/6fa8762bb90d228f22cbfe76170531a5c0bf8e023a29ae3c0501d6474b6b/hftbacktest-2.4.2-cp311-cp311-manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fb33ef43ef7d74222508caf8bedead2e816d4c97f3a258538676e307d6a464a5",
                "md5": "9d1ee15416b5153a4e8a95fc9efefaa1",
                "sha256": "c21d367647e744cdef2f000ee698d002390c17de70035ca29a8b811bf95fcf4a"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp311-cp311-manylinux_2_28_armv7l.whl",
            "has_sig": false,
            "md5_digest": "9d1ee15416b5153a4e8a95fc9efefaa1",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.11",
            "size": 1466854,
            "upload_time": "2025-08-24T03:57:56",
            "upload_time_iso_8601": "2025-08-24T03:57:56.860788Z",
            "url": "https://files.pythonhosted.org/packages/fb/33/ef43ef7d74222508caf8bedead2e816d4c97f3a258538676e307d6a464a5/hftbacktest-2.4.2-cp311-cp311-manylinux_2_28_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c50535120b76eb82eaac0215fcc08d4d00787232c5c4e76ca1d964b31e083325",
                "md5": "3554d3bb6c71719180fc16ccc1a5e974",
                "sha256": "c766189c42408934929f214f806709ebaa1a0235cf5a1ba724be406856aed82d"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp311-cp311-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3554d3bb6c71719180fc16ccc1a5e974",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.11",
            "size": 1348092,
            "upload_time": "2025-08-24T03:58:04",
            "upload_time_iso_8601": "2025-08-24T03:58:04.158964Z",
            "url": "https://files.pythonhosted.org/packages/c5/05/35120b76eb82eaac0215fcc08d4d00787232c5c4e76ca1d964b31e083325/hftbacktest-2.4.2-cp311-cp311-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "418a00463d32e328ae7d017926265af063fef771423de255b955e0ace9cc239c",
                "md5": "b6a1cbc4b80896358e27c086b67e1bb8",
                "sha256": "9e2da4f1d37265fac299e332121c9fb77300cfd78cdb84ee96fd38ef934be53d"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b6a1cbc4b80896358e27c086b67e1bb8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.11",
            "size": 1279005,
            "upload_time": "2025-08-24T03:58:19",
            "upload_time_iso_8601": "2025-08-24T03:58:19.594564Z",
            "url": "https://files.pythonhosted.org/packages/41/8a/00463d32e328ae7d017926265af063fef771423de255b955e0ace9cc239c/hftbacktest-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7536bbfd05253beab43060e4299de966c7c32c86bfdb51cd4ddecb2bf17f053f",
                "md5": "56268446b6ec03ae3e07ef2451732d56",
                "sha256": "abbcd425a48a5acc2437677907f0cf1feb4a8403d727f49071c547414b22b1a1"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp311-cp311-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "56268446b6ec03ae3e07ef2451732d56",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.11",
            "size": 1701625,
            "upload_time": "2025-08-24T03:58:27",
            "upload_time_iso_8601": "2025-08-24T03:58:27.619925Z",
            "url": "https://files.pythonhosted.org/packages/75/36/bbfd05253beab43060e4299de966c7c32c86bfdb51cd4ddecb2bf17f053f/hftbacktest-2.4.2-cp311-cp311-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2332d38e5785815c4e2539b52839651c02f32694106d40ab2c8cddb42b0834f5",
                "md5": "0ec9a7178bd95b880eed044003b2874d",
                "sha256": "e894173da8a74b0b4531599b0348ef05f7ddeb67a7d8ac32a4b651b6a7d3ff5c"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0ec9a7178bd95b880eed044003b2874d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.11",
            "size": 1523630,
            "upload_time": "2025-08-24T03:58:35",
            "upload_time_iso_8601": "2025-08-24T03:58:35.171204Z",
            "url": "https://files.pythonhosted.org/packages/23/32/d38e5785815c4e2539b52839651c02f32694106d40ab2c8cddb42b0834f5/hftbacktest-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "23192558c9f6a34b8180843b1e1d707719c2152370f8e33e5806e58729213a85",
                "md5": "ae47233c56da71533e98f7af60d7e422",
                "sha256": "fc6dc70bbf9addedbdb9c5e3b8c3813e292ce61a7c5ec3593db6cf9799c21911"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ae47233c56da71533e98f7af60d7e422",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.11",
            "size": 1070907,
            "upload_time": "2025-08-24T03:58:43",
            "upload_time_iso_8601": "2025-08-24T03:58:43.523968Z",
            "url": "https://files.pythonhosted.org/packages/23/19/2558c9f6a34b8180843b1e1d707719c2152370f8e33e5806e58729213a85/hftbacktest-2.4.2-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b01e8c218304f5ae3bb6819ad36ff66c1319a44ce70d390fae9fcd569b88338f",
                "md5": "2eb2fc3b1ab53cdb4678625787baba83",
                "sha256": "e11852a02a9a9e2de1241e79243d1da08cf9c64956341f2dd9326fd7af4d044d"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2eb2fc3b1ab53cdb4678625787baba83",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.11",
            "size": 1305289,
            "upload_time": "2025-08-24T03:58:16",
            "upload_time_iso_8601": "2025-08-24T03:58:16.495440Z",
            "url": "https://files.pythonhosted.org/packages/b0/1e/8c218304f5ae3bb6819ad36ff66c1319a44ce70d390fae9fcd569b88338f/hftbacktest-2.4.2-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "21ed1d0ccd3da2ce427b165cf1883a94f8a5d04332b04819d0526304d9a6ee1e",
                "md5": "cb717c473a958693e39959812fd4e687",
                "sha256": "0a7634a1ff65bf25841e117c8901ce0110b70d46daf6fba9bc804c891c65f318"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "cb717c473a958693e39959812fd4e687",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.11",
            "size": 1039386,
            "upload_time": "2025-08-24T03:58:12",
            "upload_time_iso_8601": "2025-08-24T03:58:12.347780Z",
            "url": "https://files.pythonhosted.org/packages/21/ed/1d0ccd3da2ce427b165cf1883a94f8a5d04332b04819d0526304d9a6ee1e/hftbacktest-2.4.2-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "91300f9fdaf6076ad55c54111ae3eb0a1515a5ba56ff89dadcef921a2fb1d8b0",
                "md5": "ad07c1718ca68a508d12df2457960872",
                "sha256": "117dbf29b5114a1edd706f7aa0eac4202dc508b4ad12cb2a8244ac73bfa8d126"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp312-cp312-manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "ad07c1718ca68a508d12df2457960872",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.11",
            "size": 1105091,
            "upload_time": "2025-08-24T03:57:50",
            "upload_time_iso_8601": "2025-08-24T03:57:50.607400Z",
            "url": "https://files.pythonhosted.org/packages/91/30/0f9fdaf6076ad55c54111ae3eb0a1515a5ba56ff89dadcef921a2fb1d8b0/hftbacktest-2.4.2-cp312-cp312-manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c64f1d1ae5a4156d679a07559450bc8a0b33e0ea7f017f7b24600a38df467beb",
                "md5": "75deebde5596e6528f12f041fa3f68c5",
                "sha256": "5771624f792f49e525951b3fd700ea7f2fed4ec01eb8d82b7fca01cfae6bc468"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp312-cp312-manylinux_2_28_armv7l.whl",
            "has_sig": false,
            "md5_digest": "75deebde5596e6528f12f041fa3f68c5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.11",
            "size": 1471535,
            "upload_time": "2025-08-24T03:57:58",
            "upload_time_iso_8601": "2025-08-24T03:57:58.558730Z",
            "url": "https://files.pythonhosted.org/packages/c6/4f/1d1ae5a4156d679a07559450bc8a0b33e0ea7f017f7b24600a38df467beb/hftbacktest-2.4.2-cp312-cp312-manylinux_2_28_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0bde225450555d3dc48007d5f9aa15bc9b847f59465615cb49418a5549e4819a",
                "md5": "194513add05e845de96554a19f40d7d2",
                "sha256": "ae153065fb6fe3478b4580e34c2c60b5ebe2a209a00a041e0b1a757913d999cf"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp312-cp312-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "194513add05e845de96554a19f40d7d2",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.11",
            "size": 1349753,
            "upload_time": "2025-08-24T03:58:05",
            "upload_time_iso_8601": "2025-08-24T03:58:05.657287Z",
            "url": "https://files.pythonhosted.org/packages/0b/de/225450555d3dc48007d5f9aa15bc9b847f59465615cb49418a5549e4819a/hftbacktest-2.4.2-cp312-cp312-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "10d782a44ffc418585c48d6cd705370f7b313d38dc2a6b70c491aca86726de5b",
                "md5": "5bece4559c1eb2aeef7f4263958520c9",
                "sha256": "ffc62e6beca4d91d42640c7074bb3fae127078d6f31a92a0bf3bd8785a25e443"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "5bece4559c1eb2aeef7f4263958520c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.11",
            "size": 1279652,
            "upload_time": "2025-08-24T03:58:21",
            "upload_time_iso_8601": "2025-08-24T03:58:21.187235Z",
            "url": "https://files.pythonhosted.org/packages/10/d7/82a44ffc418585c48d6cd705370f7b313d38dc2a6b70c491aca86726de5b/hftbacktest-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4e9d9368cb395a7570deca9f5a5e688aca8dc8027decd23bf0979c46c01a6f8c",
                "md5": "dbce7aef34a6d17b1814517873ef8585",
                "sha256": "00c982c94f73f4566f4fe46191f9c8d4d22f18bc5aaa64dbdc50a0107e4873b9"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp312-cp312-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "dbce7aef34a6d17b1814517873ef8585",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.11",
            "size": 1705632,
            "upload_time": "2025-08-24T03:58:28",
            "upload_time_iso_8601": "2025-08-24T03:58:28.821085Z",
            "url": "https://files.pythonhosted.org/packages/4e/9d/9368cb395a7570deca9f5a5e688aca8dc8027decd23bf0979c46c01a6f8c/hftbacktest-2.4.2-cp312-cp312-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "dda4117e693c93db2ab28558db0fdf0ef3b3d9d40799dce008f2ac4dd9c8dd1f",
                "md5": "97ed2572b78e7ba7f80385cb19c83c1c",
                "sha256": "3485662e2a8e91857d13ad4a66aab19e8d83c7816d3d10b9f4dac886e84aa6c0"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "97ed2572b78e7ba7f80385cb19c83c1c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.11",
            "size": 1525140,
            "upload_time": "2025-08-24T03:58:36",
            "upload_time_iso_8601": "2025-08-24T03:58:36.547404Z",
            "url": "https://files.pythonhosted.org/packages/dd/a4/117e693c93db2ab28558db0fdf0ef3b3d9d40799dce008f2ac4dd9c8dd1f/hftbacktest-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b75133e018789b9731f70a4ddcca32bf5bd742bbd19a20fe9db1e3f35b99090a",
                "md5": "8faff11236efde24c018fa313eb8a4c8",
                "sha256": "77f7c998e6fa316a0ada0ae9495030e3fbb56e6584ef4e64a944a98464edbcc3"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8faff11236efde24c018fa313eb8a4c8",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.11",
            "size": 1070187,
            "upload_time": "2025-08-24T03:58:44",
            "upload_time_iso_8601": "2025-08-24T03:58:44.638026Z",
            "url": "https://files.pythonhosted.org/packages/b7/51/33e018789b9731f70a4ddcca32bf5bd742bbd19a20fe9db1e3f35b99090a/hftbacktest-2.4.2-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e70eb317a275619b434aa0f01a09f5c43e73049c8ef8db28f5abc4a1fe7a376c",
                "md5": "2861bebd7d7daf2bdbfe281f6b0a4b63",
                "sha256": "b61988cc06c71f199182911afcca91a32833b352cdd0c177232f18e0d2668b5e"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2861bebd7d7daf2bdbfe281f6b0a4b63",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1304940,
            "upload_time": "2025-08-24T03:58:17",
            "upload_time_iso_8601": "2025-08-24T03:58:17.766234Z",
            "url": "https://files.pythonhosted.org/packages/e7/0e/b317a275619b434aa0f01a09f5c43e73049c8ef8db28f5abc4a1fe7a376c/hftbacktest-2.4.2-cp313-cp313-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "81bc4a7ace85818ce8f5f0681b6a3055b1537a3e89e142b2573f5dddbd35c5e6",
                "md5": "54ce9145811ad12f01a2b7fbec9bb08c",
                "sha256": "63426977567e0f0478f710d28288a229a1928cedab46d907dc50e5d7fcee52ba"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "54ce9145811ad12f01a2b7fbec9bb08c",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1039111,
            "upload_time": "2025-08-24T03:58:13",
            "upload_time_iso_8601": "2025-08-24T03:58:13.797138Z",
            "url": "https://files.pythonhosted.org/packages/81/bc/4a7ace85818ce8f5f0681b6a3055b1537a3e89e142b2573f5dddbd35c5e6/hftbacktest-2.4.2-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f87420a8d052f08d63b32fc37d9b7f966cd501a60c1ff919752236fbd72b59a0",
                "md5": "1c90c100d9b46008577836be7860f644",
                "sha256": "07db2a3ca69b2f4c1576538fad4008828fa4325f74fcbb04cb6efde35a24190d"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313-manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "1c90c100d9b46008577836be7860f644",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1104786,
            "upload_time": "2025-08-24T03:57:52",
            "upload_time_iso_8601": "2025-08-24T03:57:52.269310Z",
            "url": "https://files.pythonhosted.org/packages/f8/74/20a8d052f08d63b32fc37d9b7f966cd501a60c1ff919752236fbd72b59a0/hftbacktest-2.4.2-cp313-cp313-manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b4346d38fb3d2bf10ee62df56fe6bdddfe220203dac42c53683df3e8ee0c35ce",
                "md5": "fd6c9444ed91d017d6905090c6d01444",
                "sha256": "c359ac9306587de859069d70156dbf2b33fe02d59f364636f7916588c31146d8"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313-manylinux_2_28_armv7l.whl",
            "has_sig": false,
            "md5_digest": "fd6c9444ed91d017d6905090c6d01444",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1471084,
            "upload_time": "2025-08-24T03:58:00",
            "upload_time_iso_8601": "2025-08-24T03:58:00.123852Z",
            "url": "https://files.pythonhosted.org/packages/b4/34/6d38fb3d2bf10ee62df56fe6bdddfe220203dac42c53683df3e8ee0c35ce/hftbacktest-2.4.2-cp313-cp313-manylinux_2_28_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "56484c2a1883ea6dd4c5188357701bac70d3fb7cf075810399d41f0de2b6f857",
                "md5": "93fa3efdf2ebfe07977fc5eed07ae486",
                "sha256": "21ef8291bf4bbd1a481356ed1bb54dbbdae3861b52d7ba8cced13c2664d20a19"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "93fa3efdf2ebfe07977fc5eed07ae486",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1349413,
            "upload_time": "2025-08-24T03:58:06",
            "upload_time_iso_8601": "2025-08-24T03:58:06.800901Z",
            "url": "https://files.pythonhosted.org/packages/56/48/4c2a1883ea6dd4c5188357701bac70d3fb7cf075810399d41f0de2b6f857/hftbacktest-2.4.2-cp313-cp313-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "513afe6f3fac07da3e9a417c64643f93b4002c16e2a5fce5aa18c77b95281a2a",
                "md5": "1523bdb8440a009c86dc3564004e1580",
                "sha256": "c5951cdf582b48c8a879756b8b133b369d048213369f64840333c364b0175d72"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "1523bdb8440a009c86dc3564004e1580",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1279291,
            "upload_time": "2025-08-24T03:58:22",
            "upload_time_iso_8601": "2025-08-24T03:58:22.703181Z",
            "url": "https://files.pythonhosted.org/packages/51/3a/fe6f3fac07da3e9a417c64643f93b4002c16e2a5fce5aa18c77b95281a2a/hftbacktest-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "03e3f7345f9d99fb345cd125636ffe9de87ed4fe95c1efb6ea1d761316593edd",
                "md5": "d8da0520f3892d1fc826fe61abb7d8c1",
                "sha256": "8099a028f676ea04f559bc18e9d0f41466185f78ab38c0d554644e3d63a1bf9b"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "d8da0520f3892d1fc826fe61abb7d8c1",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1705526,
            "upload_time": "2025-08-24T03:58:30",
            "upload_time_iso_8601": "2025-08-24T03:58:30.148359Z",
            "url": "https://files.pythonhosted.org/packages/03/e3/f7345f9d99fb345cd125636ffe9de87ed4fe95c1efb6ea1d761316593edd/hftbacktest-2.4.2-cp313-cp313-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d0fb3dd5510beb58b27716c371ac623d508341a3bbf59f75be5e2c512c6a91fc",
                "md5": "ad85d4687db0a56545c3f398edc34397",
                "sha256": "24da61c29118afbaa588dde6fe84d8ca742cd39089bd2b9b17c394b40912a40f"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ad85d4687db0a56545c3f398edc34397",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1524780,
            "upload_time": "2025-08-24T03:58:37",
            "upload_time_iso_8601": "2025-08-24T03:58:37.809961Z",
            "url": "https://files.pythonhosted.org/packages/d0/fb/3dd5510beb58b27716c371ac623d508341a3bbf59f75be5e2c512c6a91fc/hftbacktest-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fc2ab639613eab453f3505495021f5f019426bc8c87db96065a90dc7cc719809",
                "md5": "fba491fb54f74f0fee23c9792eb254a3",
                "sha256": "4086a7dc05c483ed0b098b30ce3af9ad44df8ec389c88a1fffebcb856cbd893f"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313t-manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "fba491fb54f74f0fee23c9792eb254a3",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1103747,
            "upload_time": "2025-08-24T03:57:53",
            "upload_time_iso_8601": "2025-08-24T03:57:53.813559Z",
            "url": "https://files.pythonhosted.org/packages/fc/2a/b639613eab453f3505495021f5f019426bc8c87db96065a90dc7cc719809/hftbacktest-2.4.2-cp313-cp313t-manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f35ef1fec9b7b7b22ad246c82195374c16eaff98af07f38e22f8f648430107f3",
                "md5": "d73df418bbbf5a96245f216b26ee174c",
                "sha256": "0e267faf31bcb8523f62d1442d9ffa31cc52955813374f5d0db53609bafb59e2"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313t-manylinux_2_28_armv7l.whl",
            "has_sig": false,
            "md5_digest": "d73df418bbbf5a96245f216b26ee174c",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1469023,
            "upload_time": "2025-08-24T03:58:01",
            "upload_time_iso_8601": "2025-08-24T03:58:01.363878Z",
            "url": "https://files.pythonhosted.org/packages/f3/5e/f1fec9b7b7b22ad246c82195374c16eaff98af07f38e22f8f648430107f3/hftbacktest-2.4.2-cp313-cp313t-manylinux_2_28_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8ee0f81b42012b05228e454497320c447818768f03ce64f866e4ddbeb5703182",
                "md5": "0fcaed8ed8e5d95793dc335b3e6b15f8",
                "sha256": "c6aae0ecef1377e23ef6a9ed778478cdd7868697fa76564390b654665f10f3ba"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "0fcaed8ed8e5d95793dc335b3e6b15f8",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1278859,
            "upload_time": "2025-08-24T03:58:24",
            "upload_time_iso_8601": "2025-08-24T03:58:24.416652Z",
            "url": "https://files.pythonhosted.org/packages/8e/e0/f81b42012b05228e454497320c447818768f03ce64f866e4ddbeb5703182/hftbacktest-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "dcffa40ca77d9f0b36d04a5a8825c4765c4dd249be9a1b6dd29877e7e3b1c5e8",
                "md5": "e391225112ad2fdb4c1a515ff9a76c2a",
                "sha256": "cd9990f7ea2102c587260df0bc74fa67fa457f30848a9cc60486748a7a23183d"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313t-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "e391225112ad2fdb4c1a515ff9a76c2a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1703455,
            "upload_time": "2025-08-24T03:58:31",
            "upload_time_iso_8601": "2025-08-24T03:58:31.696279Z",
            "url": "https://files.pythonhosted.org/packages/dc/ff/a40ca77d9f0b36d04a5a8825c4765c4dd249be9a1b6dd29877e7e3b1c5e8/hftbacktest-2.4.2-cp313-cp313t-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d549bb702e147c45395d0e085508e2e6f62088e8afd91d1e37cdaf5d55b94d70",
                "md5": "9edb36da04fe70890dc83d303341caea",
                "sha256": "aed7e21a24dd00c3575394cfb564279fbba30a4373d29b727e514f76e969473e"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9edb36da04fe70890dc83d303341caea",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1523702,
            "upload_time": "2025-08-24T03:58:39",
            "upload_time_iso_8601": "2025-08-24T03:58:39.664549Z",
            "url": "https://files.pythonhosted.org/packages/d5/49/bb702e147c45395d0e085508e2e6f62088e8afd91d1e37cdaf5d55b94d70/hftbacktest-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e633c39b0d669805721b7a56e153e20fc050e629bd0dc9792dd3bdbdd1a4c6d0",
                "md5": "4844d4a92c2d4ede42015af449b66800",
                "sha256": "3efd655696aab1228696ebddfe6e896afc80c6b22c7afd71f2e5b0cf3a4a4fe0"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4844d4a92c2d4ede42015af449b66800",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.11",
            "size": 1069791,
            "upload_time": "2025-08-24T03:58:46",
            "upload_time_iso_8601": "2025-08-24T03:58:46.213604Z",
            "url": "https://files.pythonhosted.org/packages/e6/33/c39b0d669805721b7a56e153e20fc050e629bd0dc9792dd3bdbdd1a4c6d0/hftbacktest-2.4.2-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "86a4f53abd5ef164d00a0af4055bcde4a4d0b0462c73f0e988bc360b4066a899",
                "md5": "35dd26b5069f75c12ab324410cab2cf3",
                "sha256": "47b313c3a8ee46a7621bd1e96c008d7d76fb815ff1a99dd05c60afa7ecd368d0"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-cp314-cp314-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "35dd26b5069f75c12ab324410cab2cf3",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.11",
            "size": 1347881,
            "upload_time": "2025-08-24T03:58:08",
            "upload_time_iso_8601": "2025-08-24T03:58:08.045007Z",
            "url": "https://files.pythonhosted.org/packages/86/a4/f53abd5ef164d00a0af4055bcde4a4d0b0462c73f0e988bc360b4066a899/hftbacktest-2.4.2-cp314-cp314-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ad6190e7bfb11d4aaa102ab0b517d4a6163789ba642012b3a8a9d21b7129df45",
                "md5": "4a7405fd8a85037189d2ff8c51e3a826",
                "sha256": "1067da00d1972e34bcc1ab82b7499b2fb607e926d89390165fefd59b4527da88"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4a7405fd8a85037189d2ff8c51e3a826",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.11",
            "size": 1105260,
            "upload_time": "2025-08-24T03:57:55",
            "upload_time_iso_8601": "2025-08-24T03:57:55.331981Z",
            "url": "https://files.pythonhosted.org/packages/ad/61/90e7bfb11d4aaa102ab0b517d4a6163789ba642012b3a8a9d21b7129df45/hftbacktest-2.4.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7706e2fb539380fc84a3cdda8ab12e5684f8abcd8f54afab3d1306d924048c69",
                "md5": "e7b0df3cac1a0809fc9423ceba671677",
                "sha256": "6a3b2ddadd053ab1050be2a435287a1b6788282c5c06fec40285596a485297fe"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl",
            "has_sig": false,
            "md5_digest": "e7b0df3cac1a0809fc9423ceba671677",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.11",
            "size": 1467622,
            "upload_time": "2025-08-24T03:58:02",
            "upload_time_iso_8601": "2025-08-24T03:58:02.847497Z",
            "url": "https://files.pythonhosted.org/packages/77/06/e2fb539380fc84a3cdda8ab12e5684f8abcd8f54afab3d1306d924048c69/hftbacktest-2.4.2-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4f841164304f30fe353162db512b3844ab4344da30842dea53b81d414fc08095",
                "md5": "9b12caa746034c6716ebf446d2c3d345",
                "sha256": "d5287fa2d38e3b3f4da5f9a049655a57eb6aa0dcd423871b8cd17c0b47be4564"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9b12caa746034c6716ebf446d2c3d345",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.11",
            "size": 1348819,
            "upload_time": "2025-08-24T03:58:09",
            "upload_time_iso_8601": "2025-08-24T03:58:09.322942Z",
            "url": "https://files.pythonhosted.org/packages/4f/84/1164304f30fe353162db512b3844ab4344da30842dea53b81d414fc08095/hftbacktest-2.4.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4eff3ef91f5d50a7847842765d827c432093d8b2b41abf40663cc23c8c49edbe",
                "md5": "aed56350c4921d147051210b8c8076f7",
                "sha256": "be2c083feea9d91486c2bc45ae5079b4055fe9324a5e5b9b6c4a57bdf430421e"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "aed56350c4921d147051210b8c8076f7",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.11",
            "size": 1279784,
            "upload_time": "2025-08-24T03:58:25",
            "upload_time_iso_8601": "2025-08-24T03:58:25.876667Z",
            "url": "https://files.pythonhosted.org/packages/4e/ff/3ef91f5d50a7847842765d827c432093d8b2b41abf40663cc23c8c49edbe/hftbacktest-2.4.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bf789d7be53daef7f8b3857de04c31e545aeb1db1b3985a32b68152cebf35179",
                "md5": "a0539dad58f1bfdbcf546edfc638b033",
                "sha256": "c252191a8185d2430b8b11f680252f8d0df59ac44d1b34c467fb5ba7b539ea02"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "a0539dad58f1bfdbcf546edfc638b033",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.11",
            "size": 1702362,
            "upload_time": "2025-08-24T03:58:33",
            "upload_time_iso_8601": "2025-08-24T03:58:33.481253Z",
            "url": "https://files.pythonhosted.org/packages/bf/78/9d7be53daef7f8b3857de04c31e545aeb1db1b3985a32b68152cebf35179/hftbacktest-2.4.2-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "271c90600a5560323848367d66dce8f7ee9daf616d4113caf8c07cd3d84a2da9",
                "md5": "bdb7e86cfcd2f46815a411d3e2d2f456",
                "sha256": "a92930091ca70d4d93ffe2fa712d683e441fac2ddf5a04bd34552253d473496c"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bdb7e86cfcd2f46815a411d3e2d2f456",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.11",
            "size": 1524144,
            "upload_time": "2025-08-24T03:58:40",
            "upload_time_iso_8601": "2025-08-24T03:58:40.817555Z",
            "url": "https://files.pythonhosted.org/packages/27/1c/90600a5560323848367d66dce8f7ee9daf616d4113caf8c07cd3d84a2da9/hftbacktest-2.4.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2805973fd279e6efb9167165e609288bc830a36568e74d1730d57e6bcbf69afb",
                "md5": "6346543111a87d9e86ac02b93fe5894e",
                "sha256": "6a4d8d049b307e834061a0d869e41b44880170fdb449c4219b18dff4836f632d"
            },
            "downloads": -1,
            "filename": "hftbacktest-2.4.2.tar.gz",
            "has_sig": false,
            "md5_digest": "6346543111a87d9e86ac02b93fe5894e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 4233265,
            "upload_time": "2025-08-24T03:58:42",
            "upload_time_iso_8601": "2025-08-24T03:58:42.322828Z",
            "url": "https://files.pythonhosted.org/packages/28/05/973fd279e6efb9167165e609288bc830a36568e74d1730d57e6bcbf69afb/hftbacktest-2.4.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-24 03:58:42",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nkaz001",
    "github_project": "hftbacktest",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "hftbacktest"
}
        
Elapsed time: 0.43403s