May 14


Are Breakeven Stops Worth The Effort?

By Kevin Davey

May 14, 2018

Automated Trading Development, breakeven stops, EasyLanguage, Kevin Davey, stops

One favorite "gotta have" of many traders is a breakeven stop. By not letting a winning trade become a loser, the psychological lure of breakeven stops is strong. This is especially true for discretionary traders, where the winning percentage can play an important mental (not necessarily financial) role.

The answer for automated traders may be different, though. If breakeven stops hurt performance in the long run, then what use are they? And if they help, are there any key aspects of these stops that improve trading?

This article will provide a framework for evaluation breakeven stops, along with a few examples. Remember though, to evaluate any conclusions with your own research on your own systems.

Defining a Breakeven Stop

In its simplest form, a breakeven stop will exit on a stop order with a gross profit of $0. Obviously, if this stop is immediately deployed after entry, the trade will almost certainly be quickly exited. So, a "ceiling" amount is frequently employed with this type of stop. The breakeven stop is not activated until the profit level breaks through the ceiling (note that some platforms may consider this a "floor" amount, but nevertheless the point is still the same - the stop should only be activated once a certain profit threshold is exceeded).

One common variation of this is to include commissions in the breakeven, and even possibly a tick of profit. In that case (and assuming no slippage), the final profit would be 1 tick minus commissions.

To keep things simple for this analysis, we will go with just a simple $0 gross profit breakeven stop.

Adding It Into Code

Most platforms have a built in function for breakeven stops. Instead of using that, we will use the following code for Tradestation:

input: threshold(0);

If maxpositionprofit>=threshold then begin
If marketposition=1 then sell next bar at entryprice stop;
If marketposition=-1 then buytocover next bar at entryprice stop;

Maxpositionprofit is a Tradestation reserved word that holds the maximum profit in the position. Entryprice is another Tradestation reserved word, and is simply the price the trade was entered at.

This code can easily be modified to move from a breakeven stop to a stop with a small profit. It could also be modified so that the threshold is based on recent volatility, instead of a fixed dollar amount for the whole test period.

Note that as written, this code will not be active until the 2nd bar after the entry bar. More experienced coders can easily modify this code if that is not desired.

Sample System #1 - Evaluation

Sample System #1 is an actual ES intraday strategy that I personally trade. As designed, it does NOT have a breakeven stop in it. But what if I included one? Figure 1 shows the overall net profit as a function of the breakeven stop level ($2500 and up is basically the same as no breakeven stop).

Results for Net Profit show that, for this system, a 6% increase in Net Profit can be had. Of course, this is an optimized result, so it is probably optimistic.

Figure 2 shows how the profit/drawdown ratio can be improved, too. But, again remember that I am comparing an optimized result to an unoptimized result.

Forgetting about the optimized result issue for a minute, the bigger question might be: is a 6% increase in Net Profit worth the cost of having another rule and another parameter in the strategy? Figure 3 shows the original unoptimized equity curve, along with the breakeven optimized curve. Not a whole lot of difference, and in fact, when the trades are examined, it turns out only 7 trades were improved by adding the breakeven stop, and 2 trades were made worse.

In summary, I added a whole new rule to my strategy to change just 9 trades out of 2,654 trades (meaning 99.7% of trades were unaffected by this breakeven rule), and I improved the Net Profit by 6%. Is that a good tradeoff? I'd say absolutely not. All I did was filter a few trades to make the backtest look better. And "making the backtest look better" is frequently a bad idea, as it doesn't translate into live trading.

Sample System #2 - Evaluation

Sample Strategy #2 is a Gold system with very few rules. It has, however, performed very well over time. Figure 4 shows the equity curve for this strategy.

After adding in the breakeven stop, in the best case the Net Profit increases by $5,185 or about 3%. The drawdown however, decreases by 25% after adding an optimized breakeven stop. While this seems like a good result, remember that it is the result of an optimization and any walkforward strategy developed with a breakeven stop would have worse performance. It might, however, be worth investigating.


So, do breakeven stops work, or not? In the two examples I show, the breakeven stop was not enough of a game changer to warrant its inclusion based on profit alone. In the second example, the decrease in maximum drawdown was significant enough to get our attention. But, since the breakeven results were optimized, it is impossible to say that the good results are meaningful (although where the results are poor, we can conclude breakeven stops are not helpful since they were based on best case optimization). Also, I added the breakeven rule after the systems were developed, which will have an impact.

Perhaps if I had the breakeven stop included from the start, it would have been more useful. Even with that a breakeven stop needs to really have an impact, otherwise it is just another rule that can aid in curve fitting without providing much help in real time.

In general, the key with developing a strategy, I have found, is to keep the number of rules and parameters as low as practical. Strategies with 4 rules tend to work better going forward than strategies with 40 or 400 rules. Since that is generally true, the developer has to seriously question whether having a breakeven stop is worth the cost of having it. In the cases I show it is probably not. But, for different systems, the results may be good enough to include a breakeven stop. Using the analysis framework I showed in this article, a strategy developer can easily determine for himself if having a breakeven stop is worth the expense

If you enjoyed this lesson and want to learn more techniques for building profitable trading systems, then checkout my book, "Building Winning Algorithmic Systems".

-- Kevin J. Davey of KJ Trading Systems

Kevin Davey

About the author

Kevin Davey is a professional trader and a top performing systems developer. Kevin is the author of “Building Algorithmic Trading Systems: A Trader's Journey From Data Mining to Monte Carlo Simulation to Live Trading” (Wiley Trading, 2014.) . He generated triple digit annual returns 148 percent, 107 percent, and 112 percent in three consecutive World Cup of Futures Trading Championships® using algorithmic trading systems.

His web site,, provides trading mentoring, trading signals, and free trading videos and articles. He writes extensively in industry publications such as Futures Magazine and Active Trader and was featured as a “Market Master” in the book The Universal Principles of Successful Trading by Brent Penfold (Wiley, 2010).
Active in social media, Kevin has over 15,000 Twitter followers. An aerospace engineer and MBA by background, he has been an independent trader for over 20 years. Kevin continues to trade full time and develop algorithmic trading strategies.

  • Hi Kevin,

    Is there a reason why you haven’t just used the “setbreakeven” reserved word in your EasyLanguage code?

  • Hi Blue –

    The big issue with Breakeven stop is that it can’t be adjusted. I wanted to include the ability to “breakeven” with a small profit. That is why I used the code I did. I have used breakeven reserved word on occasion, though.

    Thanks for the question!

  • I find that stops in general are overrated and breakeven stops are killers for my trading and abandoned the concept long ago. The issue for some is with the psychology of taking a loss after seeing a large profit turn against you. Ultimately, I feel that it comes down to having faith in your strategy and recognising that losses are a part of the business and allowing for the probabilities to play out. Plus, as you point out, the additional complexity increases the rule set and can add another point of potential code failure or second guessing by the trader when manually placing the order.

    Thanks for the article.


    • Thanks for the comments. I agree. I’d love to hear from anyone who has success with breakeven stops – maybe I am doing it wrong.

      Thanks again, Ryan. I will check out your site.


      • I have good success with them but I am a hyper scalper, with my trades only lasting seconds during the early morning high volatility 930-1015am.

  • I find breakeven stops work well in range trading/reversion strategies, initially set as a hard stop away from entry (predefined loss incurred if triggered), and then moved to a breakeven stop once the position moves into the money by a predefined amount (an amount that probabilities suggest the entry price won’t be revisited imminently). The logic being that if the anticipated range/reversion dynamic evolves/breaks down, for whatever reason, then the stop defines the cost to find out if the strategy is still consistently profitable. It can be a helpful hint to review, recalibrate or retire the strategy.

  • You are right Kevin, we all should focus more on this topic. I agree with you all.
    I think the secret is in keeping a consistent approach, if you use breakeven stops, use them always. If you don’t, just avoid them. A mixed approach can lead to bad luck, and you end doing all the times the wrong thing.

  • am i mistaken? but using the built in breakeven stop that comes with @stops and targets strategy, will work. Just set your floor amount, to any amount of profit, then proceed from there. You can optimize the floor as well. So what’s the point of inserting this code?

    • btw, forgot to add, just insert the @stops and targets strategy to strategy analysis, and status to on, modify inputs, and make sure your base strategy is on as well.

    • Thanks for the comment. I explain why I do not use breakeven stop keyword in the article (the modified code can do things breakeven keyword cannot do):

      “This code can easily be modified to move from a breakeven stop to a stop with a small profit. It could also be modified so that the threshold is based on recent volatility, instead of a fixed dollar amount for the whole test period.”

  • I downloaded your Breakeven Stops in TradeStation but get an error message:
    “Position Information Function not allowed in a study”. I did this as an indicator and Strategy. What is wrong?

    • Sorry you are having trouble! The code in the article must be placed in a strategy. If you put it in an indicator, paint bar, show me, etc. you will get that error message. Make sure it is in a strategy.

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    Learn To Code & Build Strategies
    Using EasyLanguage.