I guess I need to bring this issue up again.
Let's take BasicHiLoLimit strategy by DrKoch, or any other strategy which generates high number of limit entry orders for almost every bar. Testing it as is, without the position priority set, gives grossly incorrect (too optimistic) results. The reason being is that with the limit buy order, when the stock gaps down, we're guaranteed to get an execution at the open, which in most cases would be very unfavorable for that kind of a strategy (bottom fishing).
Let's say we have 20% equity position sizing, 1,000 signals for the given bar and 50 of those stocks gap down. In real life we're guaranteed to get 100% of our 100%/20%=5 maximum available executions from that pool of 50 gaped down stocks. However, without the priority set, the chances to enter one of those unfavorable trades are being reduced by WL to only 50/1,000=0.5%. More than that, the same problem persists
even when using MonteCarlo trade randomizer, because, again, the trades will be selected randomly from the pool of 1,000 trade signals without any respect to what could've/should've happened
if trade signals from that pool of 1,000 were executed in real life for sufficiently high number of trade sequences.
I understand that the problem have been discussed before, but I don't think there's any reliable solution available at the moment. I'm not sure how the prevously mentioned TIntraDay works in terms of all memory and I/O overhead and if we can get that solution available any time soon...
I was thinking that one way to fix it without switching to intraday data would be to generate and store some additional information along with each daily bar. Essentially what we need is a sequence of new
alternating highs and lows for every day with timestamps, something like
09:30 LOW 15.10
11:30 HIGH 16.75
14:00 LOW 15.05
...in addition to your standard OHLC and Volume. In most cases there would be just a handful of additional data points for each bar.
The problem is that kind of data is not available from Fidelity, and even though the algorithm to extract it is very simple, I'm not sure how to generate it on the fly when needed (or when downloading the data update). Again the idea being that we don't want to suck all of the intraday data into memory when backtesting just to answer the question which stock dropped to the limit price first.
EDIT: This is what a yearly profit probability chart looks like for the slightly modified (single position per symbol) HiLoLimit strategy:
Chance of break even is 98.90%... Sign me up!
At the same time, an informal estimate of unfavorable trades outside of MonteCarlo tool gives the chance of break even somewhere below 50%.