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

2월 8일 해가 떠 있는 동안 시도한 주식 인공지능의 시도들

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

안녕하세요?


어떻게 하다보니 가지가지로 모자라는 것이 많이 있어서, 거의 오류를 수정하는 것은 못하고서 너무 오랜 시간 동안 강화학습에 들어가는 시간에 대해서 집중했다는 생각이 듭니다. 그래서 이 포스팅이 올라온 2월 9일 오전 시점에서 어제인 2월 8일 주식시장이 열려 있는 시간동안 다양한 작업을 시도 하였습니다.



먼저 지난번에 1분봉 차트를 가지고서 너무 시간이 걸리는 강화학습을 보았습니다. 그래서 이번에는 지연보상 임계치를 10%인 0.1로 두어서 강화학습에 들어가 보도록 합니다.



당연하다면 당연하게도 구글 드라이브에 있던 main.py를 제거한 다음에, 새로이 만들어 놓은 main.py를 업로드하는 것도 잊지 말도록 합니다.



그런데 생각했던 것 만큼 식간이 단축이 되지 않아서, 하는 수 없이 강화학습을 중단 하도록 하고, 다음으로는 지연보상 임계치를 20%인 0.2로 더 올려서 강화학습을 진행 하도록 합니다.



그런데 유감스럽게도 이 작업은 하룻밤을 넘게 걸려서 9시간 30분을 넘는 경악스러운 시간을 넘기는 결과를 보여주었습니다. 이래서야 한번에 수익모델이 발견되지 않는 다는 것을 생각해 보면, 상당히 애를 먹는 것 입니다.



거기다가 학습 횟수가 많은 것이냐 하면, 그것도 아니고, 학습 횟수가 그렇게 적은 것도 아니라는 것을 알 수 있습니다. 그리고 loss의 값이 너무 작은데, 이렇게 하면 과적합이 아닌가 하는 생각이 듭니다.



그래서 다음으로는 분봉차트에서 과감하게 그 많은 내용의 데이터를 날리고 , 363개의 데이터만 가지고서 강화학습을 시키면 어떤 결과가 나오는지 궁금해서 한번 시도를 했습니다.




그러면서 주식시장의 장이 열리는 오전 9시가 넘었기 때문에 한번 pytrader를 돌이다가 위 스크린샷처럼 에러가 떠서 멈추는 것을 한번 목격할 수 있었습니다.



학습에 사용된 데이터가 줄어든 탓 일까요? 그래서 인지 모르겠습니다만, 1000개가 넘는 데이터를 가지고서 한번 강화학습을 했을 때는 몰랐습니다만, 거의 5배가 줄어드니까 시간이 3시간 48분으로 상당히 줄어든 것을 확인할 수 있기는 있었습니다.



거기다가 어째서 인지 몰라도 과적합도 그런데로 피해간 것이 아닌가 하는 생각이 들기도 합니다. 물론 이것은 어디까지나 제 감일 뿐이지, 실제로 백테스트를 해보기 전까지는 모릅니다. 하지만 이 때만 해도 저는 시간이 아직도 많이 걸리는 것이 아닌가 하는 생각이 들었습니다.



그래서 한번 3분봉 차트를 가지고 와서 일부 데이터만 남겨서 이를 강화학습에 사용해 보고자 하는 생각을 하게 되었습니다. 3분봉 차트라면 결과가 달라지리라 기대를 일단 하기는 했습니다.



이러는 와중에 금요일의 2번째 pytrader에러가 나오는 것을 확인할 수 있었습니다. 이번 에러는 뭐라고 해야 할까요? 일단 조회횟수가 너무 많이 나와서 에러가 났는데, 이 역시 일단 서버에서 제때에 답을 주지 않는 것이 문제가 아닌가 합니다. 문제는 그렇다고 해도 지금 당장은 이를 해결할 무슨 뾰족한 수단이 없다는 것 입니다.



일단 3분봉차트에서 시간이 1시간 더 줄어들기는 줄어들었는데, 이는 위 스크린샷에서 보이는 것처럼 역시나 단 한번도 강화학습 내내 한번도 수익을 낸 적이 없다는 문제점을 노출하고 말았습니다.




이렇게 강화학습의 결과를 챙기는 와중에 어떻게 해서 주식시장의 장이 마감되는 것을 확인할 수 있었습니다. 일단 pytrader의 에러는 지난번에 만들어 놓은 조치들이 전혀 작동하지 않는 것을 볼 수 있었습니다. 어디서 부터 잘못된 것인지 일단 잘은 모르겠다는 생각이 듭니다.



그래서 일단 다음으로는 일봉차트를 가지고 와서, 이것으로 해도 시간이 역시 많이 걸리는 지, 아니면 지난번 처럼 2시간 안에 강화학습이 완료가 되는 지에 대해서  한번 살펴 보고자 합니다.



이를 위해서 바뀐 데이터 베이스의 이름을 입력해서 main.py를 수정해 주도록 만들어 주도록 합니다.



그리고 나서 다음으로 구글 드라이브에 업로드를 하는데, 위 스크린샷처럼 이미 있던 main.py를 제거하고 올리는 것도 잊어 버리지 않도록 합니다.



강화학습 결과, 위 스크린샷처럼 3시간 50분에 가까운 시간이 걸린 것을 확인할 수  있습니다. 지난번에 2시간도 안 걸린 것을 생각해 보면, 상당히 의미가 있는 시간지체가 아닌가 하는 생각이 듭니다.



그래서 강화학습에 걸리는 것이 시간이 아니라 자세히 보면 학습에 사용된 데이터 베이스의 크기라는 것을 확인할 수 있었습니다. 이번에는 loss값이 그렇게 낮지는 않지만, 그렇다고 해서 적합하게 된 것이 맞는지도 모르겠습니다. 다만 이번일로 확실하게 알 수 있는 것이 하나 있었습니다. 강화학습에 들어가는 데이터가 많다고 마냥 좋은 것도 아니다. 어느정도 양인지는 모르지만 많으면, 과적합이 될 우려가 있으며, 거기다가 시간도 상상을 초월할 만큼 많이 걸린다.

반응형