< 주식 변동성 돌파 전략 백테스팅 프로그램 >





지난 포스트에서 "주가 일봉 데이터 저장 프로그램" 코드 설명과 프로그램 파일을 게시했다.  


1. "프로그램 개발 개요"

2. "프로그램 DB 설계 및 구현"

3. "키움 OPEN API 구현"

4. "프로그램 기능 구현"

5. "프로그램 GUI 구현"

6. "주가 일봉 데이터 저장 프로그램 코드 및 파일"


이번에는 "변동성 돌파 전략"을 내가 원하는 종목에 특정 값을 넣어서 백테스트한 후 차트로 표시해주는 프로그램을 개발해봤다. 이전 포스트에서 설명한 "주가 일봉 데이터 저장 프로그램" 보다 코드가 길고 시간도 별로 없어서 코드 설명은 생략한다. 대신 코드는 프로그램과 함께 이 포스트 맨 아래 첨부파일로 게시했다. 


"변동성 돌파 전략" 에 대해 모른다면 아래 링크된 블로그에서 보길 바란다.


stock79.tistory.com/77





< 프로그램 개요 >


"주식 변동성 돌파 전략 프로그램"은 특정 주식을 일정 기간동안 변동성 돌파 전략에 의거해 매수/매도 후 누적 수익률을 차트로 보여주는 백테스팅 프로그램이다. 사용자는 백테스팅하기 원하는 주식과 기간을 설정할 수 있다. 위 프로그램의 변동성 돌파 전략 알고리즘은 아래와 같다.


매수 : ( 전일 고가 - 전일 저가 ) * Scope + 시초가 <= 현재가   [ Scope : 0.2 ~ 1.4 (0.1 간격) ]

* ( 전일 고가 - 전일 저가 )가 0 이상이어야 함.

매도 :  다음 날 시초가


위 알고리즘에 의해 종목을 백테스팅한다. Scope는 사용자가 설정할 수 있으며 여러 값을 동시에 설정해 Scope 값에 따른 백테스팅 결과를 차트로 비교할 수 있다. 별도로 슬리피지(수수료 및 기타)를 사용자가 임의로 설정할 수 있다. 차트를 클릭하면 해당 시점의 날짜와 그 때까지의 수익률을 볼 수 있다. 





< 프로그램 설명 >


1. "주식 변동성 돌파 전략 프로그램"은 키움 OPEN API와 MySQL DB가 설치되있어야 한다. DB 존재 이유는 매번 방대한 데이터를 네트워크를 받아 계산하면 시간이 오래 걸리기 때문에 DB를 이용했다. DB를 이용하면 매번 계산할 필요 없이 빠르게 백테스팅 결과 값을 불러올 수 있다. MySQL을 이용하기 때문에 MySQL 비밀번호를 무조건 먼저 입력해야 한다. 



2. 백테스팅할 종목 코드를 입력하고 "분석 가능 여부"를 누른다. 시간이 지나면 아래 사진과 같이 종목 코드에 해당하는 종목명과 백테스팅할 수 있는 기간이 나온다. 이 기간은 상장일부터 프로그램 실행 하루 전날로 설정된다. 




3. 백테스팅 한다. 백테스팅 방법은 두 가지가 있다.


3-1. 백테스팅할 기간과 위에서 제시한 Scope, Slippage 값을 설정한 후 백테스팅 버튼을 누른다. 누르면 아래와 같이 차트가 나온다. 참고로 "buy and hold"는 사용자가 입력한 시작일에 주식을 매수에서 계속 가지고 있을 경우이다. 



3-2. "3-1" 상태에서 "범위"를 체크 후 활성화된 "Scope 입력 UI"와 "간격 UI"를 설정하면 여러 Scope 값에 대한 백테스팅 결과를 동시에 볼 수 있다.  예로 Scope를 0.4 ~ 1.5 로 설정하고 간격을 0.4로 설정하면 Scope 시작 값 0.4 부터 1.5까지 0.4 간격으로 백테스팅한다. 즉, Scope 값을 0.4, 0.8, 1.2로 설정해 백테스팅한다. 참고로 차트를 누르면 해당 시점의 일과 수익률이 출력된다.





< 코드 및 설치 파일 >


위 파일은 프로그램 파이썬 코드입니다. 파일을 설치하려면 이 문장을 눌러주세요 키움 OPEN API와 MySQL이 설치되어 있어야 합니다.



필자는 현업 프로그래머가 아닌 평범한 컴퓨터 공학과 대학생입니다. 따라서 개발 코드에 비효율적인 부분이 많을 수 있습니다. 수정해야할 부분이 있다면 댓글 달아주시면 감사하겠습니다.  




+ Recent posts