Discussing the article: "Bull Optimization Algorithm (BOA)"

Check out the new article: Bull Optimization Algorithm (BOA).

We present an evolutionary algorithm without a selection operator: the best individual becomes the sole mating partner for the entire population, and classical mutation is replaced by multiplicative mutation with a self-adjusting step size. In this article, we examine three key ideas, implement the algorithm in MQL5 using the C_AO framework, and test it on the standard benchmark suite and in an anti-cheat test — where BOA comes very close to the cutoff for the top 45 but does not make the ranking.

When a trader sets out to optimize the parameters of a trading strategy, they almost always run into the same obstacle: the search space is enormous, the objective function is noisy and has multiple extrema, and there is never as much time and computing power as one would like. The exhaustive search feature in the MetaTrader 5 tester can handle a small number of parameters, but with six to eight variables, the task becomes computationally infeasible. This is where metaheuristic algorithms come into play, but traders then face another problem: which algorithm should they choose?

The most popular candidate is the genetic algorithm (GA), which has been well studied and has been proven effective through decades of practical application. It became the built-in optimizer in MetaTrader 5. Nevertheless, ever since the advent of GA, researchers in the field of metaheuristics have regularly asked: Is it possible to modify the classical framework to obtain an algorithm with a different behavioral profile — one with a different balance between exploration and exploitation, and different mechanisms for information transfer between generations? Such experiments give rise to a family of “genetic operator-based” algorithms, in which the classical GA is just one possible implementation.

In 2015, Turkish researcher Oğuz Fındık published a paper in which he proposed one such experiment. Fındık formulated three observations regarding the behavior of the classical GA that he felt needed to be addressed: the role of the selection operator in population convergence, the nature of classical mutation, and the passive role of the best individual found. Based on these observations, he developed an algorithm with a different architecture: the selection operator is removed from the loop; the best individual becomes an active parent for all the others through crossover; and classical mutation is replaced by multiplicative mutation, proportional to the current value of the gene. The algorithm was named the Bull Optimization Algorithm (BOA).


Author: Andrey Dik