## 2 Methods  
GP is a heuristic search technique based on the evolution of programs. This optimization approach represents programs in tree structures that learn and adapt by changing their size, shape, and composition of the models. As opposed to conventional regression analysis, which is based on a certain ex-ante model specification, GP-based symbolic regression (SR) searches for relationships between a given set of variables and evolves the functions until it reaches a solution, which in our case corresponds to the algebraic expression that best fits the data. One can refer to [12] for a comparative analysis of the metaheuristic optimization algorithms. GP simultaneously evolves the structure and the parameters of the expressions. This feature provides a quick overview of the most relevant interactions between the variables of the system and can help to identify new unknown links. As a result, due to its suitability for finding patterns in large datasets and handling complex modelling tasks, this empirical modelling approach is beginning to be used in more and more applications in different scientific fields, from lung cancer prediction [13] and automatic skin cancer image classification [14], to a wide range of engineering applications [15; 16; 17; 18; 19; 20]. A large part of the applications is related to complex optimization problems [21; 22; 23] and predictive tasks in different fields [24; 25]. Although GP-based SR was first used as a means to assess the non-linear interactions between price level, gross national product, money supply, and the velocity of money [26], applications of GP in macroeconomics have been very limited since then. Using a similar procedure, in [27], the authors identified interactions between economic indicators in order to estimate the evolution of prices in the US. In [28], the authors assessed the performance of different model selection approaches, including GP, in an out-of-sample forecasting exercise to predict the growth rates of quarterly GDP and monthly inflation. Similarly, in [29], the authors used GP to track GDP growth by combining ten science and technology factors. In [30], the authors applied GP in a vector error correction model for macroeconomic forecasting. One can refer to [31] for a review of the application of GP to economic modelling. Most of the applications of evolutionary computation in economics have been made in finance [32]. In [33], the authors used a genetic algorithm to predict the financial failure of firms. In [34], the authors applied genetic algorithms to optimize the signals generated by technical trading tools. However, most of the works focus on the prediction of exchange rates or stock price trends (e.g., [35; 36; 37; 38; 39; 40]). One can refer to [41] for a recent review of the applications of genetic algorithms to forecasting prices of commodities. For a review of the applications of evolutionary algorithms for financial forecasting, one can refer to [42]. Evolutionary computation is based on the application of the principles of the theory of natural selection to an iterative optimization problem. The implementation of GP starts by the creation of an initial random population of \(M\) individuals (functions or programs), from which the algorithm selects the fittest ones (parents). In order to guarantee diversity in the population, we used the size three tournament method as the strategy for the selection of parents for replacement, meaning that the best two out of three individuals randomly selected are finally mated. Genetic operators (reproduction, crossover and mutation) are applied to the selected parents (\(N\)). Reproduction results in the copying of the function; crossover consists of exchanging random parts of selected pairs; and mutation involves substitution of some random part of a function with some other part. In each successive simulation (generation), a new and fitter offspring is generated. The fitness of each member of the population is evaluated by a loss function.