# Grid Searching for Optimising Algorithmic Trading Strategy Parameters

After you are satisfied with your initial algorithmic trading strategy selection and implementation, the next logical step is to optimise its parameters to yield higher returns. This can be achieved using an optimisation technique, grid searching, where you specify different values for each of the strategy parameters you want to explore, and the system will run through all possible combinations of those values. We take you through the process and how to optimise your algorithmic trading strategy parameters by using a grid search.

## What is grid searching?

Grid searching in algorithmic trading refers to a method used to systematically search and optimise the parameters of a trading strategy or algorithm. It involves creating a grid, or a set of predefined values, for each parameter of the trading strategy and then evaluating the strategy's performance using different combinations of these parameters.

The grid search process typically follows these steps:

1. Define the parameter grid: Determine the range and increments for each parameter that you want to optimise in the trading strategy. For example, if you have a moving average crossover strategy, you may want to optimise the lengths of the moving averages.
2. Generate parameter combinations: Create all possible combinations of parameter values from the defined parameter grid. This results in a set of parameter configurations that need to be tested.
3. Backtest and evaluate: Apply each parameter configuration to historical market data and conduct backtesting to evaluate the performance of the trading strategy for each combination. Performance metrics such as profitability, risk-adjusted returns, drawdowns, and other relevant measures are typically considered.
4. Select the best parameter configuration: Analyse the results of the backtests and identify the parameter configuration that yields the best performance based on your chosen evaluation criteria. This could involve comparing metrics such as total returns, maximum drawdown, or risk-adjusted measures like the Sharpe ratio.

Adding a grid search to your already existing strategy is straightforward. To follow along in more detail, see this documentation example. It can be broadly achieved as follows:

1. Convert relevant parameters with fixed values to list of values

2. Wrap your usual `decide_trades` function with a function that takes two arguments: one for the universe and one for the current combination. Also, add a combination.destructure() line

3. Prepare grid combinations with prepare_grid_combinations

4. Run grid search with perform_grid_search

Pro tip: start with a coarse grid search. To save time and computational resources, begin with a wide range of parameter values. Once you have identified promising regions, you can then perform a finer grid search to fine-tune the parameters.

## Visualise Results

Upon completion, you can use several tools to analyse the results. The most comprehensive tool is a table displaying key performance metrics (currently six) for every combination used in the grid search. (Before showing a screenshot, make sure to improve the table aesthetics).

For a more visually appealing representation, you can use a 2D heatmap to inspect the results. Although not as comprehensive as the table, as it can only visualise combinations of three different parameters in a single heatmap, the heatmap is visually striking. In the heatmap shown below, blue colours indicate positive profits, while red colours denote negative results. The darkness of the colour represents the magnitude of profit. It becomes easy to see that the highest profit was achieved using a standard deviation of 1.8 and a moving average length of 15.

## Why you should use grid searching

1. Systematic exploration: Grid searching systematically explores parameter combinations to analyse their impact on trading strategy performance.
2. Performance optimization: It helps identify optimal parameter configurations that maximise returns and align with trading goals.
3. Efficiency and time-saving: Grid searching automates testing multiple parameter configurations, saving time and effort compared to manual adjustments.
4. Robustness: It enhances the robustness of trading strategies by fine-tuning parameters and improving their effectiveness.

## Final thoughts

Grid searching is a valuable technique in algorithmic trading for optimising trading strategy parameters. By systematically exploring different parameter combinations, traders and developers can improve the robustness and effectiveness of their strategies. Grid searching allows for a comprehensive evaluation of performance metrics and helps identify the parameter configuration that maximises returns. However, it is essential to exercise caution and avoid overfitting by conducting out-of-sample testing and considering the limitations of historical data. When used judiciously, grid searching can be a powerful tool in enhancing algorithmic trading strategies and potentially achieving better trading outcomes.