Industry Benchmark Performance
October has a history of volatile moves, but this month it was a back-and-forth, going nowhere, month. While the Fed signaled lower rates, and the data supported that, it was already in the market. I have no idea what traders were expecting – lowering rates by a full point?
Then there is the election and a lot of apprehension. Does buying or selling indicate who you think will be elected? If so, no one knows.
Most funds are trend followers, or have a trend hidden somewhere in their rules. October was not a good month for trends.
Source: BarclayHedge Indices.
Kaufman’sMost Popular Books (available on Amazon)
Trading Systems and Methods, 6th Edition. The complete guide to trading systems, with more than 250 programs and spreadsheets. The most important book for a system developer.
Kaufman Constructs Trading Systems. A step-by-step manual on how to develop, test, and trade an algorithmic system.
Learn To Trade. Written for both serious beginners and practiced traders, this book includes chart formations, trends, indicators, trading rules, risk, and portfolio management. You can find it in color on Amazon.
You can also find these books on our website, www.kaufmansignals.com.
Blogs and Recent Publications
Find Mr. Kaufman’s other recent publications and seminars at the end of this report. We post new interviews, seminars, and reference new articles by Mr. Kaufman each month.
October Performance in Brief
Our programs had mixed results, much like the industry. We expected the interest rates to drive the market, but that hasn’t happened. Still, rates will go lower and the market will respond. Trying to figure out when is going to happen will be the problem.
Major Equity ETFs
A small decline in October index markets forms a double top in NASDAQ (QQQ), but the S&P continues higher. Given that interest rates will continue to fall, stocks should do better in both sales and refinancing. QQQ is a different story. Driven by the AI (artificial intelligence) stocks, the glamour seems to be fading. While we expect the chips to still be in demand, investors expected more innovation by now. Investors can be very demanding.
Insert Major Index
CLOSE-UP: Trading the Right Shoulder
Every trader should know a head & shoulders formation. Figure 1 is how Investopedia shows it. It’s a top formation where the head is higher than the previous top, followed by a right should that is lower than the head. The trade sells when the “neckline” (the line connecting the two pullbacks) is broken. You are stopped out if price go above the head.
Figure 1. The head & shoulders formation.
The price target is found by measuring the top of the head to the neckline, then extending that from the break of the neckline (on the right) downward. This is a bearish formation.
Because the stock market goes up, I find that the opposition pattern, the bullish head & shoulders, is more likely to be profitable. I think that any pattern in the stock market that favors the long side is likely to be a winner (over time).
The Right Shoulder
I recently saw a podcast that focused on the right shoulder. That seemed intriguing. Looking at Figure 2, we see the right shoulder marked in a more realistic pattern. I still don’t know why chartists keep showing this as a bearish formation. In fact, the neckline of the chart is not quite right. if we were doing this live, we would have drawn the neckline using the first low after the head formation. Then there was a small rally (a double top on the right) before testing the neckline again. Drawing a chart line afterwards allows us to use more “creativity.”
Figure 2. Another head & shoulders formation.
Coding the Pattern
Coding a trendline strategy is much simpler than coding a pattern. I’m going to make my excuses early, because I’m not sure that I’ve got this right. On the other hand, it performs quite well. If you’re good at this, you can figure out what I did. If not, you can simply copy the code at the bottom and see what it brings.
Using the Swing Highs and Lows
I have a program that identifies the swing highs and lows, given a minimum swing expressed as a percentage. That program is also at the bottom of this report. In Figure 3, the red dots are the highs of the swing, and the blue dots are the lows. From those dots we should be able to identify the pattern. Figure 3 is the ETF QQQ with the swing threshold of 5%.
Figure 3. QQQ with a swing threshold of 5%.
Buying Rules
These rules for the right shoulder are the same as the normal head & shoulders bullish signal (the opposite of Figures 1 and 2.
- Find the head & shoulder bullish pattern using the swing points
- Buy the break of the neckline
- Set the target as the neckline plus the distance of the head to the neckline (a measure of volatility).
- Exit if prices fall below the low of the right shoulder or the inverted head.
Selling Rules
- Find the head & shoulder bearish pattern using the swing points.
- Sell the break of the neckline
- Set the target as the neckline minus the distance of the head to the neckline (a measure of volatility).
- Exit if prices rises rises above the right shoulder or the head formation.
Sometimes, We Find Interesting Results by Mistake
Complicated programs are “debugged” because they often have errors. In this case, I did not get the target price correct. The bullish trade keeps going until a reverse right shoulders formation occurs. That could be a long time. As it turns out, those trades seem to be highly profitable.
Taken this way, the bullish right should is an interesting pattern, resulting in higher profits and more reliability that most other systems. I’ve left it that way. If you’re good at coding, you can fix the target price.
Results
The two charts below are for NVDA and AAPL. Yes, they do well as a buy & hold but have some serious drawdowns. This strategy seems to avoid most of them.
Figure 4. NVDA Total profits.
Figure 5. AAPL Total profits.
Performance Details
Using the data from TradeStation, we can see how this strategy works in Figure 6:
Figure 6. “Right Shoulder” statistics.
What is unusual about the results is that the Profit Factor is very high. That means profits far exceed losses. You can also see that in the Maximum Drawdown compared to the Total Net Profit. While trend following has a profitable performance ratio of about 30% to 35%, this has 40% to 60%.
It’s an interesting performance profile.
TradeStation Code
Don’t worry about the formatting. Just paste the code into EasyLanguage. It will be fine.
Swing Code
Copyright 2024, P.J. Kaufman. All rights reserved.
The swing high and low points can be plotted using “TMS Swing”
swing = price swing in whole % (e.g., 2% = 2.0) }
input: swingfactor(2.5), targetfactor(0.50), longonly(true), shortonly(false),
printfile(true);
vars: pcswing(0), curhigh(0), curlow(0), swhigh(0), swlow(0) ,
highbar(0),lowbar(0), chighbar(0), clowbar(0), lowp(0), highp(0),
divide(4), par(800), prevhigh(0), prevlow(0), lastswing(0),
lasthighprice(0), lastlowprice(0), prevhighprice(0), prevlowprice(0),
size(0), stockinvestment(10000), exittarget(0), PL(0), equity(0),
adate(” “), waitforreversal(0);
vars: nswing(0);
arrays: swingprice[5000](0), swingbar[5000](0), swingHL[5000](0);
If Currentbar = 1 then begin
pcswing = swingfactor / 100.;
end;
// SWING LOGIC Imbedded
// INITIALIZE MOST RECENT HIGH AND LOW
if currentbar = 1 then begin
curhigh = high; { current high }
curlow = low; { current low }
end;
// SEARCH FOR A NEW HIGH — favor reversals
// if lastswing <> 1 then begin
if lastswing <= 0 then begin
// REVERSE FROM HIGH IF MINIMUM % SWING
if low < curhigh – curhigh*pcswing then begin
lastswing = 1; { last high fixed }
swhigh = curhigh; { new verified high }
highbar = chighbar;
curlow = low; { initialize new lows }
lowp = low; { swing low for plot }
clowbar = currentbar;
nswing = nswing + 1;
swingHL[nswing] = -lastswing;
swingbar[nswing] = lowbar;
swingprice[nswing] = swlow;
print(file(“c:\tradestation\PJK RightShoulder.csv”),”new DN swing,,”, swhigh:6:2, “,”, low:6:2);
end
else begin
if high > curhigh then begin
curhigh = high; { new current high }
chighbar = currentbar;
end;
end;
end;
// SEARCH FOR A NEW LOW – favor reversal
if lastswing >= 0 then begin
// REVERSAL FROM LOW IF MINIMUM % SWING
if high > curlow + curlow*pcswing then begin
lastswing = -1;
swlow = curlow;
lowbar = clowbar;
curhigh = high; { initialize current high }
highp = high; { swing high for plot }
chighbar = currentbar;
nswing = nswing + 1;
swingHL[nswing] = -lastswing;
swingbar[nswing] = highbar;
swingprice[nswing] = swhigh;
print(file(“c:\tradestation\PJK RightShoulder.csv”),”new UP swing,,”, swlow:6:2, “,”, high:6:2);
end
else begin
if low < curlow then begin
curlow = low;
clowbar = currentbar;
end;
end;
end;
// Adjust stop
if marketposition > 0 then begin
sell (“ALstop”) all shares next bar at prevlowprice stop;
end
else if marketposition < 0 then begin
buy to cover (“ASstop”) all shares next bar at prevhighprice stop;
end;
// wait for reversal (last position)
if waitforreversal = 1 and lastswing = -1 then waitforreversal = 0
else if waitforreversal = -1 and lastswing = 1 then waitforreversal = 0;
// test for right shoulder on a declining bar – last swing must be a high
if nswing >= 4 and lastswing < 0 and marketposition >= 0 and waitforreversal = 0 then begin
lasthighprice = swingprice[nswing];
lastlowprice = swingprice[nswing – 1];
prevhighprice = swingprice[nswing – 2];
prevlowprice = swingprice[nswing – 3];
// is the current high less than the previous high? How much % lower?
// sell when curent low breaks previous low swing
if close < lastlowprice then begin
sell all shares this bar on close;
if longonly = false then begin
size = stockinvestment/close;
sell short size shares this bar on close;
exittarget = close – targetfactor*absvalue(lasthighprice – lastlowprice);
buy to cover (“Target”) all shares next bar at exittarget limit;
buy to cover (“Stop”) all shares next bar at lasthighprice stop;
waitforreversal = -1;
end;
end;
// end;
// end;
end;
// test for rising right shoulder on a rising bar, last high must be a low
if nswing >= 4 and lastswing > 0 and marketposition <= 0 and waitforreversal = 0 then begin
lastlowprice = swingprice[nswing];
lasthighprice = swingprice[nswing – 1];
prevlowprice = swingprice[nswing – 2];
prevhighprice = swingprice[nswing – 3];
// is the current high less than the previous high? How much % lower?
// if lastlowprice < prevlowprice then begin
// buy when close > prevhighprice
if close > lasthighprice then begin
buy to cover all shares this bar on close;
if shortonly = false then begin
size = stockinvestment/close;
buy size shares this bar on close;
exittarget = close + targetfactor*(prevhighprice – lastlowprice);
sell (“LTarget”) all shares next bar at exittarget limit;
// sell (“LStop”) all shares next bar at lastlowprice stop;
sell (“LStop”) all shares next bar at prevlowprice stop;
// sell (“LStop”) all shares next bar at close – 0.50*targetfactor*(prevhighprice – lastlowprice) stop;
end;
waitforreversal = 1;
end;
// end;
end;
equity = netprofit + openpositionprofit;
PL = equity – equity[1];
if printfile and nswing > 2 then begin
adate = ELdatetostring(date);
once begin
print(file(“c:\tradestation\PJK RightShoulder.csv”),
“date,high,low,close,nswing,curdir,lasthigh,prevhigh,lastlow,prevlow,swingbar,”,
“prevbar,pos,size,target,PL,CumPL”);
end;
print(file(“c:\tradestation\PJK RightShoulder.csv”),adate, “,” ,high:7:4, “,”, low:7:4, “,”, close:7:4, “,”,
nswing:5:0, “,”, lastswing:5:0, “,”, lasthighprice:7:4, “,”,prevhighprice:7:4, “,”,
lastlowprice:7:4, “,”, prevlowprice:7:4, “,”, swingbar[nswing], “,”, swingbar[nswing-1]:5:0, “,”,
marketposition:5:0, “,”, size:5:2, “,”, exittarget:8:2, “,”, PL:8:2, “,”, equity:8:2);
end;
{ TSM Swing: Plots swing highs and lows
Copyright 1994-1999, P.J. Kaufman. All rights reserved.
Plot setup:
1. Place on same graph window as price
2. Scale same as price
3. In style, set both values to “point” with weight 2
Inputs for TSM SWING:
type = 0, normal price
= 1, 3-month rate
= 2, bond price at par
swing = price swing in whole % (e.g., 2% = 2.0) }
input: type(0), swing(2.5);
vars: pcswing(0), lastdir(0), curhigh(0), curlow(0), swhigh(0), swlow(0) , highbar(0),
lowbar(0), chighbar(0), clowbar(0), lowp(0), highp(0), xclose(0), xhigh(0),
xlow(0), divide(4), factor(1), par(800);
pcswing = swing / 100.;
if type = 0 then begin
xhigh = high;
xlow = low;
xclose = close;
end
else if type = 1 then begin
xhigh = 100 – low;
xlow = 100 – high;
xclose = 100 – close;
end
else if type = 2 then begin
xhigh = par / low;
xlow = par / high;
xclose = par / close;
end;
{ INITIALIZE MOST RECENT HIGH AND LOW }
if currentbar = 1 then begin
curhigh = xclose; { current high }
curlow = xclose; { current low }
end;
{ SEARCH FOR A NEW HIGH — favor reversals }
if lastdir<>1 then begin
{ REVERSE FROM HIGH IF MINIMUM % SWING }
if xlow < curhigh – curhigh*pcswing then begin
lastdir = 1; { lastdir high fixed }
swhigh = curhigh; { new verified high }
highbar = chighbar;
curlow = xlow; { initialize new lows }
lowp = xlow; { swing low for plot }
clowbar = currentbar;
if type = 0 then
plot1[currentbar – highbar](high[currentbar – highbar]*1.01,”swinghigh”)
else
plot3[currentbar – highbar](low[currentbar – highbar]*.99,”swinglow”);
end
else begin
if xhigh > curhigh then begin
curhigh = xhigh; { new current high }
chighbar = currentbar;
end;
end;
end;
{ SEARCH FOR A NEW LOW – favor reversal }
if lastdir <> -1 then begin
{ REVERSAL FROM LOW IF MINIMUM % SWING }
if xhigh > curlow + curlow*pcswing then begin
lastdir = -1;
swlow = curlow;
lowbar = clowbar;
curhigh = xhigh; { initialize current high }
highp = xhigh; { swing high for plot }
chighbar = currentbar;
if type = 0 then
plot2[currentbar – lowbar](low[currentbar – lowbar]*.99,”swinglow”)
else
plot4[currentbar – lowbar](high[currentbar – lowbar]*1.01,”swinghigh”);
end
else begin
if xlow < curlow then begin
curlow = xlow;
clowbar = currentbar;
end;
end;
end;
A Standing Note on Short Sales
Note that the “All Signals” reports show short sales in stocks and ETFs, even though short positions are not executed in the equity portfolios. Our work over the years shows that downturns in the stock market are most often short-lived and it is difficult to capture with a longer-term trend. The upwards bias also works against shorter-term systems unless using futures, which allows leverage. Our decision has been to take only long positions in equities and control the risk by exiting many of the portfolios when there is extreme volatility and/or an indication of a severe downturn.
PORTFOLIO METHODOLOGY IN BRIEF
Both equity and futures programs use the same basic portfolio technology. They all exploit the persistence of performance, that is, they seek those markets with good long-term and short-term returns on the specific system, rank them, then choose the best, subject to liquidity, an existing current signal, with limitations on how many can be chosen from each sector. If there are not enough stocks or futures markets that satisfy all the conditions, then the portfolio holds fewer assets. In general, these portfolios are high beta, showing higher returns and higher risk, but have had a history of consistently outperforming the broad market index in all traditional measures.
PERFORMANCE BY GROUP
NOTE that the charts show below represent performance “tracking,” that is, the oldest results since are simulated but the returns from 2013 are the systematic daily performance added day by day. Any changes to the strategies do not affect the past performance, unless noted. The system assumes 100% investment and stocks are executed on the open, futures on the close of the trading day following the signals. From time to time we make logic changes to the strategies and show how the new model performs.
Groups DE1 and WE1: Daily and Weekly Trend Program for Stocks, including Income Focus, DowHedge, Sector Rotation, and the New High-Risk Portfolio
The Trend program seeks long-term directional changes in markets and the portfolios choose stocks that have realized profitable performance over many years combined with good short-term returns. It will hold fewer stocks when they do not meet our condition and exit the entire portfolio when there is extreme risk or a significant downturn.
Equity Trend
Modest losses in all the Trend Programs, although the charts below look positive. Small gains in the Weekly Trend program, mostly because results only go though last Friday. Although the pattern is choppy, lower interest rates and the end of the election should create an upwards bias.
Income Focus and Sector Rotation
Much like the rest of our programs, Income Focus had small losses, but the chart still look positive. This program should benefit from a trend in lower rates, however, that hasn’t quite unfolded.
Weekly Sector Rotation
Fractional losses still leaves our best program higher by 25% this year. Not much to say, other than jumping from one sector to another doesn’t do as well as sticking to the same ETFs most of the year.
DowHedge Programs
Even with small losses in October, both the daily and weekly DowHedge programs are higher by 10% and look positive on the charts and similar to the Dow returns. We expect some volatility after the election, but markets most often go higher, if only out of relief.
High-Risk Portfolios
The High-Risk Portfolios took a bigger loss this month as enthusiasm for semis and AI applications seem to fade. Even with NVDA saying that sales are up and futures sales look good, investors seem to want more. Time will tell.
Group DE2: Divergence Program for Stocks
The Divergence program looks for patterns where price and momentum diverge, then takes a position in anticipation of the pattern resolving itself in a predictable direction, often the way prices had moved before the period of uncertainty.
Gains of about 2% in both of these portfolios make it one of the few strategies profitable in October. Both are near highs and a sustained trend will move it along.
Group DE3: Timing Program for Stocks
The Timing program is a relative-value arbitrage, taking advantage of undervalued stocks relative to its index. It first finds the index that correlates best with a stock, then waits for an oversold indicator within an upwards trend. It exits when the stock price normalizes relative to the index, or the trend turns down. These portfolios are long-only because the upwards bias in stocks and that they are most often used in retirement accounts.
We’re still waiting for this program to start gaining as it did in 2021, even without COVID to motivate the market. Our work shows it is a reliable strategy and can profit for many combinations of market moves. This month it gained slightly but remains sideways.
Futures Programs
Groups DF1: Daily Trend Programs for Futures
Futures allow both high leverage and true diversification. The larger portfolios, such as $1million, are diversified into both commodities and world index and interest rate markets, in addition to foreign exchange. Its performance is not expected to track the U.S. stock market and is a hedge in every sense because it is uncorrelated. As the portfolio becomes more diversified its returns are more stable.
The leverage available in futures markets allows us to manage the risk in the portfolio, something not possible to the same degree with stocks. This portfolio targets 14% volatility. Investors interested in lower leverage can simply scale down all positions equally in proportion to their volatility preference. Note that these portfolios do not trade Asian futures, which we believe are more difficult for U.S. investors to execute. The “US 250K” portfolio trades only U.S. futures.
Losses in all Futures Trend portfolios put this program in the red again. As with the other programs, interest rates play the biggest role, and at the moment they are going nowhere. The chart below confirms a sideways pattern for the last few months. At some point, lower rates should move this strategy forward.
Group DF2: Divergence Portfolio for Futures
Modest profits in all the Divergence portfolios for October. The smallest portfolio, 250K is doing well while the larger one are showing small losses for the year. That seems to be the situation for most of the Futures Funds. We’re still waiting for the program to start trending.
Blogs and Recent Publications
Perry’s books are all available on Amazon or through our website, www.kaufmansignals.com.
October 2024
“Trading a Breakout System” was published in Technical Analysis of Stocks & Commodities. It looks at whether it’s better to enter on the bullish breakout, wait for confirmation, or buy ahead of the breakout. It’s a practical look at improving breakout results.
September 2024
Two articles posted by Perry, “The N-Day or the Swing Breakout,” (Technical Analysis of Stocks & Commodities) looking to see which is better. You would be surprised.
A look at deleveraging Artificial Intelligence stocks, a shorter version of the article posted in our “Close-Up” section. It appeared in Seeking Alpha earlier in September.
August 2024
“Theory Versus Reality” was published in the August issue of Technical Analysis of Stocks & Commodities. It discusses price shocks, diversification, predicting performance, and more.
July 2024
Perry posted a new article on Seeking Alpha, “Capturing Fund Flows.” It a good strategy for someone that wants to add some diversification. It only trades 3 days each month!
June 2024
Perry was interviewed on June 27th by Simon Mansell and Richard Brennan at QuantiveAlpha (Queensland, Australia), a website heavy into technical trading. It should be posted in a week or so.
“Trading Extreme Gaps and Extreme Closes” looks at daily patterns in stocks, published in the June edition of Technical Analysis.
May 2024
In the April edition of Technical Analysis, Perry again deals with risk in “How Professional Assign Risk.” It is another chapter in how to protect yourself.
April 2024
Another article in the April edition of Technical Analysis, “Determining Risk Before It Happens.” Perry thinks this is an article everyone should read.
March 2024
In the 2024 Bonus Issue of Technical Analysis, Perry has an article, “Pros and Cons of Daily Versus Weekly Trend Following.” There is also a quote by him in the “Retrospective: Interviews” going back to April 1988.
Perry also posted an article on Seeking Alpha, “How To Exit a Trade.” A good reminder of the choices.
February 2024
Perry published an article on using the backwardation and contango in crude oil in “The Delta-Delta Strategy.” If not crude, the you might think of this for any commodity, including interest rates, that have a consistent term structure.
January 2024
A new article in February edition of Technical Analysis of Stocks & Commodities, “Crossover Trading: Arbitrating the Physical with the Stock.” A chance at diversification!
Perry posted 3 new articles on Seeking Alpha in December, “Where Do You Take Profits?”, “Is There a Better Day to Enter the Market,” and “Watching January Returns.”
Another article in Technical Analysis of Stocks & Commodities, “Gap Momentum,” another interesting way to identify the trend.
December 2023
Perry posted 3 new articles on Seeking Alpha, “Where Do You Take Profits?”, “Is There a Better Day to Enter the Market,” and “Watching January Returns.”
This month Technical Analysis of Stocks & Commodities published “A Strategy For Trading Seasonal and Non-Seasonal Market.” Turns out that most markets are non-seasonal!
November 2023
Perry posted two articles on Seeking Alpha, “Compression Breakout: Giving a Boost to Your Entries,” and “Volatility: The Second Most Important Indicator.” In addition, he interviewed Herb Friedman in Technical Analysis of Stocks & Commodities. Herb is a interest rate specialist focusing on low risk investments.
Older Items of Interest
On April 18th, 2023, Perry gave a webinar to the Society of Technical Analysts (London) on how to develop and test a successful trading system. Check their website for more details, https://www.technicalanalysts.com..
Perry’s webinar on risk, given to the U.K. Society of Technical Analysts, can be seen using the following link: https://vimeo.com/708691362/04c8fb70ea
For older articles please scan the websites for Technical Analysis of Stocks & Commodities, Modern Trader, Seeking Alpha, ProActive Advisor Magazine, and Forbes. You will also find recorded presentations given by Mr. Kaufman at BetterSystemTrader.com, TalkingTrading.com, FXCM.com, systemtrade.pl, the website for Alex Gerchik, Michael Covel’s website, TrendFollowing.com, and Talking Trading.com.
You will also find up to six months of back copies of our “Close-Up” reports on our website, www.kaufmansignals.com. You can address any questions to perry@kaufmansignalsdaily.com.
© October 2024, Etna Publishing, LLC. All Rights Reserved.