오랜만에 포스팅합니다. 아무래도 글 쓰는 시점에서 대학교 4학년이 된 만큼 자격증/영어 등 여러 공부를 하느라 바빠 포스팅할 여유가 없습니다. 현재까지 파이썬을 가지고 주식 데이터를 분석했었는 데 더 빠르고 효율적인 분석을 위해서 하둡과 스파크, AWS에 대해 공부 중입니다. 

이렇게 할 일이 많아 ETF 대상 변동성 돌파 전략에 대한 코드 설명은 생략하겠습니다. 아마 이전 변동성 돌파 전략 코드를 봤다면 쉽게 코딩할 수 있을 것입니다.


별도로 ETF를 대상으로 변동성 돌파 전략을 적용하는 이유는 수수료 때문입니다. 변동성 돌파 전략은 데이트레이딩이기 때문에 수수료, 슬리피지가 수익율에 많은 영향을 끼칩니다. 약 0.1퍼의 슬리피지만 있어도 수익율은 열 배이상 차이가 납니다. 파생형 ETF가 아닌 주식형 ETF는 수수료가 전혀 없습니다. 파생형 ETF의 경우에는 오버나잇하지 않고 당일 매매하면 수수료가 전혀 없습니다. 따라서 일반 주식보다 0.3%(세금) 의 이점을 가집니다. 따라서 ETF를 대상으로만 변동성 돌파 전략을 적용할 것입니다.


일단 모든 ETF를 대상으로 변동성 돌파 전략을 적용하지 않겠습니다. 거래량 때문입니다. ETF 중에는 일일 거래량이 천도 안 되는 것들이 많습니다. 거래량이 적으면 그만큼 올바른 가격에 매매가 어려워 슬리피지가 커지므로 어느 정도 거래량이 있는 종목들로 백테스팅했습니다. 또한 파생형/해외형 ETF의 경우 오버나잇을 하면 수익율에 대한 수수료가 붙습니다. 따라서 주식형 ETF는 오버나잇을 할 것이고 파생형/해외형 ETF는 당일날 종가에 매도하는 것으로 했습니다. 또한 Kodex 자동차, Tiger 자동차 같이 증권사마다 다르지만 유형이 같은 종목들은 Kodex로 통일하거나 최근에 생기지 않고 기간이 조금 된 종목을 선정했습니다.


다음 목록들은 거래량이 어느 정도 있는 백테스팅을 적용한 ETF 종목입니다.  


 Kodex 200

 Kodex 반도체

 Kodex 은행

 Kodex 자동차

 Kodex 삼성그룹

 Kodex 기계장비

 Kodex 증권

 Kodex 에너지화학

 Kodex 철강

 Kodex 건설

 Kodex 레버리지

 Tiger 200 중공업

 Tiger 200 금융

 Kodex 운송

 Tiger 중국소비테마

 Kodex MSCI Korea 

 KINDEX 중국본토

 KBSTAR 중국본토 대형주

 Kodex 배당성장

 Kodex 200 가치저변동

 Kodex 코스피

 KODEX200 중소형

 Tiger 화장품

 KINDEX 중국본토 레버리지

 Tiger 여행레저

Arirang 중형주

저변동50

 Kodex 미국달러

선물레버리지

 Kodex 코스닥 150 

선물인버스

 Tiger 200 

에너지 화학 레버리지

 Kodex 코스닥 150 레버리지

 Kodex 선물 인버스2x

 Tiger 코스닥150IT

 Kodex 바이오

 Kodex 헬스케어

Kodex 코스닥150

 Tiger 200 IT 레버리지


위 종목들로 최적의 Scope 값과 Noise 값을 찾아 백테스팅한 결과는 아래와 같습니다. 코드는 바로 이전에 분석했던 변동성 전략과 거의 같습니다. 백테스팅하는 종목만 달라지고 별도로 오버나잇 유무 로직만 추가됬습니다. 


위 그래프는 50일 평균 노이즈 값이 0.25에서 0.4이고 Scope 값을 6개월 단위 이전 최적 수익율을 보이는 값으로 적용했습니다. 슬리피지 값은 0.1퍼를 적용했습니다. 큰 손실없이 연 평균 수익율 약 85퍼로 좋은 백테스팅 결과를 보여줍니다. 


실제로 2월 8일부터 이 글을 쓰고 있는 2월 20일까지 위 백테스팅 로직에 따라 매매를 해보았고 현재 3 퍼센트의 수익율을 보이고 있습니다. 물론 12일밖에 매매를 수행하지 않았지만 지금까지 테스트 결과 위 그래프와 같은 수익율을 실제 주는 지와 상관없이 적용한 로직에 따라 쉽게 매매할 수 있다는 걸 알았습니다. 


위 로직의 매매를 어떻게 할지 궁금해할 분들이 있어서 추가로 씁니다. 매매를 위해선 매일 50일 평균 노이즈 값을 구해야 합니다. ETF 36개 종목을 손으로 계산하기 힘듭니다. 따라서 매일 주가 정보를 업데이트하는 프로그램을 만듭니다. 저의 경우 네이버 웹 크롤링을 이용해 만들었습니다. 물론 키움증권 API를 사용하면 편합니다. 하지만 키움증권 API는 매우 느려서 종목 업데이트에 시간이 걸립니다. 따라서 웹 크롤링을 이용해 매일 주가 정보를 업데이트 합니다. 웹 크롤링 주소는 아래와 같습니다.  

http://finance.naver.com/item/sise_day.nhn?code=005930&thistime=20180220


저는 크롤링을 통해서 코스피/코스닥에 상장된 모든 주식의 시가/종가/고가/저가 정보를 매일 업데이트하고 DB에 저장합니다. 이를 만약 키움 API를 이용하면 3시간 넘게 걸립니다. 그런데 웹 크롤링을 사용하고 비동기 프로그래밍 방식을 사용하면 약 15분이면 업데이트 가능합니다. 그만큼 키움 API가 느립니다.


당일 주가 정보 데이터 업데이트가 끝났으면 이를 이용해 50일 평균 노이즈를 계산해 0.25~0.4 범위에 있는 종목을 선별합니다. 그리고 다음날 9시 시가 정보가 나오면 선별한 종목에 대한 매수 가격을 계산합니다. 물론 이 모든 과정은 프로그램이 합니다. 마지막으로 저가 매수 가격으로 카카오 스탁이나 MTS에 알람을 설정합니다. 그리고 알람이 올 때까지 기다리고 알림이 오면 저가 수동으로 매매를 합니다. 수동으로 매매를 하는 이유는 슬리피지를 최소화하기 위해서입니다. 위에 보여준 그래프는 0.1퍼의 슬리피지를 적용했는데 저가 일일이 매매를 하면 슬리피지를 거의 0으로 할 수 있습니다. 물론 이 또한 프로그램으로 만들 수 있으나 이에 대해서는 나중에 할 예정입니다.



지금까지 많은 포스팅을 통해 변동성 돌파 전략에 대해 프로그래밍해보고 분석해봤습니다. 아마 당분간 포스팅은 없을 것 같습니다. 처음에도 말했듯이 대학교 4학년이 되서 영어, 자격증 공부 하느라 바쁩니다. 또한 좀 더 빠르고 효율적인 주식 분석을 위해 하둡, 스파크, AWS 에 대해 공부 중입니다. 그래서 다음에 포스팅할 때는 스파크, 하둡 등을 이용한 주식 분석으로 찾아 오겠습니다.   


  

+ Recent posts