안녕하세요?

 

이제 지난번 포스팅에서 겨우겨우 어떻게 해서 ADF 테스트를 이용할 수 있게 되었습니다만, 그 결과는 튜플 형태로 모두 함축된 형태로 나오기 때문에, 이를 어떻게 그냥 한 두 종목이면 사람 눈으로 일일히 확인해 보겠지만, 문제는 1500개가 넘는 코스피 종목을 일일히 체크하기에는 피곤하다는 겁니다. 그래서 이 과정을 자동으로 만들기 위한 작업이 이어지게 됩니다.

 

그래서 먼저 위 스크린샷에서 보이는 것처럼 튜플안에 있는 각각의 요소를 선택하기 위해서는 튜플명[인덱스]를 사용하면 간단하게 수행을 할 수 있습니다.

 

그런데 제 예상과는 다른 방법으로 나와서 조금 당황스럽기는 했습니다. 일단 위 스크린샷에서 빨간색 박스를 친 부분은 바로 한개의 요소였으며, 여기서 기각값이라고 해서, 통계검정량이 이 기각값보다 작아야 랜덤워크가 아니라고 나옵니다.

 

그리고 나서 다음으로 중요한 것은 튜플에서 빼온 각각의 요소가 어떤 타입으로 되어 있는지를 먼저 확인해야 할 필요성이 있기는 있습니다. 

 

일단 여기서 나온 기각값의 경우에는 dict라고 해서 딕셔너리 형태로 되어 있다는 것을 알 수 있었습니다. 그래서 각각의 요소를 선택하기 위해서 어떻게 하느냐 하면.....

 

위 스크린샷에서 보이는 것처럼 딕셔너리명['항목명']이라고 입력하는 것으로 어떻게 딕셔너리 안에 있는 데이터를 선택해서 가져올 수 있습니다.

 

일단 딕셔너리 안에서 선택이 된 각각의 기각값은 numpy.float64라는 형태를 띄고 있으며, 여기서 나온 값들을 제대로 오차확률 1%, 5%, 10% 일때를 각각 가지고 올 수 있습니다.

 

 

그리고 각각의 검정통계량이라고 해서 ADF 테스트가 시계열 데이터-여기서는 분봉에 따른 현재값을 보고서 계산하는데, 이를 바탕으로 각각의 랜덤워크라는 가설을 기각하기 위한 조건을 통과하면 해당하는 내용이 나오라고 만들어 놓았습니다.

 

일단 제대로 작동을 하기는 했는지, 통계검정량 -0.6은 나머지 값들 보다 더 크기 때문에, 그냥 쪽박이라는 단어가 나오라는 것처럼 나오게 되었습니다.

 

그래서 이번에는 본격적으로 코스피 전 종목을 스크린닝하기 위해서, 일단 검정 통계량부터 해당하는 값들을 각각의 퍼센트에 해당하는 txt파일에 집어 넣도록 해 줍니다.

 

그리고 나서 기존의 임시로 테스트를 위해서 만들어 둔 변수의 선언 부분은 주석처리를 해 주도록 하고, 다음의 남은 내용을 집어 넣어 주도록 합니다.

 

그리고 한번 로그인 하면 2개의 종목을 볼 것이기 때문에, 0부터 약 1520번째 종목까지 데이터를 하나하나 가지고 오라고 for문을 이용해서 데이터를 가지고 오라고 합니다.

 

얼마나 시간이 걸렸을 까요? 일단 거의 오후 3시쯤에 시작해서 약 6시간 정도 걸린 다음에야 이게 완료가 된 것을 확인할 수 있었습니다.

 

먼저 랜덤워크가 이나라는 것으 가장 강력한 1% 오차일 때 ADF 테스트를 통과해서 나온 결과입니다. 이 결과만 보아도 생각외로 상당히 많은 종목들이 랜덤워크가 아니라는 것이 나옵니다.

 

이번에는 그 다음으로 5%인 종목들 입니다. 여기서도 상당히 많은 양의 종목들이 나오는 것을 확인할 수 있기는 있습니다만, 일단 통과하도록 합니다.

 

가장 느슨한 조건에서 ADF 테스트를 통과한 경우입니다. 이 경우에도 유용한 종목들이 많이 있으리라 생각이 되지만, 그래도 이것도 일단 임시로 하고 통과하도록 합니다.

 

일단 하이골드12호처럼 펀드인 종목을 제외하고서라도, 13개에 이르는 종목이 ADF 테스트를 통과한 것을 볼 수 있습니다. 이 조건을 보면, 가장 검정통계량이 작은 신흥(004080)이라는 종목을 먼저 선택해서 분봉차트를 보고자 합니다.

 

그 결과 3월 20일 부터 분봉차트의 데이터를 보면, 이 신흥의 주식은 그냥 현재가가 아무런 변동도 없이 그대로 가만히 있는 것이 아니라 그런데로 변화를 가지면서 예측이 가능하다는 것을 확인할 수 있었습니다. 그래서 이제 남은 것은 이 신흥의 주식을 가지고서 다시금 기계학습의 모델을 만드는 작업에 들어가야 한다는 것 입니다.

+ Recent posts