Sorry to stick my oar in to your thread a little late in your experiment, I have been a silent visitor over the past months though!
No worries, it gets quite boring talking to myself. Interjections are appreciated.
Which broker(s)
What coding languages(s)
What other software are you using eg. backtesting, development, databases, etc
TradeStation is the broker I use for my automated strategy development and testing. Due to this, the coding language used is EasyLanguage. I have a subscription through them to Portfolio Maestro (as long as minimum trade criteria is met it is free...not free when I am developing and not live testing though
).
The original intent of Portfolio Maestro is to allow testing of multiple strategies simultaneously on a single account to determine how good/bad they work together. What I use it for though is to test one strategy on large numbers of stocks at the same time...saves a lot of time not having to manually go through and backtest each stock individually. That said, Portfolio Maestro has a good number of nuances that make it a PITA sometimes.
What stocks/sectors/countries
All US stocks, all sectors. For pretty much any of my strategies I develop I have a baseline criteria the stock needs to meet for it to be considered trade-able.
Baseline criteria is:
- $20.00 <= Previous day close <= $200.00
- Volume for the past 5 days have been >= 500,000 each day
Those criteria are occasionally modified slightly depending on the strategy, absolute min volume I typically consider is 350,000 / day and absolute min close I typically consider is $15.00. This cuts the stock pool down from about 9,000 to about 1,000 potential.
Each system I develop has a stock ranking criteria component which then takes these 1,000 and determines which ones are the better ones to trade for the strategy. For example with the current one I am testing I have determined when my scan indicates a rank value greater than 20 it is an acceptable candidate to trade. The number with rank values greater than this varies each day but seems to typically fall between 4-30.
I then apply my strategy to each of these stocks typically the night before and just let it run the next day. My strategies always have a limiter of some variety to keep me from entering more than my risk tolerance allows, so basically the first "x" stocks that have valid entries during the day are entered. The limiter I use is generally something along the lines of "if "x" positions are open, do not enter trade". The only time I enter in a number greater than intended is when multiple entries fire off on the same bar which brings me to:
What time frames do you look for signals on
I have been trying to get something intraday to work for me...generally looking for trades to last ~ 2-4 hours. I realize this doesn't really answer your question because really what I have been trying to do is determine where a stock is unlikely to go during the day based on the recent behavior of the stock. I then use this to set my stop loss and size my position. Next I look at where it is likely to go and set my target(s) where my exit code begins (trailing stop, limit sell based on time of day/immediate price action, etc.).
So to answer your question directly, I have my strategy set to run on 15 second bars currently, and this is typically what I test all my strategies at/run them at that are similar to this one. This is not actually what I would consider the timeframe I trade though...the timeframe is more...one day. I say this because, as soon as the day opens, my strategy already has determined my entry, stop loss, and target value(s) (for this particular strategy).
Why 15 seconds? After doing some research I found that with TradeStation it will only accept new orders every 15 seconds...this may have changed since I originally looked that up. But, this interval makes it unlikely that I enter in more trades than I have my risk tolerance set at, and it also helps reduce the risk of missing trade exits.
Due to the way TradeStation code runs (executes end of each bar), any trade I take is essentially completely exposed for one bar. If I were to trade on something like a 1 hour bar, my system may completely miss my target or stop loss due to this. Setting my interval all the way down to 15 seconds makes this a non-issue. I could set it at tick level but as I said, I believe my broker would just reject my order updates until the minimum time passes, and I honestly don't think my systems would run any better, so why bother?
I have looked at other specific time intervals with other strategies that consider recent price action for signals...generally ranging from 1-30 minutes.
how many data points do you backtest over
Depends on the strategy a bit. For intraday I generally do a backtest over the previous 4 months. Generally I pick random sets of ~ 100 stocks and run my strategy on them. I keep doing this with different sets of ~100 until I have either tested it on all ~1000 "trade-able" stocks or I have somewhere in the range of 500-1000 trades taken in the backtests. If I try to run many more than ~100 stocks at a time or over a longer lookback period than 4 months it will either take forever or crash Portfolio Maestro (or more often than not, take forever AND crash Portfolio Maestro right as it is finishing up).
If the results look reasonable from this I then take a handful of good and a handful of bad ones from the original backtest sets and run a few more tests using a larger time interval for the trades (typically 1-5 minutes depending on the strategy), and run them further back and only up to the start date of the original backtest start.
If results still look reasonable, I start running the scan and code each day and monitoring the results. This is where my "theoretical" curves come from. Then finally if they still look good I take them live.
I am less interested in the specifics of your strategy's and more the tools and tech setup you are using.
Probably wise...all you would get if I gave you the codes to my strategies is a smaller bank account.