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.4.tar.gz (711.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.4-py3-none-any.whl (775.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tradetropy-0.2.4.tar.gz
  • Upload date:
  • Size: 711.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.4.tar.gz
Algorithm Hash digest
SHA256 8b241b8ae6fc68c3429e53b33bbe2d721554f4eaa67c363286a2c26457ba4432
MD5 e65c1bab1b1aca4a12984c9163e22b91
BLAKE2b-256 a65fd768f831e96ba72d7592cd1703c5f5ef9bf3e359f306eb7dcfe146d9c51c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tradetropy-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 775.3 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5b5c89b123ada8ba6ca3127931efdcc0c7029d7951e48911f268ed63a94116b6
MD5 e8150d8992e74485a7e2368be283700b
BLAKE2b-256 b3d1e3ceb0935d1d1ca53709ff67e65acf9ff0319fe95baa7ce7354aa02a9868

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