Skip to content

A comprehensive Go-based trading strategy backtesting framework with portfolio management, risk analysis, and optimization capabilities

Notifications You must be signed in to change notification settings

Sunnyloooo/strategy-backtesting-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“ˆ 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

About

A comprehensive Go-based trading strategy backtesting framework with portfolio management, risk analysis, and optimization capabilities

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published