Trading in the FX market using mechanical trading strategies

Credit card sized computers in trading: Backtesting using the ODROID-XU4

We are entering an amazing age of cheap, low wattage, high processing power computers that promises to greatly increase our ability to perform computational tasks while only consuming a fraction of the power at only a fraction of the cost. With the advent of decently powered credit card sized computers it is worth it to ask ourselves if these setups can be used for trading. Through this series of posts centered around these small, powerful and dirt cheap computers we will be venturing into a new era for the creation, evaluation and usage of trading strategies on these novel computer platforms. Today we are going to start this journey with the ODROID-XU4, I am going to talk about how I have setup this computer for back-testing and how it compares to a modern i7-4770K processor when performing this task. I will also comment on why I see these small computers as revolutionary and how we will be using them within the Asirikuy community.

–

–

Small cheap computers have seen a huge rise within the past several years, mostly thanks to the Raspberry pi computer which was the first widely used computational platform that was able to drop the cost of a computer by an order of magnitude. The initial Raspberry Pi and the computers that followed were decent pieces of hardware but hopelessly low powered for applications like trading where you want to have at least some minimum level of performance to be able to do something useful. Although these computers were not useful for actual trading or back-testing they did show that ARM based processors could have much better performance per watt when compared with traditional x86/amd64 architectures. It was only earlier this year that the first decently cheap and good performing credit card sized computers came to the market with the Raspberry Pi B+ 2 and the ODROID computers taking center stage. The most highly powered computer I have found – the ODROID-XU4 – is the one we will be discussing for the rest of this post.

The ODROID-XU4 carries a mean punch (read more here). It costs 75 USD, consumes around 15W of power (at constant maximum load), has 2Gb of RAM and an octa-core ARM processor in a big.little configuration. The processors in terms of total GFlops is alike having 1.5 i7-4770K cores although power consumption is just a fraction of what you would experience with this processor which consumes around 84W (not counting the power consumption of the motherboard and other parts as well). Overall my i7-4770K setup consumes around 150W without any peripherals while the equivalent performance using ODROID-XU4 computers would be close to 70W (so less than half the power consumption). The ODROID-XU4 also runs Ubuntu linux by default (although you could potentially use other distributions) within either an eMMC or a micro SD card. I carried my benchmarks using a micro SD card (as I had no eMMC modules available) but you can certainly use an eMMC to get a 10x speed in the IO of the device.

–

–

Setting up our Asirikuy back-testing software on the ODROID-XU4 was not very difficult (thanks a lot to Steve at Asirikuy who had already built our F4 programming framework on a Beagle Bone Black, making it very easy for me to follow). Thanks to the fact that our programming framework is cross platform it was just a matter of making a few modifications, building the binaries on this new platform using gmake and starting to make some back-testing runs using our python back-tester. The results of one of our benchmark single-core back-tests (a sample back-test carried out in the ODROID-XU4 is shown above — that’s the ODROID’s Ubuntu desktop) were quite good with the best times clocked at 107 seconds vs 29 seconds for the i7-4770K processor. This means that the odroid cores are a bit less than 1/3 as fast as a single i7-4770K core in this back-testing example meaning that the entire card should give performance in the range of around 2 i7 cores, which is around what we would expect if we considered the GFlop capabilities of the ODROID Vs the i7 processor.

Since single system single-core tests worked so well it was now a matter of cranking it up a notch to see if the ODROID-XU4 was able to successfully carry out multi-core optimizations using its entire capabilities. I decided to test this using our machine learning cloud mining script which makes the ODROID-XU4 request an optimization run for a machine learning strategy that has in the order of 5000-15000 tests. I then recompiled the F4 framework with OpenMP support and proceeded to execute the script. OpenMP works flawlessly on the ODROID-XU4 and I was able to fully load the card in the optimization process. After more than 28 hours running the card is still punching out tests from this optimization process at full load. Since an i7 takes around two days to carry out 10,000 tests using these machine learning systems and all of its 8 logic cores the fact that the ODROID-XU4 takes around 5 times longer points to the fact that in reality the performance when compared to the i7 is around 5 times less. This matches our previous results with single back-testing.

–

–

An encouraging fact from these experiments is also that I wasn’t even running the ODROID-XU4 at its potential best. I did these tests using a class 10 micro SD card when the ODROID-XU4 can use eMMC memory for an improvement of around 10x in IO compared to the micro SD. This means that I would potentially gain a lot in the IO of the device which would potentially increase performance by an additional 10-15% if I was using the eMMC card instead of the micro SD. However performance is already quite impressive for such a little and cheap device and I am now certain that you can build a low power data mining rig for the creation of machine learning strategies using these computers. Since ARM processors are only getting better and better with each passing year I am sure that in a few years it will become much more popular. Of course to do this you need to have a professional programming framework that is able to be cross-platform compatible (because you need to compile things in ARM and take advantage of compiler optimizations to really get the full potential).

With back-testing now being a reality using this ARM computer the question is now whether this little computer can perform well as a live trading platform. This will be the topic of my next post on this series. If you would like to learn more about programming frameworks and how you too can carry out trading simulations and live trade from non-Windows systems please consider joining Asirikuy.com, a website filled with educational videos, trading systems, development and a sound, honest and transparent approach towards automated trading.

Thanks for writing. The GPU processing is clearly much much faster, but it can only be used for a limited set of purposes while this allows for universal usage. On a GPU we currently can do price action based system mining (using our pKantu software) but for machine learning system mining we need to use something like an ARM, amd64 or x86 architecture. The ODROID-XU4 allows for general purpose back-testing and live trading which we cannot do with a GPU. Do let me know if you have other questions,