MACD 보조지표로 단기투자 해보기 #1 - 단타도 이론적으로 접근해보자!

마지막 업데이트: 2022년 3월 23일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
macd 정보를 dataframe 에 불러온 모습

주식투자 다이어리

MACD란 주가의 두 이동평균선 사이의 관계를 보여주는 모멘텀 지표입니다. 단기 이동평균선과 장기이동평균선이 멀어지게 되면 다시 가까워지게 되는 성질을 이용하여 두개의 이동평균선의 차이가 제일 큰 시점을 찾아내는 분석기법으로 Gerald Appel에 의해 개발되었다.

MACD는 통상 12일과 26일 지수이동평균의 차이로 구해집니다. 또 MACD의 9일 지수이동평균을 구하여 Signal Line으로 사용하는데 MACD선 위에 같이 챠트화하여 매도, 매수 기회로 분석합니다.

MACD를 분석하는 방법은 크게 3가지로 나눌 수 있는데 교차분석(Crossovers), 과매수와 과매도 분석(Overbought/Oversold Conditions), 그리고 확산분석(Divergences)입니다.

1. 교차분석(Crossovers)

기본적인 MACD를 이용한 거래 방법은 MACD가 Signal Line아래로 떨어질 때 매도하고, MACD가 Signal Line 위로 상승했을 때 매수하는 것입니다. 또한 0선을 기준으로MACD가 0선을 상향이나 하향으로 전환될 때를 매수와 매도의 시기로 보는 분석기법입니다.

2. 과매수와 과매도 분석(Overbought/Oversold Conditions)

MACD는 과매도, 과매수 지표로도 사용되는데 이는 단기이동평균선이 장기이동평균선으로 부터 극단적으로 상승, 하락할 때, 즉 MACD가 급격한 상승이나 하락을 보일 때 시장가격이 지나치게 확대 상승, 하락된 것으로 보며 가격도 곧 되돌아 올 확률이 높다고 분석합니다. 즉 MACD의 급격한 움직임은 시장의 과매도, 과매수 상태를 보인다는 분석기법입니다.

3. 확산분석(Divergences)

확산(Divergence)분석은 시장추세의 마지막 국면에서 나타나는데 추세 전환신호로 인식합니다. Divergence는 두가지 형태로 나타나며 약세 Divergence와 강세 Divergence입니다. 약세 Divergence는 주가가 최고가 이상인데 MACD가 이전 최고값 돌파에 실패할 때를 말하고, 강세 Divergence는 주가가 지속적으로 신저가가 발생할 때 MACD값은 저점을 점점 높이며 상승하는 것을 말합니다. 이 Divergence 분석은 과매도, 과매수 국면에서 나타나면 더욱 더 신뢰도가 높습니다.

MACD의 계산방법은 다음과 같습니다.

MACD = 12일 지수이동평균 - 26일 지수이동평균

Signal Line = MACD의 9일 지수이동평균

MACD 오실레이터 = MACD - Signal Line

보조 지표인 MACD 오실레이터 분석에서도 교차분석으로 매매의 시점을 찾는데, MACD 오실레이터는 MACD 곡선과 시그널 곡선이 서로 교차하는 것을 보다 정확히 인식하기 위해서 MACD와 시그널의 차이를 또 한번 오실레이터로 값을 산출한 것입니다.

그러므로 이 오실레이터 값이 0선을 상향 돌파하면 매수시점으로 하향 돌파하면 매도 시점으로 분석하면 됩니다. 또한 MACD 오실레이터에서도 B국면에서 보듯이 약세 Divergence가 나타나며 지수가 하락세로 전환됩니다

MACD 활용밥법을 정리 요약해보면

2) 매수 = 지표가 기준선 상향 돌파시

3) 매도 = 지표가 기준선 하향 돌파시 -

1) 신호선 = MACD 지표의 이동평균선

2) 매수 = 지표가 기준선 상향 돌파시

3) 매도 = 지표가 기준선 하향 돌파시

일정 구간을 정 할 수 없음 과거의 추세에서 종목별로 임의 설정을 해서 상용 할 수 있다

1)상승역배열 = 지표는 저점을 높이는데 주가는 저점을 낮추는 형태로 주가 상승전환을 예상 할 수 있다 -> 매수타이밍

2)하락역배열 = 지표는 고점을 낮추는데 주가는 고점을 높이는 형태로주가 하락전환을 예상 할 수 있다 -> 매도타이밍

1)상승형 역배열 확장 = 상승형 역배열 형성 이후 의미있는 저점을 형성하는 과정을 통해 상승 추세로 전환 -> 매수

2)하락형 역배열 확장 = 하락형 역배열 형성 이후 의미있는 고점을 형성하는 과정을 통해 허락추세로 -> 매도

- MACD Oscillator 활용 기준선=0 MACD와 신호선의 차 값으로 보통 막대(BAR)형으로 표시함.

MACD와 신호선의 거리를 표현하고 있으며 MACD가 신호선을 상향돌파(매수시점)하면 Oscilator는 기준선을 상향 돌파하며 MACD가 신호선을 하향돌파하면 Oscillator는 기준선을 하향 돌파한다.

제랄드 아펠( Gerald Appel )에 의해 개발된 기법으로 26일간의 지수평균과 12일간의 지수평균간의 차이를 산출하여 구하며, 이 두 지수평균의 차이를 다시 9일간의 지수평균으로 산출하여 시그널( signal )로 사용한다.

이동평균수렴·확산지수. 기간이 다른 이동평균선 사이의 관계에서 추세변화의 신호를 찾으려는 진동자 지표다. 이동평균선은 주가의 단기변동 때문에 나타나는 불규칙성을 제거하기 위해서 만드는데 MACD 는 이러한 이동평균선을 이용해 매매신호를 찾으려 한다. 단순이동평균선은 추세전환 신호가 늦게 나타난다는 단점이 있기 때문에 이를 해결하기 위해서 MACD 에서는 지수이동평균을 사용한다. MACD 는 추세전환 시점을 찾는 것보다는 추세 방향과 주가 움직임을 분석하는데 좋은 지표로 알려져 있다.

MACD만을 보고 거래한다는것은 위험천만하다.

MACD는 이동평균선의 움직임을 일정한 산술규칙에 따라 표시하는 방법으로 이동평균선 매매법의 응용으로 볼 수 있다.

이동 평균선 매매에서 나타나는 단점과 장점이 MACD에서도 존재한다.

따라서 MACD는 거짓 신호가 무척 많이 나타나기 때문에 단독지표로 사용되어서는 안된다.

실험매매를 통하여 MACD의 장점과 단점 그리고 왜 단독지표로 사용되어서는 안되는지를 학습해본다.

오랬만에 개별종목을 한개 띄어본다.

하락 출발하고 지속적인 하락을한다.

오실레이터는 당연히 음봉, 어제 살짝 고개를 들었던 시그널도 하락으로 바뀌어있다.

시초가가 전일 종가보다 차이가 많이나게 되면 MACD의 신뢰가 떨어진다.

갑자기 편차가 큰 가격이 들어오다보니 평균에서 멀어지게되고 구간값에서 빠져나갈 때까지 지속적으로 영향을 주게된다.

대부분의 아침장에서 나오는 현상으로 MACD의 단점이다.

갭을 보정하고 보는 차트는 다르게 나타난다.

조금 더 진행된 갭보정한 차트와 보정하지 않은 차트의 차이를 보자

일반차트로 보는 매수 시점이다.

골든크로스와 양봉출현으로 2275포인트 매수한다.

그런데 아래 갭보정한 차트를 보자.

갭을 보정한 차트는 골든크로스와 양봉출현이 2220포인트에서 나오고 늦어도 2245포인트에는 매수해야 된다고 알려주고있다.

2220포인트와 2275포인트의 차이는 무척크다.

데드크로스와 음봉출현으로 2310포인트 매도한다.

오실레이터는 지속적으로 하락하고 있었으나 데드크로스 시점까지 기다렸다 매도한다.

오실레이터가 하락한다는것이 주가가 반드시 내려간다는 의미는 아니다.

상승하는 각도가 45도 내외로 안정적이므로 오실레이커보다는 데드크로스를 기준으로 거래한다.

0선위에서의 골든크로스는 교과서적인 상승신호다.

하지만 급한 상승과 고점 갱신 실패로 실망매물이 출현하면서 하락강도를 증가시키고있다.

MACD의 후행성을 극적으로 보여준다.

MACD 지표에 따라 데드크로스 시점인 2310포인트 손절매도한다.

MACD의 후행성을 극복하기 위하여 대비해야 되는것은 별로없다.

MACD가 단독으로 사용되어서는 안되는 가장 큰 이유이다.

이에 반하여 MACD의 약세 다이버전스는 상당한 신뢰가 있으므로 확실한 주가반전이 나오기 전까지 주식매수를 보류하는것이 좋다.

약세다이버전스가 발생한 후 상당한 하락을 지속하고 반전하고있다.

골든크로스발생 2290포인트 매수

하락과 함께 0선 밑에서 데드크로스 2260포인트 매도.

다시 급등하여 골든크로스 발생 0선 밑에서의 골든크로스는 접근에 매우 신중해야 한다.

분할매수로 대응 2320포인트 1/2 매수

0선 돌파 2350포인트 1/2 추가매수

고점을 돌파하였으나 긴꼬리 남기며 고점 밑으로 완성된 봉이 불안하다.

연속되는 고점갱신을 하고있지만 긴꼬리를 남기고있다.

고점에서의 공방이 치열하다는것을 알수있다.

오실레이터가 하락하고있고 음봉이 연속되고있으나 MACD는 간격을 벌리고있다.

다른 지표를 참고하고 싶은 마음이 굴뚝같다.

하지만 MACD로 결론을 내려야 하니까 조금 더기다려본다.

연이은 음봉이 나오면 무조건 매도하기로 판단한다.

상당한 진폭의 캔들이 나왔다.

음봉 출현으로 2335포인트 전량매도

여기서 다시 약세 다이버전스가 나온다.

하락세로 판단하고 기다려본다.

0선 밑에서 골든크로스 양봉출현이 나왔다 그런데 이미 많이 상승하고 음봉이 나왔다.

매수하기에 적절한 시기가 아니다.

MACD를 단독으로 매매하면 장중 변화에 너무 늦은 대응을 하게 된다.

캔들을 한개씩 넘기면서 등락을 예상해보는데 MACD 신호는 나오지 않고 있어 답답하다.

MACD는 매매의 기준으로 사용하기에는 무리가 많다.

후행성이 가장 큰 원인이고 신호를 해석하는데 주관적 해석과 객관적 해석이 충돌한다.

등락이 심하지 않은 종목으로 장기 투자에 조금 더 어울리는 지표로 생각된다.

MACD 정의는
어느 한 책에 따르면
이동평균선의 수렴과 확산지표를 나타낸것


기본값은 항상 12, 26, 9로 설정이 되어 있는데
며칠에서 몇개월단위로 투자하는 일반인들이
가장 적절한 값이 이거라고는 하는데
초보인 나로서는 아 그렇구나 하고 기본값 걍 씀ㅋㅋ


12는 12일이동평균선 단기이평선을 나타냄
26은 26일이동평균선 장기 이평선을 나타냄
그리고 9는 시그널곡선을 만들때 9일을 이용했다는 뜻

다시 가지고 오면 보는 방법은,


노란색으로 표시된 회색줄 ㅡ이 기준선 0
MACD곡선이 기준선 위에 있으면 상승추세
반대로 아래에 있다면 하락추세

또한 MACD곡선으로 매수, 매도시점을 잡을수 있는데
MACD곡선이 시그널 곡선을 상향돌파할땐 매수시점
MACD곡선이 시그널 곡선을 하향돌파할땐 매도시점

이렇게 MACD는 보조지표로
추세를 확인하고
매수할지 매도할지 시점잡는
하나의 길잡이가 될수는 있는데
이거말고도 다른 차트들의 매수/매도시점을
꼭 파악해야한다는것

[주식 이야기] MACD 보조지표로 단기투자 해보기 #1 - 단타도 이론적으로 접근해보자!

애초에 모든 종목을 1년 이상 계속 소유하고 방치한다면 주식에 대한 관심이 점점 MACD 보조지표로 단기투자 해보기 #1 - 단타도 이론적으로 접근해보자! 멀어지지 않을까?

어차피 오른다고 팔 것도 아니고 떨어진다고 손절할 것도 아니고.

그리고 우선 투자도 끊임없이 관심을 가지고 공부를 하려면 일단 재미가 있어야 된다.

그런데 사실 그냥 장투만 하는건 재미가 없잖아?(물론 돈을 잃으면 더더욱 재미가 없겠지만)

이렇게 스스로 자기 합리화를 하면서 나는 어느정도 비중은 스윙(1주~4주정도 종목 보유 후 매도) 투자를 하고 있다.

그런데 이런 단기적인 투자도 그냥 감으로 차트를 보고 찍는게 아니라 나름의 기준이 있어야 하지 않을까?

그래서 이번 글에서는 MACD라는 보조 지표를 이용한 종목 선정 및 투자를 다루어보려고 한다.

MACD가 뭔데?

주식 차트에 조금이라도 관심있는 사람은 이동평균선, 골든크로스에 대한 개념은 이미 들어본 적이 있을 것이다.

골든크로스는 단기 이동평균선(5일 혹은 20일)이 장기 이동평균선(예를 들어 60일)을 추월하면서 상승할 때를 의미한다.

즉, 골든크로스가 발생하면 해당 종목의 주가가 상승세로 전환되었다고 판단한다.

골든크로스가 발생했을 때 해당 종목을 매수하는 것은 차트 매수법의 기본 이론이다.

(이동평균선, 골든크로스에 관한 자세한 내용은 나중에 시간이 될 때 다루어보도록 하겠다.)

하지만 이 역시 시장 전체가 상승장, 하락장일 때마다 주가의 움직임이 다르며, 골든크로스가 발생한 시점에서 이미 해당 주가가 어느정도 상승했을 가능성이 높기에 절대적인 이론은 아니다.

이러한 단점을 보완하기 위해 만들어진 보조지표가 바로 MACD( Moving Average Convergence & Divergence) 이다.

MACD의 기본 공식은 아래와 같다.

MACD : 12일 지수이동평균 - 26일 지수이동평균
시그널 : MACD의 9일 지수이동평균

MACD 지표는 주가의 상승, 하락 추세와 방향성을 예측하는데 사용된다.

스윙 투자의 경우 MACD는 아래와 같은 방법으로 사용된다.

MACD 선이 시그널 선을 위로 뚫고 상승하는 모양일 경우 매수신호

MACD 선이 시그널 선을 아래로 뚫고 하락하는 모양일 경우 매도신호

아래는 최근에 본 종목들의 몇가지 예시이다.

물론 MACD는 절대적으로 무조건 들어 맞는 공식은 아니다.

(무조건 들어맞는 공식이면 진작에 부자가 되었겠지. )

그냥 참고용으로 확인 바란다.

아래의 경우는 최근의 DB금융투자 종목 예시이다.

DB금융투자의 경우 MACD선 매수, 매도 신호를 따랐다면 약 1달정도 보유했을 때 약 6%의 수익을 얻을 수 있었을 것이다.

호텔신라의 경우는 약 2주정도를 보유했을 때, 2.3%의 수익률을 얻었을 것으로 보인다.

위의 수익률을 보고 이렇게 생각하는 분들도 있을 것이다.

생각보다 수익률이 너무 낮은데.

맞다. 2%, 6%는 낮다고 생각할 수도 있다.

하지만 위의 지표를 이용한 매수, 매도는 어디까지나 스윙투자, 즉 단기 기간으로 투자를 했을 때의 경우이다.

투자 기간을 고려했을 때에는 그렇게 낮은 수익이 아니다.

물론 위의 매수, 매도 신호를 따라서 투자를 해도 손실을 보는 경우도 있다.

예시를 보여드리진 않았지만 나같은 MACD 보조지표로 단기투자 해보기 #1 - 단타도 이론적으로 접근해보자! 경우 MACD 지표로 매수, 매도를 했을 때 손실을 본 경험이 있었다.

즉 이 투자방법은 무조건 돈을 벌 수 있는 무적의 공식이 아니다.

하지만 자신만의 매수 매도 타이밍을 결정하는 기준을 세우는 데 도움이 될 것으로 보인다.

다음 글에서는 HTS에서 조건검색을 통해 MACD 시그널 종목을 검색하는 방법, 그리고 한 2달정도 기간을 걸쳐 위의 투자법을 적용했을 때 실제로 어느정도 수익을 낼 수 있는지 투자일기를 꾸준히 게시할 예정이다.

MACD란?

이번 글은 MACD에 대해 알아보고 MACD가 어떤것인지, 그리고 MACD를 어떻게 활용할 수 있는지 알아보겠습니다.

MACD 란?

MACD는 Moving Average Convergence & Divergence의 약자로 말 그대로 이동평균선이 수렴과 확산을 뜻하며 다시 한번 쉽게 말해보자면 이동평균선이 모아지고 멀어지는 정도를 나타내는 보조지표입니다.

따라서 MACD를 통해 단기 이동평균선과, 장기 이동평균선이 서로 수렴했다 확산했다를 반복하는 점을 기반으로 추세를 확인할 수 있습니다.

MACD Indicator는 제럴드 아펠 Gerald Appel이 개발한 보조지표입니다.

Gerald Appel 제럴드 아펠

간략히 소개하자면 1933년생으로 뉴욕 맨해튼 증권가에서 애널리스트이자, 펀드매니저로 활동했다고 합니다.

MACD의 구조

MACD Indicator는 MACD Fast Length, Slow Length, 그리고 Signal Smoothing으로 구성되어있습니다.

이동평균선은 길면 길수록 후행성 지표가(Slower Length) 되며, 기간이 가까우면 가까울수록 최근의 가격(Fast Length)을 반영하게 됩니다. 통상 MACD를 12일 이동평균선과 26일 이동평균선으로 사용하게되는데, 12일선이 조금 더 상대적으로 26일선 보다 변동성이 커지기 때문에, 12일선이 26일선을 뚫고 LEAD하게 될 것입니다. 이런 원리를 바탕으로 SHORT PERIOD, LONG PERIOD 이동평균선의 차이를 계산한것이 MACD Indicator가 되겠습니다

왜 통상 12일선, 26일선이냐구요? 왜냐하면 제럴드 아펠이 개발할 당시의 증권시장이 문을 여는 영업일을 기준으로 계산하였기 때문입니다만, MACD의 SLOW LENGHT와 FAST LENGHT, SIGNAL 곡선은 사용자의 입맛에 따라 다양하게 변경해서 사용할 수 있습니다.

그리고 Signal 곡선이 있는데요, 이는 MACD의 이동평균값을 다시 이동평균값을 한것이고, 이 양은 SLOW LENGTH와 FAST LENGHT의 이격차이도를 나타냅니다. 이게 필요한 이유는, SLOW LENGTH와, FAST LENGHT의 괴리가 가장 큰 시점을 찾기 위해서입니다. 위 그림을 보게 되면 26일 선과, 12일 선의 이격도 만큼 signal smoothing이 커지는것을 확인 할 수 있습니다. 저기에서 이격도가 최대인곳이 즉 SIGNAL SMOOTHING이 PEAK인 지점이며 이곳이 괴리가 가장 큰 시점입니다.

MACD 활용법

이렇게 설정한 MACD Indicator를 이용한 활용방법은 크게 3가지 정도가 있습니다.

  • 기준선을 이용한 추세 파악
  • 과매수와 과매도 상태일 때 변곡점 파악

아래 노란색 실선으로 가운데를 나눈것이 기준선인데, 기준선 아래에서는 하향 추세를 나타내므로 매도신호를, 기준선 위로 돌파시에는 MACD 보조지표로 단기투자 해보기 #1 - 단타도 이론적으로 접근해보자! 상승신호를 나타냅니다. 이를 더 응용해보자면 SIGNAL SMOOTHING이 PEAK을 찍은 곳에서 또 한번 단기 매도/매수신호가 나올 수 있습니다. 초록색 원은 이격도의 PEAK을 찍은 지점이며 통상 RSI와 함께 보았을 때 과매수, 과매도 구간이 되겠습니다.

  • FAST LENGTH가 SLOW LENGHT의 TAKE OVER파악

아래 느낌처럼 MACD의 12일선이 26일선을 하방으로 뚫고 내려가는지, 사방으로 뚫고 올라가는지 그 CROSS지점을 말합니다. 이를 정리히하자면, 아래 박스를 참고하시기 바랍니다.

기준선 위에서 12일선이 26일선을 상방돌파하면 STRONG 골든크로스라고 하여 강항 상승세를 동반하며,
기준선 위에서 12일선이 26일선을 하방돌파하면 WEAK 데드크로스라고 하여 약한 하락세를 동반하며,

기준선 아래에서 12일선이 26일선을 상방돌파하면 WEAK 골든크로스라고 하여 약한 상승세를 동반하며,
기준선 아래에서 12일선이 26일선을 하방돌파하면 STRONG 데드크로스라고 하여 강한 하락세를 동반합니다.

첫 번째, 매도신호에서는 기준선 위에서 12일선이 26일선을 하방돌파하였고, WEAK 데드크로스가 되겠습니다.

두 번쨰, 매도신호에서는 기준선 아래에서 12일선이 26일선을 하방돌파하였고, STRONG 데드크로스가 되겠습니다.

세 번째, 매수신호에서는 기준선 아래에서 12일선이 26일선을 상방돌파하였고, WAEK 골든크로스가 되겠습니다.

그 다음에 다이버전스도 MACD 보조지표로 단기투자 해보기 #1 - 단타도 이론적으로 접근해보자! 있지만, 이는 MACD에 국한된 다이버전스가 아니라 기타 여러 보조지표에서도 적용되는 다이버전스가 있기 때문에, 따로 다루도록 하겠습니다.

MACD란?

CAP02 에서 주식 벡테스팅 라이브러리인 Finterstella 에 관한 간단한 소개와 사용법을 했다. 이번 포스트는 Finterstella를 이용한 첫 번째 기술적 투자 전략, Moving Average Convergence Divergence (MACD)이다. CAP01에서 소개한 이동평균선 (MA)을 이용한 전략이다. 한 가지 다른 점은 기본적인 MA가 아닌 지수 이동 평균선 (EMA)을 이용한다는 것이다. EMA는 MA와 다르게 현재에 가까운 값일수록 가중치를 부여한다. 자세한 설명은 investopedia link를 참조하겠다. https://www.investopedia.com/ask/answers/122314/what-exponential-moving-average-ema-formula-and-how-ema-calculated.asp

How Is the Exponential Moving Average (EMA) Formula Calculated?

Calculating exponential moving averages (EMAs) and constructing moving average ribbons from them helps traders and analysts spot market trends.

이제 시작해보겠다. 라이브러리를 설치하고 import 한다

주식 데이터를 가져오는 get_data 함수를 정의하고, 스타벅스 2020-01-01부터 2021-10-23까지 종가를 불러와보겠다.

스타벅스 주식 데이터프레임

dataframe을 확인하면 위와 같이 날짜를 index로 하고 SBUX 칼럼에 가격 데이터가 들어가 있다.
이제 MACD 전략을 설명하겠다.

  • MACD = EMA(short) - EMA(Long)
  • MACD signal = EMA(MACD,9)
  • MACD oscillator = MACD - MACD 보조지표로 단기투자 해보기 #1 - 단타도 이론적으로 접근해보자! MACD signal

MACD 란 짧은 EMA에서 긴 EMA를 뺀 것이다. 이 값이 양수이면 현재 상승추세임을 의미하고 하락이면 하락 추세임을 의미한다. MACD signal 은 MACD를 다시 9일 EMA로 스무딩 한 것이다. MACD oscillator는 MACD에서 MACD signal을 뺀 값이다. 우린 MACD oscillator 가 양수이면 매수, 음수이면 매도하는 전략을 사용할 것이다. 지금 강력하게 오르고있는 것은 계속 오를것이다, 내리고 있는것은 내릴 것이다로 가정하는 것이므로 기본적으로 추세에 배팅하는 모멘텀 전략인셈이다. 아래 그림을 보면 좀 더 이해가 편하다.

MACD 전략설명. 출처:https://altfins.com/knowledge-base/macd-line-and-macd-signal-line/

macd 정보를 dataframe 에 불러온 모습

Finterstella 내부에 이미 macd 함수가 내장되어있어서, 위와 같은 코드 한 줄로 macd 값을 가져올 수 있다. EMA(short), EMA(Long), Signal(term)의 기본 세팅은 12,26,9 일이다. MACD가 만들어진 시점이 주6일제라서 그런것이다. https://money.stackexchange.com/questions/22461/rationale-behind-using-12-26-and-9-to-calculate-macd

macd정보를 시각화

fs.draw_chart를 이용해서 macd, macd_signal, macd_oscillator를 그려봤다. 초록색이 양수이면 long 음수이면 short하는 게 우리의 전략이다. 이제 전략을 만들어보자!

fs.indicator_to_signal로 buy/sell trading signal을 만들 수 있다. factor는 macd_oscillator 고되고, buy sell을 각각 0으로 세팅하면, 기본적으로 양수는 long 음수는 short을 하게 된다.

Trde signal을 dataframe에 불러온 모습

dataframe을 확인해보면 trade 란 칼럼이 새로 생긴 것을 볼 수 있다. zero 면 hold buy는 long sell 은 short를 뜻한다.

이제 트레이딩 signal에 따른 주식 보유 상태 (position)을 산출한다. 말로 하면 헷갈리니 포지션 차트와 macd_oscillator를 한 번에 시각화해보겠다.

포지션(오른쪽): 1매수포지션 0매도포지션, macd_oscillaotr(왼쪽) ocillaotr 가 양수이면 매수포지션(1) 음수이면 매도 포지션(0)을 뜻한다.

주가가 요동쳐서 그런지 트레이딩을 참 많이 했다. Position 차트는 단순 1,0의 값만 가지며(오른쪽 axis) 1 이면 보유 상태, 0 이면 보유하지 않은 상태로 볼 수 있다. 여기서 조금 헷갈리는 게 있다. 만약 한 주씩 Long Long Long Short을 했다면 마지막 short에서는 가진 주식을 다 파는가?? 내 생각엔 1주만 팔 것 같은데 이것은 좀 더 찾아보겠다. (혹시 알고 계신 분 있으면 댓글 부탁합니다^^)

마지막으로 해당 전략을 평가해보겠다.

  • fs.evaluate 함수로 dataframe 안에 각종 평가 지표 칼럼을 집어넣는다. (cost 에는 매매비용 % 를 넣는다)
  • fs.performance로 성과지표 요약을 출력할 수 있다. (rf_rate는 무위험 이자 % 를 넣는다)
  • fs.draw_trade_results로 수익률을 시각화할 수 있다.

전략평가 지표 출력(위) 와 수익률 시각화 왼쪽: 수익률, 오른쪽: 스타벅스 주가

  • CAGR: 3.43% 연평균 수익률이 3.43%이다. 물가보단 높다.
  • Accumulated return: 6.27% 투자 기간 동안 누적 수익률이다.
  • Average return: 0.30% 건별 수익률을 0.3%이다.
  • Benchmark return : 28.20% 개별종목일 경우 buy and hold 수익률을 뜻한다. MACD의 4배가 넘는다.
  • Number of trades: 20 트레이딩 횟수이다
  • Number of win: 8 트레이딩 중에 수익이 난 경우이다
  • Hit ratio: 40.00% win/number of trade
  • Investment period: 1.8 yrs
  • Sharpe ratio: 0.09 샤프지수 ( https://www.investopedia.com/terms/s/sharperatio.asp )
  • MDD: -16.54% 최대 낙폭이다
  • Benchmark MDD: -39.91% 벤치마크 최대 낙폭이다

누적 6.27%를 먹었고, 벤치마크 MDD 보다 적은 MDD를 보였다. 하지만 buy and hold 가 4배 잘 나온 거를 보면 뭔가 좀 아쉬워 보인다.

개별 주 말고 미국 시장 전체를 대표하는 S&P 지수에 같은 전략을 적용하면 어떨까? 현실적으로 모든 종목을 매수하지는 못하니, SPY라는 S&P 지수를 따라 하는 ETF를 가져와서 시뮬레이션해보겠다.

지금까지 모든 코드를 한 블록에 써보았다.

S&P 지수를 따르는 ETF인 SPY에 MACD전략을 사용할 때 수익률, 2020.01-2021.10

  • CAGR: 11.37%
  • Accumulated return: 21.46%
  • Average return: 0.80%
  • Benchmark return : 39.48%
  • Number of trades: 22
  • Number of win: 10
  • Hit ratio: 45.45%
  • Investment period: 1.8 yrs
  • Sharpe ratio: 0.62
  • MDD: -11.22%
  • Benchmark MDD: -34.10%

생각보다 나쁘진 않다? 벤치마킹보다 MDD 방어도 잘한다. 그렇다면 코로나 이전도 해보자. 2018-01 - 2020-01까지 결과이다.

S&P 지수를 따르는 ETF인 SPY에 MACD전략을 사용할 때 수익률, 2018.01-2020.01

  • CAGR: 5.84%
  • Accumulated return: 11.98%
  • Average return: 0.52%
  • Benchmark return : 19.75%
  • Number of trades: 22
  • Number of win: 10
  • Hit ratio: 45.45%
  • Investment period: 2.0 yrs
  • Sharpe ratio: 0.49
  • MDD: -10.MACD 보조지표로 단기투자 해보기 #1 - 단타도 이론적으로 접근해보자! 10%
  • Benchmark MDD: -20.18%

이번에도 나쁘진 않다. 신기하게도 이렇게 차트만 보고 투자하는 전략이 S&P에 대해서 어느 정도의 수익을 보장해준다. 개인적인 해석을 덧붙인다면 개별주의 경우 회사에 관한 이슈가 주가에 영향을 많이 미치기 때문에 단순히 가격 데이터만 보고 투자를 하는것에는 무리가 있어보인다. 하지만 여러 주식이 합쳐져 한 나라의 경제 지표를 대변하는 S&P 등의 Index 일 경우에는 글로벌한 이슈를 제외하면 어느정도 추세라는게 존재하고, 기술적 전략을 잘 쓰면 가능하지 않을까 라는 기대를 해본다. 시장은 완벽히 효율적이지는 않지만 큰 수의법칙에서는 어느정도는 효율적이다 라고 생각해보았다.

미국 주식으로 시작하는 슬기로운 퀀트투자 - 교보문고

주린이+코알못도 파이썬으로 쉽게 따라 하는 퀀트투자 레시피 | 필요한 것은 이 책과 컴퓨터 1대뿐! 퀀트머신으로 따라 하며 배우는 미국 주식 퀀트투자 방법 이 책은 프로그래밍 학습 경험이 없


0 개 댓글

답장을 남겨주세요