News & Events
[알고리즘트레이딩/전략편] 05. 알고리즘 트레이딩 – 패턴 인식 매매 (1)
- 2019년 1월 4일
- Posted by: 인사이트캠퍼스
- Category: 금융/AI/IT 기사
알고리즘 트레이딩 (Algorithmic Trading) – 전략 (5)
알고리즘 트레이딩 – 패턴 인식 매매 (1)
주가의 과거 패턴 (Pattern)을 분석하면 유익한 정보를 얻을 수 있을까? 직감적으로는 아닐 것 같다. 과거 패턴과 현재의 패턴은 전혀 관계가 없어 보인다. 만약 현재와 유사한 과거의 패턴들을 찾아내서 바로 직후의 패턴에 어떤 유사성이 존재한다면 의미가 있을 수도 있다. 이것을 이론적으로 입증하기는 어려우므로 실험을 통해서 알아보기로 하자.
이전 포스트의 Naked 매매 전략에서 매수 진입할 때 추가로 과거 패턴을 분석하여 최종 진입 여부를 결정하도록 해 보았다.
패턴 검색 (Pattern Discovery)
패턴을 검색하는 방법은 여러 가지가 있겠지만, 대표적으로 아래의 두 가지 경우를 생각해 볼 수 있다. 첫 번째는 과거의 패턴 속에서 현재의 패턴과 유사한 것을 찾아내는 경우이다. 예를 들면 분봉으로 최근 20분간의 패턴과 유사한 패턴을 검색하는 경우에 해당한다. 두 번째는 과거의 패턴 속에서 특정 유형의 패턴을 찾아내는 경우이다. 예를 들면 과거 패턴 속에서 “W” 형 패턴을 검색하는 경우에 해당한다.
첫 번째 패턴 검색에는 통계적 수치를 이용할 수 있다. 현재 패턴의 시계열 데이터와, 동일 크기의 과거 데이터의 시계열 데이터와의 상관계수를 먼저 계산한다. 상관계수가 일정 수준 이상이 되면 (ex: 상관계수 > 0.9) 이를 유사 패턴 후보로 등록해 놓는다. 과거의 전체 시계열에 대해 상관계수 검색이 끝나면, 현재 패턴과 등록된 각 후보 패턴과의 표준잔차를 계산한다 (표준잔차 = 잔차제곱의 평균). 표준잔차를 계산할 때에는 과거의 가격과 현재의 가격이 다를 것이므로 정규화 가격지수로 변환하여 계산한다.
패턴의 유사성은 상관계수는 높을수록 좋고, 표준잔차는 작을수록 좋으므로, 상관계수와는 비례 관계이고, 표준잔차와는 반비례 관계일 것이다. 따라서 패턴의 유사성을 나타내는 지수를 PMI (Pattern Match Index)라고 하면 아래와 같이 계산할 수 있다 (PMI는 정식 용어가 아니라 제가 이름을 붙인 것입니다). PMI 값이 클수록 패턴의 유사성이 큰 것이다. 두 패턴이 완전히 동일한 것이라면, 상관계수 = 1, 표준잔차 = 0 이므로, PMI는 무한대가 된다.
* 패턴의 유사성 (PMI) = 상관계수 / 표준잔차
위 그림의 좌측 패턴은 PMI=2.12 이고, 우측 패턴은 PMI=0.97 이다. 육안으로 보아도 좌측의 패턴이 더 유사한 것을 알 수 있다. 후보 패턴들 중에 PMI 값이 가장 큰 것을 가장 유사한 패턴으로 최종 선정한다.
두 번째 방법은 PIP (Perceptually Important Points)라 불리는 패턴 검색 기법이다. 번역해 보면 “중요해 보이는 점들 (을 이은 것)” 정도가 되는데 원리는 아래 그림과 같다. 두 점 사이에 가장 중요해 보이는 점 (편차가 가장 큰 점)을 찾아 그 점들을 이어 나가는 방식이다. 아래 그림은 5번의 PIP 과정을 거쳐 “Head and Shoulder” 라는 패턴으로 인식한 경우이다 (보다 자세한 사항은 맨 아래 참고자료 참조).
여기서는 최근의 패턴과 비교가 필요하므로, 첫 번째 방법을 이용해 보도록 한다. 아래 그림은 첫 번째 방법으로 과거 데이터 속에서 유사한 패턴을 찾아낸 결과이다. 좌측 그림은 2012.3.20 10:46:00 의 최근 20분 동안의 패턴을 검색해 보았더니, 2012.2.1 13:41:00의 20분간 패턴이 검색 되었다. 맨 우측의 그림은 검색된 패턴 직후 20분 동안의 패턴이다. 약 10분간은 상승했다가 하락하는 것으로 검색되었다. 항상 이런 것은 아니겠지만 시험 삼아 검색해 보았다. 이번 실험은 자동매매 시 볼린저 밴드로 1차 진입신호가 발생하면, 2차로 과거 패턴을 검색해 보고, 아래 그림과 같이 이후 패턴이 하락하지 않는 경우에만 최종 진입을 허용하도록 하는 것이다.
자동매매 로봇은 아래와 같이 세팅하였다. 볼린저 밴드관련 세팅은 이전 포스트와 동일하게 적용하고, 분석할 데이터는 선물의 1분봉을 기준으로 하며, 과거 패턴을 통한 추세분석을 추가한다. 세부 시나리오는 아래와 같다.
자동매매 시나리오
- 옵션 데이터가 아닌 선물의 1분봉 데이터의 종가를 기준으로 분석한다.
- 볼린저 밴드 하단에서 1차 매수 신호가 발생하고, 상단에서 최종 매도 신호가 발생한다.
- 1차 매수 신호가 발생하면, 선물의 과거 1분봉 데이터에서 최근 20분간 패턴과 유사한 패턴을 검색한다 (선물의 지난 6개월간의 1분봉 데이터에서 검색).
- 검색된 패턴의 이후 패턴이 하락하는 경우는 1차 매수신호를 무시하고 1분간 대기한다.
- 이후 패턴이 상승하거나 보합이면 2차 매수 신호를 발생한다.
- 2차 매수 신호 발생 시 매수한다.
- 볼린저 상단에서 매도 신호가 발생하면, 매수한 옵션을 즉시 매도 청산한다.
- 나머지 조건은 Naked 매매 시나리오를 따른다.
패턴 분석을 추가한 전략이 과연 도움이 될 수 있을까? 이번에는 콜옵션만 선택하여 3대의 자동매매 로봇을 돌려보기로 한다. 각 로봇은 볼린저 밴드용 이동평균 기간을 각각 다르게 적용 하여, 1일간 돌려보고 결과는 다음 포스트에서 확인하도록 한다.
패턴 분석 참고자료 :
Pattern Discovery from Stock Time Series Using Self-Organizing Maps (Tak-chung Fu, Fu-lai Chung, Vincent Ng and Robert Luk)
[출처]5. 알고리즘 트레이딩 – 패턴 인식 매매 (1)|작성자아마퀀트