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

평균회귀 테스트를 하는 프로그램의 개선

by 인터넷떠돌이 2019. 9. 2.
반응형

안녕하세요?

 

하루종일 비가 오는 날인데, 일단 이래저래 일요일에 했었던 작업의 결과를 한번 올려 보고자 합니다. 우선은 어떻게 해서 6시간 이상이나 걸리던 평균회귀 테스트를 하는 프로그램을 더 빠른 시간 안에 코스피나 코스닥을 다 테스트 할 수 있도록 만들었는지 한번 포스팅으로 올려 보고자 합니다.

 

먼저 위 스크린샷과 같이 한번 남아 있는 데이터가 있으면 while문을 통해서 가지고 오는 코드가 있었는데, 저 블록의 코드를 못 쓰도록 만들어 봅니다.

 

그러자 일단 8월 26일까지의 데이터가 오는 것을 확인할 수 있기는 있었습니다. 일단 이렇게 while문을 없애는 것만 가지고는 무리고, 우선은 날짜 정보를 가지고 올 수 있기는 있다는 생각이 들었습니다.

 

그리고 전체 계산에 26초 이상이 걸렸던 것을 생각해 본다면, 상당히 시간이 줄어든 것을 확인할 수 있기는 있었습니다. 제 생각대로 이렇게 키움증권 서버에서 쓸데없이 1분봉 차트를 많이 가지고 오는 것을 줄일 수만 있다면, 전체 코스피나 코스닥의 시간을 줄일 수 있으리라 생각이 들었습니다.

 

실제로 줄어든 것인지 아닌지 확인해 보기 위해서, 한번 위 스크린샷처럼 전체 데이터를 가지고 왔을 경우에는 26초가 걸린 것을 확인할 수 있었습니다.

 

그래서 당면한 과제로, 우선 위 스크린샷에서 보이는 것처럼 일단 날짜만을 가지고 올 수 있는지 없는지를 한번 테스트 해 보고자 합니다.

 

 

일단 위 스크린샷에서 나와 있는 것처럼 우선 날짜만을 선택해서 가지고 올 수 있는 것은 확실해 보입니다. 이게 어떤 형태의 데이터인지도 한번 확인해 봐야 합니다.

 

그래서 이번에는 위 스크린샷처럼 type()라는 함수를 이용해서 이게 int인지 아니면 str인지, 그것도 아니면 다른 무엇의 형태인지 한번 알아보고자 합니다.

 

일단 확인결과 str인 것을 확인할 수 있었습니다. 일단 str을 가지고서 이게 더 크고 작다를 비교할 수 없으니, 날짜 형식으로 바꾸어 보고자 합니다.

 

위 스크린샷처럼 datetime.datetime이라는 함수에서 strptime이라는 함수를 이용, 날짜 형식으로 만들어 줄 수 있다는 것을 알 수 있습니다.

 

이렇게 해서 날짜 형식으로 바꾸는 데 성공할 수 있었습니다. 비록 시간에 대한 것이 없기는 하지만, 일단 그것까지 하려면 너무 많이 나간다는 감이 있어서, 여기서 그만 하도록 합니다.

 

그래서 이런 경우 setupDate라는 항목을 따로 만들어서, 이 항목보다 날짜가 더 작다 = 더 과거이면 while문을 break하라는 형식으로 만들어 줍니다.

 

이런 식으로 해서 기존엔느 26초 걸리던 계산이 이번에는 어떻게 된 셈이지 8초 밖에 걸리지 않은 것을 확인할 수 있었습니다.

 

그리고 이제 데이터 프레임(dataframe)으로 제대로 전환이 되는 지 아닌지를 한번 살펴보아서, 여기서 나오는 내용을 가지고서 진짜, 제대로 된 계산이 되는지 아닌지 알아 보고자 합니다.

 

확인결과, 위 스크린샷처럼 제대로 시간이 나오면서 dataframe이 생성이 되는 것을 확인할 수 있었습니다. 이제 이 내용을 바탕으로 해서, 한번 계산에 들어갈 시간이 되었습니다. 일단 여기까지만 해서는 우선 기존에 6시간씩 걸리던 코스피나 코스닥의 평균회귀 테스트가 더 짧은 시간안에 끝이 날 수 있는 것으로 바꾸었다는 것을 알 수 있습니다.

반응형