Gitpedia

SimTradeLab

SimTradeLab is an open-source backtesting framework inspired by PTrade’s event-driven architecture. It features a lightweight, modular design and full syntax compatibility, enabling seamless strategy development and validation.

From kay-ou·Updated May 28, 2026·View on GitHub·

**SimTradeLab** is a SimTradeLab is an open-source backtesting framework inspired by PTrade’s event-driven architecture. It features a lightweight, modular design and full syntax compatibility, enabling seamless strategy development and validation. The project is written primarily in Python, distributed under the GNU Affero General Public License v3.0 license, first published in 2025. Key topics include: backtesting, backtesting-engine, open-source, ptrade, ptrade-compatible.

Latest release: v2.12.2SimTradeLab v2.12.2
May 27, 2026View Changelog →

📈 SimTradeLab

English | 中文 | Deutsch

Lightweight Quantitative Backtesting Framework — Local PTrade API Simulation

Python
License
License: Commercial
Version
PyPI
PyPI - Downloads

Full PTrade API simulation — strategies transfer seamlessly between SimTradeLab and PTrade. See also: ptradeAPI


🎯 Why SimTradeLab?

SimTradeLabPTrade
Speed100–160x fasterBaseline
StartupSub-second (data persists in memory)Minutes
API Coverage62 backtest/research APIsFull platform
Strategy PortingZero code changesZero code changes
EnvironmentLocal, free, open-sourceCloud, licensed

Core capabilities:

  • 62 APIs — 100% coverage of stock backtesting scenarios (daily & minute bars)
  • 100–160x faster than PTrade platform
  • 🚀 In-memory data persistence — singleton pattern, sub-second startup after first load
  • 💾 Multi-level caching — LRU caches for MA/VWAP/adjustment factors/history, >95% hit rate
  • 🧠 Smart data loading — AST analysis of strategy code, loads only required data
  • 🔧 Lifecycle control — 7 lifecycle phases, strict simulation of PTrade's API restrictions
  • 📊 Full stats reporting — returns, risk metrics (Sharpe/Sortino/Calmar), trade details, FIFO dividend tax, CSV export
  • 🔌 Multi-market — Built-in CN (A-shares) and US market profiles with automatic trading rule adaptation
  • 🌐 i18n — Backtest output in Chinese, English, or German

🚀 Need More? Try SimTradeDesk

SimTradeDesk is a professional desktop application built on SimTradeLab — no coding required.

FeatureSimTradeLab (this repo)SimTradeDesk
Target usersDevelopers & quant engineersAll traders
InterfacePython APIDesktop GUI
Strategy editingCode editorBuilt-in editor with syntax highlighting
VisualizationPNG chartsInteractive real-time charts
Data managementManual setupOne-click download & update
Parameter tuningWrite codeVisual optimizer

👉 Get SimTradeDesk →


📦 Quick Start

bash
pip install simtradelab # Optional: technical indicators (requires system ta-lib) pip install simtradelab[indicators] # Optional: parameter optimizer pip install simtradelab[optimizer]

Data: Use SimTradeData to download China A-share and US stock historical data.

Run a backtest:

python
from simtradelab.backtest.runner import BacktestRunner from simtradelab.backtest.config import BacktestConfig config = BacktestConfig( # --- Required --- strategy_name='my_strategy', # Strategy folder name under strategies/ start_date='2024-01-01', # Backtest start date end_date='2024-12-31', # Backtest end date # --- Capital & Market --- initial_capital=100000.0, # Starting capital (must be > 0) market='CN', # Market: 'CN' (A-shares) | 'US' broker_profile='auto', # Broker API profile: 'auto' | 'guosheng' | 'dongguan' | 'shanxi' t_plus_1=None, # T+1 override: None=market default (CN=True, US=False) benchmark_code='', # Benchmark code, empty=market default # --- Frequency --- frequency='1d', # Bar frequency: '1d' (daily) | '1m' (minute) # --- Paths --- data_path='~/.simtradelab/data', # Market data directory strategies_path='./strategies', # Strategies root directory # --- Performance --- enable_multiprocessing=True, # Enable parallel data loading num_workers=None, # Worker count (None=auto, must be >= 1) use_data_server=True, # Use in-memory data server (singleton) # --- Output --- enable_charts=True, # Generate PNG chart enable_logging=True, # Write log file enable_export=False, # Export trade details to CSV # --- i18n --- locale='auto', # Log language: 'zh' | 'en' | 'de' (auto: CN market→zh, else system locale) optimization_mode=False, # Optimization mode: skip validation/logging (managed by optimizer) # --- Entry file --- strategy_file='backtest.py', # Entry file: 'backtest.py' | 'live.py' ) runner = BacktestRunner() report = runner.run(config=config)

📚 API Overview

62 backtest/research APIs — 100% stock backtesting coverage.

CategoryAPIs
Tradingorder, order_target, order_value, order_target_value, cancel_order, get_positions, get_trades
Dataget_price, get_history, get_fundamentals, get_stock_info
Sectorget_index_stocks, get_industry_stocks, get_stock_blocks
Indicatorsget_MACD, get_KDJ, get_RSI, get_CCI
Configset_benchmark, set_commission, set_slippage, set_universe, set_parameters
Lifecycleinitialize, before_trading_start, handle_data, after_trading_end

📄 License

Dual license model:


🤝 Contributing

  • 🐛 Report issues
  • 💻 Implement missing API features
  • 📚 Improve documentation

See CONTRIBUTING.md for CLA details.


⚖️ Disclaimer

SimTradeLab is a community-developed, open-source backtesting framework inspired by PTrade's event-driven design. It does not contain PTrade's source code, trademarks, or any protected content. This project is not affiliated with or endorsed by PTrade. Users are responsible for compliance with local regulations and platform terms.


<div align="center">

⭐ Star this project if you find it useful!

🐛 Report Issue | 💡 Feature Request | 🖥️ SimTradeDesk


💖 Sponsor

If this project helps you, consider sponsoring!

<img src="docs/sponsor/WechatPay.png?raw=true" alt="WeChat Pay" width="200"> <img src="docs/sponsor/AliPay.png?raw=true" alt="Alipay" width="200"> </div>

Contributors

Showing top 1 contributor by commit count.

View all contributors on GitHub →

This article is auto-generated from kay-ou/SimTradeLab via the GitHub API.Last fetched: 6/1/2026