되기만 하면 꿀 단타 전략?! (feat.한국 주식시장에서의 일중 모멘텀)

퀀트 전략/퀀트투자|2020. 10. 1. 12:23

 최근 흥미로운 논문을 알게 되어 직접 백테스트를 해보았다. 서울대학교 경영대학 박나혜님이 쓴 경영학석사 학위논문으로 제목은 '한국 주식시장에서의 일중 모멘텀'이다. 논문은 아래 주소에서 볼 수 있다. 

 

 

논문 링크 : Intraday Momentum In the Korean stock market 한국 주식시장에서의 일중 모멘텀

 

 논문 내용을 요약하자면, KODEX 200 ETF로 분석해보았을 때 장중 9시~9시 30분와 14시 30분~15시의 주가 변동과 15시~15시 30분의 유의미한 상관 관계가 있다는 것이다.

 

 여전히 유의미한 통계 결과를 가지고 있다면 30분 간의 단타 매매도 가능할 것 같아서 직접 백테스트를 해보았다. 강환국님의 가르침에 따라 직접 백테스한 결과만 믿는다!

 

 우선 이를 실제 투자와 연결지어 본다면 다음과 같은 시나리오로 투자할 것이다.

 

1. 9시 ~ 9시30분 사이에 ETF 지수가 상승하였는지 확인

2. 14시 30분 ~ 15시 사이에 ETF 지수가 상승하였는지 확인

3. 15시 이후 지수가 상승한다고 판단되면, 15시에 해당 ETF 매수

4. 15시 30분 장마감 전, 해당 ETF 매도

 

 위 시나리오대로 진행할 수 있도록 백테스트를 진행해보았다.

 

1. 과거 1년치 데이터 수집

 과거 데이터는 키움증권 API로 수집했다. 백테스트를 진행해 볼 ETF 4가지에 대해 데이터를 수집해서 DB에 저장했다. 전체 코드는 아무도 궁금해하지 않을 것 같아서 API 호출하는 부분만 공유한다.

"""
KOSPI / KOSDAQ ETF 30분봉 데이터 가져오기
"""
# stock_code = '069500' # KODEX 200
# stock_code = '229200' # KODEX 코스닥 150
# stock_code = '251340' # KODEX 코스닥150선물인버스
stock_code = '114800' # KODEX 200 인버스
kiwoom.set_input_value("종목코드", stock_code)
kiwoom.set_input_value("틱범위", 30)
kiwoom.set_input_value("수정주가구분", 0)
kiwoom.comm_rq_data("opt10080_req", "opt10080", 0, "3000")

while kiwoom.remained_data == True:
	time.sleep(0.2)
    kiwoom.set_input_value("종목코드", stock_code)
    kiwoom.set_input_value("틱범위", 30)
    kiwoom.set_input_value("수정주가구분", 0)
    kiwoom.comm_rq_data("opt10080_req", "opt10080", 2, "3000"

 

 그런데 키움 API에서는 최근 1년 치의 데이터 밖에 조회가 되지 않는다. 다른데서 크롤링을 하려고 해도 30분 간격의 데이터에 대해 제공을 하는데를 찾지 못하겠다. 그래서 일단은 1년치 데이터로만 백테스트를 진행해보았다.

 

2. 데이터 조회

 이렇게 저렇게 데이터를 만져볼 것이라서 Jupyter Notebook에서 조회를 했다. 각 컬럼에 대한 설명은 아래와 같다.

CODE : 종목 코드

DATE : 날짜(30분 간격)

CLOSE : 종가

OPEN : 시가

HIGH : 고가

LOW : 저가

VOL : 거래량

 

3. 데이터 가공

 데이터를 확인하기 쉽게 가공하여, 조건에 해당하는 날들을 추출한다. 아래 buying_day들에 해당하는 날들이 15시에 매수하여 15시 30분에 매도할 날들이다.

 매수를 진행할 날들에서 15시 종가 - 시가하여 투자를 진행했을 때의 수익과 수익률을 계산한다.

 

 

4. 수익률 계산!

 위와 같은 시나리오로 최근 1년동안 KODEX 200 ETF를 단타 매매했다면..! 그 수익률은?!

 살짝 맥빠지는 수익률이 나왔다. -0.02%다. 위에서 이미 100을 곱해서 2%가 아닌 0.02%다. 1년동안 진행해서 0.02%라는 수치는 사실상 아무런 수익도 얻지 못 했다는 결론에 도달한다 ㅠㅠ

 

 KOSDAQ에서도 비슷한 결과가 나왔고, 인버스에서도 마찬가지였다. 최대로 많은 수익을 냈을 때는 1.45%까지 나오긴 했지만 실제로 진행하며 투자를 해보기엔 무의미한 듯 했다.

 

 물론 이번 백테스트의 한계는 분명히 존재한다. 우선 논문에서는 10년 이상의 데이터로 검증을 진행하였다. 하지만 그 데이터를 구할 수가 없었고.. 1년 간의 데이터로 진행한 백테스트에서는 유의미한 상관 관계를 찾기 어려울 수 있다. 또한 논문에서는 개인, 기관, 외국인의 거래량까지 분석해서 상관 관계를 도출한다. 실제 투자에서 개인, 기관, 외국인의 거래량까지 고려해 진행하기에는 어려움이 있을 것 같아서 배제하였다.

 

 백테스트에서 시도해볼만한 결과가 나왔으면 실제로 진행해보았을 텐데 아쉽기도 하다. 그래도 이런 다양한 전략들이 나올 수 있다는 것을 확인할 수 있었고, 직접 백테스트를 진행해보면서 더더욱 백테스트의 중요성을 깨달을 수 있었다. 앞으로도 다양한 전략들을 찾아보고 직접 백테스트 해본 결과를 공유하고자 한다.

 

 진행 과정에 실수가 있었거나, 잘못된 분석이 있다면 댓글로 알려주시면 정말 감사하겠습니다 : )

 


공감댓글, 공유는 큰 힘이 됩니다!

도움이 되셨다면 널리널리 알려주세요😉

 

 

 

 

 

 

댓글()