Stop loss performance impact on higly profitable systems

Dear P123 members,

First, let me introduce myself, as I am a new member. My name is Bruno, I am from Brazil and very glad to be a part of this great community. I apologize in advance for my poor English, it’s not my native language.

I have been testing different stop loss rules and it seems they always have a negative impact on portfolio simulation performance.

I have created 30 different portfolio simulations using the best performing 30 ranking systems I could find and ran multiple different stop loss rules on each using the optimizer.

Here are the test setup specs:

  • Starting capital: 100k
  • 20 stock portfolio
  • Both 1y and 16y period backtests
  • Daily rebalance
  • “Allow sold holdings to be re-bought at current rebalance”: Tried yes, no and other ways to avoid rebuying stocks that recently triggered the stop loss rules (eg: LastSellDaysLT(xx)=FALSE)
  • Variable slippage + 0.5 cent per share comission
  • Universe: Liquidity > $100k, MktCap > 100M, Price > 1
  • Single buy rule: RankPos <= 22
  • Single sell rule: RankPos >= 23

Here are the stop loss setups I have tried:

  • Fixed an trailing stop loss found in the “Stop Loss” tab of the portfolio with 10, 15, 20, 25, 30 and 35% permutations
  • PctFromHi < -xx (also using all of the above percentage permutations)
  • Close(0) < Highest (#High, Eval(NoBars >=2, NoBars, 2), 0) - 3 * ATR(14, 0) - also tried with with 2, 2.5, 3, 3.5 and 4 ATR multiplier.
  • SMA crossover

I have searched for studies about stop loss impact on performance, found a few. Most say stop loss improves performance, however I could not reproduce these claims on my backtests. Most of these studies compare “buying all stocks on S&P500 and holding” vs. “buying all stocks on S&P500 and using stop loss”. However, IMO there is a big difference between using a good ranking system, buying only the top ranked stocks and rebalancing frequently (what we do at P123) vs. buying all of the S&P 500 stocks and holding.

While searching, I came across a study named “A CRITICAL STUDY ON THE EFFICACY OF STOP-LOSS by William K.N. Chan, CFA”, which claims that most of the times using stop loss will improve the performance of low profitability systems and decrease performance of high profitability systems. I would like to find other similar studies to confirm it but, at first glance, this makes sense to me.

Would you care to share your backtest and/or live trading results with and without stop loss? In addition, if anyone knows a stop loss rule that can reduce drawdown and/or standard deviation while improving (or at least not decreasing) Annual Returns in most sims, I would appreciate it very much.

Thank you.
Regards,
Bruno F.

brunof - your English is exceptional.

I won’t share any systems or stats but you have to think in terms of compatibility between buy and sell rules. If you are using a stop loss then you will want to buy on momentum.

Steve

Steve, even without sharing the actual rules you have pointed me in the right direction. I appreciate that.

Hi Bruno. Welcome to p123.

Stop-loss orders are a very blunt tool that make no logical sense when you think about it. It means “sell if the price is below an arbitrary point where I bought it.” Usually, those price-points are set at a level below which the investor no longer feels comfortable. 99.9% of investors using stop-loss orders are doing so without the benefit of testing whether or not they are effective. In the case of these investors, their stops have no relation to increasing actual portfolio performance.

Fortunately, with p123 we have the benefit of extensive back-testing on very robust, Wall-Street quality, point-in-time databases to test the advantage of trailing stop-loss orders and entry-based stop orders.

Our extensive testing found that using stops, either entry-based or trailing, causes returns in a value-based portfolio to be substantially diminished. Both types of stops significantly deteriorate portfolio returns. Therefore, we do not currently use them on an on-going basis with our newsletter’s model portfolios.

However, I agree with Steve that stops can improve performance in a momentum-based portfolio. In this approach, we are buying stocks that already have positive momentum, and we expect that momentum to continue. ‘The trend is your friend’ until that trend changes. Stops are effective in automating the process of getting you out of stocks with trends that have changed, but once again, they are a blunt tool and may sell a good performing stock too early. It is healthy and typical for a stock, a sector, or even the entire equity market to dip and consolidate before resuming uptrends. There are more effective methods, using sell rules or hedges, than using stops for exiting trending stocks.

Value w/Momentum (typically with stops) was an approach that was very popular on p123 in the early years of 2004-2007. There was academic research to back up this approach, and it worked in those primordial years of internet-based investing. However, as Marc Gerstein has pointed out, most of the results from that ‘quantitative gold rush’ period cannot be extrapolated for use in the current market environment.

Following the 2008 crash through 2012, we had great success with deep value (reversion to the mean in price and fundamentals) and from late 2012 to late 2014, ’clean’ value approaches (no momentum) produced solid outperformance. More recently, with market valuations mature yet a flood of central bank-generated liquidity still flowing into markets, bubble generation is looking more likely. For this reason, we have began to add more weight to a momentum element, and trailing stops may be effective again in that approach.

The economic and market environments change regularly. IMHO, unless you are a professor writing a research paper or an investor who can tolerate underperformance for years at a time (value underperformed throughout the entire decade of the ‘90s), you will need to have a dynamic, adaptive approach to investing.

It’s likely that value+momentum and trailing stops will work again before this business cycle is complete. Six years from the bottom, we are still only mid-cycle in the US economy’s maturity while equity and bond valuations are already fully mature. It’s certainly a challenging time to be a system designer!

b:

Hi. I haven't systematically investigated stop-losses.   That being said I have looked at something like 10-20k+ simulations. A supermajority would have to be called better performing systems.  In general, adding a stop wouldn't improve them.  Denny, has a different view and uses them -- mostly, I think, as a defense against black-swan events.  I invite you to check out his thoughtful posts.  My view:  black-swan events are, by definition, rare so they're not modeled well in our database.  Sometimes, a stop can help e.g. 911 and sometimes a stop can hurt e.g. the Flash Crash.  Furthermore, stop's only protect while the market is open.  

Bill

I always try stop loss and trailing stop to see if it helps my systems. Normally, it does not. Probably because most of my sims are low turnover featuring larger cap value stocks w/longer holding periods.

In fact, I’ve never seen trailing stops help. I have seen entry based stops help occasionally in unhedged sims with high turnover i.e. you don’t have time to wait for Mr. Market to recognize the value in your selection, and you aren’t hedged against overall market downturns.

That said, the entry based stops that help are usually in the 30-40% range. Since I am only interested in “winning screens”, the screens where 30-40% entry stops help are those with the fattest tails where your good selections make a ton of money but your bad selections lose a ton of money. Typically, this type of volatility in dispersion of results is seen in screens that select midcap stocks and smaller.

a few points on stops:

  • simulating stops with ohlc prices may be tricky.
  • stop occurence are rarer events than trades. Depending on your model I’m not sure that on a 16-year sim you have enough of them to make a statistically significant sample.
  • for stock models on which I have tested this, stops closer than 20% cut the return without cutting risks (measured in maxDD and STD).
  • money management focused on diversification and position sizing is much safer than stops. With 35 positions in a port, the idiosynchratic risk on individual stocks is below 3%.
    Conclusion: stops are necessary when trading leveraged, and/or volatile instruments, and/or a small number of instruments. I don’t think so for most investing models.

Some thoughts on stops

I have found improvement in both annual return and max drawdown using trailing stops. It is important to understand why it works when it does and not just because it works. My logic is this:

  1. With Sims that have 60 to 70 % winners AND a large advantage in annual return of the top 1/2 % ranked stocks over the next 1/2 %, moving to a higher ranked stock improves the Sim.
  2. If a stock is already among the highest ranked stocks then leave it there.
  3. If there is very little difference it the annual return of the top few % of rank value, a trailing stop will probably reduce some drawdowns but at the expense of annual return.
  4. Because of the desire to stay in the highest ranked stocks, the Stop Loss module doesn’t allow you to stay in a stock that is still highest ranked.
  5. In order to preserve capital, the Stop Loss module can be used. But there needs to be buy rules to avoid buying back into the market until it returns back to “normal”

This can be done with a verity of sell rules like; PctFromHi < -xx & Rank < yy. This rule will sell a stock after it has lost xx% from its high, but only if it is no longer highly ranked. That allows the Sim to move to a stock that has a higher probability of faster gains. For most value ranking systems, if a stock has a loss, and everything else is the same, its rank value will go up. So if it has lost rank value, there are outer things that have happened that make it, on average, not as good a stock as the highest ranked stocks. Values for -xx that work for various types of systems ranges from 20 to 40% depending mostly on turnover. High turnover work best with a lower value, and low turnover work best with a higher value or not at all.

Another sell rules that is worth trying:

PctFromHi < (xx + (Rank – 100) * y). This rule will sell a stock with a smaller and smaller PctFromHi as the rank value decreases. So the farther the rank value is from 100 the lower the loss must be to sell it.
Example: PctFromHi < (-40 + (Rank – 100) * 10). So if the rank value has fallen to 98, the stock will be sold if it has lost 20% from the high.

Use your imagination and add to the rule other factors that make sense:

PctFromHi < (xx + (Rank – 100) * y) - (NoBars/10). This reduces the loss required based on how long the stock has been held. If I have held it a long time, and it still is a loss, it is a laggard an needs to go, but only if it is also no longer top ranked.

Volatility based exits may be worth exploring, too. The Chandelier Exit sets a trailing stop-loss based on the Average True Range. It would look something like;

Close(0)<HighVal(30,0)-ATR(30,0)*3

Here three represents an adjustable scaling factor.

Walter

Bruno,

You mentioned you are doing daily rebalances. Note that the stops that Denny and Walter are referring to would be implemented in the Sell Rules; not using the stop-loss module. Therefore, their suggestions would only sell stock that met the criteria on the Saturday update.

Chris,

That is partially true. the Rank values would only be updated over the weekend, but obviously, the price, and therefor PctFromHi, and NoBars would all be updated daily. Also, any variables that include price and volume.

Thank you very much to everyone who shared their views and rules. I’ll definitely test your rules and theories. This discussion has been extremely educational and interesting. Please let me know if there is anything I can do in return.

Denny and Walter, your ideas look great. At least they are based on common sense, not just curve-fitting. I’m curious to know if it is possible to count how much stop events are triggered (stop by module or by sell rule) and the differential gain/loss they provide. Just to calculate if the sample size and additional gain are large enough to claim that stops make a significant difference with a good confidence interval.

Fred,

You can see which stocks were sold by the stop loss by going to; Transactions, Realized, and select the Note column heading. That will order the table alphabetically on the Note column.

I forgot to mention one of my favorite stop loss rules; PctFromHi < -xx + GainPct * 0.yy
This rule will gradually reduce the stop loss required as the stock gain gets higher.
I sometimes use it for a take profits rule. For example, PctFromHi < -40 + GainPct * 0.5
If the stock gains 40%, this will reduce the stop loss required from -40% to only -20%.
If the stock gains 80%, this will reduce the stop loss required to 0, so any loss will sell the stock.

Also, you can combine the PctFromHi with the Rank and the GainPct factors like; PctFromHi < (xx + (Rank – 100) * y) + GainPct * 0.zz.
Be careful and calculate many combinations before you pick the values for x, y, & z, so that you don’t sell stocks too soon.

I would suggest testing these ‘sell rules’ on large baskets of stocks (50 or 100) that represent your chosen ‘universe’ - providing the universe is sufficiently large (say at least a few hundred stocks) and doing this to isolate just these rules - by using at least the average of 30 (or more) runs in the optimizer with the random ranking, to see which exit rules work the best on this universe. In this way, you can isolate just the exit rules and eliminate some of the potential problems with (over)optimization.

If you only optimize the rules on a very complex system, I find it’s close to meaningless in terms of any forward looking expectations.

Tom is right.

The approach I use is to test stop loss rules by turning off any other sell rules except for a reduced value rank rule (unless the rank factor is part of the stop loss rule). That way it is functioning only on the type of stocks the Sim buys, but allows me to evaluate the stop loss without any influence of the other rules. The reduced value rank rule allows the stocks to remain held longer to have more stocks fail the stop loss rule, but not so long that the stocks are no longer meaningful with respect to the intent of the trading system.

For a simple stop loss rule I don’t like more than about 5% of the stocks to be sold due to a stop loss. By combining more factors into the stop loss rule I allow that to increase somewhat.

Have to be really careful with more complex rules - things like:
PctFromHi < -40 + GainPct * 0.5

As the stock loses more, this rule keeps you from selling it. If it has a 50% loss since opening, you will be waiting for a 65% loss. This goes against what we typically want stop losses to be doing - as we will ride losers down and never sell them.

This is one of the challenges with complex rules - they often have unintended consequences.

You probably want something like - Eval(GainPct>0,PctFromHi < -40 + GainPct * 0.5,PctFromHi<-40)

But, I would likely decompose this into 2 separate rules -
a) Pct from Hi<-40
b) PctFromHi < -40 + GainPct * 0.5

But, like Denny said - need to be careful. It took me years to finally embrace, that if I am not testing these rules on a sufficient number of stocks, won’t get real meaningful results - although we still might use them because we feel better, we are likely tricking ourselves.

Tom and Denny, thanks for the insights