reference point, highlighting the percentage of instances solved with the greedy search heuristic as a function of problem size.

  ----------------- ---------------- -------------------------- ------------------------ --------------- ---------------- -------------------------------
   [**Problem**]{}                    [**Number of assets**]{}                                                            
    [**size**]{}     [**Greedy**]{}       [**Forward**]{}        [**in the optimal**]{}                                   
     [**$N$**]{}     [**Search**]{}      [**Annealing**]{}         [**portfolio**]{}      [**$J_F$**]{}   [**$s_p$**]{}    [**$\rho$ ($\textrm{s}$)**]{}
         24               80%                   100%                  10 ($-3,+$4)          3-7(0.5)           $-$                      $-$
         30               90%                   100%                  12 ($-5,+$7)          3-7(0.5)           $-$                      $-$
         36               93%                   97%                   13 ($-7,+$7)          3-7(0.5)           $-$                      $-$
         42               70%                   90%                   16 ($-7,+6$)          5-8(0.5)      0.32-0.5(0.02)              1-15(7)
         48               47%                   87%                   17 ($-6,+5$)          5-8(0.5)      0.32-0.5(0.02)              1-15(7)
         54               60%                   60%                  19 ($-7,+12$)          5-8(0.5)      0.32-0.5(0.02)              1-15(7)
         60               57%                   30%                  23 ($-13,+15$)         6-9(0.5)      0.32-0.5(0.02)              1-15(7)
  ----------------- ---------------- -------------------------- ------------------------ --------------- ---------------- -------------------------------

  :  []{data-label="tab:GreedySearchAndParams"}

\

#### Genetic Algorithm

We choose Genetic Algorithm (GA) as a classical benchmark heuristics. Genetic Algorithms are adaptive methods of searching a solution space by applying operators modelled after the natural genetic inheritance and simulating the Darwinian struggle for survival. There is a rich history of GA applications to solving portfolio optimization problems [@lin2005genetic; @oh2005using], including recent researches [@Kondratyev2017risk; @kshatriya2018genetic] that explored a range of new portfolio optimization use cases.

A GA performs a multi-directional search by maintaining a population of proposed solutions (called chromosomes) for a given problem. Each solution 