A professional backtesting and live trading framework for algorithmic trading strategies with footprint analysis and market microstructure.
Project description
Tradetropy
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)
engine = BacktestEngine.by_klines(SmaCross(), data=(load_btcusd_1m(),))
engine.run()
print(engine.stats)
More runnable scripts are in examples/.
Documentation
Full documentation - user guide and API reference - is at https://michiTrader.github.io/tradetropy/.
- Installation
- Quickstart
- Core concepts
- Working with data
- Indicators and Order flow and L2
- Live trading, Replay and Monte Carlo robustness
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tradetropy-0.2.0.tar.gz.
File metadata
- Download URL: tradetropy-0.2.0.tar.gz
- Upload date:
- Size: 704.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87b666669b81960aed6b7106a50a57c1ba7a96ecd175df12e8c4c15962367649
|
|
| MD5 |
7a61a4dc87b78f80a676888738e5a609
|
|
| BLAKE2b-256 |
87c5fe49d9883d31e06cafcd6df079e2b25da041f4880d2e1b83e0df0b7873cb
|
File details
Details for the file tradetropy-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tradetropy-0.2.0-py3-none-any.whl
- Upload date:
- Size: 766.4 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f380c7b217ead4019462679fb07689b5aa70fb46c84940127c9aabbaafccfb66
|
|
| MD5 |
25b5091a705d2653c7fca370b865af38
|
|
| BLAKE2b-256 |
467459d4c499d1c279405238007cee7b41d515b75c7a61cc6c28ae7742ae6e63
|