안녕하세요. 오랜만에 글을 씁니다.
몇달만인지 기억도 가물가물하네요.
하지만 오늘부터, 이전에 쓰던 미디엄글을 이관하는 작업을 다시 시작을하고.
재미있는 퀀트 개발일지를 곧죽어도 완성시키려고 합니다.
많은관심부탁드립니다.
---
오늘은 시간에서 만들었던, 이동평균선 매매 모델의 신뢰도를 높이기 위한 몇가지 요소를 추가하여, 손익비와 승률을 실제로 트레이딩 가능하게 끔 디벨롶 하는 시간을 갖어 보겠습니다.
아마도… 이 모델 발전시키기- 파트는 좀 길어질지도 모르겠습니다.
지난 시간에 만들었던 모델은 두가지 이동평균선의 수렴과 발산을 활용한 모델로 상대적으로 기간이 짧아 최신 추세의 흐름을 잘 반영하는, 9일과 15일 이동평균선을 사용하였습니다.
실제 위의 전략은 비트코인 처럼 긴 기간 우상향 하고 있는 종목의 경우 스윙 관점에서 수익을 기대해 볼 수 있는 모델이지만, 장기적으로 하락 추세에 놓인 종목의 경우 수익을 기대해 볼 수 없는 무효한 전략이었습니다.
따라서, 우리는 하락장에도 최대한 수익을 낼 수 있는 모델로 위 전략을 변신시킬 생각입니다.
위 전략을 보다 완성도 있게 만들기 위해서는 단기적 주가의 흐름보다 상위 프레임의 장기적 주가 흐름이 안정적인 수익을 만들 수 있다. 라는 타임 프레임에 대한 개념을 짚고 넘어가야 합니다.
타임 프레임 (Time Frame)
“타임 프레임”이란 말 그대로 우리가 알고 있는 월봉, 주봉, 일봉, 1시간 봉 따위를 말합니다. 하지만, 지금부터 우리는 타임 프레임이란 이러한 시간 프레임 속에서 단기적 흐름이 장기적 방향성에 영향을 주지 못할 경우, 장기 프레임의 흐름을 따라간다-라는 개념을 포함시킨 단어로 사용 하겠습니다.
“주가는 단기적으로 큰 변동성을 보일지라도, 장기적 흐름에 영향을 주지 못한다면,장기적 흐름을 따라간다.”
이 원리는 큰 강물을 거슬러 올라가는 연어가 강물을 거슬러 올라가기 위해서 강물의 물살보다 큰 힘을 내야하는 원리로 비유할 수 있습니다.
위 그림에서 좌측은 비트코인의 일봉 프레임, 우측은 한시간 프레임을 나타내며, 위 그림에서 약 13%의 주가 하락이 발생 하였지만, 주가는 이후 반등을 보여주며, 일봉의 주가 흐름을 유지한 것을 확인 할 수 있겠습니다.
이러한 “상위 프레임의 주가 흐름 유지”는 유지하고 있는 흐름과 동일한 방향의 이동평균선에 신뢰를 불어 넣는데, 위의 그림에서 주황색 이평선이 나타내는 것이 그것입니다.
(위 그림을 토대로… 바라보건데…아마, 비트코인은 상대적으로 장기 이동평균선인 빨간 이평선과 곧 골든 크로스를 이루며, 추가 상승의 모습을 보여주겠네요…)
이러한 단기 프레임에서 나타나는 주가의 등락은 “노이즈 (noise)” 로 해석되고 거래량에 따라 신뢰할 수 있는 의미 있는 움직임인지 평가 하여, 지표로 사용할 수도 있습니다. (VWAP)
따라서 우리는 기존 9일, 15일 이동평균선 외에 장기적 흐름을 판별 할 수 있는 120과 200일 이동평균선을 추가하여, 장기 추세에서 현재 주가의 위치를 판별하고, 그에 따라 시그널 조건을 보완해 보도록 하겠습니다.
먼저 아래의 코드를 추가하여 120, 200일 이동평균선을 보라색과 주황색으로 출력 하였으며, 골든 크로스는 파란색, 데드 크로스를 주황색으로 표현 하였습니다.
signal_g_l = crossover(sma_60, sma_120) //Signal Good Long
signal_b_l = crossunder(sma_60, sma_120) //Signal Bad Long
bgcolor(signal_g_l ? color.blue : signal_b_l ? color.orange : na)
이동평균선 조건에 따른 주가 흐름 판단하기
자, 이제 기본적인 준비가 끝났습니다.
이제부터는 장기적 흐름속에서 단기적 주가 변동이 긍정적 움직임을 보여줬을 때- 를 필터링 하기 위해 지금까지 우리가 출력한 이동평균선들과 주가가 어떠한 움직임을 보여주고 있는지 관찰하고, 최종적으로 주가 상승/하락이 예측되는 지점의 조건을 선언해보겠습니다.
가장 먼저 120, 200 이동평균선의 위치에 따라 배경색을 출력하여, 120, 200 이동평균선이 골든 크로스, 데드 크로스를 유지 중 일때, 9일과 15일 이평선과 주가의 흐름을 관찰해보겠습니다.
우선 120, 200일 이동평균선이 골든 크로스를 유지 중 인 기간동안 우리가 최초 구상 했던 9일, 15일 이동평균선을 활용한 전략이 유효한지 나스닥 차트에서 시뮬레이팅을 돌려 본 결과! “아차, 뭔가가 잘못되었다.” 라는 것을 알 수 있겠습니다.
예 그렇습니다. 위 전략은 아무리 필터링을 거치더라도, 로직 자체가 나스닥에서 전혀 유효하지 않습니다. 다시, 기준이 되는 단기 이동평균선을 찾아 보기로 합니다.
기존의 단기 이동평균선 9일과 15일 이동평균선 전략은 나스닥에 맞지 않으니, 우리는 지금부터 6일과 60일 이동평균선을 코어 로직이 되는 이동평균선으로 삼고, 기존의 60일 120일 이동평균선을 120일과 200일 이동평균선으로 수정하겠습니다.
🔥🔥 참고사항 : 우리가 시뮬레이팅 과정을 거쳐 교체한 6일 60일 이동평균선은 그저 결과만 좋게 만드는 값을 인위적으로 “맞춘"것이 아니라, 실제 거래가 이루어 지고 있는 의미있는 이동평균선을 시뮬레이팅 과정을 통해 “찾은" 것 입니다. 이 이동평균선의 개념은 앞서 작성한 글을 통해 이해하고 오시기 바랍니다.🔥🔥
후! 글이 엄청나게 길어지는군요!!!… 이번글은 여기서 마무리 하는 것으로 하고, 다음 글에서는 장기 이동평균선의 상태를 나타내는 status 클래스를 새로 추가하여, 각 이동평균선의 위치에 따른 조건을 만들어 전략을 구체화 해보도록 하겠습니다.
- 지금까지 업데이트 한 코드는 기존 MA_Strategy 코드의 “step 2”브랜치에 업로하였습니다.