StockFetcher Forums · Filter Exchange · PORTFOLIO SELECTION AND MANAGEMENT USING RISK/REWARD RATIOS<< 1 ... 3 4 5 6 7 ... 65 >>Post Follow-up
sbuck143
88 posts
msg #92030
Ignore sbuck143
5/4/2010 9:37:21 AM

guymar- did you just take the top ranked one or a number of them?

Kevin_in_GA
4,536 posts
msg #92031
Ignore Kevin_in_GA
5/4/2010 9:38:31 AM

I included DBC, OIL, EEM, SPY, IEV, SHY, SH, DOG, PSQ, EUM to have coverage of all situations (boom in Oil, growth pickup in Europe first, emerging economies first, commodities first, also to be able to benefit from short situations) and obtained over the period June 2006 to now 26 796 USD with an initial 10 000 USD portfolio.

This is a compound annual rate of 27,94% during a huge crisis. Furthermore it's possible to optimize this and avoid some losses by using Fibonacci turn dates and going cash during that month. In that case the portfolio really triples.

What is even more interesting is that these ETF's are liquid, so there is very little slippage (except in the ETF's themselves) and the entire thing does not take a lot of time....
+++++++++++

Remember also that the goal is not just maximizing returns, but also managing risk. The volatility in these asset classes should also be monitored - if you can get a similar return with less risk why would you not do so?



guymar
113 posts
msg #92033
Ignore guymar
modified
5/4/2010 10:58:19 AM

Point taken, I will try and take time to compile Sharpe ratio and compare with your selection.

For this reason there were no leveraged ETF's in the list.

The ETF's in the list are in my personal opinion a good representation of the typical money flows. The 3 states of the market up, down, sideways would result in a strategy: up: long, down: short, sideways: look for alternatives (commodities, oil, emerging markets, or europe).... It's not substantiated by research, but I had the feeling the ETF's included are not adding to much beta.

On the other hand, it might be better to include drawdown and drawdown period as well ..?

So to be clear: I did not extend the list to maximize profits, more to diversify and be able to track a large panel of investors as they would go looking for opportunities. I don't think this strategy alone would work with leveraged ETF's though.

I invested in only 1 ETF, top of the list, except if the new top of the list did not exceed an existing position by more than 0,01 alfa (trying to take in account price slippage on trades and transaction cost).

Kevin_in_GA
4,536 posts
msg #92036
Ignore Kevin_in_GA
5/4/2010 11:29:42 AM

Point taken, I will try and take time to compile Sharpe ratio and compare with your selection.
++++++++++++++

HERE YOU GO:

Fetcher[

/*FIRST, CALCULATE PERFORMANCE OVER THE LAST 63 DAYS (THREE CALENDAR MONTHS) AND FOR THE LAST 21 DAYS (ONE CALENDER MONTH)*/

SET{63DAYSAGO, CLOSE 63 DAYS AGO}
SET{63DAYRETURN, CLOSE - 63DAYSAGO}
SET{63RETURN, 63DAYRETURN / 63DAYSAGO}

SET{21DAYSAGO, CLOSE 21 DAYS AGO}
SET{21DAYRETURN, CLOSE - 21DAYSAGO}
SET{21RETURN, 21DAYRETURN / 21DAYSAGO}

SET{RISKFREERETURN, .000825}
SET{63PERFORMANCE, 63RETURN - RISKFREERETURN}
SET{21PERFORMANCE, 21RETURN - RISKFREERETURN}

/*CALCULATE VOLATILITY FOR EACH ETF*/

SET{63STD, CSTDDEV(CLOSE,63)}
SET{63VOL, 63STD / MA(63)}

SET{SPY, IND(SPY,CLOSE)}
SET{SPYMA63, CMA(SPY,63)}
SET{63SPYSTD, CSTDDEV(SPY,63)}
SET{63SPYVOL, 63SPYSTD / SPYMA63}

SET{21STD, CSTDDEV(CLOSE,21)}
SET{21VOL, 21STD / MA(21)}

SET{SPYMA21, CMA(SPY,21)}
SET{21SPYSTD, CSTDDEV(SPY,21)}
SET{21SPYVOL, 21SPYSTD / SPYMA21}

/*NOW IT IS EASY TO CALCULATE THE SHARPE RATIO FOR BOTH TIMEFRAMES*/

SET{21SHARPE, 21PERFORMANCE / 21VOL}
SET{63SHARPE, 63PERFORMANCE / 63VOL}

/*NOW DETERMINE SPY PERFORMANCE TO CALCULATE ALPHA FOR EACH ETF*/

SET{SPY21DAYSAGO, SPY 21 DAYS AGO}
SET{SPY21DAYRETURN, SPY - SPY21DAYSAGO}
SET{21SPYRETURN, SPY21DAYRETURN / SPY21DAYSAGO}
SET{21SPYPERFORMANCE, 21SPYRETURN - RISKFREERETURN}

SET{ALPHA21a, 21PERFORMANCE - 21SPYPERFORMANCE}
SET{21ALPHA, ALPHA21a * 100}

SET{SPY63DAYSAGO, SPY 63 DAYS AGO}
SET{SPY63DAYRETURN, SPY - SPY63DAYSAGO}
SET{63SPYRETURN, SPY63DAYRETURN / SPY63DAYSAGO}
SET{63SPYPERFORMANCE, 63SPYRETURN - RISKFREERETURN}

SET{ALPHA63a, 63PERFORMANCE - 63SPYPERFORMANCE}
SET{63ALPHA, ALPHA63a * 100}

SET{ALPHA_SCORE, 63ALPHA + 21ALPHA}
SET{SHARPE_SCORE, 63SHARPE + 21SHARPE}

SET{21RELVOL, 21VOL / 21SPYVOL}
SET{63RELVOL, 63VOL / 63SPYVOL}

symlist(spy,eem,iwm,shy,mdy,bnd,mbb,gld,vnq,moo)

DRAW SHARPE_SCORE LINE AT 0
DRAW ALPHA_SCORE LINE AT 0

ADD COLUMN SHARPE_SCORE {SHARPE SCORE}
ADD COLUMN ALPHA_SCORE {ALPHA SCORE}
ADD COLUMN SEPARATOR
ADD COLUMN 21SHARPE
ADD COLUMN 21ALPHA
ADD COLUMN 21RELVOL {21BETA}
ADD COLUMN SEPARATOR
ADD COLUMN 63SHARPE
ADD COLUMN 63ALPHA
ADD COLUMN 63RELVOL {63BETA}
SORT ON COLUMN 6 DESCENDING

CHART-TIME IS 63 DAYS
]



IN TABLE VIEW, IT IS EASY TO SEE THE RESULTS FOR BOTH THE 21 DAY AND 63 DAY TIMEFRAMES (INCLUDING SHARPE RATIO, ALPHA, AND BETA). 21 TRADING DAYS IS EQUAL TO ONE CALENDAR MONTH.

ETFS ARE STILL RANKED BASED ON ALPHA RATHER THAN SHARPE IN THIS FILTER. ONE CAN EASILY RANK THEM BY SHARPE RATIO INSTEAD (JUST SORT ON COLUMN 5 DESCENDING). THIS DOES REDUCE OVERALL YIELD, PERHAPS BY MORE THAN NECESSARY - YOU ARE OCCASIONALLY MOVED INTO BONDS OR CASH BASED ON THEIR VERY LOW VOLATILITY AT THE EXPENSE OF HIGHER YIELDING ALTERNATIVES.

guymar
113 posts
msg #92037
Ignore guymar
5/4/2010 11:34:43 AM

This represents some extra work :-))) Cannot guarantee to come back with swift feedback on this one......

davesaint86
263 posts
msg #92059
Ignore davesaint86
modified
5/4/2010 7:04:14 PM

Kevin,

I'm curious if you ran the same test sorting on RS instead of Alpha would the returns be higher since your Jan 1 2007 start date. I used my 401k ETF equivalents as the selections. The RS in this filter is based on a 4 week cycle. The RS may be close to your 21 day Alpha.



Fetcher[
*KEVIN'S PURELY BASED ON PRICE FILTER*/

/*Close must be above the highest 5 day low from three days ago for a BUY signal*/

/*That's it. No indicators used on this one - based solely on two price points*/
do not draw Parabolic Sar(0.020,0.200)
/*create threshold as a variable*/
set{var1, high 5 day low}
set{var2, var1 3 days ago}
set{threshold, var2+0.01}

/*close must be above threshold*/
set{BUY, count(close > threshold,1)}
set{SELL, count(close < threshold,1)}

/*create variables for graphical display*/
set{trigger, close}
set{price_osc, trigger - threshold}

/*apply to index surrogates*/
symlist(AGG,CWI,EFA,SPY,IWM,IWB,ACWI,IWN,IGM,BA,,SHY)
set{alpha, relative strength(SPY,20) + relative strength(SPY,63)}

and chart-time 3 months

/*draw threshold and trigger on price plot*/

draw trigger on plot price
draw threshold on plot price
draw price line at threshold

/*draw BUY and SELL signals*/
draw BUY
Draw SELL on plot BUY
draw price_osc line at 0
Draw Williams %R(2)

and draw CCI (20) line at 100.00 and draw CCI (20) line at 50
and draw CCI (20) line at 10
and draw Slow Stochastic(5,3) Fast %K line at 20.00 and draw Slow Stochastic(5,3) Fast %K line at 80.00
and draw Slow Stochastic(5,3) Fast %K line at 50.00

add column separator
add column alpha
add column separator
add column rs
add column separator
add column price_osc{po}
add column separator


add column BUY
add column separator
add column SELL
add column separator
add column RSI(2)
add column separator
add column threshold{thold}
add column separator



do not draw MA(250)


and do not draw MA(10)
Relative Strength Rating */

set{range, high 4 week high - low 4 week low}
set{ppdif, close - low 4 week low}
set{ppdiv, ppdif / range}
set{rs, ppdiv * 100}
sort column 6 descending

]



hmsb4494
62 posts
msg #92077
Ignore hmsb4494
5/5/2010 12:57:06 AM

KEVIN---

On your based on price filter above, can you make it to show the etf the day it changes from a sell to a buy and a buy to a sell???

guymar
113 posts
msg #92084
Ignore guymar
5/5/2010 3:39:09 AM

People, I can't do all the backtesting fast enough here :)

I have the following idea: use the McLellan Oscillator to change the baskets of ETF's in function of market situation (you could use 3 models with different SYM lists for example....) and optimize like this. These models are simply crying out for a good framework (an objective one) to be put in.

Might ask my son to help with the back-testing .....

guymar
113 posts
msg #92100
Ignore guymar
5/5/2010 10:02:15 AM

I would like to combine this with the formula:

Fetcher[set {pricechange, close - close 1 day ago}
set {volumeprice, volume * pricechange}
plot CEMA (volumeprice,3)
]



But I get an error on the last line, the attempt is to have a 3 period exponential moving average to get the V*PMO or Volume Price Momentum Oscillator......the idea would be to avoid some trades by not taking the trade if this indicator gives a sell signal...



guymar
113 posts
msg #92102
Ignore guymar
5/5/2010 10:21:24 AM

Got it now, I am going to test the following:

Buy selected ETF only if VPMO positive .....

Fetcher[symlist(spy,eem, shy, dog, eum, psq, sh, OIL, DBC, IEV)
set{alpha, relative strength(SPY,20) + relative strength(SPY,63)}

set {pricechange, close - close 1 day ago}
set {volumeprice, volume multiply pricechange}
set {SEMA, CEMA(volumeprice,3)}

set {Keltnerdelta, Upper Keltner Band(20,1.5)-Lower Keltner Band(20,1.5)}
set {KeltnerBW, Keltnerdelta/Center Keltner Band(20,1.5)}

draw KeltnerBW on plot Bollinger width(20,2.0)

draw Bollinger (20,2.0)
add column alpha
add column SEMA
sort on column 5 descending
]



StockFetcher Forums · Filter Exchange · PORTFOLIO SELECTION AND MANAGEMENT USING RISK/REWARD RATIOS<< 1 ... 3 4 5 6 7 ... 65 >>Post Follow-up

*** Disclaimer *** StockFetcher.com does not endorse or suggest any of the securities which are returned in any of the searches or filters. They are provided purely for informational and research purposes. StockFetcher.com does not recommend particular securities. StockFetcher.com, Vestyl Software, L.L.C. and involved content providers shall not be liable for any errors or delays in the content, or for any actions taken based on the content.


Copyright 2016 - Vestyl Software L.L.C.Terms of Service | License | Questions or comments? Contact Us
EOD Data sources: DDFPlus & CSI Data Quotes delayed during active market hours. Delay times are at least 15 mins for NASDAQ, 20 mins for NYSE and Amex. Delayed intraday data provided by DDFPlus