Parameter Optimization Framework
View SourceExPostFacto now includes a comprehensive parameter optimization framework that enables systematic strategy development and parameter tuning.
Features
1. Grid Search Optimization
Systematically tests all combinations of parameter values within specified ranges.
{:ok, results} = ExPostFacto.optimize(
market_data,
MyStrategy,
[fast: 5..20, slow: 20..50],
maximize: :sharpe_ratio
)2. Random Search Optimization
Randomly samples parameter combinations for efficient exploration of large parameter spaces.
{:ok, results} = ExPostFacto.optimize(
market_data,
MyStrategy,
[fast: 5..20, slow: 20..50],
method: :random_search,
samples: 100,
maximize: :total_return_pct
)3. Walk-Forward Analysis
Tests parameter robustness over time using rolling training and validation windows.
{:ok, results} = ExPostFacto.optimize(
market_data,
MyStrategy,
[fast: 5..15, slow: 20..40],
method: :walk_forward,
training_window: 100,
validation_window: 50,
step_size: 25
)4. Parameter Heatmaps
Generates visualization data for analyzing 2D parameter relationships.
{:ok, heatmap} = ExPostFacto.heatmap(results, :fast, :slow)
# Access heatmap data
x_values = heatmap.x_values # [5, 6, 7, ...]
y_values = heatmap.y_values # [20, 21, 22, ...]
scores = heatmap.scores # [[0.1, 0.2, ...], [0.3, 0.4, ...]]Supported Optimization Metrics
:sharpe_ratio- Risk-adjusted return (Sharpe ratio):total_return_pct- Total percentage return:cagr_pct- Compound Annual Growth Rate:profit_factor- Gross profit / gross loss ratio:sqn- System Quality Number:win_rate- Percentage of winning trades:max_draw_down_percentage- Maximum drawdown (minimized)
Parameter Specification
Parameters can be specified as:
- Ranges:
fast_period: 5..20 - Lists:
fast_period: [5, 10, 15, 20] - Single values:
fast_period: 10
Result Structure
Optimization results include:
%{
best_params: [fast_period: 12, slow_period: 26],
best_score: 1.42,
best_output: %ExPostFacto.Output{...},
all_results: [...],
method: :grid_search,
metric: :sharpe_ratio
}Walk-Forward Analysis Results
Walk-forward analysis provides additional insights:
%{
windows: [...], # Results for each window
summary: %{ # Aggregated metrics
total_windows: 10,
valid_windows: 8,
average_validation_score: 0.85
},
parameters_stability: %{ # Parameter stability analysis
parameter_stability: %{
fast_period: %{
unique_values: 3,
stability_ratio: 0.375,
most_common: 12
}
},
overall_stability: 0.42
}
}Error Handling
The framework includes comprehensive error handling:
- Invalid parameter ranges
- Insufficient data for walk-forward analysis
- Strategy initialization failures
- Missing optimization metrics
Performance Considerations
- Grid search: Limited by
max_combinations(default: 1000) - Random search: Efficient for large parameter spaces
- Walk-forward: Requires sufficient data length
- All methods leverage existing backtesting infrastructure
Integration
The optimization framework integrates seamlessly with:
- Strategy behaviour modules
- Traditional MFA tuple strategies
- All existing ExPostFacto features
- Comprehensive metrics and statistics
This professional-grade optimization framework enables systematic strategy development and robust parameter tuning for quantitative trading strategies.