July 2025 Performance Report

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.

JULY Performance in Brief

Another trendless month for stocks, unless you knew what was going to rise in advance. While the overall market moved higher, the stocks that participated in that move continue to be different. Some of the tech stocks rallied while others did not.

A surprise announcement that copper (and platinum) are exempt from tariffs caused the biggest drop in copper prices that I’ve ever seen. It gave back all its premium over the past two months based on the assumption that they would be taxed. Prices are now back to where they were before talks of tariffs.

I’m trying not to make excuses because we’ve been here before, always for a different reason. The usual scenario is that, after this unpredictable volatility, there comes a quiet trending period. We’ll be looking for that.

Major Equity ETFs

Investors have been ignoring all the concerns about tariffs and continue to move stock prices higher, even in the face of slowly rising consumer prices. The jobs report on August 1 (we’re cheating by using August data) may have changed that. Employment was down but the biggest change was that the June numbers were revised from 145K to 5K for non-farm payrolls. How can they make a mistake that is so big?

                So we’ll expect to see the Fed lower rates in September, probably just a token ¼%, which might help the market. Unless there are more surprises.

CLOSE-UP: A Volatility Reversal Strategy

This is a new strategy (at least to me) and is a variation of a percentage reversal approach that I was testing. Price percentages don’t move much, and I thought changing that to use volatility made more sense. It is more sensitive to the movement of prices.

The “volatility reversal” simply uses the average true range (ATR) and a multiplication factor (“factor”) to reverse a position. The rules go as follows:

  1. Start by assuming we are long.
  2. 1. If the high price is greater than the previous high price then save it as the new “peak price.”
  3. 2. If the close < peak price – ATR*factor then reverse from long to short (of course you don’t want to sell short equities, the this an exit.) Record the close as the low price.
  4. 3. If we are net short or out of the market and the close < low price, then set the new low price as the close.
  5. 4. If we are short or out of the market and the close > low price + ATR*factor then reverse to a long position.

We define the size of the position as $100,000/close at entry. We enter on the next open. Although there is no “official” trend, tracking the highs and lows is very much like a point-and-figure strategy, except there are no defined boxes and no reversal criteria (for example, 3 boxes). The tests are for the past 10 years.

I had no idea how this would work, but the performance of the percentage reversal was not too bad. These results turned out to be a surprise. I’ve checked the code (which is attached at the end) and it seems fine. Not very complicated, although that doesn’t mean there aren’t errors. You’ll need to verify it yourself, as any good analyst should!

BTW, I tested using the concurrent close and the next open for executions. The results of using the next open was slightly worse but not enough to be concerned. The results below use the next open.

Remember that TradeStation “profit-factor” uses end of trade values, but the intraday drawdown will tell you the risk.

Summary of ATR Reversal Results

I’ve optimized both the moving average and the new volatility reversal for the 12 markets below. The parameters used are at the top, under the symbol. The number of trades vary, but the volatility approach is slightly smaller. While it has very similar drawdown ratios (Calmar), the profits of the volatility system can be better by a factor of 10.

A WORD OF CAUTION: I’ve checked and rechecked the investment used for each program. They seem to be the same, $100,000. Yet the results of both systems are off by about 10x. I can’t find an error, but if someone else can find it, please let me know!!

Figure 1. Performance comparison 1.

Figure 1. Performance comparison 2.

Some Comparative Charts

I’ve put AAPL and the QQQ’s on comparison charts. They are similar and, again, off by a factor of 10. Highly suspicious. Yet I think the volatility strategy, using only a point-and-figure type of trend combined with the ATR offers a new approach.

Figure 3. Apple comparison of volatility and moving average systems, 10 years.

The comparison of the ETF QQQ is also similar, as we can see in Figure 4. The volatility systems seems smoother, even though both only take long positions.

Figure 4. NASDAQ (QQQ) comparison of volatility and moving average systems, 10 years.

The following code was used to test the volatility system. While I have my own moving average code, I’m sure that any test platform would be similar, provided you set the investment size correctly!

TradeStation Code

Ignore the formatting. It will be correct when pasted into EasyLanguage.

// PJK Volatility Reversal

// Copyright 2025, P J Kaufman. All rights reserved.

  input: period(20), ATRfactor(3), longonly(true), useopen(true), printfile(false);

  vars:                    size(0), stoploss(0), eprice(0), peakprice(0), trigger(0),

                                                lowprice(0), ATR(0), investment(100000), NAV(100),

                                                PLlong(0), PLshort(o), equity(0), PL(0), dailyreturn(0),

                                                peak(0), drawdown(0), maxdd(0), adate(” “);

// start with a long position

                if currentbar = 1 then begin

                                size = investment/close;

                                buy size shares this bar on close;

                                peakprice = close;

//                            lowprice = close;

                                end;

                ATR = avgtruerange(period);

// exit and enter

                if marketposition = 0 then begin

                                                lowprice = minlist(lowprice,close);

                                                trigger = lowprice + ATR*ATRfactor;

                                                if close > trigger then begin

                                                                size = investment/close;

                                                                if useopen then

                                                                                                buy size shares next bar on open

                                                                                else

                                                                                                buy size shares this bar on close;

                                                                peakprice = close;

                                                                end;

                                                end

                                else if marketposition < 0 then begin

                                                lowprice = minlist(lowprice,close);

                                                trigger = lowprice + ATR*ATRfactor;

                                                if close > trigger then begin

                                                                size = investment/close;

                                                                if useopen then

                                                                                                buy size shares next bar on open

                                                                                else

                                                                                                buy size shares this bar on close;

                                                                peakprice = close;

                                                                end;

                                                end

                                else if marketposition > 0 then begin

                                                peakprice = maxlist(peakprice,close);

                                                trigger = peakprice – ATR*ATRfactor;

                                                if close < trigger then begin

                                                                if useopen then

                                                                                                sell all shares next bar on open

                                                                                else

                                                                                                sell all shares this bar on close;

                                                                lowprice = close;

                                                                if longonly = false then begin

                                                                                size = investment/close;

                                                                                if useopen then

                                                                                                                sell short size shares next bar on open

                                                                                                else

                                                                                                                sell short size shares this bar on close;

                                                                                end;

                                                                end;

                                                end;

                equity = netprofit + openpositionprofit;

                PL = equity – equity[1];

                dailyreturn = 0;

                if investment <> 0 then dailyreturn = PL/investment;

                NAV = NAV*(1 + dailyreturn);

                peak = maxlist(peak,NAV);

                drawdown = NAV/peak – 1;

                maxdd = minlist(maxdd,drawdown);

                if marketposition > 0 then

                                                PLlong = PLlong + PL

                                else if marketposition < 0 then

                                                PLshort = PLshort + PL;

                If printfile then begin

                                adate = ELdatetostring(date);

                                once begin

                                                print(file(“c:\tradestation\ATR_Reversal_Detail.csv”),

                                                                “Date,Open,High,Low,Close,LowPrice,PeakPrice,Trigger,Size,Marketposition,”,

                                                                “PLtoday,PLlong,PLshort,TotalPL,MaxDD,Return,NAV”);

                                                end;

                                print(file(“c:\tradestation\ATR_Reversal_Detail.csv”),adate, “,”, open:8:4, “,”, high:8:4, “,”,

                                                low:8:4, “,”, close:8:4, “,”, lowprice:8:4, “,”, peakprice:8:4, “,”,

                                                trigger:8:4, “,”, currentcontracts:6:2, “,”, marketposition:6:2, “,”,

                                                PL:8:4, “,”, PLlong:8:4, “,”, PLshort:8:4, “,”,

                                                equity:8:4, “,”, maxdd:8:4, “,”, dailyreturn:6:5, “,”, NAV:10:3);

                                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

Unchanged in July is a frustrating performance for our trend system. Tech stocks have rallied, but not all of them. We’ve switched into Microsoft and out of Reddit, but none of these big players seem to continue higher. One of the problems with systematic trading is that you need patience.

Income Focus and Sector Rotation

Unchanged in July parallels the interest rate market, which has gone nowhere. It may be that the jobs report on August 1st changes this for the September Fed meeting and traders may opt to trade for lower rates in advance.

Weekly Sector Rotation

Another case of a fractional loss in July. However, we switched XLP (Staples) for XLB (Materials) last Friday. This program tends to hold positions for months, so this change may indicate a new direction for the market.

DowHedge Programs

Both the Daily and Weekly programs gained in July, even with the Weekly program showing a 5% loss while the Daily program is ahead by 11%. It doesn’t always work that way. Sometimes the Daily program can switch too soon and revert. In this case, the Daily program is on new highs.

High-Risk Portfolios

Do we believe that the Magnificent 7 will make a come-back or do we leave it alone? The news commentators are flipping back and forth about these stocks. When the rise, they are all in. When they fall, they don’t want any part of them!

This month the High-Risk programs gained 7% and 8%, leaving them nearly unchanged for the year. In the scheme of trading, that might be good. We’ll see if it continues next month.

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.

For a program that is generally ignored, this seems to be capturing the pattern this year. The programs gained 5.5% and 3.5% in July, bringing them to 16% and 9.8% for the year. Yes, they have been volatile, but this program buys when the trend stalls and exits after it continues its trend. That seems to be working.

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.

Another program for which we have been waiting patiently. After its big run-up in 2020, it has moved higher, but with increasing volatility. This month it gained 7.4% and 6.8% moving it to the positive column for the year.

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.

It looked like a recovery until the Adminstration said “No tax on refined metals.” Copper dropped 40%, back to where it started its rally based on expectations of tariffs. Platinum has had a similar move, but smaller. Unfortunately, our portfolios held both markets, wiping out our profits. July returns were a loss of 2% to 3%, and 16% to 13% for the year.  With nearly a half-year to go, there is time to make it all back!

Group DF2: Divergence Portfolio for Futures

A mixed month for the Divergence program and small net losses for the year. We would like to think that the same concept doing well in equities might translate into the same returns for futures. We’re still waiting. Perhaps next month!

Blogs and Recent Publications

Perry’s books are all available on Amazon or through our website, www.kaufmansignals.com.

July 2025

This month (the August issue) there is an article on “Explaining FX Carry (In Detail).” The Carry program has had years of profits followed by years of losses, yet it is a very important part of institutional trading. This article shows how it is actually done.

Perry has been asked to be the Keynote speaker at the IFTA Conference in London in 2026 (not this year!). Of course he will accept. Plan to be there!

June 2025

Yes, another article! “There is Money To Be Made On The Weekends – But You Need to Know The Market,” appeared in the June issue of Technical Analysis of Stocks & Commodities.

Perry gave a Webinar to “Trading Heads” in Mumbai, India on June 5 at 9:30 AM New York time. Discussed “Not the Usual Diversification.” With any luck, it was taped.

May 2025

You’ll find Perry’s article “Trading the Channel” more interesting than usual. Published in the May issue of Technical Analysis of Stocks & Commodities, it looks at various ways of construction a channel, and one very profitable one.

Perry also addressed a Spanish class where they are building algorithmic strategies. Called ROBOTRADER, it in ETSIT-UPM (Escuela Técnica Superior Ingenieros Telecomunicación- Universidad Politécnica Madrid). The presentation is about Diversfication (in English) and available on youtube.

April 2025

Perry did a studio interview with Jeff Baccaccio (“Rfactory”) in London in March. It is a fine production and a good interview. He has put it on youtube. I hope you enjoy it.

YouTube: https://youtu.be/jmR359jHYBQ?si=IHQ5bVLijGFM19qF

Another article in Technical Analysis of Stocks & Commodities for April, “Do Stops Really Work?” The conclusion even fooled Perry.

March 2025

Perry looks at an old standard in “Revisiting the 3-Day Trade,” which appeared in Technical Analysis of Stocks & Commodities in the March issue.

February 2025

Another article, “Chasing the Market” appeared in the February issue of Technical Analysis of Stocks & Commodities. It answers the question, “Can you make money entering the market after a big move?”

Perry enjoyed the “Fireside Chat” at the Society of Technical Analysts (STA) in London on Tuesday, February 11. It should be available for viewing on their website. He also taped another interview and we’ll let you know how to see it when it’s released.

He also posted “If you think the market will tank, here’s a plan” on SeekingAlpha. It has received lots of view and good comments, although it is advising deleveraging.

December 2024

“Overlooked Strategy Rules” appeared in the December issue of Technical Analysis of Stocks & Commodities. We tend to overlook certain rules that can make a big difference to results. This article looks at scaling in and scaling out of a position, delayed entries, correlations, and other simple but important rules.

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.

Older Items of Interest

Perry did a studio interview with Jeff Baccaccio (“Rfactory”) in London in March 2025. It is a fine production and a good interview. He has put it on youtube. I hope you enjoy it.

YouTube: https://youtu.be/jmR359jHYBQ?si=IHQ5bVLijGFM19qF

Perry was interviewed on June 27, 2024 by Simon Mansell and Richard Brennan at QuantiveAlpha (Queensland, Australia), a website heavy into technical trading. It appears on their website.

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.

© July 2025, Etna Publishing, LLC. All Rights Reserved.

1 thought on “July 2025 Performance Report”

Leave a Comment

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

Scroll to Top