Trend Following 2025: Pandemic Fades, Politics, Tariffs & Wars on the Radar

Trend Followers are the most optimistic traders on the planet!

And who could blame them? Michael Covel’s decades of research have proven a vast majority of the highest-performing money managers rely on trend-following, and he’s sold over a million books to make the case.  Back in 2003, I even graced the cover of Active Trader Magazine proclaiming that “The Trend Was Still Your Friend” (little did I know how tempestuous that friendship could become). I came up in a firm where swing trading ruled the day—and for a while, it worked beautifully. But in the hyper-competitive world of CTAs, if you’re not touting the latest buzzword on your tear sheets and in your algorithms, you’ll quickly be left behind. For many years, “Trend Following” was the magic bullet. Only to be replaced a few years later by the trendier term, Systematic Trend Following — pun fully intended. Back then, even casually mentioning option trading or discretionary decision-making to a potential client would earn you a polite nod… and guarantee you’d never hear from them again.

Buzzwords like “systematic” and “alternative” gained traction because simple non-correlation to equities—while appealing—wasn’t enough on its own. The Turtles’ breakout success in the late ’80s (and the continued strong performance of those early trend funds) inspired a wave of CTAs in the 2000s that built their entire offerings around systematic trend rules—applying “buy-high/sell-higher, sell-low/buy-lower” across global futures without blending in discretionary calls or other overlays. Critics noted that these dedicated trend programs often posted modest Sharpe ratios during long stretches of choppy markets yet still captured outsized gains whenever a true mega-trend finally materialized. Fund managers simply downplayed the interim volatility, emphasizing that only a sufficiently large allocation would ensure investors rode the next big trend all the way.

Trend Following had flat-lined under repeated shocks of dwindling returns, only to be resurrected each time by another jolt of hope. But the last awakening wasn’t sparked by an electric current—it was the seismic shock of a global pandemic. Emerging from that barren stretch at last, the commodity trade advisors (CTAs) finally tasted the sweet life-blood of incentive fees, rushing in like fresh water after a long, parched expedition.

With renewed interest, Trend Following is once again gaining popularity. You can explore the track records of many traders featured in Michael Covel’s books at www.autumngold.com. What you’ll notice is the surprising dispersion of returns among managers who all fall under the same trading genre. Some have performed exceptionally well during and after the pandemic, while others—like the one I’m about to show—have experienced waning performance.

Why such a wide range of outcomes? It often comes down to portfolio composition and risk management. Some CTAs aim for lower but more consistent returns, keeping volatility in check. Others swing for the fences. Some rely on strict quantitative models for allocation, while others use discretionary judgment.

Distilling Trend Following to a Single, Representative Algorithm

I’ve long been a fan of Andreas Clenow and his best-selling book Following the Trend (both editions). What sets his work apart is not just the theory, but the practical, transparent implementation of a strategy that closely mirrors the core approach used by many professional Trend Following CTAs.

If you’re looking to understand trend following through one well-crafted, substance-backed system, Clenow’s model is an excellent choice. It captures the essential logic and behavior of the broader trend following community.  I am using a nice sized portfolio of futures markets for this analysis.  Here are the markets.

  • Currencies – AD, CD, EC, JY
  • Energies – CL, HO, NG
  • Precious – GC, SI
  • Base Metal – HG
  • Grains – S, C
  • Financials – US, TY
  • Exotics – CT, SB, KC, OJ
  • Meats – LC, FC

Below is the EasyLanguage code that implements the algorithm presented in the first edition of his book:

EasyLanguage or PowerLanguage

/Based on Andreas Clenow's description from www.followingthetrend.com
//This is my interpretation and may or may not be what Andreas intended
//Check his books out at amazon.com
//
inputs: xAvgShortLen(50),xAvgLongLen(100),hhllLen(50),buyTrigPrice(h),shortTrigPrice(l),risk$Alloc(2000);
inputs: atrLen(30),trailATRMult(3);
vars: avg1(0),avg2(0),lXit(0),sXit(0),posSize(0),atr(0);

avg1 = xaverage(c,xAvgShortLen);
avg2 = xaverage(c,xAvgLongLen);

atr = avgTrueRange(atrLen);
posSize = maxList(1,intPortion(risk$Alloc/(atr*bigPointValue)));
//posSize = 1;

If marketPosition <> 1 and avg1 > avg2 and buyTrigPrice = highest(buyTrigPrice,hhllLen) then
buy posSize contracts next bar at open;
If marketPosition <> -1 and avg1 < avg2 and shortTrigPrice = lowest(shortTrigPrice,hhllLen) then
sellshort posSize contracts next bar at open;

If marketPosition = 0 then
Begin
lXit = o - trailATRMult * atr ;
sXit = o + trailATRMult * atr;
// if c < lXit then Sell currentcontracts contracts next bar at open;
// If c > sXit then buyToCover currentcontracts contracts next bar at open;
end;

If marketPosition = 1 then
begin
lXit = maxList(lXit,h - trailATRMult * atr);
If c < lXit then
sell currentContracts contracts next bar at open;
end;

If marketPosition = -1 then
begin
sXit = minList(sXit,l + trailATRMult * atr);
If c > sXit then
buyToCover currentContracts contracts next bar at open;
end;
Clenow's Trend Followng System

Python and TradingSimula-18

And for my Python and my TradingSimula-18 audience:

            cm = curMarket
ATR = sAverage(trueRange,30,D,1)
posSize = allocation/(ATR*myBPV)
posSize = max(int(posSize),1)
posSize = min(posSize,20)
xAvg50[cm] = xAverage(c,xAvg50[cm],xAvg1Len,D,1)
xAvg100[cm] = xAverage(c,xAvg100[cm],xAvg2Len,D,1)
donchHi = highest(h,donchHHLLLen,D,1)
donchLo = lowest(l,donchHHLLLen,D,1)
# posSize = 1

if long:
longExit[cm] = max(longExit[cm],h[D1] - 3 * ATR)

if short:
shortExit[cm] = min(shortExit[cm],l[D1] + 3 * ATR)

# Okay Let's put in some logic to create a long position
if xAvg50[cm] > xAvg100[cm] and myHigh[D1] == donchHi and not(long):
price = op[D]
tradeName = "TFClenowB";
longExit[cm] = op[D] - 3 * ATR
tradeTicket.append([buy,tradeName,posSize,price,mkt])
# Long Exit
if long and barsSinceEntry > 1 and c[D1] < longExit[cm]:
price = op[D]
tradeName = "Lxit"
tradeTicket.append([exitLong,tradeName,curShares,price,mkt])

# Okay Let's put in some logic to create a short position
if xAvg50[cm] < xAvg100[cm] and myLow[D1] == donchLo and not(short):
price = op[D]
tradeName = "TFClenowS"
shortExit[cm] = op[D] + 3 * ATR
tradeTicket.append([sellShort,tradeName,posSize,price,mkt])
# Short Exit
if short and barsSinceEntry > 1 and c[D1] > shortExit[cm]:
price = op[D]
tradeName = "Sxit"
tradeTicket.append([exitShort,tradeName,curShares,price,mkt])
Python Equivalent to EasyLanguage

 

Here are MLA‐style citations for Andreas Clenow’s principal trading books:

  • Clenow, Andreas F. Following the Trend: Diversified Managed Futures Trading. John Wiley & Sons, 21 Nov. 2012. (books.google.com)
  • Clenow, Andreas F. Following the Trend: Diversified Managed Futures Trading. 2nd ed., Wiley, 24 Jan. 2023. (amazon.com)
  • Clenow, Andreas F. Stocks on the Move: Beating the Market with Hedge Fund Momentum Strategies. CreateSpace Independent Publishing Platform, 10 June 2015. (amazon.com)
  • Clenow, Andreas F. Trading Evolved: Anyone Can Build Killer Trading Strategies in Python. Independently published, Aug. 2019. (abebooks.com)

Algorithm in plain English

Calculate the following:

  • Average True Range for the past 30 days
  • Exponential moving average #1 – 50 days
  • Exponential moving average #2 – 100 days
  • Donchian levels – 50 days

Trade Entries:

  • Long – if xAvg #1 > xAvg #2 and close > upper Donchian channel then buy next bar at open
  • Short – if xAvg #1 < xAvg #2 and close < lower Donchian channel then sell short next bar at open

Trade Exits:

  • Exit Long – using trailing stop 3X ATR from most favorable high during the trade
  • Exit Short – using trailing stop 3X ATR from most favorable low during the trade

Position Sizing:

  • 2% of $250K per trade or $5000
  • Normalize across portfolio without reinvesting – keeping things simple
  • Divide $5000 by ATR in dollars and round down
    • 5000/(ATR * BigPointValue)

 

Results for 2004 thru May 31, 2025

Who Cares about the Geo-Political Landscape?

Trend Followers cannot care about what is happening around the globe.  They have built a plan, and they must stick to it.  They know that there may be years between equity peaks, but they know with all their heart that a new equity peak is on the horizon.

  • No pain no gain.
  • In for the long run.
  • Who is this, William Sharpe?
  • Up/Down who cares?

Are we getting ready for another JOLT?

More reports:

 

SG CTA Index confirms Trend Following Fading!

 

classic

yes

About This Site

This site is home to George’s Excellent Adventure into TradingSimula_18 and Python.  George grew tired of the old and expensive back testing software so he created his own and now is able to test and develop  Trend Following Systems utilizing EOD data and EOD intra-testing portfolio management.  This software, TradingSimula_18 can be found in his Trend Following Systems: A DIY Project – Batteries Included book – now in its 2nd edition.

April 2026
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
27282930  

← Back

Thank you for your response. ✨