I remember when I first got into trading and algo trading. Everything was a mystery:
· What kind of signals should I use for entry?
· What kind of stop losses should I use?
· What method of position sizing is best?
The list went on and on. So much to learn!
But for one of those questions, the answer I heard over and over again was clear:
“For stop losses, ALWAYS use volatility stops with Average True Range (ATR). Only fools and unsophisticated traders use dollar based stops!”
So, of course, ATR stops are what I used. It made sense, after all. The stop loss was based on market conditions – bigger stops in more volatile conditions, smaller stops during small volatility times.
I never questioned it. Maybe I should have.
Truth be told, I always had a dislike for volatility (ATR) based stops. Sometimes, the stop was huge in dollar terms. Other times, it was minuscule. It did not feel right to me at times.
Here is an example of what I mean. “Conventional wisdom” I saw in many places said “set your stop at a multiple of 3 times the 14 period Average True Range.” Here is what that approach looked like over the past 5 years, for Crude Oil, Gold and the mini S&P:
I’m sorry, but stops at the dollar values highlighted in yellow scare the bejeebers out of me! Even the minimum values are kind of high.
That’s conventional wisdom for you, I suppose…
Here’s another good example of the issue with ATR stops. Assume you have a $20K account, and trade 1 ES contract. You use an ATR stop with a multiplier of 0.5. So, in mid-October you get a signal. Your stop is 0.5*9.41*50 = $235, which is 1.2% of your account.
Now fast forward 4 months. You get a signal. The ATR stop is now 0.5*77.39*50 = $1935, or 9.7% of your account. In 4 months your stop grew by a factor of 8!
If you use ATR stops, you might have to live with a lot of variability in dollar terms. I personally do not like that.
So, one day I decided to flaunt common thinking and try dollar based stops. $500, or $1000 per contract stop loss. Crazy stuff, according to everything I read.
But guess what? My performance actually got better. These “irrational” dollar based stops actually worked better than ATR stops.
I remember being afraid to mention this to other traders, out of fear of ridicule (these were back in the days when I was not a very confident trader!). So I just plugged along, using my dollar based stops. I even won a trading contest along the way.
Fast forward a few years. One day, I was in New York with a friend and fellow champion trader. I shared my deep, dark dollar stop secret with him.
I waited for the inevitable tongue lashing and belittling. What he said instead shocked me.
“Sure, I have found that, too. Dollar based stops can work very well.”
I was gobsmacked. Was the traditional wisdom I had been fed wrong? If so, what about all the other “truisms” of trading, such as “cut your losses, let your profits run,” “never let a winner turn into a loser” and “always trade with a stop in place?”
Maybe I’ll look at some of those adages in future article series, but for this article, I want to examine this question:
What is better – dollar based stops, or volatility (Average True Range) based stops?
So, I am going to analyze dollar stops and ATR stops, in three parts:
Part 1: Run comparison tests, on various markets, with 4 different strategies
Part 2: Introduce some new ideas and ways to incorporate the best features of both dollar stops and ATR stops
Part 3: Provide all the code and workspaces so you can duplicate and expand on my research (the best way to learn and improve!)
So let’s jump into Part 1!
Part 1: Battle of The Exits – Dollar Stops Vs. ATR Based Stops
Let’s do some testing, on 3 different markets:
Crude Oil (CL)
Mini S&P (ES)
And, let’s try 4 different strategies (symmetric long and short entries, only long rules shown):
Strategy 1 – Simple momentum (if close > close[x] then buy)
Strategy 2 - 2 Period RSI (if RSI(2) > Threshold then buy)
Strategy 3 - Short Term Countertrend (if close<close[long length] and close>[short length] then buy)
Strategy 4 – Bollinger (if close crosses below -1 Std Dev BB, the buy. Sell when crosses above Bollinger 0 line)
This is a mix of trend following and mean reversion strategies. Some are stop and reverse, others are not. I just selected some simple strategies at random, just to see the impact of various stops. I’m not saying these are viable strategies.
Here is what my test workspace looks like – 12 combinations of strategies and markets.
For this test, I’ll use Daily bars, and test over the past 5 years. I am including representative slippage and commission values in the results (always a good practice!). For simplicity, I’ll trade 1 contract always, no pyramiding.
How Do I Judge Performance?
Normally, when I evaluate a strategy, I’ll use the return/drawdown metric from my Monte Carlo simulator spreadsheet, available for free at my website. But to keep things simple here, I’ll just use Profit Factor (Gross Profit divided by Gross Loss) as the “goodness” objective criteria. It is positively correlated with return/drawdown, and is much simpler to obtain. So, it is a good metric to use.
First, let’s look at baseline results for each strategy, with no stops (other than the exits and stop and reverse conditions described above).
With the baseline case, we have a nice range of profit factors. Some strategies are downright poor (Gold #2, Gold #4, Mini S&P #2) and others are really good (Crude #3, Mini S&P #3). So, this will give us a good mixture of results to evaluate stop loss effectiveness with.
Simple Dollar Stop Loss
In Tradestation, the code for this simple dollar based stop loss is:
SetStopLoss(XX); //XX is in dollars per contract
I’ll try 3 values of stop loss: $500, $1250 and $2000. These values are pretty reasonable for many markets. For reporting purposes, I’ll average the resulting profit factors together, rather than pick an optimized result.
You might be shocked at such large dollar stop losses. Many people like to have $100 stop losses, in the mistaken notion that small stop losses are better. The problem is $100 stop losses get hit MUCH more frequently than $500 stop losses, and any benefit from a tight and small loss is offset by the increased frequency with which it is hit.
Simple ATR Stop Loss
In Tradestation, the code for this simple dollar based stop loss is:
SetStopLoss(XX * AvgTrueRange(14)*BigPointValue); //XX is the ATR multiplier (result in dollars per contract)
I’ll try 3 values of ATR multiplier: 1, 2 and 3. These values are pretty reasonable for many markets. 3 seems to be especially popular with traders. Again, as with dollar stoploss, the lower the number the smaller the loss, but the more frequently it is hit.
For comparison, the maximum dollar loss for the 3x ATR case could be $10,000 or more per contract (compared to $2000 max for dollar stop case).
Just in case you don’t really understand Average True Range (which is different than the normal high minus low range), here is what it is:
Don’t worry though – almost every trading platform includes “True Range” and “Average True Range” as standard calculations, already built in.
The 14 period Average True Range is just the average of the previous 14 True Range values.
Here are the results. For each strategy, I have compared the Dollar Stop and the ATR stop. The green shaded box has the higher profit factor.
As a check of results, I decided to conduct extra runs on Strategy #2 for Gold, where the dollar stops and ATR stops were nearly the same. Over a wide range of input variables and stop loss variables (over 500 iterations for each case), the distribution of profit factors in each case is fairly similar. This is what was expected.
The “No Stop” Case is better than either the ATR Stop or the Dollar Stop.
The ATR Stop beats the Dollar Stop 66% of the time, although many of the resulting profit factors are extremely similar to each other.
There are 4 of 12 cases where the ATR stop is better than the Dollar stop by 10% or more. This makes sense, since the ATR stops in comparative dollar terms are usually larger than the dollar stops.
The adage “always use ATR stop, never use a Dollar stop” is not supported by the results. For the cases I ran, ATR stop was better than a Dollar stop in most cases, but in a third of the cases the Dollar stop was better. Maybe a better adage is “ATR stops are usually better than Dollar stops,” but that doesn’t sound nearly as authoritative!
Having no stop is better than either stop in general. But for many people, having no stop is SCARY!!! So realize that having a stop, whether it be dollar based, ATR based or something else, is primarily there for psychological support.
How You Can Use These Results
So what does this study tell you, and how can you use the results?
Well, first off realize that the adage “always use ATR stops” is more fluff than sage advice. Truth is, dollar stops and ATR stops can both be useful.
The key is either case is to test your approach thoroughly. Don’t make assumptions about what is better – test it!
Also realize that both approaches have drawbacks.
Drawbacks With Dollar Stops
Dollar stops are nice, since you can define your risk up front in dollars per contract. It is nice to know, for example, that you can lose only $1000 per trade.
But, dollar stops are not good when the market becomes very volatile. Crude Oil during the financial crisis in 2008 was a good example. $6,000 daily moves per contract were not uncommon. Such moves would just decimate a strategy with $1000 stops.
Drawbacks With ATR Stops
If ATR stops seem like the answer to crazy markets, then your thinking would be correct. That is, of course, if you are willing to accept huge stop losses. Many of us can’t. Maybe the solution is to just stay on the sidelines if the volatility gets too extreme.
My biggest beef with ATR stops is that for some trades my stop loss (in dollar amounts) is reasonable, and other times it is not. I’ve seen ATR stops much too high, and also much too small.
What is nice about ATR stops is they do change with volatility. They just might not work well in extreme high or low vol situations.
To summarize, both dollar stops and ATR stops can be good. And both can be bad. A good idea might be to test both, and see which one works better (and that you like more) for your particular situation.
I have strategies that use ATR stops. And I have even more strategies that use dollar stops, which I personally prefer.
It is too bad there is not a way to incorporate the best parts of both stops.
Maybe there are ways to get the “best of both worlds.” I’ll offer up some suggestions in Part 2 below.
Part 2 – Hopefully Improving on Dollar Stops and ATR Stops
In Part 1, I conducted a study on the old adage “always use ATR based stops.”
ATR stops can be better than dollar stops in many cases
ATR stops can be very large on a dollar per contract basis
Dollar stops can’t easily react to rapid changes in market volatility
One important point: when the ATR stops are very large, it is almost like not having a stop at all, especially if the ATR quickly changes from large to small.
You need to be careful with ATR stops on the high side, since losses can be huge. And on the low side, the losses can be fast and frequent.
Similarly, dollar stops can get you into trouble, too. What might be a realistic, reasonable dollar stop for you (say $500) might be totally unrealistic for the market you are trading. The random noise in the market might take you out very quickly!
So, it would be nice to take the best features of dollar stops and ATR stops, and see if they can be used together to improve the situation.
We can do this in three different ways:
1. Have a lower bound, set as a dollar amount, to the ATR stop. For example, use a 1x ATR stop, but make sure it is at least $500 dollars. This will prevent low volatility issues, where the stop becomes low because volatility is really low. This will be referred to as “Min Dollar/ATR Stop.” It will also be called the “floor” approach.
2. Have an upper bound, set as a dollar amount, to the ATR stop. For example, use a 3x ATR stop, but make sure it is never more than $2000 dollars. This will prevent high/extreme volatility issues, where the stop becomes is really too high in dollar terms. This will be referred to as “Max Dollar/ATR Stop.” It will also be called the “ceiling” approach.
3. Have an upper and lower bound, expressed as dollars. For example, use a 2x ATR stop, but with a $500 minimum and a $2000 maximum. This will be referred to as “Min-Max Dollar/ATR Stop.” This will also be called the “floor and ceiling” approach.
How do we know which one to pick? Simple, just like always, you need to test!
So, I ran tests with the same setup as in Part 1. The floor amount is always set to $500 to match the Part 1 test, and the ceiling is set to $2000.
For each strategy and each market, I ran the 3 cases listed above.
Results are shown below. They are compared to the best case ATR/Dollar Stop (green column). The overall “winner” for each case is highlighted in yellow.
That “thud” sound you hear are these results falling flat. Sometimes adding a floor and/or ceiling to the stop is helpful, sometimes it isn’t. But in most of the cases, the change in results is pretty small. The floor and ceiling don’t hurt results, but then again they do not help much either.
I honestly expected more of a difference adding these dual purpose stops. Maybe because I thought they were neat, and because they do serve a good purpose. But as far as pure performance goes, I was wrong!
Yet, my result is a good lesson for us all. No matter how much you like something (entry, exit, money management approach, whatever), and no matter how much you THINK something should work, you opinion DOES NOT (and should not) MATTER. And that is OK.
It just means to answer a question, or to settle an issue, YOU HAVE TO TEST IT! That is always and definitely the way to go.
So, is this new composite stop even worth doing? Based on the numbers alone, you’d have to say no.
But, doing the floor and ceiling approach does still have a good psychological benefit. With the floor, it is nice to know that a strategy will not take excessively small stops, should volatility plummet.
And with the ceiling, I like knowing my max loss is basically capped (ignoring excessive stop slippage) at a value I choose.
In between the floor and ceiling, the actual stop is based on recent volatility, which is also comforting to know.
Wrapping up parts 1 and 2, it is pretty clear that dollar stops are a decent alternative to ATR stops. Sometimes dollar stops are better, and other times they can be significantly worse.
My research found disagreement with the adage “always use ATR stops, not dollar stops.”
If floors and ceilings are added to the stop level, the performance does not drastically change. Many traders will find these lower and upper limits useful, at least mentally and emotionally.
How You Can Use These Results
So what does this study tell you, and how can you use the results?
Test! Run the ATR stop with the dollar floor and ceiling. You’ll get good performance usually, comparable to dollar stops or ATR stops alone. Plus, you’ll protect yourself from extreme stops that ATRs alone occasionally produce.
Don’t be afraid to use dollar stops, if you like them. They can be just as good as ATR stops.
Bonus Video: I have created a short video summarizing Parts 1 and 2:
Part 3 - Resource Package: Code You Can Use
At the link at the bottom of the article, Tradestation users can easily download the workspaces I used, along with all the code I used for this study.
If you don’t use Tradestation, maybe you should consider it. It would make your life easier if you want to further my research. Most students of my Strategy Factory® workshop (my paid algo development workshop) use Tradestation.
In the meantime though, for non-Tradestation users here are strategy rules in plain English:
If Close is greater than close “length” bars ago then buy next bar at market.
If Close is less than close “length” bars ago then sell short next bar at market.
If the 2 period RSI is greater than “Thresh” then buy next bar at market.
If the 2 period RSI is less than 100 minus “Thresh” then sell short next bar at market.
If Close is less than the close “BigLength” bars ago and close is greater than the close “SmallLength” bars ago, then buy next bar at market.
If Close is greater than the close “BigLength” bars ago and close is less than the close “SmallLength” bars ago, then sell short next bar at market.
If Close crosses below the -1 standard deviation Bollinger Band of “Length” length then buy next bar at market.
If Close crosses above the +1 standard deviation Bollinger Band of “Length” length then sell short next bar at market.
If currently long and close is greater than 0 Bollinger Band line of “Length” length then sell (exit long) next bar at market;.
If currently short and close is less than 0 Bollinger Band line of “Length” length then buy to cover (exit short) next bar at market.
STOP 1 – Dollar Based:
Set stop loss at XX dollars
STOP 2 – ATR Based:
Set stop loss at X times the 14 bar average True range
STOP 3 – ATR Based, with a dollar minimum:
Set stop loss at X times the 14 bar average True range, with a minimum of Y dollars
STOP 4 – ATR Based, with a dollar maximum:
Set stop loss at X times the 14 bar average True range, with a maximum of Z dollars
STOP 5 – ATR Based, with a dollar minimum AND maximum:
Set stop loss at X times the 14 bar average True range, with a minimum of Y dollars and with a maximum of Z dollars
Download the Tradestation code and workspaces right here: