This is part four in our series on creating a Euro futures scalping strategy. In the last article, “Testing A Euro Currency Futures Scalping Strategy, Part 3”, we combined a volatility filter along with a time based filter to remove unproductive trades. We found that trading during “quiet” hours of the day while avoiding both extreme low/high volatility days produced the best results. In this article I would like to nail down a stop value and then combine the rules into our strategy.
Testing Stop Value
First, I’m going to revert back to our baseline system and re-test several different stops. I briefly looked at them during the first article but did not provide any details. As I’m testing the stop values I’m going to be testing how well they perform and how robust they are. How am I going to test their robustness? I’m going to vary their input parameters to see how it affects the stop method’s performance. A robust rule will perform well under different input values. From there we can move on to testing the system on our OOS data.
- Hard stop
- ATR
- ATR Square Root
- Noise Tolerant Money Management Stop
The first stop to test is a simple hard stop. I’m going to use TradeStation’s optimization feature to test hard stops from $0 to $5,000 in increments of $250. The results are below with the stop value in dollars on the x-axis and the net profit generated by the system on the y-axis.
We can see that adding stops to the baseline system really hurts the performance until you get around $3,000. This is a huge stop for a system that only scalps the market. The next stop to test is a break-even stop. In this case I’m testing the threshold value from $0 to $1,000 in increments of $100. The results are below with the threshold value in dollars on the x-axis and the net profit generated by the system on the y-axis.
Well, this type of stop may help our performance we must remember this stop only becomes active after we show positive equity on our trade. That means this stop can’t be used alone as a trade can move directly against us and this stop will not even be active. That’s not much help. The next stop to test is a dollar trailing stop. In this case I’m testing a stop value from $0 to $1,000 in increments of $100. The results are below with the dollar trailing stop on the x-axis and the net profit generated by the system on the y-axis.
Not much help here as well. I’m noticing a pattern here. Our testing of a stop value on the baseline system does not seem to be producing very helpful results. While it may seem a bit strange, I often will test the stop value first on the baseline in order to discover which stop performs better than others. This is all to help avoid over fitting our system to the historical data. But it’s not always possible to do. This is one of those cases. We will be required to test our stop values on the final system.
To test the stop on the final system we are going to use TradeStation’s optimization feature, as we did above, and we will be looking for two things. First, is there a stable region where our optimized parameter falls? Second, does the parameter appear robust? In short, we are looking to make sure that the parameter remains profitable over several values. This helps demonstrate robustness in our particular stop we are testing. We also want to be sure not to pick an outlier just because it makes our system performance look much better. We want to pick a mid-point value within a stable range.
Let’s first look again at the hard stop value.
This looks a little better. We made the stop loss a little smaller by bringing it down from $3,000 to $2,000. If you risk 2% per trade this means we would ideally have a $100,000 trading account to trade such a system. While this is a step in the right direction it does not seem very realistic.
Here is the dollar trailing graph.
With the dollar trailing we can see a stable range between $600 and $1,000. So this appears to be a robust stop and a midpoint value of $800 is better than our original $2,000 stop. But can we do any better?
Next is our break even stop.
With the break even stop at $300 might help our system but remember, the break even only activates when we have an open profit of $300. We still have drawdowns in the $700, $800 and $1,000 dollar range!
I went on to test several other stops including ATR trailing stops, ATR stops, ATR Square Root stops and even Noise Tolerant Money Management Stops. However, none really looked that promising.
Stops can really be tricky when trying to add them to a trading system. As for now, I’m hitting a wall with this one. I’ve looked at the losing trades for this system and the median maximum adverse excursion is $125. The average losing trade is $78. Looking at the largest losing trades we have only 8 that are greater than $1,000. I guess the point I’m making is this: the system has these characteristics….
- A stop needs plenty of room to play out.
- A hard stop is for a catastrophic loss while most trades are taken out with our dynamic exit at a much lower loss.
This looks like the classic example where we make money for years on a system only to have a couple of $2,000 stops really take a bite out of our profits. This does not sit well with me. We should attempt to find a better stop and or entry point before we move on to testing our system on the OOS data.
One area which has not been explored is enhancing the entry technique. Currently when a setup occurs we just open a trade at the open of the next bar. Perhaps buying on a limit order at the low of the last bar or waiting for a deeper pullback after the setup would be more desirable. Maybe buying into strength after a setup occurs. These are all ideas worth testing.
I would love to hear any recommendations. Feel free to leave a comment below and let’s see if we can find a productive stop and/or entry technique!
Other Articles In This Series
Testing A Euro Currency Futures Scalping Strategy, Part 1
Testing A Euro Currency Futures Scalping Strategy, Part 2
Testing A Euro Currency Futures Scalping Strategy, Part 3
Testing A Euro Currency Futures Scalping Strategy, Part 4 Testing A Euro Currency Futures Scalping Strategy, Part 5
See here’s the problem with systems that try to mean-revert the noise.
Consider a sine wave with some random errors in it, and some strategy that wants to buy an extreme dip (ala what Larry Connors loves doing and has a zillion variations of). You may or may not get a few of those opportunities on the way up. Something dips, you buy it, it resumes its upward trend, you’re happy.
Here’s the problem though–the way DOWN has a lot of those extreme dips, and it only takes a few to just send your equity curve plummeting.
And since mean reverting trades generally “come back”, it means that at any given point, assuming you have an edge, to use a stop loss means to permanently lock in a loser, rather than giving it the possibility of coming back.
In other words, the way to not get hit by those catastrophic trades in the first place is to be able to properly identify when a system is rangebound and good for trading with oscillators to begin with, or whether you’re in a trend and shouldn’t trade against it to begin with.
The question is what is the best indicator for accurately telling you “oh hey this is just a choppy market and you should trade oscillators on it until the cows come home” or “this is a massive trend and if you trade against it, you’re in for a world of hurt” — *BEFORE* you put on a position.
I’m of the opinion that even the most simplistic indicators deployed at the right time (EG a simple SMA crossover in a trend) would do better than even the most sophisticated indicators deployed at the wrong time (EG some sort of DSP type oscillator such as the ones by John Ehlers, deployed against a strong trend).
The question is what indicator is the best one for telling you “this might be a downtrend. You probably don’t want to try and revert this.”
Thanks for your input Ilya. This is the very concept I use on other mean reverting strategies – like Connors RSI. I’ll often use a 200-period SMA on a daily chart to give me the overall trend. I will then only buy pullbacks during an uptrend. This can have a huge improvement on the performance. Not sure why I did not apply that here. A choppy market indicator (TSI for example) may be a big help as well. It’s worth looking into.
Even with the 200-day SMA, I’m not confident in that thing at all. Here’s why. Imagine a sine wave that has a crest at 50 days and the trough at 150 days, and hits the 200 day SMA at 0, 100, and 200 days.
From days 50 to 100, a “buy the dip” would buy at least once (and maybe quite a few times if you have no max position controls) right until the price crashes into the 200-day SMA.
Basically, if you just say “oh hey price is above the 200 day SMA”, how do you know if the price is moving away from the 200-day SMA (aka trending in the long direction) or diving headlong towards and possibly through that critical 200-day SMA.
Also, by TSI, do you mean True Strength Index, or Trend Strength Index? I’ve seen something called the Trend Strength Index on engineering-returns.com . Something about a 100-day average of 10-day ATRs.
The 200-day SMA was just an example. I’m not sure if it will work here. It might. It’s worth testing. However, I will tell you I do have a profitable trading system that uses the 200-day SMA as a regime filter. It trades the ES and made a new equity high today. In fact, the 200-day SMA has helped me on many systems. In regards to TSI – that would be the Trend Strength Indicator from Engineering Returns. I have an article that uses it here: http://systemtradersuccess.com/two-dimensional-market-environment-filter/
You mean Aurora? Well, if you say so (I have no way of gauging its effectiveness without seeing the strategy =P, and I’m kind of in a bit of a cash rut at the moment). I’m hoping, in fact, that you’ll do a bit more coverage on trading at faster-than-daily frequencies (EG 5 minute bars), and what the differences are that apply there.
But yes, I should probably implement the trend strength index soon for R (working on implementing some Ehlers at the moment).
Yes, Aurora Pro uses it. That strategy continues to make new equity highs into 2014. I probably should add begin focusing more on intraday strategies. There are only a few examples on this site such as firststrike and EC scalp.
One other stop technique I have had some good results with is to use successive last swing points as stop points. Also a variation is to use the high to low value in a swing times some multiple.
Thanks for the idea. I have a feeling we are often buying at or near the swing low on each trade so the stop will be tight and hit very often. I have a feeling stops, in general, are not going to actually help much. Adding a setup condition and/or adding a another market filter may produce better results.
Jeff,
Your studies are always interesting.
One comment, although I know you don’t have the space to show all the results of your back testing, however, my concern is with using profit only as a fitness test is a bit simplistic. I do understand that you did give mention to drawdown, etc.
Hence, you may want to consider a fitness test that is more descriptive of test results, i.e., profit/max drawdown, etc.
Thanks for your efforts. They are greatly appreciated.
Red
Agreed on quite a few ends. The tradeStats function in quantstrat (an R backtesting library as capable as tradeStation for research, though no official execution capabilities that I know of) has quite a few of these. SharpeRatio on trade profit (avg PL/sd(PL)), max DD, max equity, net profit to max DD, profit factor, percent positive, etc. etc. etc.
Thanks Red. I do use other metrics and maybe that got a bit lost in this article series. If you find other articles on this site you’ll see I’m a big fan of Profit Factor, time between new equity highs and average profit per trade. But you’re right – net profit is not all there is. Oh, I also like to look at the equity curve. One glance and you can tell if the system is worth your time or not!
What about using the slope of an sma, or in this case the envelope, to help manage risk i.e., only take long trades when the slope is positive or flat, & only take short trades when the slope is negative or flat. I’ve noticed most of the losers, as you would expect, are when the market is trending, & the best entries are when the slope of the envelope is relatively flat, ie a range-bound market. You might have to make the envelope a bit “slower” because if its to responsive to the market the slopes might filter out to many trades. Another idea is to wait to enter the trade AFTER a 5 min bar closes back inside the envelope. Some kind of time based stop would also be interesting to test, since most of the winners turn around pretty quickly. Maybe something like if P/L isnt positive after X # of bars exit at loss. Just a couple ideas I had when doing my own testing.
Interesting ideas Ben. I’ll put this on my list of things to investigate. Thanks!
I’m sensing s theme to a lot of your research: the urge to put in a stop for every system. 🙂 in the words of Howard Bandy, “Stops Hurt Systems.” Well at least for most mean-reverting systems. Many systems like this just have to deal with the concept of many small winners punctuated by a few jaw-dropping losers. When I start introducing stops on an MR system I’m developing, I’ll often get ridiculously large stops that are rarely hit as being optimal (like 40%), with anything else degrading perofrmance. As Ilya alluded to, MR systems tend to revert, even after a catastrophic event. Sometimes you just have to “go stoples”, and use proper position sizing techniques to avoid too much pain.