Skip to main content

A professional backtesting and live trading framework for algorithmic trading strategies with footprint analysis and market microstructure.

Project description

Tradetropy

Tradetropy

PyPI Python versions Downloads License Tests Docs

A professional backtesting and live trading framework for algorithmic trading strategies, with first-class support for footprint analysis and market microstructure.

Write a strategy once and run it unchanged across backtest, live and replay - the engine differences are a transport detail behind the same Strategy API.

Features

  • Backtesting engine over candles or ticks with realistic order simulation.
  • Live trading over WebSockets (CCXT Pro) and MetaTrader 5.
  • Order flow and footprint: large trades, Deep Trades (L2/L3 absorption and sweeps), cumulative delta, COT, volume profile and liquidity overlays.
  • Indicator library: the classic studies plus market-structure tools, all through one declarative contract.
  • Optimization and pools, Monte Carlo robustness and interactive Bokeh plotting.
  • Data management with NumPy .npz / CSV IO built in (Parquet and HDF5 optional) and bundled sample datasets.

Installation

pip install tradetropy

The base install includes everything for backtesting, plotting and data IO. Broker integrations and Parquet are optional extras:

pip install tradetropy[mt5]       # MetaTrader 5
pip install tradetropy[ccxt]      # CCXT crypto exchanges (live + streaming)
pip install tradetropy[bybit]     # Bybit (pybit)
pip install tradetropy[parquet]   # Parquet IO (pyarrow)
pip install tradetropy[hdf5]      # HDF5 IO (PyTables; not available on Termux)
pip install tradetropy[all]       # all runtime extras

On desktop (Windows/macOS/Linux) every dependency installs as a prebuilt wheel, so no compiler is needed. Termux (Android) is the exception - the scientific stack builds from source there; see the Termux install guide.

Quickstart

Every loader in tradetropy.datasets returns ready-to-use data, so this runs with no data files or API keys:

from tradetropy import Strategy, BacktestEngine
from tradetropy.ta import SMA
from tradetropy.datasets import load_btcusd_1m


class SmaCross(Strategy):
    def init(self):
        self.btc = self.subscribe_ohlc('BTCUSD', '1m', window_size=200)
        self.fast = self.add_indicator(self.btc.close, SMA(10))
        self.slow = self.add_indicator(self.btc.close, SMA(30))

    def on_data(self):
        if self.fast[-1] > self.slow[-1]:
            if not self.sesh.positions('BTCUSD'):
                self.sesh.buy('BTCUSD', volume=1)
        else:
            for pos in self.sesh.positions('BTCUSD'):
                self.sesh.position_close(pos.ticket)


bt = BacktestEngine.by_klines(SmaCross(), data=(load_btcusd_1m(),))
bt.run()
print(bt.stats)

bt.plot() renders the full interactive chart (candles, indicators, equity, drawdown and a per-trade P&L panel). Static preview of that same chart, from the docs example - see the interactive version there (zoom, pan, hover tooltips):

Tradetropy interactive chart

More runnable scripts are in examples/.

Documentation

Full documentation - user guide and API reference - is at https://michiTrader.github.io/tradetropy/.

To build the docs locally:

pip install tradetropy[docs]
mkdocs serve

Contributing

See CONTRIBUTING.md. Development setup:

git clone https://github.com/michiTrader/tradetropy.git
cd tradetropy
uv sync
uv run pytest

Risk disclaimer

Tradetropy is provided "AS IS", without warranty of any kind. Trading financial instruments involves risk of loss of capital - you may lose part or all of your funds. Always test first on a demo / testnet / paper account and verify that orders, positions and balances behave as expected before trading with real money. Broker and exchange APIs may change without notice and break a connector. The authors and contributors are not responsible for any losses, damages or execution failures arising from the use of this software. This is not financial, investment or legal advice, and you are responsible for complying with the laws of your jurisdiction and your broker/exchange terms of service.

The full disclaimer is available at runtime as tradetropy.LIVE_DISCLAIMER.

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 Distribution

tradetropy-0.2.5.tar.gz (736.1 kB view details)

Uploaded Source

Built Distribution

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

tradetropy-0.2.5-py3-none-any.whl (808.6 kB view details)

Uploaded Python 3

File details

Details for the file tradetropy-0.2.5.tar.gz.

File metadata

  • Download URL: tradetropy-0.2.5.tar.gz
  • Upload date:
  • Size: 736.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for tradetropy-0.2.5.tar.gz
Algorithm Hash digest
SHA256 fbfa5f1a99230ef491bd9dd069fba31a783e1941516a6398e1d00f2f17f7ece6
MD5 31c6141bd3023fdcddd7eb73f045a878
BLAKE2b-256 a36aa2a5bd16229b2365bf537f5535f95adc6f918bd2a126e05b67a4ac5dfec8

See more details on using hashes here.

File details

Details for the file tradetropy-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: tradetropy-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 808.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for tradetropy-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 72e4dcea02075083e33df69abfb6eba858847ab8d535181d43fdf1344c89e623
MD5 9272a5854244a40d890c26b5f51b2319
BLAKE2b-256 e9c927234d56dca58b73325332ee7c438513d1d60cdddcd7bae413eb1c6dc51d

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