Tuesday
Oct112011
Why should I learn a programming language?
Guest post written by Jev Kuznetsov. Kuznetsov runs a quantitative volatility strategy for Bigger Capital. You can find his blog right here.
People are bad at math. Some are better than others, but who can calculate ln(sqrt(345)*34)^3.4 in less than 1/1000th of a second? Even the simplest computer can calculate at a rate million times faster than a human, in fact this is the main reason computers have been invented. To use the full capacity of a computer the user should learn how to progam it.
People are quickly bored. Imagine you'd have to download around 1500 excel sheets of stock data and then combine them together? Unless you have an autistic disorder you would probably get bored to death. A computer would not mind doing the task, but you'd have to program it.
Another example is reaction speed. It takes ages measured in computer time, for a human to see a price change in a stock and then just press a button.Curious about how fast you can react? Take a test here. Your reaction speed should be around 0.2s, while even a simple microcontroller (the ones you’ll find almost in any electronic gadget) will do the same task in 0.0000001s. Want to compete? If you know what action should be taken in a certain sitiuation, a computer can do the job for you a couple of million times faster, but still you need to tell it what to do by means of programming.
Still, even with all that raw computer power nowadays, measured in gigahertz and terabytes, the 'heart' of computers haven't changed much since their invention: they are still not much more than 'calculators'. Yes, we've come a long way in terms of size factor, power consumption, user friendliness and price, but still, computers are incapable of creative thinking, adaptation to new environments and unpredictable situations. A cockroach is more intelligent measured by these standards than the most advanced computer. By combining the human power of creative thinking with the raw processing power of a computer a trader can become supertrader, achieving a consistent return.Financial markets are just like nature, the smartest ones with the best skills for the current (and ever changing) environment survive. The ones that do not adapt get extinct at some point.
Using computers for trading today is a fact of life, and a trader has got no choice but to adapt. Who does not use some form of charting tool to find entry and exit points or an excel sheet to keep track of performance? Not much algorithm here, but it is already a form of computer-assisted trading. Another level is to purchase special purpose software, like spread trading tools. Often it includes some form of 'black box' logic, so you can only hope that it works and continues to work in the future. But why not move to the top of the food chain and learn how to process incredible amounts of data, design own algorithms, backtest strategies, automatically place hundreds of orders and analyze trading performance? By writing your own tools and programs, you'll be able to quickly adapt to every new market environment.
Your time invested in learning programming techniques will have a ten-fold return in time saved from doing boring daily trading tasks.
Coming next: which programming language to choose?
Jev
Reader Comments (10)
Something that I have been interested in doing but have no idea where to start. I am looking forward to reading more!
Eric,
There will be follow up to this post with some videos. Should be interesting.
Trying to learn a little VBA myself.
@Norman: VBA? maybe you should reconsider. If you value your time, invest it in something that is scalable. This will be the topic of my coming post. To make a long story short, Matlab and Python are the two languages that you could choose from, based on your available time and budget. Both will give you 10x the power you get with VBA, with comparable learning curve.
Jev,
Your answer is very valu added. Love it.
For rapid development and prototyping of strategies Matlab, Amibroker seems decent. Python is ok, but it's trickier to set-up. Time.
Python and Resolver System is pretty good for rapid proto typing of trading strategies. http://www.resolversystems.com/landing/fp-quant.php
Jev, thanks for the feedback.
Learning any Object Oriented language is a good idea.. Once you learn one, you'll easy pickup on the other (if needed) ..
As technology is ever evolving, so will the problems that plague our operational systems. Learning how to handle the day to day operations of a system while knowing how to properly troubleshoot errors are a typical function of an IT specialist. Having the knowledge of a programming language could allow a specialist the abilities edit, create, or bypass troubled code in their systems.