본문 바로가기
무모한 도전-주식 인공지능 만들기

ADF 테스트를 이용한 종목선택에 도전하기

by 인터넷떠돌이 2019. 4. 21.
반응형

안녕하세요?

 

지난번 포스팅에서 어떻게 가장 큰 장애물을 넘기는 했는데, 정작 트러스 제7호가 거래정지가 되어 버리는 바람에 새로운 종목을 찾으러 가야할 타이밍이 되기는 되었습니다. 그래서 이번 포스팅에서는 ADF 테스트라고 해서, 시계열의 데이터-가령 주식의 현재가가 시간에 따라서 어떻게 바뀌는 것이 랜덤워크라고 해서 이전 결과가 다음 결과에 영향을 주지 않는 독립적인지, 아니면 이전 결과가 다음 결과에 영향을 주는 상관이 있는 관계인지를 알려주는 테스트가 있습니다.

이 테스트를 가지고 와서, 한번 코스피의 종목을 계산, 랜덤워크를 따르지 않는 종목만을 선택하고자 합니다.

 

먼저 작업에 필요한 모듈인 statsmodels라는 모듈을 인스톨 하기 위헤서 pip install statsmodels를 아나콘다 프롬프트에서 입력하도록 합니다.

 

약간의 시간이 끝나고 나서, 기존의 pytrader4를 운영하기 위한 파이썬 가상환경에 설치가 되는 것을 확인할 수 있기는 있었습니다.

 

그리고 나서 실험을 위해서 3월 20일 9시 부터의 데이터만 가지고 와서 이를 한번 작업에 사용해 보도록 설정을 해 주도록 합니다.

 

그리고 나서 as를 써서 ts라는 이름으로 statsmodels.tsa.stattools를 import해오도록 합니다. 이렇게 하는 것으로 일단 준비는 끝난 것으로 생각이 되었습니다.

 

 

그리고 나서 adfuller()라는 함수를 가지고 오는 것으로 간단하게 ADF test를 실행할 수 있기는 있습니다. 문제는 이 결과를 보고자 하려고 했을 때 일어났습니다.

 

무슨 spicy라는 모듈이 없어서 발생하는 에러가 하나 나오는 것을 볼 수 있었습니다. 다행이도 이 역시 아나콘다 프롬프트를 열어서 해결할 수 있어 보입니다.

 

먼저 아나콘다 프롬프트를 열고나서, 한번 pip install spicy라고 입력을 해서, 위 스크린샷에서 보이는 것처럼 인터넷만 연결이 되어 있으면 간단하게 설치가 진행됩니다.

 

일단 이 경우에도 잠시 기다리기만 하면, 위 스크린샷에서 보인느 것처럼 설치가 끝나는 것을 확인할 수 이었습니다. 이제 다시한번 ADF 테스트를 하도록 합니다.

 

먼저 위 스크린샷에서 보이는 것처럼 원래는 부모 프로세서에서 입력을 받아야만 하지만, 그렇게 하지 말고, 그냥 0과 1이라는 임의의 값을 입력해 주도록 합니다.

 

그리고 일단 결과 자체는 튜플이라는 형태로 나오는 것을 확인할 수 있었으며, 아무런 에러도 발생하지 않는 것을 확인할 수 있기는 있었습니다.

 

그래서 일단 ADF test의 결과가 튜플이라는 형태로 나오는 것을 type()이라는 함수로 확인할 수 있었으니, 이제는 직접 결과를 출력할 시간입니다.

 

일단 [머신러닝을 이용한 알고리즘 트레이딩 시스템 개발]이라는 책에서 본것처럼 결과가 나오는 것을 확인할 수 있었습니다. 문제는 이 결과를 직접 사람이 보고 눈으로 어느것이 이 ADF 테스트 결과 랜덤워크고 아닌지를 일일히 확인해야 하는데, 그걸 이제 다음 포스팅에서 자동으로 만드어 보고자 합니다.

반응형