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

단타매매를 하기 위한 시도 중 찾아낸 새로운 오류

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

안녕하세요?


이래저래 왜 인지 모르는 모델이 제대로 결정을 못하는 상황이 벌어지는 와중에, 드디어 왜 지금까지 모델이 아무런 결정을 하지 않았는지에 대해서 알수 있게 되었습니다. 아무튼 이것을 바탕으로 새로이 강화학습에 들어가는 시도까지 해서, 그 내용을 자세하게 포스팅 하고자 합니다.



먼저 위 스크린샷처럼 10분봉 차트를 그냥 한번 최신으로 가지고 와서, CS홀딩스에 대해서 다시한번 백 테스트를 한 결과입니다. 일단 너무 과적합이 되었는지, 어째서인지 모델이 2가지 패턴중에 하나로 나오는 것을 볼 수 있습니다.



실제로 결정된 에포크 결과를 보면, 여기서는 그나마 다행으로 어째서 인지 모델이 행동을 결정했는데, 대신 2가지 패턴중에 하나로 나오는 것으로 봐서, 1000에포크의 학습은 너무 과적합이 된 것이 아닌가 하는 생각이 듭니다.



그리고 자세히 보면, 처음부터 데이터가 들어가자 마자 모델이 행동을 취하지 않고, 일정한 양의 데이터가 축적이 되고 나서야 행동에 나서는 것을 확인할 수 있었습니다.



그래서 이번에는 한번 RLTrader를 작동시킨 다음에, CS 홀딩스의 일봉차트를 가지고 와서 백테스트를 진행해 보고자 합니다.




여기서도 위 스크린샷과 같이, 뭐라고 할까요? 일정한 양의 데이터가 들어오고 나서야 모델이 판단을 하는 것을 확인할 수 있었습니다.



그래서 한번 1분 단위 분봉차트를 가지고 오기 위해서, pytrader의 분봉차트를 가지고 오는 틱범위를 1로 만들어 주도록 합니다.



그리고 나서 1분봉 차트를 가지고 와서, 아무런 가공을 하지 않고, 일단 10%의 범위를 주어서 위 스크린샷처럼 CS 홀딩스 주식의 백테스트에 들어가 봅니다.



여기서는 어째서 인지 수익이 나오기는 나왔습니다. 




그리고 여기서는 위 스크린샷을 보시면, 얼추 120분의 1분봉 데이터가 있고나서 그제서야 제대로 판단에 들어갔다는 것을 볼 수 있습니다. 일단 10%만의 데이터 백테스트를 할 경우에는 위 스크린샷처럼 대략 172개의 행이 백테스트에 들어갔는데, 그 정도는 되어야 한다는 것을 알 수 있었습니다.



그럼 이제는 더 극단적으로 백테스트에 들어가는 데이터가 80행 정도로 줄여서 한번 RLTrader에서 백테스트에 들어가 보도록 해 보겠습니다.



이 경우에는 전혀 수익이 나오지 않는 것을 확인할 수 있었습니다.



그리고 여기서는 전혀 어떠한 액션도 결정하지 않은 것을 볼 수 있었습니다. 그래서 결론이 약 120개의 선행되는 데이터가 미리 있어야 이 강화학습을 모델이 본격적으로 활동을 시작한다는 것을 알 수 있었습니다. 마치 비행기가 이륙하기 위한 활주로와 같은 역할을 한다고 해야 할까요?




그래서 일단 CS홀딩스의 1분봉 차트를 가지고 오도록 합니다. 일단 2월 20일 9시에 해당하는 행이 1667행으로 데이터 베이스에서 나왔으며, 여기서 활주로 혹은 도움닫기를 위한 데이터가 120분 필요하기 때문에, 1667에서 120행을 위로 올라간다=빼어주는 것으로 게산을 하도록 합니다. 그렇게 해서 얼마나 많은 데이터가 실제로 백테스트에 필요한 지를 계산한 다음, 위 스크린샷에 보이는 것처럼 강화학습에 또 얼마나 많은 데이터가 필요한지도 계산해 보도록 합니다.



일단 이렇게 계산을 해서 1061행 + 1행 이전의 행을 모두 삭제하도록 해서, 위 스크린샷처럼 647행만 남기는 것에는 성공했습니다.



그리고 나서 이것을 강화학습에 들어가기 위해서는 위 스크린샷처럼 yellowoperation이라는 프로젝트로 가서, 데이터 베이스의 이름을 변경해 주도록 합니다.



그리고 나서 1000에포크가 너무 과적합의 문제를 일으켰다는 생각이 들기 때문에, 일단 500에포크로 낮추어서 한번 강화학습을 진행해 보도록 합니다.



이렇게 py파일을 설정해 둔 다음에, 위 스크린샷처럼 구글 드라이브에 올려주도록 합니다. 이제 이 파일들을 바탕으로 현재는 구글 코랩에서 강화학습을 하는 중인데, 6개의 모델이 나오기만 하면 이제 백테스트를 해서 CS 홀딩스를 기준으로 어떤 조건으로 강화학습을 해야 제대로 된 수익모델이 나올 수 있는지 없는지를 알아보도록 하겠습니다.

반응형