Can anyone suggest me few tasks [like implement foo algorithm], so that I can directly jump into those tasks during my free time
Sorry the interface was thrown together over a weekend (The actual back-end application was the primary focus for the last year as it was just me looking at it via command line) and quickly designed it with a large AJAX load at the beginning, I'll eventually change it to a static load then do ajax polling to update the data.
I cannot recommend any particular reading sources as I've been working with my financial buddies, that have been feeding me tips and doing my own discovery on the internet.
This was just a side project of mine but has turned into a really nice application. It is always calculating the better strategies (out of over 50 possible different methods/functions with variables ranging from 0-260 that are used to indicate open and close signals in any number of combinations). It has improved its strategy over the last week taking it from estimating ~60% to ~70% gains YTD. I have no doubt it will eventually get over 100%.
I'd love to collaborate with anyone wanting to get into this stuff as I'm flying solo.
Now I've been downloading and recording tick changes from my broker, Optionshouse.com.
So the system is built around the ~50 different indicators and oscillators that I've found the formulas for generating.
These "methods" are variable driven, meaning each method could have 1 to 4 variables ranging between 0.0001 to 260.
The current testing platform that it self manages has the end goal to find the highest gain after commissions using a combination of any of these methods for opens and closes.
Considering the __massive__ amount of possible combinations of these methods, the system has two testing suites it runs, the first round of testing is a simple test suite that only sums the gain it would get using those methods over the last YTD. This doesn't mean that the highest here will be the best combination in the end as commissions will bite you if you don't keep an eye on them. We simply only collect sum of gains because of the MASSIVE amount of tests we have to run. This cuts down on days/weeks/months of computation time.
So it will increment through the blocks (two sets of combinations, one for open, one for close) of functions typically by 1000, so it will start testing at #1, then skip 1000 of them, test #1001, rinse and repeat till its ran through the whole list (this is broken out across 5 machines around my condo, and multi threaded to utilize every core minus 1 of each machine, I have roughly 40 cores working on this system).
Once it has identified the best ~25% of raw gain increment points, it will then start incrementing forward and backward around those starting points as long as the raw gain is increasing and not showing a change in direction (I use a mixture of a momentum formula and P SAR to determine the change in direction as you will get some noise and a quick change could make you miss gold on the other side because of a slight fluctuation). So while all these are being ran, the results get funneled back into the job queue for the second half of the testing suite.
This is also distributed across all the machines.
The second half then runs the full test suite on each combination of methods to recreate the market verbatim for the last YTD and determine everything, gains, share quantity, p/l, commissions spent, highest equity, ect.
Finally all this data is put back into the job queue once again to be sorted to find the highest net gains after commissions.
The winning methods are finally stored in the datastore to be accessed by the actual stock trading platform that will use this data during trading hours to execute trades accordingly.
So from start to finish the application handles and manages, what tests it wants to run, can determine the best strategy to use and execute the strategies on its own.
I tried to keep it very basic explanation, there is a lot of other things that go on, to make this all work flawlessly. I do want to thank 0MQ and Gearman for playing vital roles in work distribution and message queuing amongst the worker threads.
I do highly recommend that if anyone every wants to truly learn how to scale an application to build a algo trading system on limited hardware and try to squeeze EVERY millisecond you can out of it. (I've rebuilt it from the ground up numerous times).
Actually typing this out makes me see some similarities to a map and reduce method in some ways as well.
Optionshouse has a nice one that has a XML ajax interface.
VSE from marketwatch is a bit older but can also be done.
I've wrote APIs for both.
edit: i'm refering to algorithmic trading v gambling not HFT.
You're right that potential returns are much higher on real markets, purely because there's far more money traded on real markets. On the other hand entry to "real markets" is much more expensive, Betfair is fairly cheap to enter and don't charge a per-trade commission. Plus there are more market inefficiency on Betfair that don't exist in more developed markets.
The site is still building critical mass, but most of the current users are experienced quants & HF traders. (Disclaimer: I launched the site)
Low-latency trading though costs everyone. Nobody actually needs anything faster than a fill in a blink of an eye. The only people who think they do really need smarter match engines or to stop taking advantage of people
If anyone knows of good high-level reading material on the subject, I'd appreciate a link so I can spare you more dumb questions.
I admit to having drunk some of Mark Cuban's Kool-Aid, as well as Jon Stewart's and that of some other liberal sources. Their argument, as far as I understand, is that HFT doesn't provide value proportionate with that which it extracts from a system designed to connect investors with entrepreneurs.
The idea has an appealing simplicity, especially given recent history, but don't know very much about markets, so I thought I'd ask people on the other side of the debate for their take.
How does one prevent a catastrophy that may result from "rogue algorithms" that are far worse than Infinium's? And is such risk truly worth it?
High-Frequency Trading: A Practical Guide to Algorithmic Strategies and Trading Systems http://www.amazon.com/gp/product/0470563761
Inside the Black Box: The Simple Truth About Quantitative Trading http://www.amazon.com/gp/product/0470432063
Quantitative Trading: How to Build Your Own Algorithmic Trading Business http://www.amazon.com/gp/product/0470284889
I really liked Inside the Black Box.
I didn't find I learned or enjoyed High-Frequency trading that much though.
Algo trading is probably a much better option: basically trading off the back of quant/stat analysis you have done with respect to prices (or relative prices). You'll learn lots about whatever contracts/instruments/markets you're interested in, plus get to flex your geeky skills. And you can do it from a laptop at home over a regular intenet connection with some cheap, if not free, trading platform or api.
Here is an article about about wall street programmers leaving the big boys to go at it alone.
http://www.forbes.com/2010/07/28/high-frequency-trading-pers...
* The need for speed, at every level of the architecture (network, tcp/ip, hardware, app)
* Reducing order (send/ack) round-trip times, this generally means putting your servers in a data cetre as close to the exchange as possible (co-located, if the exchange offers it). If your trading across multiple exchanges simultaneously it gets trickier.
* Sourcing market data - can you source direct from the exchange, rather than through a 3rd party like Reuters? Again, it comes down to how fast you can re-act to the market.
* Back-testing - you need historical data to test a model, then you need a way of testing the model - what are you going to test against? How are you going to simulate the exchange?
* Expense - it's expensive - market data, co-location etc etc all costs, as others suggested. HFT is generally short term positions, with some arbitrage strategies holding positions for less than a few milliseconds. A medium term (intra-day) type strategy requires less intensive (expensive) technology as your not trading to capture market prices that might only be extant for a few milliseconds.