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)
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):
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.
Metadata
Release files for tradetropy 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tradetropy-0.3.1.tar.gz | 927.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tradetropy-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.0 MB
Release files / tradetropy-0.3.1.tar.gz
| Download URL | tradetropy-0.3.1.tar.gz |
|---|---|
| Size | 927.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8f8a90311bf1c7aafa17b3917473750235f7a673706c35a11152ea3b0855bd80
|
|
BLAKE2b-256 checksum How to use checksums |
2b3d11b1207c1606dc458904ee20d7fd7a01e52fe852bbce587b36de3b1cf66a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"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}
|
Release files / tradetropy-0.3.1-py3-none-any.whl
| Download URL | tradetropy-0.3.1-py3-none-any.whl |
|---|---|
| Size | 1.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c7e06577ce16cf130b0454c7dfaedcabcf3d1e8a865a5835d4f6ba99a125cd39
|
|
BLAKE2b-256 checksum How to use checksums |
4bc9b927e52f41ec89c1c004302850559f307e7deafbea3cae28b2f4e6961c51
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"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}
|