I'm starting to get the feeling that I'm going to run out of time learning how to program every language ever invented. Run out of time to trade, that is. My purpose in learning to program is to equip myself with curve-fitting tools that I can use in trading. The problem with learning something to help you do something else is that it's easy to get lost. Particularly in my case as I'm the type who says, "Oh, that's interesting ... I wonder how that works ... hmmm". I'm easily distracted. So much so that I must be forgetting to leave bread crumbs because I don't see them anymore. Either that or the algorithms are eating them so I'll never find my way back.
At present, my autodidact syllabus is covering C, with some forays into C++. This includes understanding the concept of makefiles, which is quite interesting really, and compiling programs so they can take arguments from the command line. Also on my short list is understanding the compiling process a bit better and getting a little cozy with Assembly language. It turns out that C was invented to abstract Assembly into a more human-readable form. There are some penalties for letting the compiler do your Assembly coding for you though, but we always have tradeoffs in programming.
To navigate the pixels on my screen, I've turned to using vi as my text editor. It's more gangsta than VIM, which I've come to determine is a tool of the linux crowd and a little too cute for my purposes. The VIM people are the same people who call tar files by another vile name, one that I cannot repeat here. It's time to create some space between us. Besides, vi makes me feel closer to my algorithms.
C is going to come in handy because of some libraries out there that have particular application to trading. These include QuantLib, the derivatives pricing library of functions, and libsvm, the award-winning support vector machine library. Both of these libraries have been implemented in R, but I'm going to take a peek at them under the hood first. It's just my way.
After this stint in C/C++, I'll be returning back to R. And touching on the perl, python, ruby troika. I'll also be periodically polishing my Unix program skills in awk, sed, grep and vi. This while I continue working on my dumb website aided by Ruby on Rails and its eco-system of haml, sass, compass, git, heroku, rspec, sinatra, coffeescript and jQuery. This is a partial list, of course.
With all these programming distractions, I can honestly say that options trading has been a very fine way of staying in the markets. You don't need to be transfixed to your price chart and you still get to make a little dinero. That is provided you know how to trade in the first place. We, being kind-hearted folk of good intention and well-meaning, will assume that as a given.
In my view, you'll complete your agenda barely in time for retirement, even though retirement will come late, because you spent useful hours tinkering with Ruby rather than investing. On Programming, just read Peter Norvig' s How to Learn Programming in 10 Years. The best programmers I know, and I have met a *lot* of good-to-great programmers in the places where I have worked, use one, two languages tops. Could be Python & Lisp, C++ & R, or pure C or C++. I could add I know people worth several hundred million dollars among them (these use only C++ and a bit of R). If you want to hack around, enjoy. Sure, you can spend 2 hours learning the basics of regexp as needed. If you want to make money, a very good command of {R| Python|Matlab} and {C|C++|Java} suffice. Trust me on this one, and send a check after you have some good algos.
ReplyDeleteAfter I complete my Grand Tour, I'm settling into the C/C++ & R neighborhood. Probably this year.
ReplyDeleteAs far as trading algorithms that will actually work with trading, I'm thinking this year I'll have a couple in place. Specifically, RBF support vector machines look most promising. These can be implemented in C/C++ or R. R is best for pre-processing the training/test sets, along with some awk that I'll likely use to finish the formatting.