Niklaus

Alpha strategy

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.

Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.

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))