모멘텀 알파 전략

저자:차오장, 날짜: 2023-11-23 11:34:40
태그:

img

전반적인 설명

모멘텀 알파 전략은 하위 자산이 샤프 비율과 알파 값을 계산하여 긍정적 인 모멘텀을 가지고 있는지 여부를 판단합니다. 샤프 비율과 알파가 양수일 때 길게 이동하고 두 지표가 모두 음수가 될 때 위치를 평평하게합니다.

전략 원칙

이 전략의 핵심 지표는 샤르프 비율과 알파이다. 샤르프 비율은 자산의 위험 조정 수익을 반영하고, 알파는 시장 벤치마크에 비해 과도한 수익을 반영한다. 둘 다 긍정적 인 경우 자산이 높은 위험 조정 수익을 가지고 있으며 시장 벤치마크를 능가한다는 것을 나타낸다. 따라서 긴 지위가 취득된다. 둘 다 부정적 인 경우 추진력이 사라지고 지위가 평평하다는 것을 의미합니다.

특히, 전략은 먼저 지난 180일 동안의 샤르프 비율을 계산한다. 샤르프 비율은: (평균 일일 수익률 위험 자유 수익률) / 일일 수익률의 표준편차로 계산된다. 여기서 하루 수익률의 평균과 표준편차는 개시 가격과 이전 폐쇄 가격을 사용하여 계산된다. 샤르프 비율이 1보다 크면 자산이 상대적으로 높은 위험 조정 수익률을 가지고 있음을 의미합니다.

동시에, 지난 180일 동안의 알파가 계산된다. 알파는 시장 모델을 통해 계산된다: 알파 = 실제 자산 수익 (시장 수익 x 베타). 여기서 기본 자산과 S&P 500 지수의 일일 수익이 사용됩니다. 알파가 0보다 크면 자산의 실제 수익이 시장 벤치마크보다 높다는 것을 의미합니다.

따라서 샤프 비율과 알파가 양수일 때, 긴 위치가 취해집니다. 둘 다 음수가 되면, 위치가 평평합니다.

이점 분석

이 전략의 가장 큰 장점은 동력을 판단함으로써 특정 기간 동안 광범위한 시장과 일부 개별 주식의 성장 기회를 포착 할 수 있으며 장기적인 시장 붕괴를 피하기 위해 위험을 제어 할 수 있다는 것입니다. 이 장점은 다음과 같이 상세히 분석됩니다.

  1. 샤르프 비율을 계산하면 최근 동력 조건을 반영하고 일부 시장과 주식의 상승 추세를 파악 할 수 있습니다. 알파를 계산하면 벤치마크보다 과잉 수익을 반영하고 약한 기본 요소를 필터링합니다.

  2. 두 지표를 서로 다른 시간 지평에 걸쳐 포괄적으로 고려함으로써 긍정적 인 동력을 더 정확하게 결정할 수 있습니다.

  3. 동력이 사라질 때, 적시에 손실을 막는 것은 큰 손실을 피합니다. 이것은 상승 추세 후에 적절한 수익을 얻을 수 있습니다.

  4. 단일 동력 지표와 비교하면 이 전략은 더 안정적이면서 주식과 지수 모두에 사용할 수 있을 만큼 유연합니다.

위험 분석

이 전략의 장점에도 불구하고 다음과 같은 위험이 있습니다.

  1. 동력 지표는 후퇴할 수 있다. 시장이 변할 때 동력 주가는 빠르게 떨어질 수 있다. 이것은 큰 손실로 이어질 수 있다. 매개 변수는 조정되거나 다른 지표와 결합될 수 있다.

  2. 알파 및 샤프 비율은 시간 지연이 있습니다. 시장이 빠르게 움직일 때 지표 값은 지연되어 최신 트렌드를 반영하지 않을 수 있습니다. 계산 기간은 단축 될 수 있습니다.

  3. 포지션 사이즈 통제가 없으므로 집중된 위험이 발생합니다. 시장 조건이나 사용 가능한 자본에 따라 포지션 크기를 제어하는 것을 고려하십시오.

  4. 백테스트 데이터는 불충분하고 라이브 성능은 불확실할 수 있다. 더 많은 시간 프레임 및 기기 백테스트가 수행되어야 한다. 과도한 장착을 방지하기 위해 매개 변수 최적화 창은 단축되어야 한다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 스톱 로스 메커니즘을 추가합니다. 큰 손실을 피하기 위해 하루 동안 가격이 급격히 떨어지면 스톱 로스 포인트를 설정합니다.

  2. 포지션 사이즈 관리 추가. 거래 당 손실을 제한하기 위해 시장 변동성을 기반으로 거래 당 자본을 제어.

  3. 매개 변수를 최적화 합니다. 서로 다른 기본 및 시장 조건의 특성에 맞게 다른 시간 프레임을 테스트합니다. 또한 다른 매개 변수 조합을 평가할 수 있습니다.

  4. 필터링 조건을 추가합니다. 거래량이나 변동성 같은 필터를 설정하십시오.

  5. 다른 전략과 결합. 다른 트렌드 다음 전략과 결합하는 것을 고려하십시오. 이것은 안정성을 향상시키고 단일 전략에서 위험을 다양화 할 수 있습니다.

요약

모멘텀 알파 전략은 자산의 위험 조정 수익률과 상대적 시장 성과를 판단함으로써 동적 동력 기회를 포착합니다. 단일 모멘텀 지표와 비교하면 더 정확한 판단, 더 넓은 적용 가능성 및 더 높은 위험 탄력성의 장점을 가지고 있습니다. 그러나 전략은 여전히 마감 및 지연의 위험을 지니고 있습니다. 안정적인 실전 이윤을 달성하기 전에 지속적인 최적화와 다른 전략과의 조합이 필요합니다.


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


더 많은