I enjoy optimizing methods to solve puzzles. One of my favorite projects as an undergrad was The 8 Puzzle Composer: Hearing the Solution. Writing the code to solve the puzzle involved trying various heuristics to trim the solution space in order to speed up and generalize for a higher and higher term N x M puzzle.
My first introduction to trading and investing came while working for Delphi Economics (now Delphi Fund). Their software package, Viking, was one of the first to allow people to test and optimize strategies on their home PC. At the time the program offered a powerful, yet still somewhat limited ability for testing. Regardless, I became a power user, tester, and eventually wrote the English language manual and user guide complete with sample code to help customers get started testing their own ideas.
Many things have changed since the late 1980s. Computing and network technology have grown exponentially. Historical and real time financial data are readily available from multiple sources. Trades can be executed via the touch of a finger on electro-sensitive glass smaller than a pack of cigarettes.
Shortly after meeting my wife in early 2009, I found myself with a new motivation to leverage the skills I had developed over the years into a successful investment methodology. I began by looking at some of the commercially available options for testing trading strategies. My thinking at the time was that I could save time by not reinventing the wheel. Yet, while impressive in their own right I found all of them incomplete on some level. Invariably I would reach a point where I wanted to try out an idea but couldn’t due to the system’s limitations.
There was clearly room for innovation. So I began trying out some strategies with my own code. I quickly discovered that implementing my own software offered tremendous freedom to test out new ideas. Some prototypes in Perl began showing significant positive annual return. Those results inspired faster versions written in C which in turn yielded even greater gains. Revisions have continued along with increases in both computational and portfolio performance. Current versions employ a threaded queue architecture to optimize dozens of multidimensional variables over multiple time frames. Beta versions already under development leverage the innovation of OpenCL on GPU clusters.