Back to Community
What Stop-Loss Should I Use? An Analysis.

Many traders use stop-losses in their techniques to minimize losses. But what is the right stop-loss to choose? 3%? 9%? 15%? In this research project, I tried to answer that question and find optimal stop-losses.

I used a simple conditional probability model to find optimal stop-losses for tech stocks satisfying the following criteria:
- $1 - $10bn market cap
- Middle 75% in volatility
- Middle 75% in volume

I found that stop-losses are not useful for protecting against future losses. Main reasons:
1. Percent loss so far is not a good predictor of further losses.
2. It appears that when given a percent loss, the investor can, on average, expect to gain back substantially by staying invested, waiting for the rebound, and then selling.

There is still much work to be done -- this is a very big topic, and I've only put a small dent in it. In the notebook, I indicated opportunities for further investigation. Engage the analysis by:
1. Cloning the notebook
2. Playing with the parameters (it's easy! The final section explains how).
3. Sharing what you find! I'd be interested in further collaboration.

Error Correction July-28-2015: In the "get_volatility" function, the line volatility = sigma_period * math.sqrt(len(opens)) should actually be volatility = sigma_period / math.sqrt(len(opens)). Thankfully, this doesn't impact the results at all.

Loading notebook preview...
9 responses

Hi John,

I think that's a really interesting analysis, thank you for posting it. (Aside: I always find it funny to think there are only two modes for a price series: you're either making a new high or you're in a drawdown.)

If you change get_future_price to return the minimum in the next 365 days, you also get some interesting results (it appears you can expect 20% drawdown at least).

Is the mean the best way of characterising the data? Changing mu = numpy.mean(values) for median lifts the line for future minimum. I would expect median to be less affected by extremes (I see you've filtered for middle volatility though). Just a thought.

James: thanks for your astute comments. It is difficult to characterize the data in an actionable way because of its spread. Using the median might be a little bit more robust than the mean. However -- converting either into a trading signal is somewhat tricky. (If you turn the mean or median into a "target" to sell at, then you miss out on the profits from stocks that exceed the target, and have to figure out what to do with the stocks that don't reach the target.)

And regarding drawdown -- yes, you are right. I implemented some algos to try using some of the results that came out of this investigation. Unfortunately, the strategies I've tried all share a high drawdown (as expected) and a high beta.

Ji John,
There is plenty of academic research supporting your findings.
Stop-losses don't work!

Stop losses most definitely work. Perhaps the logic behind your tested stop losses are incorrect.
Some things to consider:
1. Trading style
2. Execution quality
3. How you determine your stop loss (hint: percentage decline is not the only method, in fact it's a pretty poor method at that)

Hey Jack,
Regarding your points:
1. In this notebook, I was looking mostly at long positions, in the line of "buy and hold" strategies. I have not ruled out that they may be beneficial for particular trading strategies.
2. Please elaborate on what you mean with execution quality.
3. What do you think are better ways to determine stop losses?

I'd be keen to hear about contexts in which you think stop losses are beneficial.

Hi, from my experience stop losses are a good thing for trend following strategies. I find determining stop losses based on volatility (for example via ATR ) much more effective than pure percentage decline

I've been messing around with stop losses, and my anecdotal observation is that at least when set at less than ~6% they are more consistently good at locking in losses (prior to potential gains) than providing loss protection.
Trailing stop losses at least give you a chance at locking in some gains, but typically make you miss out on even better gains.
Almost every time I add stop losses to an algo hoping to reduce dropdowns it does the opposite, as the stop loss locks in serial losses, reducing returns as well.

Have long-wondered whether the values from existing per-stock volatility pipeline factors (various approaches out there) used with stoploss tailored for each stock's volatility could work, dubious of my own idea yet would like to know for sure. Assigning values, a challenge. Modifying them based on conditions, an art.