Master Thesis Defence by Filip Bruman
An evaluation of parallelized financial trading strategies on commodity, shared memory multi processors by Filip Bruman
Morten Frank, Nordea
Marcos Vaz Salles, DIKU
Quantitative trading utilizes trading strategies, which are computer programs that analyzes market data based on a set rules. Whenever a pattern matching the rules the strategy enters or exits a trade. Before make use of a trading strategy, traders test its settings on historic data to evaluate its performance and thereby project the future performance of the strategy. Being able to test strategies with a short turnaround time is useful for being able to try out many different settings.
In this thesis trading strategies are implemented in a general purpose programming language, parallelized utilizing coarse and fine-grained parallelization, running on commodity hardware, with contemporary multi-core processors enabling traders, with limited knowledge or experience of programming, to reduce the time to solution for testing of trading strategies.
Strategies are parallelized utilizing coarse and fine-grained parallelization, using threads and auto-vectorization respectively, and experimentally evaluated with a set of varying sizes of synthesized data simulating stock market data, as well as a dataset containing real market data.
Strategies were coarse and fine-grained parallelized with mixed results. One strategy got a speedup close to 20x on 32 cores. While another strategy had a merely 4x speedup on the same dataset size and 32 cores. Coarse-grained parallelization was beneficial to all strategies.
Fine-grained parallelization could in some cases have a significantly inhibiting effect on a strategy, close to 25% compared to a non-parallelized version.
To parallelize trading strategies enables traders to get a quicker response on testing workflow. Using commodity hardware, multi-core processors and a shared memory model can reduce testing significantly in some cases. Care should be taken in applying especially fine-grained parallelization to control its application particularly when external libraries are used and auto-vectorization is applied to all code.