|
Jeff D
2014-01-15 22:30:28
|
|
I'm trying to recreate the strategy put forward by ETFreplay.com
The interesting thing about their strategy is that its an extension to Mebane Faber's IVY Portfolio idea. On their site it seems to work well, but it is extremely limited because they only have ETFs in the db.
I got so far as setting up the system with the two factors (ROC and Volatility) and the weights (Thanks QS for your help!). Problem is the results are not the same as ETFReplay.
This is to give you an idea to see where I am going wrong:
Return A is 6 months weight 50%
Volatility is 20 days weight 50%
Rebalance once per month
These ETFs: TIP, TLT, VEU, VNQ, VTI
Here the results 2013 - today from their site you can see the stock that ranked 'top' each month (don't worry about the percentages after they are return for the month, return SPY benchmark, volatility return, vol benchmark:
Jan 02, 2013 Feb 01, 2013 VEU +1.68 % +3.55 % 9.7 % 6.2 % 5
Feb 01, 2013 Mar 01, 2013 VTI +0.54 % +0.58 % 12.7 % 12.9 % 5
Mar 01, 2013 Apr 01, 2013 VNQ +2.83 % +3.05 % 7.0 % 7.9 % 5
Apr 01, 2013 May 01, 2013 VTI +1.11 % +1.43 % 15.0 % 14.4 % 5
May 01, 2013 Jun 03, 2013 VNQ -4.69 % +3.83 % 15.8 % 10.0 % 5
Jun 03, 2013 Jul 01, 2013 VTI -1.01 % -1.30 % 17.5 % 17.4 % 5
Jul 01, 2013 Aug 01, 2013 VTI +6.20 % +5.76 % 8.0 % 7.6 % 5
Aug 01, 2013 Sep 03, 2013 VTI -3.76 % -3.67 % 10.4 % 9.6 % 5
Sep 03, 2013 Oct 01, 2013 VTI +4.27 % +3.52 % 8.9 % 8.8 % 5
Oct 01, 2013 Nov 01, 2013 VTI +3.51 % +4.06 % 12.8 % 12.2 % 5
Nov 01, 2013 Dec 02, 2013 TIP -0.82 % +2.45 % 5.8 % 8.9 % 5
Dec 02, 2013 Jan 02, 2014 VTI +2.05 % +1.87 % 10.1 % 10.3 % 5
Jan 02, 2014 Jan 14, 2014 VTI +0.62 % +0.41 % 10.9 % 11.2 % 5
CAGR 12,7% Sharpe 1.03
I used this script for QS:
filter1 = close * sma(volume, 10) > 5; //volume filter should be much higher, low just for all stocks in this case
value1 = rocr100(close, 120); //rate of return
weight1 = 0.5;
value2 = Stddev(close, 20); //std dev
weight2 = 0.5;
newmonth = month() != ref(month(), 1); //once per month
// This will calculate percentile (0 - 100) - The higher the better percentile - rank
res = comp(value1, "percentile", 1, filter1) * weight1 + comp(-value2, "percentile", 1, filter1) * weight2;
// Then calculate ranking
res = comp(res, "rank", 1, filter1);
buy = (res == 1) and newmonth;
sell = (res > 1) and newmonth;
The results here are very different with CAGR 2.64% sharpe 0.40
To implement the ETFReplay system this is what they "explain" to us:
How The ETF Screener Works
The ETF screener, is a statistical model that uses 3-factors to rank ETFs by their relative strength. (Note: The various relative strength backtests on the website are automated applications of the screener.)
The following simple example will demonstrate how the Screener works:
The screener will include only those ETFs in the chosen list that have sufficient trading history to qualify for the return and volatility time periods selected. For example, if 6-month Returns, 3-month Returns and 3-month Volatility are chosen, the screen will exclude any ETFs with less than a 6-month trading history.
The ETFs are ranked for EACH factor (Returns are ranked high to low. Volatility is considered a negative and is therefore ranked low to high)
Symbol 6-month Returns 3-month Returns 3-month Volatility
AAA +7% +17% 16%
BBB +24% +11% 23%
CCC +6% +5% 5%
Would be ranked as:
Symbol ReturnA Rank ReturnB Rank Volatility Rank
AAA 2 1 2
BBB 1 2 3
CCC 3 3 1
The factor ranks are then weighted to produce an overall rank.
If the weights chosen were:
ReturnA: 40%
ReturnB: 30%
Volatility: 30%
The weighted ranks would be:
Symbol Weight Factor Ranks Weighted Rank Overall Rank
AAA (0.4x2)+(0.3x1)+(0.3x2) 1.7 1
BBB (0.4x1)+(0.3x2)+(0.3x3) 1.9 2
CCC (0.4x3)+(0.3x3)+(0.3x1) 2.4 3
In the event of a tie, where two or more ETFs have the same weighted rank, then the factor that has been assigned the largest weighting determines the order.
If there is a tie and the weights are equal, such as ReturnA: 50%, ReturnB: 50%, Volatility: 0%, then the first non-zero weighted factor is used as the tiebreaker.
Any suggestions ideas on how I can replicate this as closely as possible? I want to use the "concept" with other stocks.
Thanks.
|
|