Niklaus

Alpha strategy

2258 views
150
USE ON DAILY TIMEFRAME TO DETECT MOMO STOCKS & ETFs AND TRADE THEM
This Strategy goes long when Sharpe Ratio is > 1 and Alpha against the S&P500 is generated. It exits when conditions break away. Strategy can be adapted to run intraday, it however needs different (lower) trigger levels.

examples to try this on: GER30 , NAS100 , JPN225 , AAPL , IBB , TSLA , etc.
Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.

Want to use this script on a chart?
//@version=2
strategy("Alpha strategy", overlay=true)

//by NIKLAUS
//USE ON DAILY TIMEFRAME TO DETECT MOMO STOCKS & ETFs AND TRADE THEM
//examples to try this on: GER30, NAS100, JPN225, AAPL, IBB, TSLA, etc.

//This Strategy goes long when Sharpe Ratio is > 1 and Alpha against the S&P500 is generated. It exits when conditions break away.
//Strategy can be adapted to run intraday, it however needs different (lower) trigger levels
//------------------------------------------------------------------------------------------------------------------------------------
//Alpha is a measure of the active return on an investment, the performance of that investment compared to a suitable market index. 
//An alpha of 1% means the investment's return on investment over a selected period of time was 1% better than the market during that same period, 
//an alpha of -1 means the investment underperformed the market. 
//Alpha is one of the five key measures in modern portfolio theory: alpha, beta, standard deviation, R-squared and the Sharpe ratio.


//sharpe by rashad
src = ohlc4, len = input(90, title = "Sharpe Time Frame (252 = year)")
dividend_yield = input(0.0000, minval = 0.00001, title = "Dividend Yield? 0.01=1%, USE 12 M TTM!!!")
pc = ((src - src[len])/src) + (dividend_yield*(len/252))
std = stdev(src,len)
stdaspercent = std/src
riskfreerate = input(0.0004, minval = 0.0001, title = "risk free rate (3 month treasury yield), enter as decimal")
sharpe = (pc - riskfreerate)/stdaspercent
signal = sma(sharpe,len)
calc = sharpe - signal

//alpha
sym = "SPX500", res=period, sourc = close, length = input(title="Beta Lookback",defval=300, minval=1)
ovr = security(sym, res, sourc)


ret = ((close - close[1])/close)
retb = ((ovr - ovr[1])/ovr)

secd = stdev(ret, length), mktd = stdev(retb, length)
Beta = correlation(ret, retb, length) * secd / mktd

y = input(title="Alpha Period", type=integer, defval=90, minval=1, maxval=1000)
ret2 = ((close - close[y])/close)
retb2 = ((ovr - ovr[y])/ovr)

alpha = ret2 - retb2*Beta
//plot(alpha, color=green, style=area, transp=40)


//sr filter
j = input(title="sr len", type=integer, defval=27, minval=1, maxval=1000)
z = (close - close[j])/close
sd3 = stdev(z,j)
sr=(z/sum(sd3,j))



smatrig = input(title="sma lenght for triggers", type=integer, defval=45, minval=1, maxval=1000) 
bgcolor (sma(sharpe,smatrig) > 1 and sma(alpha,smatrig) > 0 ? green : red, transp=70)
alphatrig = input(title="Alpha trigger Level, % in decimals,shorterTF=lower", type=float, defval=0.03, minval=0, maxval=10)    
o = input(title="sr trigger", type=float, defval=0.03, minval=0, maxval=10) 

if (close > open) and (sma(sharpe,smatrig) > 1) and (sma(alpha,smatrig) > alphatrig) and (sr > o)
    strategy.entry("Alpha", strategy.long)
strategy.close("Alpha", when = (sma(sharpe,smatrig) < 1) or (sma(alpha,smatrig) < 0))