A few years back I was looking into doing a lot of computer-assisted trading. At the time I didn't have a lot of money so I was trying to resort to free resources. So I stockpiled a lot of daily stock data and tried to work off of that. I am definitely a programmer and to some extent a good enough one that it gets me into trouble. I was writing a lot of auxiliary stuff not related to actually executing strategies. I needed it because I couldn't buy software at the time.
It looks like I now have that money so I'm looking into what off-the-shell stuff I can utilize so I spend my time coding strategies. I'd rather not again waste time writing UI code, for example. I am approaching it from the software side, which means a lot of code, a lot of testing, and preferably not ever manually executing orders. This is more work than some other trading styles but it brings me the most satisfaction while I do it.
What I was trying to do was write a screener; I figured this out after the fact. I know there are some things out there serving this role and I'm hoping one has enough features that I could piggy-back off of it as my platform. I thought I'd try this forum in particular since I imagine programmers have run into similar needs. Here are the things I feel I need:
1. Runs locally. I don't want to rely on a website.
2. Meta backtesting: Doing a backtest of a strategy that is trained/primed based on prior backtests
3. Flexible programming APIs that let me hit it from a variety of languages. Considering Java, C#, C++, and Python. Specifically I do not want to have to use the vendor's own scripting language.
4. Easily plug in my own algorithms to work upon the data.
5. Do searches/screens to glance for criteria based on functions in my code.
6. Can run my screen and execute trades against candidates, assuming I program it to behave that way. I don't expect it to be able to continually screen an entire market--at least not without a lot of network bandwidth--but I expect to be able to pick a group of ~30 items to track.
7. Some tactile feedback for the stuff I'm writing. I'd like the develop->backtest->trade process to be pretty smooth.
8. Can trade at least down to the 5 minute window. I can't imagine trying to go lower than 1 minute bars but...
9. [Candy] Level 2 processing support: more for the case of making larger decisions of my own, but I don't plan to do this right away.
10. Can handle at least equities and options with them.
11. Can mix data between the different things I can trade. Say, write code that can take one symbol and work it against another, or more specifically option data with the underlying equity.
12. Compose output from one strategy into another. In other words using an averaging function and a subtraction function, I should be able to click through them and make some output that looks like an MACD. This is just illustrative: I of course wouldn't ever bring up an MACD that way.
I figure there isn't anything out there to do everything but I'd like to nail as much as possible so I don't have to try to half-ass it.
Normal usage:
Analysis:
I expect to do a lot of backtesting and strategy investigation initially. It should be easy to get my code in and updated as I toy around. I hope I could run the backtest across an entire market, assuming I've cached all the data locally. I may try strategies that train themselves based on prior performance, which means a backtest that is actually backtesting across a rolling window, making a plan, then executing trades in the backtester. So that's the metabacktesting issue.
I imagine I'll try to play with learning algorithms again, although they kicked me in the pants last time I did this. I hope there I can export the data and some of the functions out for training the algorithms, as well as some output for fitness functions. The optimal thing of course is to use the backtester itself in training algorithms, but that's really pushing it.
Before blowing a ton of money I'd like to do live paper trading with it, where it's just using a dummy account. I assume this has more to do with the brokerage than the software.
Production:
I expect to leave my system on overnight to chew on stuff, and then execute during the day. Actually, if it turns out I am doing well enough I'd probably put it in a cloud node or two since that would be more robust. The licensing should be lenient for that kind of thing. The important thing in all this is having sufficient fail safe capabilities in the software--preferably as separate modular overrides. I can of course program them into my own stuff but I'd like something of an overseer that will shut off algorithms if something particularly stupid happens.
It looks like I now have that money so I'm looking into what off-the-shell stuff I can utilize so I spend my time coding strategies. I'd rather not again waste time writing UI code, for example. I am approaching it from the software side, which means a lot of code, a lot of testing, and preferably not ever manually executing orders. This is more work than some other trading styles but it brings me the most satisfaction while I do it.
What I was trying to do was write a screener; I figured this out after the fact. I know there are some things out there serving this role and I'm hoping one has enough features that I could piggy-back off of it as my platform. I thought I'd try this forum in particular since I imagine programmers have run into similar needs. Here are the things I feel I need:
1. Runs locally. I don't want to rely on a website.
2. Meta backtesting: Doing a backtest of a strategy that is trained/primed based on prior backtests
3. Flexible programming APIs that let me hit it from a variety of languages. Considering Java, C#, C++, and Python. Specifically I do not want to have to use the vendor's own scripting language.
4. Easily plug in my own algorithms to work upon the data.
5. Do searches/screens to glance for criteria based on functions in my code.
6. Can run my screen and execute trades against candidates, assuming I program it to behave that way. I don't expect it to be able to continually screen an entire market--at least not without a lot of network bandwidth--but I expect to be able to pick a group of ~30 items to track.
7. Some tactile feedback for the stuff I'm writing. I'd like the develop->backtest->trade process to be pretty smooth.
8. Can trade at least down to the 5 minute window. I can't imagine trying to go lower than 1 minute bars but...
9. [Candy] Level 2 processing support: more for the case of making larger decisions of my own, but I don't plan to do this right away.
10. Can handle at least equities and options with them.
11. Can mix data between the different things I can trade. Say, write code that can take one symbol and work it against another, or more specifically option data with the underlying equity.
12. Compose output from one strategy into another. In other words using an averaging function and a subtraction function, I should be able to click through them and make some output that looks like an MACD. This is just illustrative: I of course wouldn't ever bring up an MACD that way.
I figure there isn't anything out there to do everything but I'd like to nail as much as possible so I don't have to try to half-ass it.
Normal usage:
Analysis:
I expect to do a lot of backtesting and strategy investigation initially. It should be easy to get my code in and updated as I toy around. I hope I could run the backtest across an entire market, assuming I've cached all the data locally. I may try strategies that train themselves based on prior performance, which means a backtest that is actually backtesting across a rolling window, making a plan, then executing trades in the backtester. So that's the metabacktesting issue.
I imagine I'll try to play with learning algorithms again, although they kicked me in the pants last time I did this. I hope there I can export the data and some of the functions out for training the algorithms, as well as some output for fitness functions. The optimal thing of course is to use the backtester itself in training algorithms, but that's really pushing it.
Before blowing a ton of money I'd like to do live paper trading with it, where it's just using a dummy account. I assume this has more to do with the brokerage than the software.
Production:
I expect to leave my system on overnight to chew on stuff, and then execute during the day. Actually, if it turns out I am doing well enough I'd probably put it in a cloud node or two since that would be more robust. The licensing should be lenient for that kind of thing. The important thing in all this is having sufficient fail safe capabilities in the software--preferably as separate modular overrides. I can of course program them into my own stuff but I'd like something of an overseer that will shut off algorithms if something particularly stupid happens.