Tag Quant

Posts: 2

Build an ETF Trend System in Excel

Today I wanted to share with you a part of the algorithmic back end to my ETF Trend System. Note, I said “part”, I’m not giving away all my secrets. It’s written completely in Excel, incredibly simple, and is a macro that you can import. The system works by using something called linear regression slope.

What’s that?

The easiest way to understand what linear regression slope is, is to think back to your basic statistics class. Linear regression is the “best fit” line between a bunch of data points. A line is defined by the formula: y = mx+b, where y is your data point’s position on the y-axis, m is the slope, x is your data point’s position on the x-axis, and b is the slope intercept. What this ETF Trend following system does is place a “best fit” line across several price data points (8, 13, and 26 weeks) and then calculate the slope of the line. If the slope is positive, you have an upward trending ETF. Conversely, if the slope is negative then you have a downward tending slope.

As the ETF trades in the markets, the price goes up, down, and sometimes consolidates inside a trend. When that happens the linear regression slope begins to “flatten” out, meaning the slope becomes more horizontal. When combined with two or more periods, like an 8, 13, and 26 week period, you can see the overall short-term, medium-term, and long-term trends in a particular ETF. This makes for a great indicator that warns you of either a change in trend or a dip buying opportunity.

Ready to try it out for yourself? Just follow these easy steps and you’ll be ETF Trend following in no time. First you have to make sure you have Excel 2003 or a later version installed and access to ETF data.

Step 1: Get two years of ETF data.

You’ll need your favorite ETF and two years of weekly closing data. Make sure you include the date, open, high, low, and closing prices. You can cheat, and follow along with my example by downloading this XLS.

In the example contained in this lesson, I use the S&P500 weekly data but you can substitute that with any ETF or index you’d like to follow.

Step 2: Copy the macro code below and paste it into your Excel Visual Basic Editor. You can find this editor by going to Tools > Macros > Visual Basic Editor.

    Sub ETF_TREND()
    ‘
    ’ LinReg MacroMacro recorded 3/8/2007 by Thomas Ott
    ’
    ’Clear Data
    Columns(G:Q).Select
    Selection.ClearContentsCalc ETF Trends
    Range(G1).Select
    ActiveCell.FormulaR1C1 =8 WeekRange(H1).Select
    ActiveCell.FormulaR1C1 =13 WeekRange(I1).Select
    ActiveCell.FormulaR1C1 =26 WeekRange(G9).Select
    ActiveCell.FormulaR1C1 ==SLOPE(R[-7]C[-2]:RC[-2],R[-7]C[-6]:RC[-6])Selection.AutoFill Destination:=Range(G9:G54), Type:=xlFillDefault
    Range(G9:G54).Select
    Range(H14).Select
    ActiveCell.FormulaR1C1 ==SLOPE(R[-12]C[-3]:RC[-3],R[-12]C[-7]:RC[-7])Selection.AutoFill Destination:=Range(H14:H54), Type:=xlFillDefault
    Range(H14:H54).Select
    Range(I27).Select
    ActiveCell.FormulaR1C1 ==SLOPE(R[-25]C[-4]:RC[-4],R[-25]C[-8]:RC[-8])Selection.AutoFill Destination:=Range(I27:I54), Type:=xlFillDefault
    Range(I27:I54).SelectFormat Columns
    Range(G9).Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess,
    Formula1:=0Selection.FormatConditions(1).Font.ColorIndex = 3
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater,
    Formula1:=0Selection.FormatConditions(2).Font.ColorIndex = 50
    Selection.Copy
    Range(G9:I54).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.NumberFormat =0.000000Selection.NumberFormat =0.00000Selection.NumberFormat =0.0000Selection.NumberFormat =0.000”
    ’ Percent Change Function
    Range(J1).Select
    ActiveCell.FormulaR1C1 =% ChangeRange(J2).Select
    ActiveWindow.SmallScroll Down:=18
    Range(J53).Select
    ActiveCell.FormulaR1C1 ==(RC[-5]-R[-51]C[-5])/R[-51]C[-5]”
    ActiveWindow.SmallScroll Down:=6
    Selection.Style =PercentSelection.NumberFormat =0.0%Selection.NumberFormat =0.00%Selection.AutoFill Destination:=Range(J53:J54), Type:=xlFillDefault
    Range(J53:J54).Select
    End Sub

Step 3: Save the file and then activate the macro by clicking Run.

You should see that the macro created four new columns and color coded the slopes. It should look something like this XLS.

Step 4: This step is optional but I highly recommend you do this.

You should build a chart from that 8, 13, and 26 week slopes. This will help you identify the peaks and valleys in the ETF’s (or index’s) trend. See our last XLS example.

There you have it! A very simple and fun way for you to build a basic ETF trend system. Please feel free to modify the macro, or add to it as you see fit. If you have any questions or comments, please feel free to contact me.

comments

Financial Asteroids & Their Effects on Trends

Several years ago, when I was living in New Mexico, I had a girlfriend who used read very esoteric books about cutting edge theories on biology, evolution, and astronomy. We were talking about "what-if" scenarios one day and the conversation drifted to some called "punctuated equilibrium." It was explained to me, at the time, that species evolve slowly in an environment that's in equilibrium. A sudden leap in a species evolutionary development happens when a catastrophic internal or external event occurs. The example she used was the asteroid wiping out the dinosaurs theory. The dinosaurs lived and evolved in a relatively state of equilibrium until an asteroid killed them suddenly and allowed mammals to evolve rapidly.

Wikipedia defines it as:

Punctuated equilibrium (also called punctuated equilibria) is a theory in evolutionary biology, which states that most sexually reproducing species will show little change for most of their geological history. When phenotypic evolution occurs, it is localized in rare events of branching speciation (called cladogenesis), and occurs relatively quickly compared to the species' full and stable duration on earth. [via wikipedia]

I understand that some of these theories have changed over the years but its premise stayed with me for years. Can the upset of punctuated equilibrium (PE) or something similar explain the sudden emergence or death of trends?

Although we like to believe in market equilibrium (PE?) and slow evolution of prices when new fundamentals occur, I'm a firm believer that the markets themselves are not always seeking equilibrium. Sentiment and fundamentals drive a trend and then the trend in turn drives the sentiment and fundamentals of that market. Trends become reinforcing and suck more and more capital into them until they crash. Then the crash becomes self reinforcing as the sentiment and fundamentals change and a new trend emerges downward. Where's the equilibrium in that?

What truly interests me in trend following is the moment a financial asteroid hits the trend. What are the events or sudden changes in the financial environment that will allow some trends to die and cause others to evolve? Was it single event or several smaller events together that killed a trend or caused financial havoc? The first example that comes to mind was the Russian domestic debt default in the late 90's that led to Long Term Capital Management (LTCM)'s sudden demise.

I know I don't have all the answers, all I have is an interesting brain tease, and an interesting biological theory that I'm trying to superimpose on existing trends, hoping to uncover future financial asteroids.

comments

Neural Market Trends is the online home of Thomas Ott.