A comprehensive, high-performance trading strategy backtesting framework built in Go, designed for quantitative traders and researchers.
- 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
- 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
- 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
- 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
- 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
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
# 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- Create configuration file:
# This creates a default config.json
./bin/backtest -help- Prepare your data:
# Create sample data
make create-example-data- Run backtesting:
# Basic backtest
./bin/backtest -config config.json -verbose
# With custom parameters
./bin/backtest -strategy moving_average -initial-cash 100000 -format html,json- Parameter optimization:
# Run optimization
./bin/backtest -mode optimize -opt-method genetic -max-iter 500{
"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
}
}📊 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%
============================================================
The framework generates interactive HTML dashboards with:
- 📈 Equity curve visualization
- 📉 Drawdown analysis
- 📊 Returns distribution
- 🎯 Trade analysis
- 📋 Risk metrics summary
# 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| 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 |
- 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
- Total Return, Annualized Return
- Compound Annual Growth Rate (CAGR)
- Maximum/Minimum Daily Returns
- Positive/Negative Day Ratios
- Volatility (Standard Deviation)
- Maximum Drawdown, Average Drawdown
- Value at Risk (VaR) at 95% and 99%
- Conditional Value at Risk (CVaR)
- Skewness, Kurtosis, Tail Ratio
- Sharpe Ratio, Sortino Ratio
- Calmar Ratio, Treynor Ratio
- Information Ratio, Omega Ratio
- Profit Factor, Recovery Factor
- Modified Sharpe (accounting for skewness/kurtosis)
- Alpha, Beta, R-squared
- Tracking Error, Information Ratio
- Upside/Downside Capture Ratios
- Correlation Analysis
- Grid Search: Exhaustive parameter space exploration
- Random Search: Efficient random sampling
- Genetic Algorithm: Evolutionary optimization with adaptive parameters
- 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
- In-sample/Out-of-sample testing
- Walk-forward analysis
- Rolling window validation
- Stability scoring and consistency checks
# 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 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/)
- 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
# Generate and serve documentation
make serve-docs
# Visit http://localhost:6060We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
- Follow standard Go conventions
- Use
gofmtfor formatting - Add comprehensive tests
- Document public APIs
- Follow existing patterns
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by professional quantitative trading systems
- Built with modern Go best practices
- Uses industry-standard financial calculations
- Designed for both research and production use
Current Version: 1.0.0 (Phase 5.2 Complete)
- ✅ 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
- 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