주식 분석 툴에 MACD 분석 기능을 추가함.
매일 장마감 후에 주식분석 결과를 올린지 1주일이 넘었다.
아직 백테스팅 로직은 구현하지 않아서, 이평선 골드크로스 분석한 결과들을 랜덤하게 종목 검색해가며 현재 주가가 어떤지를 찾아봤는데, 한눈에도 분석결과가 나온 이후 우상향한 주식은 절반도 되지 않아보였다. 좀 더 장기적으로 보고 특정 기간 이후에 종가를 분석해봐야 하는지는 더 고민해봐야 할 문제이긴 하지만, 골드크로스 전략에 대한 글을 구글링만 해서 찾아봐도 그냥 아무 주식을 같은기간을 보유하는 것에 비해 평균적으로 수익률이 낮다는 통계 결과도 있다.
골드크로스 전략은 과연 유효한가? 시스템 트레이딩으로 실현시켜본 이평선전략
이동평균선을 이용한 거래전략은 주식거래에 있어서 가장 기본적인 분석 지표중 하나로써 주식에 ‘추세’가 있다고 가정하고 있고, 단기 이동평균선이 장기 이동평균선을 추월하게 될때 주식을 매수하는 전략이다..
그럼에도 기술적 분석들을 하나씩 구현해가는 이유는 내가 최종목표로 나가는 일부라고 생각하려고 한다. 지금 누군가가 분석 품질이나 도움이 되는 정보인가에 대해 묻는다면 정말 좌절스럽겠지만 조금씩 나아질 것이다. 틈틈히 짬내서 MACD 지표 계산을 추가하고 자동 포스팅이 되게끔 추가하였다. 골드크로스보다는 좀 더 매도, 매수신호를 상승추세나 하락추세 시작 시점에 알려주는 지표라 이전보다는 좀 더 낫지 않을까 싶다.
MACD의 계산 코드는 아래와 같다. python이며 pandas를 이용하였다. MACD 지표를 구하는 일부 코드만 첨부하지만, 코드를 읽으면 앞단에 필요한 데이터가 무엇이 필요한지 유추가 가능하다.
MACD의 계산
MACD (Moving Average Convergence and Divergence):추세지표
MACD는 단기지수이동평균값과 장기지수이동평균값의 차이를 이용한 지표입니다.
이 지표는 두 이동평균선이 멀어지게 되면 다시 가까워지려고 하는 속성을 이용합니다. 두개의 이동평균선의 차이가 제일 큰 시점을 찾아내는데 주력하는 기법으로써 Gerald Appel이 만들어 냈습니다.
- Signal곡선= n일의 MACD 지수이동평균
- 기본설정값: 단기:12일, 장기:26일, Signal:9일
- 일반적으로 단기 이동평균으로 12일을, 장기 이동평균으로 26일을 이용하고, MACD의 9일 이동평균선을 Signal로 사용합니다.
- MACD 곡선이 signal 곡선을 상향 돌파할 때를 매수 시점으로, 하향 돌파할 때를 매도 시점으로 인식합니다.
- MACD 값이 0선을 상향돌파할때를 매수시점으로, 하향돌파할때를 매도시점으로 인식합니다.
- MACD 값이 Signa선을 크로스 상향돌파할때 매수시점으로, 크로스 하향 돌파할때를 매도시점으로 인식합니다.
- 시장의 과매도, 과매수를 이용한 분석이 가능합니다.
MACD가 급격한 상승이나 하락을 보일 때 시장가격이 지나치게 상승, 하락된 것으로 보며 가격도 곧 원래 자리로 되돌아 올 확률이 높다고 분석합니다.
- Divergence를 이용한 분석이 가능합니다.
Divergence가 발생하면 현재의 추세가 마무리 되고 곧 새로운 방향으로 주가가 움직일 것으로 예상할 수 있습니다. 약세 Divergence는 주가가 신고가를 갱신중인데 MACD가 이전 최고값 돌파에 실패할 때를 말하고, 강세 Divergence는 주가가 지속적으로 신저가를 발생할 때 MACD값은 저점을 점점 높이며 상승하는 것을 말합니다. 이 Divergence 분석은 과매도, 과매수 국면에서 나타나면 더욱 신뢰도가 높습니다.
MACD의 계산
MACD는 Moving Average Convergence & Divergence (이동평균 수렴&확산지수) 의 약자입니다.
장,단기 이동평균선의 차이를 이용하여 매매에 활용하기 위해 개발된 보조지표이며, 일전에 설명드렸던 볼린저 밴드와 같이, 이동평균선 분석에 기반하여 개발된 분석법이지만, 그 활용성 면에서 약간의 차이가 있다는 점을 유의하셔서 읽어 주시면 좋을 것 MACD 지표사용법과 실전매매법 같습니다.
MACD 역시 처음 칼럼을 쓸 때 말씀드렸던 것처럼 비정상 상태에 있는 시장은 정상 상태로의 되돌림을 만들 것이라는 기본 원리로 출발합니다.
MACD는 장기 이동평균선과 단기 이동평균선이 서로 멀어지게 된다면(Divergence, 확산) 결국 다시 가까워져서(Convergence, 수렴) 어느 시점에서는 교차하게 되리라는 원리로 분석을 시도합니다.
많은 분들이 사용하는 이동평균선교차 분석기법의 대표적인 단점인 ‘시차(후행성)’를 극복하기 위해서, MACD는 두 이동평균선이 가장 멀어지는 시점을 찾는 것을 주 목적으로 삼습니다.
MACD : 단기 지수이동평균 (보통 12) – 장기 지수이동평균 (보통 26)
MACD Signal : MACD 의 X일간 지수이동평균 (보통 9)
MACD선 (오실레이터) : MACD – MACD Signal
이해를 위해 가져온 차트는 비트코인의 1일봉입니다.
하단에 띄워둔 MACD의 선 중, 가운데에 모여있는 막대그래프가 MACD를 의미하며
그 주변을 움직이는 붉은 선이 MACD Signal, 검은 선이 MACD 오실레이터를 의미합니다.
위의 지표의 해석에 관한 것은 아래에서 다루도록 하겠습니다.
계산방식, 계산식 자체를 외울 필요는 없습니다. 다만, 해당하는 지표의 값들이 ‘어떤 목적’ 을 가지고 만들어 진 것인가, 무엇인가를 이해하시는 것이 중요합니다. 이 내용들을 이해하신다면 아래의 해석을 이해하시는 데에도 많은 도움이 될 것입니다.
천천히 계산식을 보시면서, 아래의 3가지를 추리해 보신 후 다음 단락을 읽으시는 것을 추천 드립니다. 물론 바로 스크롤을 내려서 보시는 분들도 많겠지만, 한번 고민해 보신 분과는 이해의 깊이가 다르리라 기대합니다.
1) MACD 오실레이터선과 MACD 시그널 선의 교차가 갖는 의미
2) MACD 값 +, - 가 갖는 의미
3) 2 에서 파생하여, MACD값 0이 갖는 의미
위에서 고민 해 보시길 추천드렸던 항목들이 이 단락의 주요 내용입니다. 먼저 앞서 던져드린 질문의 답을 드리도록 하겠습니다.
1) MACD 오실레이터와 MACD 시그널 선의 교차는, 장 – 단기 이동평균선의 괴리가 가장 커지는 지점을 의미합니다.
2) MACD값이 + 라는 것은 장기 지수이동평균선에 비해 단기 지수이동평균선이 위에 위치한 (정배열) 의 상태를 의미하며, - 라는 것은 장기 지수이동평균선이 단기 지수이동평균선의 위에 위치한 (역배열) 의 상태라는 것을 의미합니다.
3) MACD값이 0이 되었다는 것은 단기, 장기 지수이동평균선이 만났다는 것을 의미하며, 이는 곧 두 이동평균선이 교차한다는 것을 의미합니다. 골든 / 데드 크로스가 발생하고 있다는 것과 같은 의미를 갖습니다.
이 세가지의 답을 정확히 떠올리셨다면, 사실 이 뒤로 서술할 내용은 너무나도 당연한 얘기로 받아들여 질 수도 있습니다. 앞서 드린 질문의 답을 스스로 구하신 분들은 아래의 내용을 읽기 전에 본인 스스로 구한 답들을 조합하여 어떤 매매신호를 취할 수 있을 것인지 생각해보시면 더욱 도움이 되실 것입니다.
1> MACD 선이 시그널선을 상향 돌파할 때 매수한다.
MACD선이 시그널 선을 아래에서 위로 돌파한다는 것은, 역배열 상태에서 최대의 괴리가 생겼던 단기 이동평균선이 장기 이동평균선에 가까워 지면서 상승한다는 것을 의미합니다(종국에는 골든 크로스를 그리러 가는 모양이 되겠지요). 이 상황에선 매수를 통해 접근하는 전략을 수립할 수 있습니다. 이는 이동평균선 분석에서의 골든크로스와 유사하다고 볼 수 있으며, 실제로도 MACD골든크로스라는 말을 종종 사용하곤 합니다.
2> MACD 선이 시그널선을 하향 돌파할 때 매도한다.
위와 반대의 상황입니다. 정배열 상태에서 괴리가 생겼던 단기이동평균선이 데드크로스를 그리러 가는 상황이라고 생각하시면 됩니다. 위와 같이, MACD 데드크로스라고 부르기도 합니다.
3> MACD선이 전저점까지 하락 한 후 상승전환시 매수한다.
4> MACD선이 전고점까지 상승 한 후 하락전환시 매도한다.
3,4번의 내용은 유사한 내용입니다. 이전에 말씀드렸던 오실레이터 상에서의 지지/저항선 (직선추세선) 작도에 따른 분석이라고 생각하시면 이해가 빠르실 것이라고 생각됩니다.
MACD의 0선은 앞서 말씀드렸듯, 두 이동평균선의 교차를 의미합니다. 곧 MACD가 0선을 돌파한다는 것은 단, 장기 이동평균선의 골든/데드 크로스가 발생하는 것이라고 생각하시면 됩니다. 이 경우 이동평균선 분석에 따른 매매신호 발생과도 동일하다고 보시면 됩니다.
실제로 이러한 것들을 통해 이전의 차트를 분석한다면 어떻게 활용할 수 MACD 지표사용법과 실전매매법 있을 것인가, 예시를 위한 차트를 하나 가져왔습니다.
위는 BTC/KRW의 1일봉으로 가져온 차트입니다. 매수신호가 발생한 부분은 붉은 원으로 표시하였고, 매도신호가 발생하는 부분은 파란 원으로 표시되어 있습니다. 과연 이를 따라 매매했다면 이 MACD에 의한 매매신호 외에 어떤 근거로 매매를 진행했을 것인가에 대해서 고민하시면서 차트를 보신다면 더욱 깊이 있는 이해를 하실 수 있을 것이라고 생각됩니다.
4. MACD의 활용에 있어서의 주의사항
누누히 말씀드리고 MACD 지표사용법과 실전매매법 있는 보조지표 분석의 공통적인 주의점은 항상 유의하셔야 합니다.
가격에 대한 추세, 패턴분석은 항상 선행되어야 하며, 보조지표 분석의 결과는 항상 ‘보조’수준에만 있어야 합니다. 이런 공통적인 주의점을 제외하고, MACD분석에서 주의해야 할 주의사항은 바로 MACD에 사용되는 이동평균선이 ‘지수이동평균선’ 이라는 것입니다.
흔히 우리가 보는 이동평균선은 단순 이동평균선이기 때문에, 지수이동평균선을 기반으로 만들어지는 MACD의 신호는 단순이동평균선과는 다른 신호를 발생시킬 수 있다는 점은 유의하고 투자에 임해주시기 바랍니다.
MACD - 1편 기본개요
- MACD는 이동평균의 ‘후행성(後行性)’ 문제를 극복하기 위해 만들어진 기술적 지표이다. 이 지표는 아이디어가 MACD 지표사용법과 실전매매법 단순하면서도 신뢰도가 높아 오늘날 가장 많이 이용되는 대표적인 추세추종형 지표(Trend following Indicator) 중 하나이다.
-1977년경 Gerald Appel이 처음 고안하였는데, 이동평균의 ‘추세에 대한 설명력’을 유지하면서 ‘적시성을 제고’하기 위한 지표로 제안된 것이다.
- 두가지 이동평균선간의 간격이 다른 국면에 비해 상대적으로 멀어지는 시점이 가격의 주요한 저점(trough)과 고점(peak)와 일치하는 경향이 있다는 것이 MACD의 기본 아이디어이다.
- MACD의 기초적인 활용기법은 ① Divergence, ② Signal선 돌파(Moving average Crossover), ③ Zero선 돌파(Zeroline or Centerline Crossover) 등의 3가지로 구분된다.
- MACD를 도출하는 방식은 차액법(Price difference method)과 차율법(Percentage difference method)으로 나뉜다. 차율법에 의해서 도출된 MACD를 활용할 경우 MACD를 모멘텀 oscillator와 같이 활용할 수 있다. 한편 MACD와 같은 기술적 지표에도 추세선을 이용한 추세분석을 할 수 있는데, 이를 통하면 가격 추세의 변화를 보다 빨리 포착할 수 있다는
- MACD oscillator는 지표의 지표(an indicator of an indicator)이며 일반적으로 MACD의 선행지표로 인식된다.
Gerald Appel과 MACD
MACD는 이동평균의 ‘후행성(後行性)1’ 문제를 극복하기 위해 만들어진 기술적 지표이다. 이 지표는 아이디어가 단순하면서도 신뢰도가 높아 오늘날 가장 많이 이용되는 대표적인 추세추종형지표(Trend following Indicator) 중 하나이다.
MACD를 처음 고안한 사람은 Geral Appel인데, 그의 경력은 특이하다. 그는 대학에서 사회학을전공하였고 뉴욕의 Theodore Reik Training Institute에서 정신분석학을 연구하는 등 투자업계 과는 다소 거리가 먼 배경을 가지고 있기 때문이다.
그런 그가 투자업계에 관심을 가지게 된 것은 1960년대 중반 개인투자자로서 주식투자를 시작하면서부터이다.
그의 투자성과에 MACD 지표사용법과 실전매매법 대해서는 알 수 없으나 적어도 그는 투자자들의 심리나 행태분석에 대해서 자신의 전공을 최대한 살렸던 것으로 보인다.
그는 다양한 매체를 통하여 투자자들의 심리에 관한 저술가로도 활동을 해 인지도가 높아졌는데, 1973년부터는 Signalert라는 회사를 설립해 독립적인투자자문 서비스를 시작하기에 이르렀다. 오늘날 Signalert는 성장을 거듭해 투자자문 및 5억 5천만 달러 규모2의 펀드 운용을 겸하고 있다.
MACD는 그가 1977년경 처음 고안한 것으로 알려진다. Gerald Appel은 Signalert에서 발간되는 투자뉴스레터를 통하여 기술적 지표를 이용한 투자 타이밍을 제시하였는데, 서로 다른 기간의지표를 이용하여 보다 적절한 투자기회를 찾는 기법을 선호하였다. 바로 이러한 아이디어가 녹아들어간 지표가 바로 MACD이다.
Gerald Appel의 투자 아이디어는 다양한데 그는 자신의 생각을 정리하여 13여권의 투자관련 저서로 발간하기도 하였다. 그의 대표적인 책들은 ‘Winning Market Systems, Double Your Money Every Three Years, Stock Market Trading Systems, The Big Move, New Directions in Technical Analysis (Dr. Martin E.Zweig와 공동 저자), Time-Trend III’ 등이며 최근에는 ‘Technical analysis-Power tools for active investors’라는 책을 다시 베스트셀러에올리기도 했다.
한편 Gerald Appel 사진작가로도 활동하고 있는데, 하단에 있는 사진은 그가 자신의 젊었을 적 사진과 최근 사진을 합성한 자화상이다.
MACD의 도출
MACD는 서로 다른 두 기간의 지수 이동평균(exponential moving average)間 차이를 이용하여 계산된다. 이를 식으로 표현하면 다음 식 10과 같다.
두 지수 이동평균선 간격의 확장과 축소를 이용
그런데 위 식 10을 그림으로 이해하면 훨씬 명료하게 MACD의 아이디어를 이해할 수 있다. 그림 9를 참고하기 바란다. 그림 9는 12주 지수 이동평균선과 26주 지수이동평균선을 이용한MACD가 제시돼 있다.
여기에서 주목할 점은 두 이동평균선간의 간격이 다른 국면에 비해 상대적으로 멀어지는 시점이 가격의 주요한 저점(trough)과 고점(peak)와 일치하는 경향이 있다는것이다. 이것이 바로 MACD의 아이디어이다. 즉 Gerald Appel은 이동평균이 가격의 추세를 가장 잘 설명함에도 불구하고 후행성의 문제점을 가지고 있다는 점을 알고 이동평균의 ‘추세에 대
한 설명력’을 유지하면서 ‘적시성을 제고’하기 위한 지표로 MACD를 제안한 것이다.
0을 중심으로 (+)값과 (-)값 반복
그렇다면 보다 구체적으로 위 식 10에 대하여 검토해보자.
그림 10은 위 그림 9의 예에서 특정 국면 peak A와 trough B를 비교하기 위한 것이다. 그런데다음 식과 같이 peak A 시점과 trough B 시점의 MACD 값의 음양 부호가 다른 것을 볼 수 있다.
이는 peak A 시점에서는 12주 지수 이동평균선이 26주 지수 이동평균선 값보다 위에 위치하고 있어서이고, trough B는 반대의 이유 때문이다. 이를 식으로 나타내면 다음과 같다.
우리는 앞서 제시한 ‘이동평균’에 대한 해설에서 지수 이동평균을 구할 때 가중치인 c 값의 최적치는 2 (n +1) 로 정해진다고 알아본 바가 있다.
따라서 이에 의하면 위 식에서 12WEMA로표시된 12주 지수 이동평균의 적정한 가중치는 약 0.15이며, 26주 지수 이동평균선의 가중치는약 0.75로 설정할 수 있으며 이에 따라 MACD가 계산되는 것이 바람직하다.
그런데 편의상 일부 기술적 분석 소프트웨어(or 홈트레이딩 시스템)에서는 지수 이동평균의 지수 값 k(=1+c)를 0.5로 일괄 적용함에 따라, 기준에 따라 MACD 값이 다르게 나타날 수 있다는 점을 주의하기 바란다.
MACD signal선의 도출
그림 9~10에서 볼 수 있듯이 MACD는 가격의 추세반전을 적시적으로 제시한다. 그런데 한가지문제점이 있다. MACD가 결국 언제 상승에서 하락으로 전환하는지, 하락에서 상승으로 전환하는지 그 전환점을 알기 어렵다는 것이다.
즉 사후적으로 볼 때는 위 그림 10의 peak A와 troughB 시점을 찾을 수 있지만, 그 당시에는 MACD가 반전할지 여부를 알 수 없는 것이다. 이 때문에고안된 것이 MACD의 signal선(또는 trigger line)이며, 다음 식 11과 같이 구한다.
MACD의 signal선을 구하기 위한 식이 왜 위 식 11과 같이 되는지, 또한 SC라는 개념은 무엇인지 다소 생소할 수 있다. 이를 이해하기 위해서는 앞서 살펴 본바 있는 이동평균에 대한 해설에서 제시된 ‘지수 이동평균’을 구하기 위한 간편식인 다음 식 12를 참고할 필요가 있다.
즉 MACD의 signal선을 구하기 위해서는 일정기간 동안의 MACD 값을 지수 이동평균하는데, 식 12를 응용해 가중치 SC를 적용한 것이 위 식 11인 것이다.
한편 식 11과 같이 signal 값을 구하기 위해서는 최초의 signal 값을 구하는 절차가 필요한데,이를 위하여 다음과 같은 지수 이동평균 산식을 활용하여야 한다. 식 13은 Chart study ‘이동평균’에서 알아본 바 있는 지수 이동평균 산식이다.
다만 위 식 13은 가격의 지수 이동평균을 구하기 위한 식이므로 signal 값을 구하기 위한 계산식에는 P 대신 MACD의 값을 대입하여야 할 것이다. 다음 식 14가 이를 대입한 식이다.
다음 그림 11은 위와 같은 절차를 거쳐서 도출된 MACD와 MACD signal선의 예를 보여주고 있다. 이 예에서는 MACD를 9일 지수 이동평균한 signal선이 제시됐다.
또한 가장 널리 알려진 MACD 응용기법 즉, MACD가 MACD signal선을 상향 돌파하면 매수(buy)신호, MACD가 MACD signal선을 하향 돌파하면 매도(sell)신호가 출현하는 예를 보여준다. 구체적인 MACD와 MACD signal선의 활용법에 대해서는 뒤에 더 논의하도록 하겠다.
0 개 댓글