Portfolio Software: Plain English
Yesterday I wrote an early version of financial software to help users improve their investing portfolios. This software has the ability to solve financial problems in a very different way than taught in graduate-level finance classes. Rather than relying solely on a type of mathematics called statistical analysis, Sigma1 software uses techniques from computer science called artificial intelligence or AI. (I prefer the term machine intelligence because there is nothing artificial about the intelligence results produced by a solid AI algorithm. If you doubt this, I challenge you to beat Chessmaster 11 running on your PC… on max difficulty.)
My idea has been to develop a sophisticated program that would allow institutional investors such as fund managers to “plug in” their proprietary valuation models and come up with solid portfolios in minutes or hours, rather than days or weeks using brute-force techniques. As I was working, I realized that smaller “normal” investors could also benefit from a simplified version of Sigma1 software.
Rather than sell this lite version of portfolio-opt software I may provide a free version on a website. The free version would have limitations on both the number of securities and the “depth” of analysis and reporting. For example the user may only be able to enter a maximum of 20 securities in their current (or proposed) starting portfolio. The free web version would quickly suggest an asset-allocation mix of those securities that is (potentially) safer with the same expected return or (potentially) equally safe with a higher expected return.
If the free web version is popular enough, Sigma1 may introduce a paid web subscription service that allows a larger portfolio, a wider selection of securities, more detailed reports and even sample portfolios to “blend” with the investor’s favorite tickers.
Even after the free web version is released, I plan to refine the advanced institutional version of the software. I plan to use it to improve the composition of the Sigma1 proprietary trading fund. I also intend to develop a world-class product that institutional investors will want to have access to… for a very reasonable price.
At this time I have zero interest in sharing the source code or specific concepts underlying the current and future Sigma1 software. Many of these ideas stem from work in my undergrad engineering and computer science studies. They have developed in my graduate work in finance and engineering. The realization that the techniques I have developed for engineering, game-theory, poker and number theory apply most directly to portfolio construction and optimization hints at the possibility that I have hit upon one of those rare ideas that strike gold. Not academic gold; real “gold” with real financial value.
I love academic research and open-source software. I don’t intend to keep the concepts and code that Sigma1 is developing locked up forever. If the Sigma1 financial software is financially successful enough, I hope to release pieces of it to the open-source community over time. (Conversely, if the software does not ultimately find a lucrative market, I will eventually release it too 🙂 )
Portfolio Optimization Software: Tech Speak
Yesterday I wrote the key pieces of an algorithm to build and optimize securities portfolios. The remaining pieces: heuristics and selection should be relatively easy to code. The coding and testing was very quick 1) because I’ve written similar optimizers many times before, 2) because I had 2 days to think about it as I was driving and 3) because I wrote it in Ruby.
Based on previous experience (and depending on the complexity of the heuristics), run-times should be swift for portfolios of 500 securities or less. In previous research I’ve been able to use distributed computing when the heuristics/analysis dominated run-time. Generally the optimizer has not been the limiting factor for speed.
I plan to start with relatively simple heuristics to test the portfolio-optimization software. Likely the first test will merely compute the (near-optimal) efficient frontier for a basket of securities, plotting 3-year standard deviation of various portfolios on the frontier versus expected return. If I wish I may even compare the results to efficient frontiers constructed with classic methods using covariance matrices.
Once I create a Ruby prototype I plan to re-code the software in C/C++, both for execution speed and for the relative IP-protection provided by releasing only compiled binary executables.