Article Library
What's New
About Us
Site Map


Unlimited Systems

Auto-generate unique

trading strategies for



Position Sizing Tool

Position sizing software for

trading. Trade smarter.

Maximize results.



The Breakout Bulletin

The following article was originally published in the August 2006 issue of The Breakout Bulletin.

A Noise Tolerant Money Management Stop

One money management technique that many traders use is a money management stop. A money management stop is a protective stop order placed below the entry price for a long trade or above the entry price for a short trade. It provides an automatic exit point in case the market reverses. Where the stop is placed often makes the difference between a good trade and a bad one. If the stop is placed too close to the entry price, the trade could be stopped out by normal market activity before the trade has a chance to develop. On the other hand, if the stop is placed too far from the entry, the loss could be much larger than necessary if the stop is hit.


Some common methods for selecting the placement of a money management stop include (1) fixed dollar amounts (e.g., a $200 stop in the E-mini S&P implies a stop size of four points), (2) support/resistance levels (e.g., recent highs/lows), and (3) a multiple of the average true range (ATR; e.g., three times the ATR below the entry for a long trade).


While all these methods have merit, they also have potential problems. Support and resistance levels tend to attract trading activity, so placing stop orders there can make it more likely the stop will be hit. Fixed dollar stops have the merit of simplicity but don't adapt to changes in market volatility. A $300 stop, for example, may be large enough when market volatility is low but may be too tight when the volatility increases. Taking a multiple of the average true range is a way to adapt to changing volatility, but the multiplier becomes another system parameter. There is typically no obvious way to choose the multiplier other than through back-testing, which effectively means optimization.


With this in mind, I decided to develop a money management stop that adapts to market volatility and requires no optimization. I call it a "noise tolerant" stop. It's based on the idea that market movement consists of two components: trend and noise. The trend component is what we're trying to trade; going long in an up trend or short in a down trend. Superimposed on the trend is the noise component. The noise component is all the up and down activity within the trend.


Notice that the definition of noise depends on the trend we're interested in. If, for example, we're trading one minute bars and our average winning trade lasts 15 minutes, then the trend is defined as what happens over that 15 minute period. In this case, the noise is the deviation from that 15 minute trend. On the other hand, if we're trading monthly bars where the average winning trade runs for, say, 14 months, then the noise is the deviation from that 14 month trend line. Clearly, the noise will be greater for a longer time frame.


As the name suggests, my noise tolerant stop is sized according to the noise component in the market. To determine the market noise, we detrend the price series and calculate the deviation of the prices for the detrended series. Consider the price series shown in Fig. 1, below.


 Original price series


Figure 1. Original price series, prior to detrending.



A trend line has been drawn from the close of the first bar to the close of the last bar. This represents the trend component in the price series. To detrend the prices, we subtract this trend from the prices. The equation for the detrended prices is as follows:


    Detrended Price j = Price j - [ (C[N] - C)/N * j + C]


where Price j is the price j bars ago (e.g., j = 0 is the current bar; j = 1 is one bar ago, etc.), C[N] is the closing price N bars ago, C is the current close, and N is the number of bars back to the start of the trend. Price j can be any price on the bar, such as the high, low, open, or close.


Applying this equation to the price series in Fig. 1 results in the detrended price series shown below in Fig. 2. The prices are now centered around the zero axis. The noise can be defined as the deviation of price from this axis. The maximum deviation for this price series is noted in Fig. 2. For my noise tolerant stop, I first determine this maximum deviation then take the average of this value over the past N bars. I use the average maximum deviation from the detrended series as the size of the stop.


Detrended price series

Figure 2. Detrended price series, obtained by subtracting the trend component from the prices shown in Fig. 1.



In EasyLanguage code for TradeStation, these calculations can be written as follows:


 Function NTStop
 Noise tolerant money management stop.

 This function detrends the price over the last N bars.
 The maximum deviation of price from the trend line is used
 to determine the size of the money management stop, which
 is returned.


 Copyright 2006 Breakout Futures

 input: N        (NumericSimple);    { Lookback length }
 Var:  HDet      (0),     { detrended high }
       LDet      (0),     { detrended low }
       Devi      (0),     { deviation from trend line }
       MaxDev    (0),     { maximum deviation }
       ii        (0);     { loop counter }
 { Calculate deviation of price from trend }

 MaxDev = 0;
 for ii = 0 to N Begin
     HDet = H[ii] - ((C[N] - C)/N * ii + C);
     LDet = L[ii] - ((C[N] - C)/N * ii + C);
     Devi = MaxList(AbsValue(HDet), AbsValue(LDet));
     if Devi > MaxDev then
        MaxDev = Devi;
 { Use average of MaxDev over past N bars as stop size }
 NTStop = Average(MaxDev, N);

This function can be downloaded from my web site on the free downloads page. It returns the size of the money management stop in points. A typical use of the function within a TradeStation strategy would be as follows:


  StopSz = NTStop(4);   { call the function to get the stop size }

  Sell next bar at EntryPrice - StopSz stop;  { stop price for a long trade }

  Buy to cover next bar at EntryPrice + StopSz stop;  { stop price for short trade }


where StopSz is declared as a variable.


You'll notice that this function has one parameter, the look back length, N. However, this value does not need to be optimized. N is number of bars in the trend. Since we are interested in sizing our stops so that our winning trades will not be stopped out by market noise, N can be chosen as the average length of the winning trades. In general, adding a stop to a system will change the length of the winning trade, so it may be necessary to first set N, run the system, check the length of the winning trades, and adjust N to match if necessary. Nonetheless, there is no optimization here. There is only one value of N that will correspond to the length of the average winning trade.


To illustrate this idea, I added this stop to Joe Krutsinger's Time Charger system (described below) to see how it compares to a fixed size stop for the same system. Here are the results (e-mini S&P MidCap 400 (EMD); $25 costs per contract; last four years):


Fixed size stop, as recommended by Joe:

    Net Profit: $27,475

    Profit Factor: 1.54

    % Wins: 52.9%

    639 trades

    Average Trade: $43.00

    Max Intraday Drawdown: -$2160.


Noise tolerant stop:

    Net Profit: $25,910

    Profit Factor: 1.45

    % Wins: 57.4%

    638 trades

    Average Trade: $40.60

    Max Intraday Drawdown: -$2515.


Overall, the results are similar. The fixed size stop appears to do a slightly better job overall, but, of course, the fixed size stop is optimized. The noise tolerant stop achieved these results with no optimization whatsoever. Notice that the percentage of winners is larger for the noise tolerant stop. This reflects the intended purpose of the stop, which is to avoid getting stopped out by normal market noise. To accomplish this, the noise tolerant stop will often be larger than a comparable fixed size stop, although they may be similar when the market volatility is low.


You might consider comparing this stop against your own fixed size or ATR-based stops. And remember that replacing an optimized stop with this one means one less system parameter to optimize.


That's all for now. Good luck with your trading.


Mike Bryant

Breakout Futures