Skip to content

Repository files navigation

📈 Strategy Backtesting Framework

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

Go VersionLicenseBuild 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

OptionDescriptionDefault
-configConfiguration file pathconfig.json
-modeOperation mode (backtest, optimize, report, validate)backtest
-strategyStrategy name override-
-dataMarket data path override-
-initial-cashInitial cash amount-
-start-dateStart date (YYYY-MM-DD)-
-end-dateEnd date (YYYY-MM-DD)-
-outputOutput directoryoutput
-formatReport formats (json,csv,html)json,html
-optimizeEnable parameter optimizationfalse
-opt-methodOptimization method (grid,random,genetic)grid
-max-iterMaximum optimization iterations1000
-verboseEnable verbose outputfalse
-debugEnable debug loggingfalse

🧪 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

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages