This thesis compares the profitability of trading rules evolved by a single population genetic program (GP), a co-operative co-evolved GP, and a competitive co-evolved GP. Profitability was determined by trading thirteen listed shares on the Johannesburg Stock Exchange (JSE) over a period of April 2003 to June 2008. The GP parameters were optimised using a response surface methodology known as factorial design. A compound excess return over the buy-and-hold strategy was determined as the preferred fitness function via an empirical process. Various selection strategies to select individuals for the crossover and mutation operators were compared. It was found rank selection was the preferred strategy. The optimised GPs were tested on market data using a real world fee structure. The results were compared to a buy-and-hold strategy and a random-walk. The results of this thesis show that the co-operative co-evolved GP generates trading rules that perform significantly worse than a single population GP and a competitively co-evolved GP. The results also show that a competitive co-evolved GP and the single population GP produce similar trading rules. The evolved trading rules significantly outperform the buy-and-hold strategy when the market, including fees, was trending downwards. No significant difference was found between the buy-and-hold strategy, the competitive co-evolved GP, and single population GP when the market (including fees) was trending upwards.