Skip to main content

An event-driven backtesting engine for trading strategies.

Project description

AlphEast Backtesting Engine

Python Version License Documentation Status

🌟 Overview

AlphEast is an event-driven backtesting engine designed for developing and evaluating quantitative trading strategies. While still in its early stages of development, it provides a robust, extensible framework for simulating and evaluating multi-symbol trading strategies with realistic considerations like transaction costs and slippage.

Our goal is to offer a flexible tool for researchers and traders to quickly prototype and test their ideas, without getting bogged down in boilerplate.


📚 Documentation

For complete usage instructions, API reference, detailed examples, and guides, please visit our official documentation website:

https://alpheast.readthedocs.io/en/latest/


✨ Key Features

  • Event-Driven Architecture: Simulates market conditions and trade executions with a clear, sequential event flow.
  • Multi-Symbol Backtesting: Simultaneously test strategies across multiple financial instruments.
  • Pluggable Strategies: Easily define and integrate your own custom trading strategies.
  • Customizable Position Sizing: Implement various position sizing methods to manage risk and allocate capital.
  • Realistic Simulations: Accounts for transaction costs (commissions) and slippage to provide more accurate results.
  • Performance Metrics & Visualization: Generates standard trading performance metrics and plots equity curves for quick analysis.
  • Flexible Data Ingestion: Designed to integrate with various data sources, from direct in-memory data to custom database repositories.

🚀 Quick Start

Get your first backtest running in minutes!

Installation

pip install alpheast

Basic Usage Example

from datetime import datetime
from typing import Dict, List
from alpheast.config.data_source import DataSource, DataSourceType
from alpheast.engine import BacktestingEngine
from alpheast.config.backtest_config import BacktestingOptions
from alpheast.models.interval import Interval
from alpheast.models.price_bar import PriceBar
from examples.basic.example_strategy import ExampleStrategy


if __name__ == "__main__":
    symbol = "AAPL"
    options = BacktestingOptions(
        symbols=[symbol],
        start_date=datetime(2021, 1, 1),
        end_date=datetime(2025, 1, 1),
        interval=Interval.DAILY,
        initial_cash=100_000.0
    )

    price_bar_data: Dict[str, List[PriceBar]] = {
        symbol: [] # Provide your data
    }
    data_source = DataSource(
        type=DataSourceType.DIRECT,
        price_bar_data=price_bar_data,
    )

    engine = BacktestingEngine(
        options=options,
        data_source=data_source,
        strategies=[ExampleStrategy(symbol)],
    )
    
    results = engine.run()

    if results:
        results.print_summary()
        results.plot_equity_curve()

equity-curve

⚡️ Performance

AlphEast is designed for efficiency and demonstrates strong scaling characteristics with both the number of symbols and the backtesting duration. Below are some example execution times measured on a standard setup:

Execution Time (seconds)

Symbols \ Duration 1 Year 5 Years
1 0.2124 0.9258
2 0.3027 1.2424
10 0.9525 3.6243

Status

In mid stages of development.

Contributing

All contributions are warmly welcomed. Head over to CONTRIBUTING.md for details.

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

alpheast-0.1.1.tar.gz (41.3 kB view details)

Uploaded Source

Built Distribution

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

alpheast-0.1.1-py3-none-any.whl (55.9 kB view details)

Uploaded Python 3

File details

Details for the file alpheast-0.1.1.tar.gz.

File metadata

  • Download URL: alpheast-0.1.1.tar.gz
  • Upload date:
  • Size: 41.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for alpheast-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ec8c33316b62039090b9d68db6f3ef3d5a65eea248b2bcaa507056071a8c3095
MD5 9bb18ce6f2fa89ecfc5b217cd6565497
BLAKE2b-256 27baac5ebf9f46e172bf533b08a6b2dcbb19946b56c4e62d02b1b7f115601749

See more details on using hashes here.

File details

Details for the file alpheast-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: alpheast-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 55.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for alpheast-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3ceacf0ae0a2ed9710e1cd2f35dba641b059a8ab16625bda4aa474a2d8f9112e
MD5 3c93bda886ff18a045cfdf636b2c8848
BLAKE2b-256 589524f45307443da9a32314be9595c76e05120be82e76dc1f5cf87a9c1ba987

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