Skip to content

Latest commit

 

History

History
388 lines (310 loc) · 11.3 KB

File metadata and controls

388 lines (310 loc) · 11.3 KB

📈 Strategy Backtesting Framework

A comprehensive, high-performance trading strategy backtesting framework built in Go, designed for quantitative traders and researchers.

Go Version License Build Status

🚀 Features

🎯 Core Backtesting Engine

  • High-Performance Engine: Optimized for large datasets and complex strategies
  • Flexible Strategy Interface: Easy-to-implement strategy patterns
  • Realistic Execution Simulation: Commission, slippage, and market impact modeling
  • Multi-Asset Support: Test strategies across different instruments
  • Event-Driven Architecture: Accurate order-of-operations simulation

📊 Comprehensive Analytics

  • Performance Metrics: 50+ performance and risk metrics
  • Risk Analysis: VaR, CVaR, drawdown analysis, and stress testing
  • Correlation Analysis: Beta calculation and benchmark comparison
  • Advanced Risk Metrics: Skewness, kurtosis, tail risk measures
  • Rolling Statistics: Time-varying performance analysis

🎛️ Parameter Optimization

  • Multiple Algorithms: Grid search, random search, genetic algorithms
  • Overfitting Prevention: Cross-validation, bootstrap, Monte Carlo validation
  • White Reality Check: Statistical significance testing
  • Robust Parameter Selection: Sensitivity analysis and stability scoring
  • Parallel Processing: Multi-threaded optimization for speed

📋 Professional Reporting

  • Multi-Format Output: JSON, CSV, HTML reports
  • Interactive Charts: Web-based dashboard with Plotly.js
  • Comprehensive Analysis: Detailed performance breakdowns
  • Export Capabilities: Professional-grade report generation
  • Customizable Templates: Flexible report formatting

🛠️ Developer Experience

  • Command-Line Interface: Full-featured CLI tool
  • Configuration Management: JSON-based configuration system
  • Extensible Architecture: Plugin-friendly design
  • Comprehensive Testing: Extensive test coverage and validation

🏗️ Architecture

strategy-backtesting-framework/
├── cmd/backtest/           # Command-line interface
├── pkg/types/              # Core data structures
│   ├── market_data.go      # Price and market data
│   ├── signal.go           # Trading signals
│   ├── position.go         # Position management
│   └── portfolio.go        # Portfolio state
├── internal/
│   ├── backtest/           # Backtesting engine
│   ├── strategy/           # Strategy implementations
│   ├── data/               # Data loading and management
│   ├── metrics/            # Performance calculations
│   ├── optimization/       # Parameter optimization
│   ├── reports/            # Report generation
│   └── charts/             # Chart generation
├── config.template.json    # Configuration template
├── Makefile               # Build automation
└── README.md              # This file

🚀 Quick Start

Installation

# Clone the repository
git clone https://github.com/yourusername/strategy-backtesting-framework.git
cd strategy-backtesting-framework

# Build the application
make build

# Or install directly
make install

Basic Usage

  1. Create configuration file:
# This creates a default config.json
./bin/backtest -help
  1. Prepare your data:
# Create sample data
make create-example-data
  1. Run backtesting:
# Basic backtest
./bin/backtest -config config.json -verbose

# With custom parameters
./bin/backtest -strategy moving_average -initial-cash 100000 -format html,json
  1. Parameter optimization:
# Run optimization
./bin/backtest -mode optimize -opt-method genetic -max-iter 500

Configuration Example

{
  "strategy": {
    "name": "moving_average",
    "type": "trend_following",
    "parameters": {
      "short_window": 10,
      "long_window": 30
    }
  },
  "backtest": {
    "initial_cash": 100000.0,
    "start_date": "2023-01-01",
    "end_date": "2023-12-31",
    "commission": 0.001,
    "slippage": 0.0005
  },
  "data": {
    "source": "csv",
    "path": "data/",
    "symbols": ["AAPL", "MSFT"],
    "format": "ohlcv"
  },
  "output": {
    "directory": "reports",
    "formats": ["json", "html", "csv"],
    "detailed": true
  }
}

📊 Sample Output

Performance Summary

📊 BACKTEST SUMMARY
============================================================
⏱️  Execution Time: 2.34s
💰 Initial Capital: $100,000.00
💰 Final Value: $125,430.50
📈 Total Return: 25.43%
📈 Annualized Return: 22.15%
📊 Sharpe Ratio: 1.85
📉 Max Drawdown: -8.72%
🎯 Total Trades: 147
✅ Win Rate: 58.50%
============================================================

Interactive Dashboard

The framework generates interactive HTML dashboards with:

  • 📈 Equity curve visualization
  • 📉 Drawdown analysis
  • 📊 Returns distribution
  • 🎯 Trade analysis
  • 📋 Risk metrics summary

🎛️ Command Line Interface

Available Commands

# Basic backtesting
backtest -config my_strategy.json

# Parameter optimization
backtest -mode optimize -opt-method genetic -max-iter 500

# Custom date range and output
backtest -start-date 2023-01-01 -end-date 2023-12-31 -output results/

# Generate only HTML report
backtest -format html -verbose

# Validate strategy configuration
backtest -mode validate -config my_strategy.json

# Complete demo
make demo

Available Options

Option Description Default
-config Configuration file path config.json
-mode Operation mode (backtest, optimize, report, validate) backtest
-strategy Strategy name override -
-data Market data path override -
-initial-cash Initial cash amount -
-start-date Start date (YYYY-MM-DD) -
-end-date End date (YYYY-MM-DD) -
-output Output directory output
-format Report formats (json,csv,html) json,html
-optimize Enable parameter optimization false
-opt-method Optimization method (grid,random,genetic) grid
-max-iter Maximum optimization iterations 1000
-verbose Enable verbose output false
-debug Enable debug logging false

🧪 Implemented Strategies

Moving Average Crossover

  • Type: Trend Following
  • Parameters: Short window, long window
  • Signals: Buy on golden cross, sell on death cross
  • Risk Management: Stop-loss and take-profit levels

📈 Performance Metrics

Return Metrics

  • Total Return, Annualized Return
  • Compound Annual Growth Rate (CAGR)
  • Maximum/Minimum Daily Returns
  • Positive/Negative Day Ratios

Risk Metrics

  • Volatility (Standard Deviation)
  • Maximum Drawdown, Average Drawdown
  • Value at Risk (VaR) at 95% and 99%
  • Conditional Value at Risk (CVaR)
  • Skewness, Kurtosis, Tail Ratio

Risk-Adjusted Metrics

  • Sharpe Ratio, Sortino Ratio
  • Calmar Ratio, Treynor Ratio
  • Information Ratio, Omega Ratio
  • Profit Factor, Recovery Factor
  • Modified Sharpe (accounting for skewness/kurtosis)

Benchmark Comparison

  • Alpha, Beta, R-squared
  • Tracking Error, Information Ratio
  • Upside/Downside Capture Ratios
  • Correlation Analysis

🎯 Optimization Features

Optimization Methods

  • Grid Search: Exhaustive parameter space exploration
  • Random Search: Efficient random sampling
  • Genetic Algorithm: Evolutionary optimization with adaptive parameters

Overfitting Prevention

  • Cross-Validation: Time-series aware validation
  • Bootstrap Validation: Robust statistical testing
  • Monte Carlo Validation: Scenario-based testing
  • White Reality Check: Statistical significance testing
  • Parameter Sensitivity Analysis: Robustness assessment

Validation Techniques

  • In-sample/Out-of-sample testing
  • Walk-forward analysis
  • Rolling window validation
  • Stability scoring and consistency checks

🛠️ Development

Building from Source

# Install dependencies
make deps

# Run tests
make test

# Check code quality
make check

# Build for all platforms
make build-all

# Generate documentation
make docs

# Run development mode
make dev

Project Structure

📁 Project Components:
├── 🎯 Core Engine (pkg/types/, internal/backtest/)
├── 📊 Data Management (internal/data/)
├── 🎛️ Strategy Framework (internal/strategy/)
├── 📈 Performance Analytics (internal/metrics/)
├── 🔍 Optimization Engine (internal/optimization/)
├── 📋 Reporting System (internal/reports/)
├── 📊 Chart Generation (internal/charts/)
└── 🖥️ CLI Interface (cmd/backtest/)

Key Design Principles

  • Modularity: Clean separation of concerns
  • Extensibility: Easy to add new strategies and metrics
  • Performance: Optimized for large datasets
  • Reliability: Comprehensive error handling and validation
  • Usability: Intuitive APIs and clear documentation

📚 Documentation

API Documentation

# Generate and serve documentation
make serve-docs
# Visit http://localhost:6060

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass
  6. Submit a pull request

Code Style

  • Follow standard Go conventions
  • Use gofmt for formatting
  • Add comprehensive tests
  • Document public APIs
  • Follow existing patterns

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Inspired by professional quantitative trading systems
  • Built with modern Go best practices
  • Uses industry-standard financial calculations
  • Designed for both research and production use

📞 Support

🔄 Development Status

Current Version: 1.0.0 (Phase 5.2 Complete)

✅ Completed Features

  • ✅ Core backtesting engine with realistic execution simulation
  • ✅ Comprehensive performance and risk metrics (50+ indicators)
  • ✅ Parameter optimization with multiple algorithms
  • ✅ Overfitting prevention and validation techniques
  • ✅ Professional reporting system (JSON, CSV, HTML)
  • ✅ Interactive chart generation and dashboards
  • ✅ Full-featured command-line interface
  • ✅ Moving average crossover strategy implementation

🚧 Next Milestones

  • Additional strategy templates (mean reversion, momentum)
  • Comprehensive testing suite and examples
  • Enhanced documentation and tutorials
  • Performance optimization and benchmarking

See projectplan.md for detailed implementation roadmap.


Star this repository if you find it useful!

Made with ❤️ for the quantitative trading community