
모멘텀 알파 전략은 지표의 자산의 샤프 비율과 알파 값을 계산하여, 그것이 긍정적 인 모멘텀 효과가 있는지 판단합니다. 샤프 비율과 알파가 동시에 긍정적 인 경우, 자산이 모멘텀이 있다고 간주하고, 더 많은 것을합니다. 지표가 동시에 부정적 인 경우, 평소합니다.
이 전략의 핵심 지표는 샤프 비율과 알파이다. 샤프 비율은 자산의 위험조정된 수익을 나타내고, 알파는 자산의 시장 기준에 대한 초과 수익을 나타낸다. 둘 다 긍정적이면 자산이 위험조정된 수익과 시장보다 우수한 성과를 가지고 있기 때문에 더 많이 한다. 둘 다 부정적이면 Momentum이 사라지고 따라서 평평하다.
구체적으로, 전략은 가장 최근 180일간의 샤프 비율을 먼저 계산한다. 샤프 비율의 계산 공식은 다음과 같다: ((일당 수익률의 평균 - 위험없는 수익률) /일당 수익률 표준 차이는. 여긴 오픈 가격과 전날의 폐쇄 가격을 계산하는 일일 수익률의 평균과 표준 차이는 사용한다. 샤프 비율이 1보다 크면 자산의 위험 조정된 수익이 높다는 것을 나타낸다.
한편, 전략은 최근 180일간의 알파를 계산한다. 알파는 시장 모델로 계산한다: 알파 = 자산의 실제 수익률 - (시장 수익률 × 베타) 이다. 여기서 표기된 자산의 일일 수익률과 스탠퍼드 500 지수의 일일 수익률이 계산된다. 알파가 0보다 크면 자산의 실제 수익률이 시장 기준 수익률보다 높다는 것을 나타낸다.
따라서, 샤프 비율과 알파가 양성일 때, 더 많이 하고; 둘 다 양성일 때, 평지한다.
이 전략의 가장 큰 장점은 모멘텀을 통해 특정 기간에 대장과 일부 주식의 성장 기회를 포착할 수 있다는 점이며, 또한 위험을 통제함으로써 장기적인 주식 재앙을 피할 수 있다는 것입니다. 구체적으로 다음과 같이 분석합니다:
샤프 비율을 계산하는 것은 최근의 모멘텀 상황을 반영하여 일부 대장과 주식의 상승세를 잡을 수 있다. 알파를 계산하는 것은 상대적인 기준에 대한 초과 수익을 반영하여 약한 기준을 제거할 수 있다.
셰프 비율과 알파를 종합적으로 고려하면서 장기간 모멘텀을 제어함으로써, 긍정적인 모멘텀을 가지고 있는지 보다 정확하게 판단할 수 있다.
모멘텀이 사라질 때, 더 큰 손실을 피하기 위해 적시에 중단하십시오. 이것은 상승한 후에 적시에 중단하는 전략입니다.
단일 모멘텀 지표에 비해 이 전략은 더 안정적이면서도 더 유연하며 주식과 대시장 모두에서 사용할 수 있다.
이 전략은 장점이 있지만 다음과 같은 위험도 있습니다.
멘텀 지표의 회수 가능성이 있다. 시장이 변하면, 멘텀 주식은 더 빠른 하락을 직면할 수 있다. 이 때 전략은 손실이 더 크다. 적절한 변수를 조정하거나, 다른 지표와 조합하여 사용하는 것을 고려할 수 있다.
알파와 샤프 비율 지표 계산에는 시간 지연이 있다. 시장이 급격히 변화할 때 지표 값이 지연되어 최신 트렌드 변화를 적시에 반영할 수 없다. 계산 주기를 단축하는 것을 고려할 수 있다.
다수 공백 포지션은 통제되지 않아 위험이 지나치게 집중될 수 있다. 시장 상황이나 자금 상황에 따라 포지션 규모를 적절히 통제하는 것을 고려할 수 있다.
회수 데이터는 부족할 수 있으며, 실판 효과는 의심스럽습니다. 더 긴 기간과 다른 품종의 회수 검증을 추가해야합니다. 동시에 매개 변수 최적화 시기를 단축하여 과도한 적합성을 피하십시오.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
손해 방지 제도를 늘립니다. 가격의 큰 일일 하락이 있을 때, 손해 방지 지점을 설정하여 큰 손실을 방지 할 수 있습니다.
포지션 관리를 늘리십시오. 시장의 변동률과 같은 지표에 따라 포지션 개설 시 매번의 자금량을 제어할 수 있습니다. 단일 손실 위험을 줄이십시오.
최적화 매개 변수。 다른 시간 주기에서의 매개 변수를 테스트하여 다른 표준 및 시장 조건의 특성에 더 적합하게 만들 수。 또한 다른 매개 변수 조합의 효과를 테스트 할 수。
필터링 조건을 추가하십시오. 거래량이나 변동률과 같은 다른 조건을 설정할 수 있습니다.
다른 전략과 결합한다. 비슷한 트렌드 추적 전략과 결합하는 것을 고려할 수 있다. 효과의 안정성을 강화하고 단일 전략의 위험을 분산시킬 수 있다.
모멘텀 알파 전략은 자산의 리스크 조정 수익과 상대 시장 성과를 동시에 판단하여 긍정적인 모멘텀의 기회를 동적으로 포착한다. 단일 모멘텀 지표에 비해 판단이 더 정확하고 적용 범위가 넓으며 위험 저항성이 더 강하다는 장점이 있다. 그러나 이 전략은 여전히 약간의 회수 및 지연 위험이 있으며, 실제 자산에서 안정적으로 수익을 얻기 위해 다른 전략과 결합하여 반복적으로 최적화해야 한다.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-16 04:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Alpha strategy - simple version", overlay=true)
//by NIKLAUS
//USE ON DAILY TIMEFRAME TO DETECT MOMO STOCKS & ETFs AND TRADE THEM
//USE ON 5MIN CHART FOR INTRADAY USAGE
//examples to try this on: GER30, NAS100, JPN225, AAPL, IBB, TSLA, FB, etc.
//This Strategy goes long when Sharpe Ratio is > 1 and Alpha against the S&P500 is generated. It exits when conditions break away.
//https://en.wikipedia.org/wiki/Alpha_(finance)
//------------------------------------------------------------------------------------------------------------------------------------
//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.
//simplified sharpe
src = ohlc4, len = input(180, title = "Sharpe/Alpha/Beta Period")
pc = ((src - src[len])/src)
std = stdev(src,len)
stdaspercent = std/src
sharpe = pc/stdaspercent
//alpha
sym = "BTC_USDT:swap", res=timeframe.period, src2 = close
ovr = request.security(sym, res, src2)
ret = ((close - close[1])/close)
retb = ((ovr - ovr[1])/ovr)
secd = stdev(ret, len), mktd = stdev(retb, len)
Beta = correlation(ret, retb, len) * secd / mktd
ret2 = ((close - close[len])/close)
retb2 = ((ovr - ovr[len])/ovr)
alpha = ret2 - retb2*Beta
//plot(Beta, color=green, style=area, transp=40)
smatrig = input(title="Sensitivity", defval=2, minval=1, maxval=3)
bgcolor (sma(sharpe,len/smatrig) > 1 and sma(alpha,len/smatrig) > 0 ? green : red, transp=70)
if (close > open) and (sma(sharpe,len/smatrig) > 1) and (sma(alpha,len/smatrig) > 0)
strategy.entry("Alpha", strategy.long)
strategy.close("Alpha", when = (sma(sharpe,len/smatrig) < 1) or (sma(alpha,len/smatrig) < 0))