Skip to main content

Lightweight quantitative backtesting framework with PTrade API simulation | 轻量级量化回测框架

Project description

📈 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?

SimTradeLab PTrade
Speed 100–160x faster Baseline
Startup Sub-second (data persists in memory) Minutes
API Coverage 62 backtest/research APIs Full platform
Strategy Porting Zero code changes Zero code changes
Environment Local, free, open-source Cloud, 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.

Feature SimTradeLab (this repo) SimTradeDesk
Target users Developers & quant engineers All traders
Interface Python API Desktop GUI
Strategy editing Code editor Built-in editor with syntax highlighting
Visualization PNG charts Interactive real-time charts
Data management Manual setup One-click download & update
Parameter tuning Write code Visual optimizer

👉 Get SimTradeDesk →


📦 Quick Start

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:

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

    # --- Sandbox & i18n ---
    # sandbox=True,                    # PTrade sandbox: restrict imports & builtins
    # locale='auto',                   # Log language: 'zh' | 'en' | 'de' (auto: CN market→zh, else system locale)
    # optimization_mode=False,         # Optimization mode: skip strategy validation/data analysis/logging setup

    # --- 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.

Category APIs
Trading order, order_target, order_value, order_target_value, cancel_order, get_positions, get_trades
Data get_price, get_history, get_fundamentals, get_stock_info
Sector get_index_stocks, get_industry_stocks, get_stock_blocks
Indicators get_MACD, get_KDJ, get_RSI, get_CCI
Config set_benchmark, set_commission, set_slippage, set_universe, set_parameters
Lifecycle initialize, 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.


⭐ Star this project if you find it useful!

🐛 Report Issue | 💡 Feature Request | 🖥️ SimTradeDesk


💖 Sponsor

If this project helps you, consider sponsoring!

WeChat Pay Alipay

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

simtradelab-2.11.0.tar.gz (125.3 kB view details)

Uploaded Source

Built Distribution

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

simtradelab-2.11.0-py3-none-any.whl (150.0 kB view details)

Uploaded Python 3

File details

Details for the file simtradelab-2.11.0.tar.gz.

File metadata

  • Download URL: simtradelab-2.11.0.tar.gz
  • Upload date:
  • Size: 125.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simtradelab-2.11.0.tar.gz
Algorithm Hash digest
SHA256 e9b8332709a2180b4f4c9e6b976608522d5ba1694c24f66e2efc8275633136b2
MD5 999b8664bf2c94cc0afd367ab664efa5
BLAKE2b-256 ce8f10f9bb2d04dc38a80e8e8cc9a4cde92947c8adc653a23fbe7fd5d2ac0bdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for simtradelab-2.11.0.tar.gz:

Publisher: publish.yml on kay-ou/SimTradeLab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file simtradelab-2.11.0-py3-none-any.whl.

File metadata

  • Download URL: simtradelab-2.11.0-py3-none-any.whl
  • Upload date:
  • Size: 150.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simtradelab-2.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e8cb6ac339176b07fbb6f0a3565c6c4bce8e60aeb2693fd8566147056e6b29ca
MD5 e12f3ae86d1ea69a00c572df5d336727
BLAKE2b-256 c09fa8f6fe17c586197829fc084e60ec960442ebd209050b322137b695105986

See more details on using hashes here.

Provenance

The following attestation bundles were made for simtradelab-2.11.0-py3-none-any.whl:

Publisher: publish.yml on kay-ou/SimTradeLab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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