King Keltner Trading Strategy

A moving average calculation is the main indicator used in the King Keltner trading strategy. A moving average is calculated by summing up x prior data points and then dividing the summation by x. Most times these calculations use a fixed number of data points. The more data points you have, the less of an impact a new data point has on the final averaged value. Longer moving average calculations try to determine longer-term trend movements. Conversely, shorter moving averages try to pinpoint shorter-term market swings. Chester Keltner presented this application of a moving average system in 1960.

The system Keltner presented was built around a moving average of the high, low, and closing prices with a band or channel on each side of the market formed by a moving average of the high low range. A buy signal occurs when the market penetrates the upper band and a sell signal when the market penetrates the lower. We have used the basic Keltner approach, but have added a few bells and whistles. We hope, as did Chester, that when the market makes an abrupt move away from its moving average, it is signaling a change in trend. In the King Keltner system, the penetration of the upper/lower bands signals this trend change. We will go with the flow and buy on strength and sell on weakness. We will get out with a win or a loss when the market retraces back to the moving average.

The major problem with channel break out systems is the failed breakout. Many times, the channels represent a point of market exhaustion instead of trend confirmation. Frequently, a market will spend itself by moving to the upper or lower bands and then immediately fall back and move in the opposite direction. This is our worst fear. However, since we realize the weakness of this type of system, we have programmed a liquidation stop at the moving average. Most trading methodologies will fail and some form of protection should be put into place when a trade is initiated. If most trading methodologies fail, then why put a trade on in the first place? The success to any form of trading is to cut losses short and let profits run. This basic tenet of trading falls under the realm of money management. Your trading system gets you into the trade and your money management scheme manages your position and eventually gets you out of the trade. In the King Keltner system, the direction of the moving average and the penetration of the bands are our entry technique, and the liquidation of our position at the moving average is our money management scheme. Our money management stop will either be a protective stop or a take profit stop. If we do capture a long trend, then the moving average should move in the same direction as our entry signal and with any luck capture a good portion of the move. Always remember it is the exit technique that determines the success of the entry technique. Since King Keltner is a longterm approach, short-term profits are not an objective. We will take them if they come our way, but with this type of system they would eventually become counterproductive. This system will have fewer than 50 percent wins and that’s all right. The few large trends that we do catch should more than cover the losses from the failed breakouts.

Most moving average-based systems are very simple to program and this one will not be an exception. We will need only two tools: (1) a moving average of the average of the high, low, and close prices, and (2) a moving average of the true ranges. You may not be familiar with the term true range. The range of a daily bar is simply calculated by subtracting the low price from the high price. An average of these ranges will give an estimate of future price ranges. The true range calculation extends the range of a bar to the previous day’s close (true range = max(close of yesterday, high of today) – min(close of yesterday, low of today) thus, expanding the bar’s range to include any gaps from the previous day’s close. We feel true ranges give a slightly more accurate measure of market volatility. Since we are trying to capture a longer term move, we will use 40 days in our average calculations.

King Keltner Pseudocode

movAvg = Average(((High + Low + Close)/3),40)

upBand = movAvg + Average(TrueRange,40)

dnBand = movAvg – Average(TrueRange,40)

liquidPoint = Average(((High + Low + Close)/3),40)

A long position will be initiated when today’s movAvg is greater than yesterday’s and market action >= upBand

A short position will be initiated when today’s movAvg is less than yesterday’s and market action <= dnBand

A long position will be liquidated when today’s market action <= liquidPoint

A short position will be liquidated when today’s market action >= liquidPoint

King Keltner Program

{King Keltner by George Pruitt—based on trading system presented by Chester Keltner}

Inputs: avgLength(40), atrLength(40);

Vars: upBand(0),dnBand(0),liquidPoint(0),movAvgVal(0);

movAvgVal = Average((High + Low + Close),avgLength);

upBand = movAvgVal + AvgTrueRange(atrLength);

dnBand = movAvgVal – AvgTrueRange(atrLength);

if(movAvgVal > movAvgVal[1]) then Buy (“KKBuy”) tomorrow at upBand stop;

if(movAvgVal < movAvgVal[1]) then Sell Short(“KKSell”) tomorrow at dnBand


liquidPoint = movAvgVal;

If(MarketPosition = 1) then Sell tomorrow at liquidPoint stop;

If(MarketPosition = –1) then Buy To Cover tomorrow at liquidPoint stop;

The King Keltner program demonstrates how to:

• Invoke the Average and Average True Range functions.

• Buy/Sell on the next bar at a stop level.

• Liquidate a position on the next bar at a stop level.

• Incorporate inputs for user interface and future optimizations.

King Keltner trading performance is summarized in Table 6.1

A visual example of how this system enters and exits trades is shown in Figure 6.1.


King Keltner Summary

Overall trading performance was extremely positive. The system did well in the majority of the test markets, which is a testament to its robustness. Remember there are only two parameters, which are the same for all markets. Could this system be improved by optimizing the parameters on an individual market basis? We like the idea of the same parameter set, but others in the industry would argue this point with us. Their argument would be based on the belief that markets from different sectors (e.g., Japanese Yen and live cattle) have different underlying fundamentals and, therefore, do not demonstrate similar market movements. Changing a parameter to reflect the differences between different markets is not just acceptable but it is an absolute necessity. We don’t totally agree with this argument, but we could be talked into different parameters for different sectors.

All of the currencies would have one set of parameters, and all of the meats would have one and so on. We would emphatically disagree with the idea of having a different parameter for the Japanese Yen and the Swiss Franc; these two markets have similar fundamentals and market movements. King Keltner could be the foundation for an entire portfolio-based trading platform. All that is needed is an algorithm for bet size (the number of contracts that is put on with each trade). In other words, you would need a money management overlay.

This entry was posted in Trading Strategies, Trend Following Trading Strategies and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *



HTML tags are not allowed.