You are on page 1of 60

Automated System Trading, Algorithms and

Programming - To Buy or To Sell The Trend?

Economics
Master's thesis
Jussi Kirves
2014

Department of Economics
Aalto University
School of Business

Powered by TCPDF (www.tcpdf.org)


Abstract

The main purpose of this study is to investigate Bollinger bands profitability and
hence market efficiency. This is done by taking into account several different
parameters (fees, trading day lag, trend following and reversal strategies, different
values for moving average calculation) totaling 5400 outcomes which are combined
regarding instruments’ asset classes (equity, fx, agriculture, energy, interest rate,
and metal).

The data for instruments is collected on Bloomberg using futures’ generic contract
close prices by selecting the most traded future contract for each month/quarter
depending on the instrument for time period 31.12.2009-31.12.2012. I have
constructed a user interface in Excel with coding VBA in order to examine Bollinger
bands profitability starting from simple text files with close prices and ending to
table of results.

The results state, in general, that fx and commodity markets are overall efficient, but
excessive returns can be achieved in the stock market by using a strategy based on
Bollinger bands.

KEYWORDS

Automated system trading, algorithms, programming, technical analysis, Bollinger


bands.

2
Tiivistelmä

Tämän tutkielman päätavoitteena on tutkia millaisiin tuottoihin Bollinger band -


työkalua hyväksikäyttämällä teknisessä analyysissä rahoitusmarkkinoilla voidaan
päästä, ja siten myös markkinoiden tehokkuutta. Käytännössä tämä on toteutettu
ottamalla huomioon useita eri parametreja (kaupankäyntikulut, kaupankäyntipäivä,
trendin mukainen ja vastainen strategia, erilaiset variaatiot liukuvan keskiarvon
laskennassa), joiden tuloksena on 5400 lopputulosta. jotka on analysoitu yhdessä
muiden saman omaisuusluokan omaavien instrumenttien kanssa (osake, valuutta,
energia, korko, metalli)

Data on kerätty Bloombergiltä käyttäen geneeristen futuurikontrahtien päivähintoja


ja valiten jokaiselle kuukaudelle/kvartaalille likvidein konrahti instrumentista
riippuen aikavälille 31.12.2009-31.12.2012. Analysointi on toteutettu Excelissä
käyttäen VBA-koodia, joka alkaa hintatekstitiedostojen avaamisesta ja loppuu
tuloksiin.

Yleisesti tulokset indikoivat, että valuutta- ja hyödykemarkkinat ovat tehokkaita,


mutta ylituottoja voidaan saavuttaa osakemarkkinoilla Bollinger band –työkalua
hyväksikäyttämällä.

AVAINSANAT

Automaattinen kaupankäynti, algoritmit, ohjelmointi, tekninen analyysi, Bollinger


bands.

3
Table of Contents
1. Introduction ..................................................................................................................................................................... 6
1.1. Background and motivation ............................................................................................................................ 6
1.2. Research question and objectives ............................................................................................................... 10
1.3. Structure of the study ....................................................................................................................................... 10
2. Literature review ......................................................................................................................................................... 11
2.1. Automated System Trading ........................................................................................................................... 11
2.2. Algorithmic Trading .......................................................................................................................................... 12
2.2.1. Pros and Cons ............................................................................................................................................. 13
2.2.2. High frequency trading .......................................................................................................................... 15
2.3. Trend Trading Signals and Technical Analysis ...................................................................................... 16
2.3.1. Breakout ....................................................................................................................................................... 17
2.3.2. Moving Averages....................................................................................................................................... 18
2.3.3. Relative Strength Index (RSI) .............................................................................................................. 19
2.3.4. Moving Average Convergence/Divergence (MACD) .................................................................. 20
2.3.5. Stochastic oscillator ................................................................................................................................. 22
2.3.6. Bollinger Bands ......................................................................................................................................... 22
2.4. Efficient Markets................................................................................................................................................. 23
2.4.1. Market Conditions and Assumptions ............................................................................................... 24
2.4.2. Forms of Market Efficiency................................................................................................................... 24
2.5. Previous Research on Technical Analysis’ Profitability ..................................................................... 25
3. Data and Methodology ............................................................................................................................................... 28
3.1. Sample Selection and Data Sources ............................................................................................................ 28
3.2. Methodology......................................................................................................................................................... 30
4. Empirical Results ......................................................................................................................................................... 32
4.1. Stock market index futures ............................................................................................................................ 33
4.2. FX futures (against USD) ................................................................................................................................. 34
4.3. Commodity Futures........................................................................................................................................... 35
4.3.1. Agriculture................................................................................................................................................... 35
4.3.2. Energy ........................................................................................................................................................... 37
4.3.3. Interest Rate ............................................................................................................................................... 38
4.3.4. Metal .............................................................................................................................................................. 39

4
5. Conclusions..................................................................................................................................................................... 41
References ................................................................................................................................................................................ 43
Appendix ................................................................................................................................................................................... 48
Buy and hold strategies’ returns ........................................................................................................................... 48
VBA Code for Analysis................................................................................................................................................ 49

Figure 1 - Hedge Fund AUM, billion USD (HFR 2013) .............................................................................................. 7


Figure 2 - VIX Index 2000-2010 ...................................................................................................................................... 10
Figure 3 –Trading System Architechture..................................................................................................................... 12
Figure 4 - S&P 500 Stock Index (1.7.2007-30.6.2009) and Downward Resistant Line............................ 17
Figure 5 - S&P 500 Stock Index (1.7.2008-30.6.2009) and 150 Day Simple Moving Average .............. 18
Figure 6 - S&P 500 Stock Index (1.7.2008-30.6.2009), 150 Day Simple Moving Average and 50 Day
Simple Moving Average....................................................................................................................................................... 19
Figure 7 - S&P 500 Stock Index (1.7.2008-30.6.2009) and 30 Day RSI ......................................................... 20
Figure 8 - S&P 500 Stock Index (1.7.2008-30.6.2009) and MACD .................................................................... 21
Figure 9 - S&P Stock Index, %K (30-Day Average), %K Slow (14-Day Average), %D Sloq (9-Day
Average) .................................................................................................................................................................................... 22
Figure 10 - S&P Stock Index and 50 Day Moving Average with 2 Stands Deviation Bands.................... 23
Figure 11 - Steps of the Analysis .................................................................................................................................... 31

Table 1 - Trading results table model .......................................................................................................................... 32


Table 2 - Trading results for stock market index futures composite 31.12.1999 - 31.12.2012 ........... 34
Table 3 - Trading results for FX futures composite 31.12.1999 - 31.12.2012 ............................................ 35
Table 4 - Trading results for agriculture futures composite 31.12.1999 - 31.12.2012 ............................ 36
Table 5 - Trading results for energy futures composite 31.12.1999 - 31.12.2012 ................................... 38
Table 6 - Trading results for interest rate futures composite 31.12.1999 - 31.12.2012 ......................... 39
Table 7 - Trading results for metal futures composite 31.12.1999 - 31.12.2012 ....................................... 40

5
1. Introduction

1.1. Background and motivation


Algorithmic trading means the use of electronic platforms for entering trading
orders with an algorithm which executes pre-programmed trading instructions
whose variables may include timing, price or quantity of the order. Usually trades
are executed without any human intervention (T. Lin 2013). Back in 2007 already
30% of the US equities volume was algorithmic (Economist 2007). This equals
approximately 20 trillion USD per year. In 2010 as much as 70% of all dollar volume
can be attributed to fully automated algorithmic trading (Brogaard 2010). A great
portion of algorithmic volume today is high frequency trading. High frequency
trading refers to a trading strategy, which is executed by computers to rapidly trade
securities in seconds or fractions of a second by exploiting advanced technological
tools. The use of high frequency trading (HFT) has increased rapidly in recent years.
In 2008, high frequency trading alone accounted 1.6 billion shares per day
compared to 3.25 billion in 2009 (Bloomberg Businessweek 2013).

As financial markets have become more technology driven, the educational


background wanted by the employers has also consequently changed – especially
when we look at the proprietary trading desks, the hedge funds and the major
investment banks: a plain B.Sc. degree in finance seems not to be the optimal choice
for job seekers. For example, at one of the all-time most successful hedge funds,
Renaissance Technologies, almost 70% of employees have a Ph.D. degree with non-
financial background: mathematicians, physicists, astrophysicists and statisticians.
Generally, advanced quantitative skills and very open mind about the market data
are seen by some recruiters a greater asset than an M.B.A. diploma (New York Times
2006). By exploring open positions in the field of quantitative finance today, it’s not

6
uncommon at all either that required skill set includes, besides a Ph.D. degree,
mastering C++, Java and other coding languages as well.

The overall trend during the past two decades has been towards more quantitative
approach in investing and there’s seems to be no reversal trend signals in the
horizon. Interest rates are record low and 79% of large-cap fund managers are not
making any alpha, in other words, beating their benchmark index (in 2011). Hence,
it seems reasonable that solutions for portfolio optimization are also being searched
from algorithmic trading. Uncorrelated investment solutions and cost efficient index
funds do sound tempting when investors are searching yield for their portfolios. It
isn’t coincidence that world’s biggest fund at the moment (end of 2013) is Vanguard
Total Stock Market Index Fund with 251 billion USD. An index fund which uses
algorithmic trading to track the index in a cost efficient way (Bloomberg 2013). In
addition traditional hedge fund assets have gained a lot during past years (Figure 1).

Figure 1 - Hedge Fund AUM, billion USD (HFR 2013)

2 500

2 000

1 500

1 000

500

0
1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012

There are also obvious reasons why especially in broker firms algorithmic trading
has become preferred choice during recent years especially among institutional
7
market participants. It helps reducing transaction costs and risk, improves entry
speed, increases trade control and reduces bid/ask spread. Also regulatory
challenges have pushed consensus towards automated trading (Euromoney 2006).
Many broker firms are also discovering possibilities to add pure high frequency
trading as one their core business in addition to market making. However, if risks
are poorly managed, these business decisions may lead a substantial increase in the
overall business risk. This is exactly what happened for example to Long Term
Capital Management L.P., 3.6 billion USD bailout in 1998, and Knight Capital Group
Inc., software malfunction leaded to a daily loss of 440 million USD (Bloomberg
2012). Consequently proper risk management does play an important role in
algorithmic trading.

By just scratching the surface of algorithmic trading by previous few examples, it


can be easily summed up that algorithmic trading plays a major role in the financial
markets and hence it’s a field that shouldn’t be ignored.

Personally, I’ve always found markets in general very interesting and fascinating.
I’m not meaning especially stock markets, but all the other as well: bonds,
commodities, currencies etc. As I’m keen to continue working in financial sector (I
started full-time six years ago) and investing as an individual, it is also easier to
understand forthcoming challenges and opportunities in the business environment,
changes in market regulation, overall market volatility and potential arbitrage
situations by studying algorithmic trading, the current tendency. This thesis focuses
on testing volatility based trend and trend reversal strategies based on Bollinger
bands. Different asset classes are covered including stock market index futures, fx
futures and different commodity products - agriculuture, energy, interest rate and
metal – totaling 27 different instruments, which we be summarized up as
composites based on asset class.

8
Moreover, I’m not a fan of the idea of stock picking skills and having a “gut feeling”
about the markets. In the long run, it’s probable that an average investor is not able
to select the specific stocks that beat the index when 79% of the professionals are
not, as mentioned above. On the other hand, as there are vast amount of portfolio
managers in the world, it’s more than likely that at least few of them will outperform
their benchmark for several years in a row. This is due to pure statistics and
probability distribution. To summarize, at least some can be really called stock
gurus several years in a row as they are just luckier than the rest. It has been also
been shown that, besides stocks, an investor is not statistically likely to select a
mutual fund which beat the index in the long run (Malkiel 1973). In addition, one
disturbing fact is that there’s no proper way to simulate gut feeling by back-testing.
Gut feeling as an input can’t really be measured in any reasonable way. It has more
to do with traders’ egos than empirical results.

Preceding opinions, both personal and public, and empirical results have made me
solely an investor, who believes only in index funds, and a trader, who believes, if at
least something, in statistical edge achieved by analyzing enormous amount of
market data. Most of the previous studies regarding trend following strategies,
algorithmic trading and its profitability have been focused mainly using moving
averages with constant parameters as a buying and/or selling signal. The main
problem with these studies, in my opinion, is that they except market to be
somewhat constant in the long run and the same parameters to work from year to
year – in other words, market fluctuations are being ignored. It’s pretty clear that
the overall market conditions in equity, fx, interest rate and commodity products
were completely different during dot-com bubble (2000-2003) and the last global
financial crisis (2007-2008) than in the period between (2003-2006). This can be
seen easily by looking, for example, the VIX index (Figure 2), which measures the
implied volatility of S&P 500 index options. It represents one measure of the

9
market's expectation of stock market volatility over the next 30 day period. Hence,
one of the leading theories in this thesis will be adjusting trading algorithms to the
current market conditions measured by volatility.

Figure 2 - VIX Index 2000-2010

90

80

70

60

50

40

30

20

10

0
03.01.2000 03.01.2002 03.01.2004 03.01.2006 03.01.2008 03.01.2010

1.2. Research question and objectives


This study focuses on trend following and trend reversal strategies by using
algorithms to find optimal trading parameters using Bollinger bands (introduced
later in the chapter 2.3. Trend Trading Signals and Technical Analysis).

Firstly, my hypothesis is that volatility is a key driver for profitable trading strategy.
This hypothesis naturally includes the assumption that there are market
inefficiencies. Secondly, I assume that certain instruments behave in the same way,
i.e. have high level of correlation regarding volatility, and hence, they can be
combined and analyzed as an asset class composite.

1.3. Structure of the study


After introducing the study in this chapter, in the next chapter I discuss the
theoretical framework and go through previous research related to my study. Third
10
chapter discusses the methodology and the fourth chapter introduces the results,
before summarizing this thesis in the fifth.

2. Literature review

2.1. Automated System Trading


The concept of automated trading system refers to an idea of computer trading
program that automatically submits trades to a given exchange. Depending on
trading frequency the speed of data may have a significant influence whether the
trading system is profitable or not. Naturally this concerns more high frequency
trading, which is not the main focus in thesis as I’ll be focusing more on the
movements of daily close prices.

Automated system trading consists of many layers all of which must be taken into
consideration when building a reliable trading system. First of all, trading system
must have a reliable market data feed. This data is analyzed by algorithms to find if
there are currently such market conditions, which would have been likely profitable
trading opportunities according to back-test (Alpha Model). If the back-test support
market conditions then the risk management should be taken into account: does this
trade fit to our current portfolio’s risk profile and what kind of effect it has on
portfolio’s total market exposure (Risk Model). Assuming the trade passes this, let’s
call it “due diligence” process for example, and is executed then the monitoring of
the trade starts. Before executing an order, strategy should always also tell when the
trade should be exited if the market turns against the trade but also when to close
the profitable trade (Transaction Cost Model). (Hanif 2014)

11
Figure 3 –Trading System Architechture

High frequency trading strategies may go through previous process several


thousand times a day - they might hold the instrument only fractions of a second.
Consequently, the speed itself is very crucial and it has suggested that any delay
from 10 milliseconds to 1 second leads to a statistically significant decrease in
performance. (Scholtus et al. 2014)

I’ll next cover the basic concepts of algorithmic trading and the special case of high
frequency trading. In addition I’ll take a look into previous research on the field, the
theory of efficient markets and introduce some basic technical analysis tools for
estimating trading signals related to trend. Using previous classifications by Hanif
(2014) my data and methodology section concentrates mostly on the dynamics of
Alpha Model.

2.2. Algorithmic Trading


Algorithmic trading originates from proprietary trading desks of investment
banking firms (Kendall 2007). In general, it means the computerized executions of
financial instruments. Algorithms trade stocks, bonds, currencies and various
financial derivatives. Trading via algorithms requires investors to first specify their
goals in terms of mathematical instructions. Depending on investors’ needs,
customized instructions range from simple to highly sophisticated. After
12
instructions are specified, computers implement those trades following the
prescribed instructions (Kissel 2014). In general algorithmic trading has become
possible due to fully electronic infrastructure in stock trading systems.

Example of simple strategy is trading system used by large brokerage firms that cut
large orders into a hundred smaller orders. These trades are slowly entered into the
market over some predetermined period of time. More advanced systems are used
for example in the field of high frequency trading strategies carried out usually by
hedge funds. The term black box trading is used to describe hedge fund strategies,
which are complex and mathematically sophisticated algorithms of taking
advantage of arbitrage situation across the market (Kendall 2007).

There are also other ways beyond financial market data to use algorithms to help
make investment decisions. For example, some hedge funds use Google trends to
analyze what kind of words are being searched and are trying to implement these
results into profitable trading strategies.

2.2.1. Pros and Cons


Algorithmic trading has several advantages compared to trading carried out by
humans. Computer systems have a much shorter reaction time and reach a higher
level of reliability. The decisions made by a computer system rely on the underlying
strategy with specified set of rules, which lead to a reproducibility of these
decisions. Consequently, back-testing and improving the strategy by varying the
underlying rules is made possible. Algorithmic trading also ensures objectivity in
trading decisions and is not exposed to subjective influences. When trading many
different securities at the same time, one computer system may substitute many
human traders. So both the observation and the trading of securities of a large
universe become possible for companies without employing dozens of traders.

13
Nevertheless, the automated trading requires constant monitoring. Altogether these
effects may result in a better performance of the investment strategy as well as in
lower trading costs.

However, it is challenging to automate the whole process from investment decisions


to execution. System stability and robustness is the key to avoid mechanical failures.
Hence, the less complex the system is the more solid it usually is. On the other hand
lack of complexness may lead to further problems as the execution strategy is
transparent for other market participants. An execution strategy that is repeating
itself is exposed to other market participants and they may observe patterns and
take an advantage of the trading system.

Algorithmic trading has been often related to increasing volatility. This has been one
of the main topics by the press once in a while. For example, according to Financial
Times (2008a, 2008b) algorithmic trades produce snowball effects on volatility. In
addition, same kinds of critics are also being presented by Wall Street Journal
(2010) and New York Times (2009). However, Chordia, Roll, and Subrahmanyam
(2011) show that intraday volatility has actually declined on the NYSE during recent
years. It is also shown using an analysis of hourly to daily variance ratios that prices
are closer to the efficient market benchmark of a random walk in recent years.

Another aspect for algorithmic trading is its effect on liquidity. These trading
strategies may improve liquidity if they act as market makers, but on the other hand
if they create extra imbalance the effect may just the opposite. Hendershott, Jones,
and Menkveld (2011) show that when algorithmic activity increases, liquidity
increases as well. There is other evidence that in the algorithmic trading has leaded
to higher levels of volume and hence the overall market quality has actually
increased. In addition, for large stocks in particular, algorithmic trading narrows

14
spreads, reduces adverse selection, and reduces trade-related price discovery. The
findings indicate that algorithmic trading improves liquidity and enhances the
informativeness of quotes. It has also a positive effect on institutional market
participants. It helps reducing transaction costs and risk, improves entry speed,
increases trade control and reduces bid/ask spread. Also regulatory challenges have
pushed consensus towards automated trading (Euromoney 2006).

2.2.2. High frequency trading


Even though high frequency trading is not the main focus in this thesis, it shall be
covered, even slightly, due to many studies suggest that HFT firms accounted for 60-
73% of all US equity trading volume in 2009. After the global financial crisis the
figure has declined, but still was still as high as 50% in 2012 (New York Times
2012).

News arrivals are a driving force behind asset price changes. In the beginning of
exchange-based trading a telex and telephone combined with analytical skills were
enough for a competitive edge. More recently, a basic internet connection would be
enough. Nowadays, trades based on a news feed arrive to the market before any
human trader can even take a look at the news. Liquid markets generate hundreds
or thousands of ticks every day. Data vendors such as Reuters transmit more than
275 000 prices per day for foreign exchange spot rates alone. Thus, high-frequency
data can be a fundamental object of study alone, as traders make decisions by
observing high-frequency or tick-by-tick data. For a variety of reasons, high-
frequency data are becoming a way for understanding market microstructure.
(Gençay et al. 2001)

Hasbrouck and Saar (2010) examine low-latency strategies, which trade in units of
milliseconds. They explore submitted, executed, and canceled orders likely part of

15
an HFT program. They argue that low latency HFT activity improves market quality
measures such as liquidity and volatility. This is strategy is called quote stuffing, in
which strategy spams an exchange with a lot of quotes in a short span of time
creating a false illusion that there is interest in a stock when there is none, and
canceling such quotes later. An arbitrage opportunity is created if exchanges
become overwhelmed with such orders and lag other exchanges, and traders are
tricked into submitting orders on the belief that is indeed an interest in a stock.
Egginton and Van Ness (2011) investigate this practice and conclude that stocks
become more illiquid and volatile during such periods. Generally, due to previous
kind of high-frequency strategies the order cancellation rates are in the region of
90%. Madhavan (2012) argues that these strategies are not yet well understood by
researchers.

Overall, approximately as many studies find that high frequency trading is harmful
to markets as find that it is beneficial. It is therefore difficult to conclude one way or
the other whether high frequency trading should be regulated or controlled more
from a policy perspective.

2.3. Trend Trading Signals and Technical Analysis


Usually analyzing methods are divided to fundamental and technical. Fundamental
analysts attempt to study everything that can affect the security's value, including
macroeconomic factors, such as the overall economy and industry conditions, and
company-specific factors, such as financial condition and management.
Fundamental analysis is considered to be the opposite of technical analysis.
Technical analysis refers to a method of evaluating securities by analyzing statistics
generated by market activity, such as past prices and volume. Technical analysts do
not attempt to measure a security's intrinsic value, but instead use charts and other
tools to identify patterns that can suggest future activity. Technical analysis can be

16
summarized as a quote by Paul Tudor Jones, one of the most successful hedge fund
managers, who believes that “prices move first and fundamentals come second.”

The concept of trend refers to the general direction of a market or of the price of an
asset. Trends can vary in length from short, to intermediate, to long term.
Identifying a trend can be highly profitable, because the trend can be traded. Next,
I’m introducing some of the most common tools in technical analysis used to
estimating and trading potential trends.

2.3.1. Breakout
At breakout the price moves through a pre-determined level of support or
resistance. This action is also usually followed by heavy volume and increased
volatility. Commonly the strategy is to buy the asset when the price breaks above a
level of resistance and sell when it breaks below support. Once a resistance level is
broken, it is regarded as the next level of support when the price experiences a
pullback. In the Figure 4 is represented downward resistant line. Another way to
implement the breakout strategy is to go long (short) if the current price is the
highest (lowest) quote of the pre-determined period – for example 20 or 40 days.

Figure 4 - S&P 500 Stock Index (1.7.2007-30.6.2009) and Downward Resistant Line

1800

1600

1400

1200

1000

800

600
01.07.2007 01.10.2007 01.01.2008 01.04.2008 01.07.2008 01.10.2008 01.01.2009 01.04.2009

17
2.3.2. Moving Averages
The most used variation of moving averages is a crossover. The most basic type of
crossover is when the price of an asset moves from one side of a moving average
and closes on the other. Price crossovers are used to identify shifts in momentum
and can be used as a basic entry or exit strategy.

Figure 5 - S&P 500 Stock Index (1.7.2008-30.6.2009) and 150 Day Simple Moving Average

1500
1400
1300
1200
1100
1000
900
800
700
600
01.07.2008 01.09.2008 01.11.2008 01.01.2009 01.03.2009 01.05.2009

S&P 500 Stock Index 150 Day Moving Average

The second type of crossover occurs when a short-term average crosses through a
long-term average. This signal is used to identify that momentum is shifting in one
direction and that a strong move is likely approaching. A buy signal is generated
when the short-term average crosses above the long-term average. Similarly, a sell
signal is triggered by a short-term average crossing below a long-term average.

18
Figure 6 - S&P 500 Stock Index (1.7.2008-30.6.2009), 150 Day Simple Moving Average and 50 Day Simple Moving
Average

1500

1400

1300

1200

1100

1000

900

800

700

600
01.07.2008 01.09.2008 01.11.2008 01.01.2009 01.03.2009 01.05.2009

S&P 500 Stock Index 150 Day Moving Average 50 Day Moving Average

2.3.3. Relative Strength Index (RSI)


RSI is a technical momentum indicator that compares the magnitude of recent gains
to recent losses in an attempt to determine overbought and oversold conditions of
an asset. The RSI signal ranges from 0 to 100.

ͳͲͲ
ܴܵ‫ ܫ‬ൌ ͳͲͲ െ
‫ݏ݁ݏ݋݈ܿ݌ݑݏݕܽ݀ݔ݂݋ݏݕܽ݀݁݃ܽݎ݁ݒܣ‬
ͳ൅
‫ݏ݁ݏ݋݈ܿ݊ݓ݋݀ݏݕܽ݀ݔ݂݋ݏݕܽ݀݁݃ܽݎ݁ݒܣ‬

An asset is considered to be overbought when the RSI approaches the 70 level. This
means that it may be getting overvalued and there will be a possible pullback in
near future. Respectively, if the RSI approaches 30, it is an indication that the asset
may be getting oversold and therefore likely to become undervalued. Large surges
and drops in the price of an asset will affect the RSI by creating false buy or sell
signals. Hence, the RSI is best used as a valuable complement to other stock-picking
tools.

19
Figure 7 - S&P 500 Stock Index (1.7.2008-30.6.2009) and 30 Day RSI

80 1400

70 1300

60 1200

50 1100

40 1000

30 900

20 800

10 700

0 600

30 Day RSI Oversold Overbought S&P 500 Stock Index

2.3.4. Moving Average Convergence/Divergence (MACD)


MACD is a trend-following momentum indicator that shows the relationship
between two moving averages of prices. The MACD is usually calculated by
subtracting the 26-day moving average from the 12-day moving average. 9-day
moving average of the MACD, signal line, is then plotted on top of the MACD,
functioning as a trigger for buy and sell signals.

20
Figure 8 - S&P 500 Stock Index (1.7.2008-30.6.2009) and MACD

1400 60

40
1300
20
1200
0
1100
-20

1000 -40

-60
900
-80
800
-100
700
-120

600 -140
01.07.2008 01.09.2008 01.11.2008 01.01.2009 01.03.2009 01.05.2009

S&P 500 Stock Index MACD (12-26 Day Moving Average) 9 Day Moving Average

There are three common methods used to interpret the MACD. Firstly, crossover
occurs when the MACD falls below the signal line, it is a bearish signal, which
indicates that it may be time to sell. Likewise, when the MACD rises above the signal
line, the indicator gives a bullish signal, which suggests that the price of the asset is
likely to experience upward momentum. Secondly, divergence is the situation when
the security price diverges from the MACD. It signals the end of the current trend.
Thirdly, when the MACD rises dramatically it is a signal that the security is
overbought and will soon return to normal levels. This occurs when shorter moving
average pulls away from the longer-term moving average.

In addition, the zero line plays an important role as it equals the position of the
short-term average relative to the long-term average. When the MACD is above zero,
the short-term average is above the long-term average, which signals upward
momentum. The opposite is true when the MACD is below zero. The zero line often
acts as an area of support and resistance for the indicator.

21
2.3.5. Stochastic oscillator
Stochastic oscillator compares a security's closing price to its price range over a
given time period. The oscillator's sensitivity to market movements can be reduced
by adjusting the time period or by taking a moving average of the result. The theory
behind this indicator is that in an upward-trending market, prices tend to close near
their high, and during a downward-trending market, prices tend to close near their
low. Transaction signals occur when the %K Slow crosses the %D Slow, where

ܲ‫ ݁ܿ݅ݎ‬െ ‫݁ܿ݅ݎ݌ݐݏ݁ݓ݋ܮ‬ሺ݊‫ݏ݀݋݅ݎ݁݌‬ሻ
Ψ‫ ܭ‬ൌ ͳͲͲ ‫כ‬
‫݁ܿ݅ݎ݌ݐݏ݄݁݃݅ܪ‬ሺ݊‫ݏ݀݋݅ݎ݁݌‬ሻ  െ ‫݁ܿ݅ݎ݌ݐݏ݁ݓ݋ܮ‬ሺ݊‫ݏ݀݋݅ݎ݁݌‬ሻ

Ψ‫ ݓ݋݈ܵܭ‬ൌ ‫݂݋݁݃ܽݎ݁ݒܽ݃݊݅ݒ݋݉݀݋݅ݎ݁݌ݔ‬Ψ‫ܭ‬

Ψ‫ ݓ݋݈ܵܦ‬ൌ ‫݂݋݁݃ܽݎ݁ݒܽ݃݊݅ݒ݋݉݀݋݅ݎ݁݌ݕ‬Ψ‫ܭ‬

Figure 9 - S&P Stock Index, %K (30-Day Average), %K Slow (14-Day Average), %D Sloq (9-Day Average)

1400 100

1300 90
80
1200
70
1100 60
1000 50

900 40
30
800
20
700 10
600 0
01.07.2008 01.09.2008 01.11.2008 01.01.2009 01.03.2009 01.05.2009

S&P 500 Stock Index %K Slow %D Slow

2.3.6. Bollinger Bands


Bollinger bands are a band plotted two standard deviations away from a simple
moving average. Due to standard deviation is a measure of volatility, Bollinger

22
bands adjust themselves to the market conditions. (Hence, this will be also the
technical analysis tool to be used in this thesis.) In practice, when the markets
become more volatile, the bands move further away from the average and during
less volatile periods the bands move closer to the average. The tightening of the
bands is often used as an early indication that the volatility is about to increase
sharply. The interpretation is that closer the prices move to the upper band, the
more overbought the market, and the closer the prices move to the lower band, the
more oversold the market. On the other hand, by crossing upper/lower two
standard deviation bands may also signal a momentum towards given direction.

Figure 10 - S&P Stock Index and 50 Day Moving Average with 2 Stands Deviation Bands

1600

1500

1400

1300

1200

1100

1000

900

800

700

600
01.07.2008 01.09.2008 01.11.2008 01.01.2009 01.03.2009 01.05.2009

50 Day Moving Average with 2 Standard Deviation Bands S&P 500 Stock Index

2.4. Efficient Markets


If excessive returns can be generated by technical and/or fundamental analysis, that
contradicts with the theory of efficient markets. However, before proceeding,
efficient markets should be defined.

23
2.4.1. Market Conditions and Assumptions
Fama (1970) provides three market conditions consistent with efficiency. Firstly, it
must be easy to determine sufficient conditions for capital market efficiency.
Secondly, all available information is available without any cost to all market
participants. Thirdly, all market participants agree on the implications of current
information for the current price distribution of each security. Consequently, in such
a market, the current price of a security fully reflects all available information.

Fama also suggests few more important assumptions. An efficient market requires a
large number of competing profit-maximizing participants that analyze and value
securities. In addition Information regarding securities arrives in the market in
randomly, and the timing of announcements is independent of others. Also
competing investors must trade and try to adjust security prices rapidly to reflect
the effect of new information and rational investors immediately exploit any
arbitrage possibilities. The result is that numerous competitors that analyze and
adjust stock prices to news will result in random and unpredictable price changes
and all information will be reflected in security prices.

2.4.2. Forms of Market Efficiency


There are three forms of efficiency, which are weak, semi-strong and strong. In
weak-form efficiency, future prices cannot be predicted by analyzing prices from the
past. Excess returns cannot be earned in the long run by using investment strategies
based on historical share prices or other historical data. Technical analysis
techniques will not be able to consistently produce excess returns, though some
forms of fundamental analysis may still provide excess returns.

In semi-strong-form efficiency, it is implied that share prices adjust to publicly


available new information very rapidly and in an unbiased fashion, such that no

24
excess returns can be earned by trading on that information. Semi-strong-form
efficiency implies that neither fundamental analysis nor technical analysis
techniques will be able to reliably produce excess returns. In strong-form efficiency,
share prices reflect all information, public and private, and no one can earn excess
returns. If there are legal barriers to private information becoming public, as with
insider trading laws, strong-form efficiency is impossible, except in the case where
the laws are universally ignored.

2.5. Previous Research on Technical Analysis’ Profitability


Even though a large number of studies on the predictability of asset returns exist,
the amount of studies that concentrate on technical analysis’ predicting power of
price movements and a method of testing market efficiency is relatively small. It has
been generally noted that the studies from 1980s onwards have generally improved
on the deficiencies of the earlier studies in terms of incorporating risk, transaction
costs, out of sample tests and accounting for curve fitting. Hence, the main focus
here will be on previous research after 1980s.

In general, there is more research focused on foreign exchange markets than the
stock markets. Most studies in the foreign exchange markets indicate that by
exploiting technical trading rules positive net returns in the range of 3%-11% for
major currency futures markets can be achieved. Neely (1997) tested specific filter
and moving average rules on exchange rates over the 1974-1997 period and
reported positive net returns most of the cases. Only 2 out of the 40 cases didn’t
yield positive returns including transaction costs. Moreover, Neely, Weller and
Dittmar (1997) investigated six foreign exchange rates over the 1974-1995 period.
These results indicated that average annual net returns from each portfolio of 100
optimal trading rules for each exchange rate ranged 1%-6%. These results were
also statistically significant. Also LeBaron (1999), Neely (2002), and Saacke (2002)

25
reported the profitability of moving average rules in currency markets. LeBaron
(1999) found that for the mark and yen, a 150-day moving average rule generated
twice as large sharpe ratios compared to buy-and-hold strategies on US stock
portfolios. However, Sapp (2004) reported that trading rule profits in currency
markets could be explained by risk premia using capital asset pricing model.

Generally, there has been disagreement about the nature of technical trading profits
in the foreign exchange market. According to LeBaron (1999) and Sapp (2004)
technical trading returns were reduced after intervention periods of the Federal
Reserve were eliminated, but Neely (2002) and Saacke (2002) claimed that trading
returns were actually uncorrelated with foreign exchange interventions of central
banks. Study by Qi and Wu (2002) also found technical trading rules to generate
significant excess returns. They found mean excess returns of 7.2%-12.2% against
the buy-and-hold strategy for major currencies over the period 1973-1998.

Lukac and Brorsen (1990) investigated 30 futures markets with 23 technical trading
systems over the 1975-1986 period. The results indicated that only 7 out of 23
trading systems generated positive monthly net returns after transaction costs.
Wang (2000) and Neely (2003) reported that genetically optimized trading rules
failed to outperform the buy-and-hold strategy in both S&P 500 spot and futures
markets. For example, Neely (2003) showed that genetic trading rules generated
negative returns versus buy-and-hold strategy during the entire out-of-sample
periods. Brock et al. (1992) found trading rule that generated substantially higher
excess returns than the average of trading rules formed by genetic programming for
the 1963-1986 period. Other studies, Allen and Karjalainen (1999), Ready (2002),
and Neely (2003) all suggested that genetic trading rules underperformed buy-and-
hold strategies for the S&P 500 index or the Dow Jones Industrial Average index in
the long run.

26
The results of the different studies that were replicating Brock et al. (1992) are
different across markets and sample periods. In general, for stock indices in
emerging markets, technical trading rules were profitable after transaction costs
according to Raj et al. (1996) and Gunasekarage et al. (2001). Ratner and Leal
(1999) documented that Brock et al.’s (1992) moving average rules generated
statistically significant net returns in four emerging equity markets in 1982-1995.
However, most studies that replicated the original study by Brock et al. have similar
problems: trading rule optimization, out-of-sample verification, and curve-fitting
were not properly taken into account, although several recent studies incorporated
parameter optimization and transaction costs into their testing procedures.
Compared to emerging markets, trading profits were not found on stock indices in
developed markets or they were substantially decreasing over time. This is
suggested for example by Bessembinder et al. (1998) and Day et al. (2002).

The overall profitability of technical analysis has been more concentrating on the
second part of the 1980s and the first half of the 1990s. Less profitability is reported
for sample periods from around 1995 to the very present. (Consequently, this thesis
focuses on time period 2000-2012.) This finding has been linked to improved
market efficiency and curve fitting. Despite the decline in profitability, some recent
studies have been trying to find explanations for these rather anomalous profits
from trading rules. For example data snooping, risk premium, inappropriate
transaction costs, temporary market inefficiency and market microstructure
deficiencies. The most notable and strongly emerging explanations have been data
snooping and risk premium.

27
3. Data and Methodology

3.1. Sample Selection and Data Sources


In order to have a broad view on the markets, I have selected three different asset
types, of which one can be further divided into four different asset classes. The
instruments I selected are:

1. Stock market index futures


- S&P 500
- Euro Stoxx 50
- Hang Seng
2. FX futures (against USD)
- CAD
- JPY
- CHF
- GBP
- AUD
3. Commodity futures
- Agriculture
i. Corn
ii. Cotton
iii. Soybeans
iv. Sugar
v. Wheat
vi. Live cattle
vii. Coffee
viii. Lean hogs
ix. Cocoa

28
- Energy
i. Natural Gas
ii. Heating Oil
iii. Crude Oil Brent
- Interest Rate
i. T-Bond
ii. 5Y Note
iii. 10Y Note
iv. Eurodollar
- Metal
i. Gold
ii. Silver
iii. High Grade Copper

After these instruments have been selected, I have created a composite for each
subgroup: Stock market future composite includes 3 instruments, fx futures
composite includes 5 instruments, agriculture futures composite includes including
9 instruments etc. Each instrument has an equal portion in the corresponding
composite. These composites are used to analyze the data of the underlying
instruments. Moreover, the composites are compared to buy-and-hold strategies.
The results of buy and hold strategies for different composites are presented in
Appendix.

The data for instruments is collected on Bloomberg using futures’ generic contract
close prices and by selecting the most traded future contract for each
month/quarter depending on the instrument for time period 31.12.2009-
31.12.2012.

29
3.2. Methodology
As mentioned before, I study can Bollinger bands yield excess returns and
consequently are there market inefficiencies from this point of view. I use both
trend following strategy and trend reversal strategy, in other words, I’m trying to
answer the simple question should the current market trend of given instrument be
sold or bought – nor neither? This is done for every of the 27 selected instruments.

I go through different values for moving average from 10 to 250 with interval of 10
meaning 25 different scenarios. I also study what kind of effect does the transaction
fees have on the overall profitability. I estimate opening and closing a transaction
resulting a transaction fee of both 0.00% and 0.50%. In addition, I study the
transaction date effect on the profitability. I use two cases, in which the trade is
executed in the same day the trading signal occurred, T+0 in other words, or on the
next day, T+1 in other words.

As there’s no available ready-to-made software (at least some I could afford), I have
constructed a user interface in Excel with coding VBA in order to examine Bollinger
bands profitability starting from simple text files with close prices and ending to
table of results. This is also done due to focus in this thesis is focuses in general on
automated system trading, algorithms and programming.

The code in more detail is presented in Appendix and the big picture is presented in
Figure 11 – Steps of the Analysis.

30
Figure 11 - Steps of the Analysis

1. Select trading fee (2)

0.00% 0.50%

2. Select strategy (2)

Bollinger trend Bollinger reversal

3. Select number of days for moving average (25)

10 20 30 ... 240 250

4. Select instrument (27)

S&P 500 Euro Stoxx 50 Hang Seng ... High Grade Copper

5. Select trading day lag (2)

T+0 T+1

6. Results

5400 outcomes

31
4. Empirical Results

The following table is used in this chapter to discuss the results. Hence, it will be
explained here, before entering any deeper analysis.

The title (“X Futures”) states the basket introduced in chapter 3.1. Sample Selection
and Data Sources. On the second row Strategy states if the column values are results
from trend following strategy (Trend) or trend reversal strategy (Reverse). The third
row is the amount of fee used in calculations. The fee used in calculations is 0.00%
or 0.50%., which means in practice that the return of opening and closing a position
will be deducted by the fee. Trade signal delay tells when the trade will be done
after trade signal is noticed by algorithm. The trade will be done on the same day’s
close price (0 or T+0) or the next (1 or T+1). This applies also buy, sell and close
signals. The figures 10 to 250 refer to the days of moving average used in analysis.

Table 1 - Trading results table model

X Futures

Strategy Trend Trend Trend Trend Reverse Reverse Reverse Reverse


Fee 0,00% 0,00% 0,50% 0,50% 0,00% 0,00% 0,50% 0,50%
Trade Signal Delay 0 1 0 1 0 1 0 1

10 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%


20 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
30 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
40 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
50 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
60 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
70 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
80 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
90 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
100 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
110 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
120 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
130 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
140 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
150 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
160 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
170 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
180 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
190 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
200 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
210 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
220 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
230 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
240 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
250 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%

32
4.1. Stock market index futures
In short term, 10 to 40 days, Bollinger bands strategy, trend nor reversal, don’t yield
any positive returns after fees. Before fees it appears that markets tend to overreact
in short term and buying at the lower Bollinger band and selling at the higher
Bollinger band is a profitable trading strategy. However, when the fees are
considered, this trading strategy isn’t profitable either due to large amount of
trades, which results a huge amount of trading fees.

Using higher band as a buying signal and lower band as selling signal results
positive returns, especially around 160-240 area. Ones of the most used values
calculating the simple moving average is 150, 200 and 250. In Table 2 it is shown
that the return area much higher when we are using different values (160, 170, 180,
190 or 210, 220, 230, 240) regardless the execution day. One very interesting
finding is that taking or closing the position T+1 leads actually to better returns than
T+0 in most cases.

In general, following the trend of equity futures with Bollinger bands seems to be a
good trading strategy. Many of these variations, also after fees, beat a buy and hold
strategy. This is against weak-form of market efficiency and it can be summarized
that stock market index future market is not efficient. Buy and hold strategy yielded
cumulative return of -5.2% during the given time frame (31.12.1999 - 31.12.2012)
for an unbalanced portfolio with each of chosen 3 future contracts being equally
weighted (1/3). However, equity markets peaked around 2000-2001, so very broad
interpretations should not be concluded and more research should be done due to
selected time frame.

33
Table 2 - Trading results for stock market index futures composite 31.12.1999 - 31.12.2012

Stock Market Index Futures

Strategy Trend Trend Trend Trend Reverse Reverse Reverse Reverse


Fee 0,00% 0,00% 0,50% 0,50% 0,00% 0,00% 0,50% 0,50%
Trade Signal Delay 0 1 0 1 0 1 0 1

10 -48,19% -40,69% -71,54% -67,39% 68,63% 62,72% -5,90% -9,12%


20 -4,62% -14,57% -43,10% -49,08% 11,18% 18,75% -35,18% -30,90%
30 -16,84% -23,46% -45,45% -49,77% 0,08% 4,96% -34,12% -30,93%
40 -0,95% 3,66% -28,27% -24,89% -17,76% -23,04% -40,73% -44,57%
50 20,62% 30,12% -6,91% 0,48% -29,84% -34,13% -45,92% -49,25%
60 16,36% 21,86% -6,21% -1,83% -25,11% -32,71% -40,20% -46,25%
70 44,63% 46,67% 20,94% 22,42% -38,07% -42,68% -49,36% -53,06%
80 36,04% 50,57% 15,92% 28,41% -42,43% -46,84% -51,46% -55,17%
90 51,36% 72,52% 31,22% 49,81% -49,33% -54,04% -56,43% -60,53%
100 59,03% 58,36% 39,67% 39,13% -49,74% -48,11% -56,33% -54,94%
110 47,32% 50,74% 30,37% 33,48% -47,86% -47,41% -54,30% -53,91%
120 48,03% 52,06% 33,02% 36,63% -51,71% -53,52% -56,89% -58,51%
130 42,29% 41,08% 28,63% 27,54% -48,46% -46,42% -53,82% -51,97%
140 38,24% 40,22% 25,80% 27,66% -45,27% -45,09% -50,59% -50,45%
150 48,88% 55,03% 36,03% 41,63% -48,91% -51,17% -53,83% -55,87%
160 63,80% 73,59% 51,14% 60,13% -48,80% -52,88% -53,53% -57,23%
170 68,11% 78,73% 56,13% 65,93% -48,44% -53,44% -52,86% -57,42%
180 74,28% 78,32% 62,78% 66,52% -48,33% -50,56% -52,53% -54,58%
190 75,99% 93,45% 65,00% 81,39% -51,87% -58,19% -55,35% -61,23%
200 64,04% 77,53% 53,74% 66,36% -48,59% -54,56% -52,28% -57,83%
210 62,74% 79,66% 53,21% 69,17% -49,67% -55,18% -53,02% -58,17%
220 74,99% 89,92% 65,52% 79,64% -53,87% -57,23% -56,88% -59,99%
230 71,86% 71,91% 63,02% 62,92% -53,23% -52,54% -56,10% -55,39%
240 66,58% 70,83% 58,43% 62,39% -52,23% -55,51% -55,00% -58,09%
250 56,34% 55,24% 48,79% 47,68% -49,46% -51,15% -52,26% -53,87%

4.2. FX futures (against USD)


With FX futures the results are quite easy to interpret. After transaction fees
positive returns can’t be achieved using Bollinger bands. However, it can be
concluded that currency composite seems to continue trending after crossing upper
or lower band with 110-130 days of simple moving average. Even though, this
doesn’t work as a trading strategy after fees, this may be valuable information for
risk management and hedging fx positions. These results support that fx futures
markets are efficient.

Buy and hold strategy yielded cumulative return of -6.3% during the given time
frame (31.12.1999 - 31.12.2012) for an unbalanced portfolio with each of chosen 5
future contracts being equally weighted (1/5).

34
Table 3 - Trading results for FX futures composite 31.12.1999 - 31.12.2012

FX Futures

Strategy Trend Trend Trend Trend Reverse Reverse Reverse Reverse


Fee 0,00% 0,00% 0,50% 0,50% 0,00% 0,00% 0,50% 0,50%
Trade Signal Delay 0 1 0 1 0 1 0 1

10 -4,98% -3,03% -51,65% -50,64% 8,00% 4,72% -45,17% -46,89%


20 -2,73% -4,51% -43,72% -44,74% -0,67% 0,46% -42,46% -41,81%
30 -10,39% -7,05% -41,89% -39,78% 8,75% 3,21% -29,72% -33,24%
40 -0,52% -2,48% -28,81% -30,23% -0,51% 1,12% -29,46% -28,28%
50 -3,98% 0,21% -27,45% -24,28% -1,85% -6,67% -25,96% -29,60%
60 -6,48% -3,65% -26,70% -24,45% -0,65% -2,75% -22,20% -23,86%
70 4,49% 1,74% -14,16% -16,48% -9,13% -8,06% -25,80% -24,91%
80 -3,22% -3,80% -19,15% -19,62% -3,13% -2,25% -19,07% -18,33%
90 3,45% 4,01% -11,59% -11,09% -9,58% -8,65% -22,81% -22,03%
100 7,89% 5,78% -6,37% -8,17% -11,87% -8,90% -23,65% -21,08%
110 13,18% 9,36% -0,54% -3,87% -16,62% -12,90% -26,77% -23,51%
120 14,52% 11,79% 1,69% -0,72% -18,71% -16,09% -27,90% -25,58%
130 11,94% 8,86% 0,00% -2,76% -17,32% -14,28% -26,23% -23,50%
140 5,77% 7,24% -4,67% -3,30% -11,13% -11,48% -19,97% -20,33%
150 6,23% 5,66% -3,60% -4,10% -11,83% -10,28% -20,03% -18,63%
160 5,59% 7,33% -3,54% -1,96% -10,92% -12,06% -18,62% -19,64%
170 0,79% 1,18% -7,94% -7,58% -6,06% -6,15% -14,16% -14,25%
180 1,54% 1,82% -6,38% -6,11% -5,20% -6,24% -12,62% -13,59%
190 4,64% 4,73% -2,85% -2,76% -8,09% -9,05% -14,69% -15,60%
200 0,66% 3,45% -6,36% -3,75% -4,47% -7,16% -11,16% -13,67%
210 2,08% 1,99% -4,64% -4,74% -5,49% -5,25% -11,74% -11,51%
220 -0,03% -0,17% -6,55% -6,68% -3,04% -2,29% -9,35% -8,64%
230 -1,17% -0,50% -7,25% -6,61% -2,30% -3,05% -8,28% -9,00%
240 -0,09% 0,49% -5,94% -5,37% -2,64% -2,70% -8,35% -8,41%
250 -1,35% 0,48% -6,90% -5,15% -0,78% -1,45% -6,43% -7,07%

4.3. Commodity Futures

4.3.1. Agriculture
The results of agriculture futures composite can be divided roughly into three
subgroups: 10-50 days, 60-160 days and 160 – 250 days. Firstly, using moving
average of 10-50 days, it can be seen that markets tend to overreact as trend
reversal strategy is profitable. However, due these parameters also result in high
amount of trades and hence the profitability after transactions fees is not certain
even though odds for positive returns do increase if trading signal date T+1 is being
used.

Secondly, using moving average of 60-160 days, generates positive return despite
the trading date (T+0 or T+1) or transaction fees. There seems to a stronger
35
momentum towards trending especially when breaking the upper/lower band of
110-150 days. Thirdly, using moving average of 160-250 days shows that the
agriculture composite tends to overreact and trend reversal strategy yield positive
returns.

Moreover, the outcome can be summarized that agriculture futures composite


seems to overreact in the short and long run, but in the between the market seems
to establish a trend. However, none of the tested parameters did beat the buy and
hold strategy. Buy and hold strategy yielded cumulative return of 139.7% during
the given time frame (31.12.1999 - 31.12.2012) for an unbalanced portfolio with
each of chosen 9 future contracts being equally weighted (1/9). Hence, it can be
concluded that agriculture futures market are efficient.

Table 4 - Trading results for agriculture futures composite 31.12.1999 - 31.12.2012

Commodity futures: Agriculture

Strategy Trend Trend Trend Trend Reverse Reverse Reverse Reverse


Fee 0,00% 0,00% 0,50% 0,50% 0,00% 0,00% 0,50% 0,50%
Trade Signal Delay 0 1 0 1 0 1 0 1

10 -21,68% -28,99% -61,37% -65,01% 19,97% 36,19% -41,87% -33,82%


20 -25,28% -35,01% -56,49% -62,14% 19,88% 30,70% -31,61% -25,51%
30 -31,96% -35,80% -55,37% -57,86% 54,23% 76,47% 0,76% 15,35%
40 -9,85% 1,30% -34,82% -26,57% 21,13% 48,90% -12,33% 7,84%
50 2,51% 0,82% -22,43% -23,67% 49,24% 54,84% 13,26% 17,48%
60 28,17% 36,24% 2,11% 8,76% -6,29% 0,48% -25,40% -20,00%
70 32,81% 44,93% 9,13% 19,08% -23,10% -23,86% -37,09% -37,65%
80 32,88% 36,57% 11,71% 14,74% -30,56% -18,68% -42,30% -32,28%
90 23,77% 28,84% 5,68% 9,85% -23,78% -20,30% -35,99% -32,99%
100 17,45% 19,77% 1,42% 3,44% 0,98% 14,64% -14,33% -2,67%
110 51,68% 68,53% 33,94% 48,97% -15,92% 0,84% -27,41% -12,85%
120 60,26% 68,13% 42,80% 50,01% -1,30% 4,03% -13,88% -9,18%
130 83,44% 77,22% 66,18% 60,62% -12,25% -0,06% -22,69% -11,88%
140 54,60% 73,41% 40,12% 57,47% 16,85% 23,28% 3,68% 9,40%
150 33,91% 29,95% 21,48% 17,86% 32,13% 38,30% 18,08% 23,73%
160 18,87% 15,09% 8,18% 4,70% 24,59% 27,39% 12,16% 14,84%
170 13,87% 12,41% 4,20% 2,85% 20,98% 26,62% 9,68% 15,00%
180 9,68% 19,02% 0,71% 9,38% 20,78% 20,26% 10,11% 9,68%
190 13,14% 22,77% 4,75% 13,74% 55,83% 57,26% 42,43% 43,83%
200 2,07% 8,99% -5,39% 1,12% 33,02% 37,57% 22,75% 26,97%
210 -5,94% -3,25% -12,37% -9,82% 62,13% 63,31% 50,03% 51,13%
220 -14,03% -11,91% -19,59% -17,52% 65,75% 72,02% 53,63% 59,47%
230 -12,89% -12,24% -18,27% -17,67% 42,76% 48,40% 33,02% 38,35%
240 -12,16% -14,83% -17,44% -19,96% 36,76% 44,37% 27,66% 34,83%
250 -12,09% -13,86% -17,14% -18,79% 29,27% 39,24% 20,90% 30,32%

36
4.3.2. Energy
Energy futures composite didn’t yield almost any profitable returns (1 out of 25)
when trending markets was explored with transaction fees. In the very short time
period of 10 days trend reversal strategy did yield profitable results. These results
(+72.34%) were substantially lower (49.73%) if the trading was executed T+0
compared to T+1. Two of the most used values for moving average (150 and 250
days) were not profitable after fees for trend reversal strategy, but every parameter
between these was. This may be explained that this reversal strategy is being
executed by many market participants and hence there are no excess returns
available.

Even though the best reversal trading strategy did yield decent cumulative profit of
+129.53% using 190 days of moving average, it still didn’t beat the buy and hold
strategy. Buy and hold strategy yielded cumulative return of 214.6% during the
given frame (31.12.1999 - 31.12.2012) for an unbalanced portfolio with each of
chosen 3 future contracts being equally weighted (1/3). Hence, it can be concluded
that energy futures markets are efficient.

37
Table 5 - Trading results for energy futures composite 31.12.1999 - 31.12.2012

Commodity futures: Energy

Strategy Trend Trend Trend Trend Reverse Reverse Reverse Reverse


Fee 0,00% 0,00% 0,50% 0,50% 0,00% 0,00% 0,50% 0,50%
Trade Signal Delay 0 1 0 1 0 1 0 1

10 -82,50% -80,30% -90,90% -89,68% 230,74% 188,73% 72,34% 49,73%


20 -22,85% -17,77% -54,50% -51,92% 21,97% -27,55% -31,11% -59,10%
30 13,86% 20,12% -25,61% -21,38% -7,07% 15,96% -40,60% -25,68%
40 -48,80% -53,32% -64,05% -67,38% 16,37% 5,48% -19,40% -26,82%
50 -57,51% -48,91% -68,55% -62,10% -6,05% -16,92% -30,87% -38,88%
60 -29,18% -23,73% -44,56% -40,19% -46,34% -44,80% -58,47% -57,26%
70 -34,83% -25,60% -47,52% -39,94% -41,05% -38,56% -53,38% -51,27%
80 -24,62% -22,78% -37,74% -36,26% -55,02% -54,50% -63,09% -62,65%
90 -29,88% -24,05% -41,11% -36,18% -44,64% -50,95% -53,55% -58,90%
100 -25,22% -8,35% -35,93% -21,26% -39,87% -53,50% -48,52% -60,32%
110 -5,31% -8,04% -17,58% -19,89% -45,04% -52,57% -52,09% -58,80%
120 -10,41% -14,24% -21,16% -24,53% -37,83% -40,60% -45,44% -47,99%
130 30,39% 25,70% 16,81% 12,62% -58,19% -69,27% -62,62% -72,67%
140 -20,81% -22,09% -29,19% -30,34% -7,42% -21,80% -15,83% -29,12%
150 -37,03% -28,50% -43,52% -35,84% 15,50% -2,67% 5,50% -11,22%
160 -42,54% -37,80% -48,32% -43,97% 16,11% 15,03% 6,27% 5,17%
170 -45,10% -51,45% -50,36% -56,11% 43,46% 63,54% 31,73% 50,34%
180 -41,50% -43,65% -46,40% -48,40% 133,23% 94,93% 115,15% 79,57%
190 -50,10% -48,89% -54,33% -53,21% 168,06% 148,82% 147,43% 129,53%
200 -52,27% -51,18% -56,09% -55,09% 82,53% 57,28% 70,10% 46,35%
210 -41,91% -41,17% -46,28% -45,59% 31,59% 22,15% 22,68% 13,72%
220 -49,47% -50,79% -53,25% -54,47% 56,09% 45,32% 45,86% 35,59%
230 -21,68% -18,27% -26,19% -22,99% 39,00% 19,80% 29,93% 11,73%
240 -23,51% -24,45% -27,87% -28,75% 19,91% 19,85% 12,75% 12,55%
250 -16,73% -16,91% -21,07% -21,19% -3,28% -6,96% -8,19% -11,82%

4.3.3. Interest Rate


Interest rate futures composite didn’t yield any positive returns after fees. The
behavior of the interest futures may be seen by the trading results before fees and
the decision of the trade date. When the system is trying to follow the trend
changing the trade date from T+0 to T+1 has a positive result on returns. Vice versa,
in reversal strategy executing trades T+0 yields better results than T+1 in every
case. Hence, it can be concluded that in the case of mean reversion markets acts
faster, than if the markets are trending according to simple moving average.

Buy and hold strategy yielded cumulative return of 19.2% during the given frame
(31.12.1999 - 31.12.2012) for an unbalanced portfolio with each of chosen 4 future
contracts being equally weighted (1/4). Consequently, none of Bollinger bands

38
trading strategies were able to achieve that figure and interest rate futures markets
are efficient.

Table 6 - Trading results for interest rate futures composite 31.12.1999 - 31.12.2012

Commodity futures: Interest Rate

Strategy Trend Trend Trend Trend Reverse Reverse Reverse Reverse


Fee 0,00% 0,00% 0,50% 0,50% 0,00% 0,00% 0,50% 0,50%
Trade Signal Delay 0 1 0 1 0 1 0 1

10 -1,93% 2,79% -44,75% -41,80% 1,47% -3,41% -42,52% -45,53%


20 1,39% 3,40% -35,59% -34,09% -2,18% -4,09% -37,48% -38,92%
30 -2,82% -2,10% -30,90% -30,19% 2,35% 2,21% -27,62% -27,93%
40 0,41% 1,89% -23,05% -21,83% -1,02% -2,28% -24,32% -25,36%
50 0,88% 3,41% -19,86% -17,80% -1,19% -3,61% -21,69% -23,65%
60 -2,07% 0,07% -21,24% -19,49% 1,93% -0,05% -18,37% -19,99%
70 -2,05% -1,01% -19,11% -18,19% 1,70% 1,08% -16,40% -16,97%
80 -1,53% 1,33% -16,82% -14,38% 1,14% -1,65% -14,81% -17,18%
90 2,53% 4,39% -10,92% -9,26% -3,19% -4,90% -16,02% -17,54%
100 1,31% 2,67% -11,04% -9,80% -1,85% -2,91% -14,04% -15,02%
110 -1,77% 0,53% -13,21% -11,17% 1,69% -0,37% -10,57% -12,40%
120 -1,85% 0,75% -12,43% -10,12% 1,67% -0,79% -9,67% -11,85%
130 -1,69% 0,40% -11,44% -9,56% 1,45% -0,39% -8,92% -10,58%
140 -1,60% 1,03% -10,70% -8,30% 1,48% -0,92% -8,21% -10,39%
150 -0,65% 1,37% -9,51% -7,66% 0,48% -1,26% -8,76% -10,35%
160 -1,40% 0,85% -10,11% -8,06% 1,48% -0,59% -7,72% -9,61%
170 -1,52% 0,07% -9,79% -8,33% 1,67% 0,39% -7,07% -8,25%
180 -3,32% -2,21% -11,30% -10,28% 4,30% 3,65% -4,58% -5,19%
190 -4,55% -2,84% -12,31% -10,74% 6,10% 4,69% -2,83% -4,12%
200 -1,45% 1,07% -8,69% -6,36% 2,39% -0,03% -5,39% -7,62%
210 -1,13% 1,38% -8,13% -5,81% 2,34% -0,16% -5,23% -7,53%
220 1,50% 3,82% -4,95% -2,79% -1,34% -3,49% -7,73% -9,74%
230 1,01% 2,58% -5,19% -3,72% -0,81% -1,90% -6,99% -8,02%
240 1,78% 3,49% -4,11% -2,51% -1,84% -3,27% -7,61% -8,94%
250 2,03% 3,56% -3,64% -2,20% -2,15% -3,30% -7,67% -8,74%

4.3.4. Metal
Trend strategy yielded positive returns for metal futures composite with both T+0
and T+1 execution strategies. However, the time frame was somewhat biased as it
was a great bull market for metals: copper +323%, silver +457% and gold +474%.
Consequently none of Bollinger band strategies was able to achieve these results
and due to strong bull market trend reversal strategies with different parameters all
generated substantial losses. Buy and hold strategy yielded cumulative return of
418.4% during the given frame (31.12.1999 - 31.12.2012) for an unbalanced

39
portfolio with each of chosen 3 future contracts being equally weighted (1/3).
Under this circumstances metal futures market can be claimed to be efficient.

Table 7 - Trading results for metal futures composite 31.12.1999 - 31.12.2012

Commodity futures: Metal

Strategy Trend Trend Trend Trend Reverse Reverse Reverse Reverse


Fee 0,00% 0,00% 0,50% 0,50% 0,00% 0,00% 0,50% 0,50%
Trade Signal Delay 0 1 0 1 0 1 0 1

10 18,43% 49,32% -40,73% -24,83% -42,62% -46,10% -71,39% -73,39%


20 -10,28% -17,55% -49,56% -53,85% -37,02% -24,85% -64,21% -57,20%
30 16,58% 0,08% -23,34% -34,75% -45,10% -21,41% -64,25% -48,41%
40 26,68% 45,53% -8,57% 4,50% -41,67% -38,38% -58,02% -55,49%
50 58,53% 46,95% 22,32% 13,23% -51,87% -51,04% -62,83% -62,19%
60 20,05% 42,32% -4,86% 12,74% -48,57% -52,89% -59,15% -62,58%
70 18,04% 38,89% -3,61% 13,51% -47,89% -44,71% -57,46% -54,86%
80 87,39% 103,89% 58,25% 72,25% -56,17% -53,56% -62,88% -60,66%
90 122,43% 135,65% 90,96% 102,42% -70,54% -71,83% -74,53% -75,66%
100 49,64% 68,80% 28,71% 45,07% -68,01% -67,36% -72,20% -71,62%
110 56,39% 80,80% 36,55% 57,91% -62,02% -61,72% -66,84% -66,55%
120 63,02% 103,63% 44,02% 80,08% -58,08% -64,42% -63,35% -68,84%
130 73,44% 101,73% 55,91% 81,54% -64,62% -64,06% -68,68% -68,21%
140 56,05% 75,24% 40,74% 58,06% -64,35% -65,84% -68,21% -69,52%
150 72,23% 84,03% 57,20% 67,93% -74,75% -77,02% -77,29% -79,32%
160 52,02% 60,34% 39,24% 46,84% -71,26% -72,93% -74,00% -75,43%
170 57,75% 71,02% 45,10% 57,27% -81,65% -69,54% -83,33% -72,12%
180 148,08% 149,92% 132,98% 134,76% -85,04% -74,25% -86,25% -76,10%
190 90,88% 86,29% 79,31% 74,95% -82,50% -67,80% -83,95% -70,17%
200 78,04% 77,23% 67,34% 66,49% -66,12% -67,22% -68,67% -69,69%
210 86,98% 90,23% 76,45% 79,48% -74,04% -74,67% -75,87% -76,46%
220 64,58% 67,03% 55,38% 57,69% -72,85% -71,98% -74,71% -73,90%
230 61,36% 51,27% 52,88% 43,22% -70,14% -69,64% -72,12% -71,66%
240 136,21% 137,84% 125,82% 127,39% -81,55% -80,13% -82,64% -81,28%
250 118,20% 102,98% 109,30% 94,55% -78,36% -77,91% -79,54% -79,11%

40
5. Conclusions

This study focuses on trend following and trend reversal strategies by using
Bollinger bands to find optimal trading parameters. Bollinger bands are a band
plotted two standard deviations away from a simple moving average. Due to
standard deviation is a measure of volatility, Bollinger bands adjust themselves to
the market conditions.

Firstly, my hypothesis is that volatility is a key driver for profitable trading strategy.
This hypothesis naturally includes the assumption that there are market
inefficiencies. Secondly, I assume that certain instruments behave in the same way,
i.e. have high level of correlation regarding volatility, and hence, they can be
combined and analyzed as an asset class composite.

In general, following the trend of equity futures with Bollinger bands seems to be a
good trading strategy. Many of these variations, also after fees, beat a buy and hold
strategy. This is against weak-form of market efficiency and it can be summarized
that stock market index future market is not efficient. However, all the other
markets (fx, agriculture, energy, interest rate, and metal) seemed to be efficient and
Bollinger band trading strategy, trend or reversal, didn’t yield any excess returns.
This is also supported by other recent studies, which have been focused on technical
analysis’ profitability. Still, even though these strategies were not more profitable
than buy and hold strategies, these results may give important information on
market dynamics and potential trend patterns which can be exploited in the field of
risk management and hedging market exposure.

41
It should be mentioned, that this thesis underlines only one figure, the overall profit
during the period. Hence, very broad interpretations are hard to conclude as the
simulated portfolio’s volatility is not calculated during this period. In other words,
even though buy and hold strategy wins (loses) Bollinger band strategy, it still may
have significantly lower (higher) Sharpe ratio - usually an risk averse investor
prefers, or at least should prefers, a portfolio with 9.0% yield and volatility of 3.0%
to a portfolio with 9.5% yield and volatility of 6.0%, for example.

In addition, how is the overall performance generated, is still a bit mystery. Is it a


result of only a few great trades or are most of the executed trades contributing to
the performance? It might be that a great portion of the return was made with few
trades and in the meantime the money was lying in the bank account, even though it
could be invested in some other profitable strategy. Hence, more detailed
attribution analysis would give us beneficial information for comprehensive
portfolio construction purposes.

42
References

Aggarwal, Raj & Mougoue, Mbodja. Cointegration among Asian currencies: Evidence
of the increasing influence of the Japanese yen. Japan and the World Economy,
Elsevier, vol. 8(3), pages 291-308, September. 1996.

F. Allen, R. Karjalainen. Using genetic algorithms to Þnd technical trading rules.


Journal of Financial Economics 51 (1999) 245-271

H. Bessembinder, K. Chan. Market Efficiency and the Returns to Technical Analysis.


Financial Management, Financial Management Association, vol. 27(2), Summer
1998.

Bloomberg. History of Algorithmic Trading Shows Promise and Perils. 08.08.2012.

Bloomberg Businessweek. How the Robots Lost: High-Frequency Trading's Rise and
Fall. 06.06.2013.

Bloomberg. Gross Loses World’s Largest Mutual Fund Title to Vanguard. 04.11.2013.

Brock, Lakonishok, LeBaron. Simple technical trading rules and the stochastic
properties of stock returns. Journal of Finance 47, 1731-1764.

Jonathan A. Brogaard. High frequency trading and its impact on market quality.
16.07.2010.

T. Chordia, R. Roll, A. Subrahmanyam. Recent trends in trading activity and market


quality. Journal of Financial Economics. 101/2011.

43
Economist. Ahead of the tape. 21.06.2007.

J. Egginton, B. Van Ness, R. Van Ness. Quote stuffing. Working paper University of
Mississippi 2011.

Euromoney. The pros and cons of algorithmic trading. Vol. 37, Issue 445, p132-141,
May 2006.

E. Fama. Efficient Capital Markets: A Review of Theory and Empirical Work. The
Journal of Finance, Vol. 25, No. 2, 1970.

Financial Times. Algorithmic Trades Heighten Volatility. 04.12.2008.

Financial Times. Algorithmic Trades Produce Snowball Effects on Volatility.


05.12.2008.

A. Gunasekarage, D.M. Power. The protability of moving average trading rules in


South Asian stock markets. Emerging Markets Review 2, 17-33. 2001.

R. Gençay, M. Dacorogna, U. A. Muller, O Pictet, R. Olsen. An Introduction to High-


Frequency Finance. 2001.

J. Hasbrouck, G. Saar. Technology and liquidity provision: The blurring of traditional


definitions. Journal of Financial Markets 12 , 2009.

T. Hendershott, C. Jones, C.M.b, A. Menkveld. Does algorithmic trading improve


liquidity? Journal of Finance. Vol. 66, Issue 1, Feb 2011.

44
K. Kendall. Electronic and Algorithmic Trading Technology. 2007.

R. Kissel, A. Hanif. The Science of Algorithmic Trading and Portfolio Management.


2014.

B. LeBaron. The Stability of Moving Average Technical Trading Rules on the Dow Jones
Index. 1999.

T. Lin. The New Investor. 60 UCLA Law Review 678, 2013.

Lukac, L.P., B.W. Brorsen. A Comprehensive Test of Futures Market Disequilibrium.


Financial Review, 25(1990):593-622.

A. Madhavan. Exchange-traded funds, market structure and the flash crash. Working
paper. Blackrock Inc. 2012.

B. Malkiel. A Random Walk Down Wall Street. W. W. Norton & Company, Inc., 1973

Neely, Christopher J. & Weller, Paul A., 2001. Technical analysis and central bank
intervention. Journal of International Money and Finance, Elsevier, vol. 20(7), pages
949-970, December. 2001.

Christopher Neely, Paul Weller and Rob Dittmar. Is Technical Analysis in the Foreign
Exchange Market Profitable? A Genetic Programming Approach. The Journal of
Financial and Quantitative Analysis Vol. 32, No. 4 (Dec., 1997), pp. 405-426

45
Neely, C. J. & Weller, P. A. Intraday technical trading in the foreign exchange market.
Journal of International Money and Finance, Elsevier, vol. 22(2), pages 223-237,
April. 2003.

Christopher J. Neely. The temporal pattern of trading rule returns and central bank
intervention: intervention does not generate technical trading rule profits. Working
Papers 2000-018, Federal Reserve Bank of St. Louis. 2002.

The New York Times. A London Hedge Fund That Opts for Engineers, Not M.B.A.’s.
18.08.2006.

The New York Times. Stock Traders Find Speed Pays, in Milliseconds. 23.070.2009

The New York Times. Times Topics: High-Frequency Trading. 20.12.2012

Ratner M., Leal R.P.C. Tests of technical trading strategies in the emerging equity
markets of Latin America and Asia. Journal of Banking & Finance, Vol. (23), Pp.1887-
1905. 1999.

Mark J Ready, 2002. Profits from Technical Trading Rules. Financial Management,
Financial Management Association, vol. 31(3), Fall. 2002.

P. Saacke. Technical analysis and the effectiveness of central bank intervention.


Journal of International Money and Finance 21 (2002) 459–47.

Sapp, Tiwari. Does Stock Return Momentum Explain the “Smart Money” Effect? The
Journal of Finance Volume 59, Issue 6, pages 2605–2622, December 2004

46
M. Scholtus, D. van Dijk, B. Frijns. Speed, algorithmic trading, and market quality
around macroeconomic news announcements. Journal of Banking & Finance. Vol. 38,
Jan 2014.

Wall Street Journal. The Dark Side of Algorithms. 07.05.2010.

Wang. Foundations of Technical Analysis: Computational Algorithms, Statistical


Inference, and Empirical Implementation. Journal of Finance 55, 1705-1770, 2000.

47
Appendix

Buy and hold strategies’ returns


Future Asset Class 31.12.1999 31.12.2012 Return % Portion Return Attr. Buy and hold
Corn Agriculture 204,5 698,25 241% 1/9 26,83%
Cotton 2 Agriculture 50,74 75,14 48% 1/9 5,34%
Soybeans Agriculture 461,75 1418,75 207% 1/9 23,03%
Sugar 11 Agriculture 6,12 19,51 219% 1/9 24,31%
Wheat Agriculture 248,5 778 213% 1/9 23,68%
Live Cattle Agriculture 68,475 129,9 90% 1/9 9,97%
Coffee Agriculture 125,9 143,8 14% 1/9 1,58%
Lean Hogs Agriculture 54,5 85,725 57% 1/9 6,37%
Cocoa Agriculture 837 2236 167% 1/9 18,57% 139,67%
SP500 Equity 1469,25 1426,19 -3% 1/3 -0,98%
HSI Equity 16962,1 22656,92 34% 1/3 11,19%
ESTX50 Equity 4904,46 2635,93 -46% 1/3 -15,42% -5,20%
CAD FX 1,4461 0,9948 -31% 1/5 -6,24%
JPY FX 102,51 86,1 -16% 1/5 -3,20%
CHF FX 1,5907 0,9154 -42% 1/5 -8,49%
GBP FX 1,6182 1,6176 0% 1/5 -0,01%
AUD FX 0,6567 1,0378 58% 1/5 11,61% -6,33%
Natural Gas Energy 2,329 3,351 44% 1/3 14,63%
HeatingOil Energy 69,03 304,51 341% 1/3 113,71%
Crude Oil Brent Energy 25,6 91,82 259% 1/3 86,22% 214,56%
T-Bond Interest Rate 94,5 99,27 5% 1/4 1,26%
5Y Note Interest Rate 98,0156 124,5625 27% 1/4 6,77%
10Y Note Interest Rate 95,8594 132,7813 39% 1/4 9,63%
Eurodollar Interest Rate 93,835 99,7 6% 1/4 1,56% 19,22%
High Grade Copper Metal 86,3 365,25 323% 1/3 107,74%
Silver Metal 5,413 30,173 457% 1/3 152,47%
Gold Metal 289,76 1664,46 474% 1/3 158,14% 418,36%

48
VBA Code for Analysis
First we start by initiating the simulation and clearing previous data on all output
sheets.

Sub SimulationStart()
Application.ScreenUpdating = False

TradesAmount = 0 'How many trades done


TradeFreq = 0 'Trade date after signal
Call GetInitialSetup 'Initial values for multiple variables
Call StartMachineLearning 'This initites to find trades according to
strategy
End Sub

Next we define all the necessary variables in order to make our simulation act
accordingly.

Sub GetInitialSetup()
Application.StatusBar = "Sub GetInitialSetup()"

'Initial Setup
InitialCash = Range("InitialCash")
MaxLoss = Range("MaxLoss")
StartDate = Range("StartDate")
EndDate = Range("EndDate")
LookbackYears = Range("LookbackYears")
TradingYears = Range("TradingYears")
MaxLeverage = Range("MaxLeverage")
TradeFee = Range("Fee")

'Additional Setup
RunGroups = Range("RunGroups")
ScreenUpdateFreq = Range("ScreenUpdateFreq")
AllowedCorr = Range("AllowedCorr")
CorrelationUpdate = Range("CorrelationUpdate")
MonteCarlo = Range("MonteCarlo")

'Reporting
SendingEmail = Range("SendingEmails")
SendEmailFreq = Range("SendEmailFreq")
EmailTo1 = Range("EmailTo1")
EmailTo2 = Range("EmailTo1")
RepFolder = Range("Folder")

End Sub

49
The actual loop where algorithm goes through different moving average options for
Bollinger band for every instrument starts here. Strategies range includes two
variables (trend, reversal) and instruments range includes all the 27 different
instruments.

Sub StartMachineLearning()
Set Rng = Range("Strategies")
For Each s In Rng
Strategy = s
Call MultipleSetup
LoopSMA = SMAStart
Range("SMA") = LoopSMA
Do Until LoopSMA > SMAStop 'Start SMA/ Days Lookback Loop
Set Rng2 = Range("Instruments")
For Each i In Rng2
InstrumentForFile = i
If IsEmpty(i) = False Then Call RunSimulation
Next i
LoopSMA = LoopSMA + SMADelta
Loop
Next s
MachineLearning = False
End Sub

Sub MultipleSetup()
SMAStart = Range("SMAStart")
SMAStop = Range("SMAStop")
SMADelta = Range("SMADelta")
StDevStart = Range("StDevStart")
StDevStop = Range("StDevStop")
StDevDelta = Range("StDevDelta")
End Sub

Here the actual simulation starts. The general logic is following: First we have to
clear data related previous simulation, define the close price for the instrument for
given interval, which in this case is 31.12.1999-31.12.2012 and ensure that our data
is valid between those dates.

Sub RunSimulation()

ThisWorkbook.Activate
Application.ScreenUpdating = False
Application.Calculate

50
Application.Calculation = xlCalculationManual

'Fixed VBA
RunDayInt = 1
CumProfit = 1
StrategyTrades = 0

Application.StatusBar = "Sub RunSimulation()"

If MonteCarlo = "Yes" Then Call MonteCarloSimulation 'Randomizing daily


ln returns etc.
Call ClearPreviousData 'Clearing Previous Data
Call CreateArClosePr 'Create Price Array
Call ValidateData 'Check that dates are valid
Call CreateArFixed 'Create Other Arrays
Call CreateArTargets 'Create Target Prices for Trading
Call StartBacktest 'Start Backtest
Call ShowResultsNew 'Start Combining Results
Call WriteLog
End Sub

Sub ClearPreviousData()
Application.StatusBar = "Sub ClearPreviousData()"

Erase ArClosePr
Erase ArShortTF
Erase ArShortTarget1
Erase ArShortTarget2
Erase ArShortTarget3
Erase ArLongTF
Erase ArLongTarget1
Erase ArLongTarget2
Erase ArLongTarget3

Erase ArVolatility
Erase ArWorkingArray
Erase ArActiveTrades
Erase ArDailyAum
Erase ArActiveTrades
Erase ArMTM
Erase ArClosed
Erase ArExitTarget
Erase ArStopTargetLong
Erase ArStopTargetShort
Erase ArDailyCumAum
Erase ArAssetTypeCumPL
Erase ArAssetTypeCumLN
Erase ArDays
Erase ArNominal
Erase ArClosedTradesDetail
End Sub

Sub CreateArClosePr()
Application.StatusBar = "Sub CreateArClosePr()"

51
'Open ClosePrices.txt
PriceFile = RepFolder & "\Price Data\" & InstrumentForFile & ".xlsx"
Workbooks.Open (PriceFile)

'Create ArClosePr
ArrayEndY = Range("A1").End(xlDown).Row
ArrayEndX = Range("A1").End(xlToRight).Column

'Dim here all the matrix to be same size aka. day rows and instrument
columns
ReDim ArClosePr(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArLongTarget1(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArLongTarget2(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArLongTarget3(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArShortTarget1(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArShortTarget2(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArShortTarget3(1 To ArrayEndY, 1 To ArrayEndX) As Variant

ReDim ArVolatility(1 To ArrayEndY, 1 To ArrayEndX) As Variant


ReDim ArMTM(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArClosed(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArNominal(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArStopTargetLong(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArStopTargetShort(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArDailyCumAum(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArAssetTypeCumLN(1 To ArrayEndY, 1 To ArrayEndX) As Variant
ReDim ArClosedTradesDetail(1 To 100000, 1 To 20)
ReDim ArStrategies(1 To 8, 1 To 5)

'Set ArClosePr
ArClosePr = Range(Range("A1"), Range("A1").Offset(ArrayEndY - 1,
ArrayEndX - 1))
ActiveWorkbook.Close False

End Sub

Sub ValidateData()
'Check StartDate
For j = 1 To UBound(ArClosePr(), 1)
Z = Format(ArClosePr(j, 1), "dd.mm.yyyy")
If Format(ArClosePr(j, 1), "dd.mm.yyyy") = StartDate And
IsDate(Format(ArClosePr(j, 1), "dd.mm.yyyy")) Then
StartDate = Format(ArClosePr(j, 1), "dd.mm.yyyy")
StartDateOk = 1
Exit For
End If
Next j
For j = 1 To UBound(ArClosePr(), 1)
Z = Format(ArClosePr(j, 1), "dd.mm.yyyy")
If Format(ArClosePr(j, 1), "dd.mm.yyyy") = EndDate And
IsDate(Format(ArClosePr(j, 1), "dd.mm.yyyy")) Then
EndDate = Format(ArClosePr(j, 1), "dd.mm.yyyy")
EndDateOk = 1
Exit For
End If

52
Next j
If StartDateOk = 1 And EndDateOk = 1 Then
Else:
MsgBox ("Check dates!" & vbNewLine & "- Startdate: " & StartDateOk
& vbNewLine & "- Enddate: " & EndDateOk)
Stop
End
End If
End Sub

Secondly, we create a matrix to monitor active trades and flag the first trade. This is
due to the signal may have occurred before our initial trading date 31.12.1999.
Hence, every first trade of every instrument is blocked to keep the results unbiased.
Here also the strategy matrix is introduced, which will be referred later in the code
as we proceed.

Sub CreateArFixed()
Application.StatusBar = "Sub CreateArFixed()"

'ArActiveTrades
jEnd = Range("oArActiveTrades").End(xlDown).Row -
Range("oArActiveTrades").Row + 1
ReDim ArActiveTrades(1 To jEnd, 1 To ArrayEndX) As Variant
For i = 1 To ArrayEndX
ArActiveTrades(1, i) = ArClosePr(1, i)
Next i
For j = 1 To jEnd
ArActiveTrades(j, 1) =
Sheets("Wheel").Range("oArActiveTrades").Offset(j - 1, 0)
Next j
'Fill in "First Trade Ignore"
For j = 1 To jEnd
If ArActiveTrades(j, 1) = "First Trade" Then
For i = 2 To ArrayEndX
ArActiveTrades(j, i) = "TRUE"
Next i
End If
Next j

'ArDays
ReDim ArDays(1 To UBound(ArClosePr, 1) - 1)
For j = 2 To UBound(ArClosePr, 1)
ArDays(j - 1) = ArClosePr(j, 1)
Next j

'ArStrategies
jEnd = Range("oArStrategies").End(xlDown).Row -
Range("oArStrategies").Row + 1
ReDim ArStrategies(1 To jEnd, 1 To 5) As Variant

53
For j = 1 To jEnd
For i = 1 To 5
ArStrategies(j, i) = Range("oArStrategies").Offset(j - 1, i
- 1)
Next i
Next j

End Sub

Thirdly target prices are created. In practice these target prices are later used to
define if algorithm should go long or short.

Sub CreateArTargets()
Application.StatusBar = "Sub CreateArTargets()"

RunDate = StartDate
For j = 1 To UBound(ArClosePr, 1)
If RunDate = Format(ArClosePr(j, 1), "dd.mm.yyyy") Then
DayRow = j
Exit For
End If
Next j
'For each instrument and day get strategies and make an array
For i = 2 To UBound(ArClosePr, 2)
InstrumentX = i
For j = DayRow To UBound(ArClosePr, 1)
DateY = j
'Subs for different strategies
If Strategy = "Bollinger Trend" Or Strategy = "Bollinger Rev"
Then
Call Bollinger
Else:
MsgBox ("Unrecognized strategy!")
Stop
End If
DoEvents
Next j 'Next day
Next i 'Next instrument
End Sub

Sub Bollinger()

'Constant
xStDev = 2

'Exit Sub if the price is null


If ArClosePr(DateY - 250, InstrumentX) = "" Then Exit Sub

'Target prices
ReDim ArWorkingArray(1 To LoopSMA) As Double
For t = 1 To LoopSMA

54
ArWorkingArray(t) = ArClosePr(DateY - t + 1, InstrumentX)
Next t
SMA = Application.Average(ArWorkingArray)
StDev = Application.StDev(ArWorkingArray)
If Strategy = "Bollinger Trend" Then
ArLongTarget1(DateY, InstrumentX) = SMA + xStDev * StDev
ArShortTarget1(DateY, InstrumentX) = SMA - xStDev * StDev
ElseIf Strategy = "Bollinger Rev" Then
ArLongTarget1(DateY, InstrumentX) = SMA - xStDev * StDev
ArShortTarget1(DateY, InstrumentX) = SMA + xStDev * StDev
Else: Stop
End If
End Sub

Fourth step is to go through each day between 31.12.1999-31.12.2012 and check if


the close price has crossed long or short target. If the target has been crossed the
position is taken T+0 or T+1 depending on our initial setup. In this thesis both
variations are examined. Also the exit price and the close price for every trade are
updated daily. If these prices are crossed when position is open, we liquidate the
position – on the same day (T+0) or next (T+1) - depending on selected preference.
Moreover the cumulative performance of the trade is monitored by “Sub
TradeClosed()”

Sub StartBacktest()
Application.StatusBar = "Sub StartBacktest() | Strategy: " & Strategy &
" | Lookback: " & LoopSMA & " Days"

'First Row is DayRow (Already got)


'Get Last Row For Period
For j = 1 To UBound(ArClosePr, 1)
If EndDate = Format(ArClosePr(j, 1), "dd.mm.yyyy") Then
EndRow = j
Exit For
End If
Next j

'1) Go Throgh Each Day For Selected Backtest Days


For j = DayRow To EndRow

'Show RunDate
RunDate = ArClosePr(j, 1)

Application.StatusBar = "Cumulative Profit: " & Format(CumProfit - 1,


"Percent") & " | Date: " & RunDate

'2) Go Throgh Each Instrument For Date (j)

55
For i = 2 To UBound(ArClosePr, 2)
Instrument = ArClosePr(1, i)
TradeSignalLong = False
TradeSignalShort = False

'2a) Check If Trade Signal Is Generated:


'Long Strategies:
If Strategy = "Bollinger Trend" And ArClosePr(j, i) >
ArLongTarget1(j, i) _
Or Strategy = "Bollinger Rev" And ArClosePr(j, i) <
ArLongTarget1(j, i) Then
TradeSignalLong = True
Direction = 1
'Short Strategies:
ElseIf Strategy = "Bollinger Trend" And ArClosePr(j, i) <
ArShortTarget1(j, i) _
Or Strategy = "Bollinger Rev" And ArClosePr(j, i) >
ArShortTarget1(j, i) Then
TradeSignalShort = True
Direction = -1
End If

'2b) Check no previous position


If TradeSignalShort = True Or TradeSignalLong = True Then
'Signal is generated
If ArActiveTrades(7, i) = "" Or ArActiveTrades(7, i) = "0"
Then 'There is no previous trade
If Direction = 1 Then Call GetLongStopPrice Else Call
GetShortStopPrice
ArActiveTrades(1, i) = Instrument
ArActiveTrades(2, i) = ArClosePr(j + TradeFreq, 1)
'Fill Trade Date
ArActiveTrades(4, i) = ArClosePr(j + TradeFreq, i)
'Fill Trade Price
ArActiveTrades(5, i) = StopPrice 'Fill Stop Price
ArActiveTrades(7, i) = Direction 'Fill Long/Short
ArActiveTrades(15, i) = AssetType 'Remove somewhere
else...
End If
End If

'2c) Update Exit Price for Trades


If ArActiveTrades(7, i) <> "" And ArActiveTrades(7, i) <> "0"
Then
If ArActiveTrades(7, i) > 0 Then Call GetLongStopPrice Else
Call GetShortStopPrice
ArActiveTrades(5, i) = StopPrice
End If

'2d) Check if trade shoudl be exited


ExitTrade = False
If ArActiveTrades(7, i) <> "" And ArActiveTrades(7, i) <> "0"
Then
If Strategy = "Bollinger Trend" And ArClosePr(j, i) <
StopPrice And ArActiveTrades(7, i) = 1 _
Or Strategy = "Bollinger Rev" And ArClosePr(j, i) >
StopPrice And ArActiveTrades(7, i) = 1 Then

56
ExitTrade = True
'Short Strategies:
ElseIf Strategy = "Bollinger Trend" And ArClosePr(j, i) >
StopPrice And ArActiveTrades(7, i) = -1 _
Or Strategy = "Bollinger Rev" And ArClosePr(j, i) <
StopPrice And ArActiveTrades(7, i) = -1 Then
ExitTrade = True
End If
If ExitTrade = True Then
ArActiveTrades(12, i) = ArClosePr(j + TradeFreq, 1)
'Close Date
ArActiveTrades(13, i) = ArClosePr(j + TradeFreq, i)
'Close Price
Instrument = ArActiveTrades(1, i)
TradeDate = ArActiveTrades(2, i)
Volatility = ArActiveTrades(3, i)
EntryPrice = ArActiveTrades(4, i)
StopPrice = ArActiveTrades(5, i)
ExitPrice = ArActiveTrades(6, i)
Nominal = ArActiveTrades(7, i)
Step = ArActiveTrades(8, i)
FirstTrade = ArActiveTrades(9, i)
PLCCY = ArActiveTrades(10, i)
PLPcnt = ArActiveTrades(11, i)
CloseDate = ArActiveTrades(12, i)
Closeprice = ArActiveTrades(13, i)
PcntOfP = ArActiveTrades(14, i)
AssetType = ArActiveTrades(15, i)
CloseDtVol = ArActiveTrades(17, i)
Call TradeClosed
'Update ArClosed
If FirstTrade <> True Then ArClosed(j, i) =
ArActiveTrades(10, i)
'Clear ActiveTrade for Instrument
For r = 2 To UBound(ArActiveTrades(), 1)
ArActiveTrades(r, i) = "0"
Next r
End If
End If

'Next Instrument
Next i
'Next Day
DoEvents
RunDayInt = RunDayInt + 1
Next j

End Sub

Sub GetLongStopPrice()
If Strategy = "Bollinger Trend" Or Strategy = "Bollinger Rev" Then
For i = 1 To UBound(ArClosePr(), 2) 'Find Instrument Column
If ArClosePr(1, i) = Instrument Then
iClmn = i
Exit For

57
End If
Next i
jStart = DayRow + RunDayInt - LoopSMA
ReDim ArWorkingArray(1 To LoopSMA)
For j = 1 To LoopSMA
ArWorkingArray(j) = ArClosePr(jStart + j - 1, iClmn)
Next j
StopPrice = Application.Average(ArWorkingArray())
Else:
MsgBox ("Define new long stop price")
Stop
End If
End Sub

Sub GetShortStopPrice()
If Strategy = "Bollinger Trend" Or Strategy = "Bollinger Rev" Then
For i = 1 To UBound(ArClosePr(), 2) 'Find Instrument Column
If ArClosePr(1, i) = Instrument Then
iClmn = i
Exit For
End If
Next i
jStart = DayRow + RunDayInt - LoopSMA
ReDim ArWorkingArray(1 To LoopSMA)
For j = 1 To LoopSMA
ArWorkingArray(j) = ArClosePr(jStart + j - 1, iClmn)
Next j
StopPrice = Application.Average(ArWorkingArray())
Else:
MsgBox ("Define new short stop price")
Stop
End If
End Sub

Sub GetLongExitPrice()
If LongStrategy = "Bollinger Trend" Then 'And LongStrategyType =
"Momentum" Then
'1a) Bollinger: Momentum
For i = 1 To UBound(ArClosePr(), 2) 'Find Instrument Column
If ArClosePr(1, i) = Instrument Then
iClmn = i
Exit For
End If
Next i
jStart = DayRow + RunDayInt - BollingerLongSMA
ReDim ArWorkingArray(1 To BollingerLongSMA)
For j = 1 To BollingerLongSMA
ArWorkingArray(j) = ArClosePr(jStart + j - 1, iClmn)
Next j
ExitPrice = Application.Average(ArWorkingArray())
Else: Stop
End If
End Sub

58
Sub GetShortExitPrice()
If LongStrategy = "Bollinger Trend" Then 'And ShortStrategyType =
"Momentum" Then
'1a) Bollinger: Momentum
For i = 1 To UBound(ArClosePr(), 2) 'Find Instrument Column
If ArClosePr(1, i) = Instrument Then
iClmn = i
Exit For
End If
Next i
jStart = DayRow + RunDayInt - BollingerLongSMA
ReDim ArWorkingArray(1 To BollingerLongSMA)
For j = 1 To BollingerLongSMA
ArWorkingArray(j) = ArClosePr(jStart + j - 1, iClmn)
Next j
ExitPrice = Application.Average(ArWorkingArray())
Else: Stop
End If
End Sub

Sub TradeClosed()

'ArClosed days + instruments' update one field


If FirstTrade = True Then
DoEvents
Else:

TradePL = 1 + (Closeprice / EntryPrice - 1) * Nominal - TradeFee


CumProfit = CumProfit * TradePL

StrategyTrades = StrategyTrades + 1
TradesAmount = TradesAmount + 1
'Closed Trades Details
ArClosedTradesDetail(TradesAmount, 1) = Instrument
ArClosedTradesDetail(TradesAmount, 2) = TradeDate
ArClosedTradesDetail(TradesAmount, 3) = EntryPrice
ArClosedTradesDetail(TradesAmount, 4) = CloseDate
ArClosedTradesDetail(TradesAmount, 5) = Closeprice
ArClosedTradesDetail(TradesAmount, 6) = Nominal
ArClosedTradesDetail(TradesAmount, 7) = (Closeprice / EntryPrice -
1) * Nominal
ArClosedTradesDetail(TradesAmount, 8) = Strategy
ArClosedTradesDetail(TradesAmount, 9) = LoopSMA
DoEvents
End If

End Sub

After these procedures the results are ready for analysis.

Sub ShowResultsNew()

59
Sheets("DataLearningResults").Select
'If MachineLearningRound = 1 Then
i = UBound(ArClosedTradesDetail, 2)
j = UBound(ArClosedTradesDetail, 1)
Range(Range("A1").End(xlDown).Offset(1, 0),
Range("A1").End(xlDown).Offset(1, 0).Offset(j - 1, i - 1)) =
ArClosedTradesDetail()
'End If
'Call WriteArrayToSheet

Sheets("Wheel").Select
End Sub

60

You might also like