Quantitative Approach To Tactical Asset Allocation Strategy

To install Systematic Investor Toolbox (SIT) please visit About page.

The Quantitative Approach To Tactical Asset Allocation Strategy(QATAA) by Mebane T. Faber backtest and live signal. For more details please see SSRN paper

The QATAA Strategy allocates 20% across 5 asset classes:

  • US Stocks
  • Foreign Stocks
  • US 10YR Government Bonds
  • Real Estate
  • Commodities

If asset is above it’s 10 month moving average it gets 20% allocation; otherwise, it’s weight is allocated to cash. The re-balancing process is done Monthly.

Following report is based on Monthly re-balancing, signal is generated one day before the month end, and execution is done at close at the month end.

Load historical data from Yahoo Finance:

#*****************************************************************
# Load historical data
#*****************************************************************
library(SIT)
load.packages('quantmod')

tickers = '
US.STOCKS = VTI + VTSMX
FOREIGN.STOCKS = VEU + FDIVX
US.10YR.GOV.BOND = IEF + VFITX
REAL.ESTATE = VNQ + VGSIX
COMMODITIES = DBC + CRB
CASH = BND + VBMFX
'

# load saved Proxies Raw Data, data.proxy.raw
load('data.proxy.raw.Rdata')

data <- new.env()

getSymbols.extra(tickers, src = 'yahoo', from = '1970-01-01', env = data, raw.data = data.proxy.raw, auto.assign = T, set.symbolnames = T, getSymbols.fn = getSymbols.fn, calendar=calendar)
  for(i in data$symbolnames) data[[i]] = adjustOHLC(data[[i]], use.Adjusted=T)
bt.prep(data, align='remove.na', dates='::')

print(last(data$prices))
  US.STOCKS FOREIGN.STOCKS US.10YR.GOV.BOND REAL.ESTATE COMMODITIES CASH
2016-06-24 104.05 41.22 112.21 84.86 15.01 83.7
#*****************************************************************
# Setup
#*****************************************************************
data$universe = data$prices > 0
	# do not allocate to CASH
	data$universe$CASH = NA 

prices = data$prices * data$universe
	n = ncol(prices)

Code Strategy Rules:

#*****************************************************************
# Code Strategy
#******************************************************************
sma = bt.apply.matrix(prices, SMA, 200)

# If asset is above it's 10 month moving average it gets 20% allocation
weight = iif(prices > sma, 20/100, 0)

# otherwise, it's weight is allocated to cash
weight$CASH = 1 - rowSums(weight)

obj$weights$strategy = weight[period.ends,]

plot of chunk plot-6

#Strategy Performance:

  strategy
Period May1996 - Jun2016
Cagr 9.23
Sharpe 1.14
DVR 1.12
R2 0.98
Volatility 8.02
MaxDD -13.48
Exposure 99.72
Win.Percent 64.15
Avg.Trade 0.2
Profit.Factor 2.04
Num.Trades 993

plot of chunk plot-6

#Monthly Results for strategy :

  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Year MaxDD
1996           1.3 0.2 -0.2 1.7 2.2 1.7 -0.9 6.2 -1.8
1997 0.2 0.0 -0.6 0.9 4.0 2.2 3.8 -2.2 5.0 -1.8 -0.2 1.5 13.3 -5.0
1998 1.0 2.0 2.5 0.3 0.0 1.1 -0.1 -4.7 2.3 -0.6 0.3 2.1 6.0 -7.0
1999 1.4 -2.7 1.9 2.5 -1.9 3.1 -0.6 1.0 1.2 0.3 3.2 4.7 14.8 -3.6
2000 -1.2 3.1 1.8 -1.3 0.9 3.4 0.3 2.1 -1.2 -1.2 2.4 2.2 11.9 -4.2
2001 1.1 0.1 -0.6 -0.1 0.9 1.5 1.4 1.6 0.2 0.8 -1.6 -0.2 5.3 -3.3
2002 0.1 1.1 -0.2 -0.1 0.8 0.8 -2.5 2.1 1.3 -0.8 -0.4 3.3 5.7 -5.2
2003 1.5 2.3 -1.8 0.7 5.3 1.2 1.1 2.3 1.3 2.9 1.7 4.4 25.5 -4.0
2004 2.4 3.1 1.7 -5.1 1.0 0.3 -0.4 2.8 1.3 2.5 2.6 1.8 14.4 -7.1
2005 -2.0 3.0 -0.5 -0.7 1.1 2.1 3.4 1.2 1.0 -3.0 2.4 2.4 10.6 -4.4
2006 4.4 -0.9 2.5 1.7 -2.3 0.7 1.5 1.3 0.2 2.8 2.5 -0.4 14.8 -7.4
2007 1.7 -0.4 0.5 1.8 1.0 -2.0 -0.2 0.6 4.0 3.7 -0.9 1.2 11.2 -5.6
2008 0.2 2.5 0.3 0.5 0.5 -1.5 -1.8 -0.5 -2.4 -2.6 4.7 5.1 4.7 -13.1
2009 -2.5 -0.6 1.5 -0.2 0.1 0.0 4.5 3.5 3.4 -0.8 4.5 1.4 15.6 -4.9
2010 -4.3 2.9 4.3 2.4 -6.3 -1.1 2.6 1.3 0.8 3.3 -1.4 5.2 9.4 -9.8
2011 1.9 3.1 0.2 4.0 -1.4 -2.2 0.9 -3.3 -2.1 -0.2 -0.8 1.3 0.9 -13.5
2012 2.7 0.3 0.8 0.3 -6.2 1.8 1.3 1.6 0.6 -1.3 0.6 1.5 3.8 -7.7
2013 2.5 -0.7 1.5 2.9 -2.4 -2.1 1.5 -2.8 2.9 2.0 -0.6 0.4 4.9 -8.2
2014 -0.9 2.3 0.1 1.3 1.3 1.4 -1.7 2.2 -3.0 3.1 1.4 0.4 8.0 -3.1
2015 2.6 -0.7 0.1 -0.3 -0.2 -2.4 0.8 -1.4 0.8 -0.2 -0.3 -0.3 -1.7 -6.2
2016 0.2 0.9 2.4 -0.4 0.7 -0.4             3.6 -2.9
Avg 0.7 1.0 0.9 0.6 -0.2 0.4 0.8 0.4 1.0 0.6 1.1 1.9 9.0 -6.1

plot of chunk plot-6 plot of chunk plot-6

#Trades for strategy :

strategy weight entry.date exit.date nhold entry.price exit.price return
CASH 80 2015-12-31 2016-01-29 29 80.43 81.39 0.96
US.10YR.GOV.BOND 20 2016-01-29 2016-02-29 31 108.31 109.92 0.3
CASH 80 2016-01-29 2016-02-29 31 81.39 82.09 0.68
US.10YR.GOV.BOND 20 2016-02-29 2016-03-31 31 109.92 109.85 -0.01
REAL.ESTATE 20 2016-02-29 2016-03-31 31 75.19 83.05 2.09
CASH 60 2016-02-29 2016-03-31 31 82.09 82.65 0.41
US.STOCKS 20 2016-03-31 2016-04-29 29 104.82 105.51 0.13
US.10YR.GOV.BOND 20 2016-03-31 2016-04-29 29 109.85 109.68 -0.03
REAL.ESTATE 20 2016-03-31 2016-04-29 29 83.05 81.1 -0.47
CASH 40 2016-03-31 2016-04-29 29 82.65 82.81 0.08
US.STOCKS 20 2016-04-29 2016-05-31 32 105.51 107.34 0.35
FOREIGN.STOCKS 20 2016-04-29 2016-05-31 32 44.06 43.71 -0.16
US.10YR.GOV.BOND 20 2016-04-29 2016-05-31 32 109.68 109.57 -0.02
REAL.ESTATE 20 2016-04-29 2016-05-31 32 81.1 82.92 0.45
COMMODITIES 20 2016-04-29 2016-05-31 32 14.58 14.71 0.18
US.STOCKS 20 2016-05-31 2016-06-24 24 107.34 104.05 -0.61
FOREIGN.STOCKS 20 2016-05-31 2016-06-24 24 43.71 41.22 -1.14
US.10YR.GOV.BOND 20 2016-05-31 2016-06-24 24 109.57 112.21 0.48
REAL.ESTATE 20 2016-05-31 2016-06-24 24 82.92 84.86 0.47
COMMODITIES 20 2016-05-31 2016-06-24 24 14.71 15.01 0.41

#Signals for strategy :

  US.STOCKS FOREIGN.STOCKS US.10YR.GOV.BOND REAL.ESTATE COMMODITIES CASH
2014-10-30 20 0 20 20 0 40
2014-11-26 20 0 20 20 0 40
2014-12-30 20 0 20 20 0 40
2015-01-29 20 0 20 20 0 40
2015-02-26 20 20 20 20 0 20
2015-03-30 20 20 20 20 0 20
2015-04-29 20 20 20 20 0 20
2015-05-28 20 20 20 20 0 20
2015-06-29 20 20 0 0 0 60
2015-07-30 20 0 0 0 0 80
2015-08-28 0 0 20 0 0 80
2015-09-29 0 0 20 0 0 80
2015-10-29 20 0 20 20 0 40
2015-11-27 20 0 20 20 0 40
2015-12-30 0 0 0 20 0 80
2016-01-28 0 0 20 0 0 80
2016-02-26 0 0 20 20 0 60
2016-03-30 20 0 20 20 0 40
2016-04-28 20 20 20 20 20 0
2016-05-27 20 20 20 20 20 0

For your convenience, the Strategy-TAA report can also be downloaded and viewed the pdf format.

(this report was produced on: 2016-06-25)