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

60분봉 차트를 이용한 도전 part1

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

안녕하세요?


계속해서 AJ렌터카의 주식을 가지고서 한번 강화학습을 해보고 있는데, 수익이 나오는 것은 오로지 일봉차트로 꽤 긴시간 투자를 했을 경우에만 나올뿐, 분봉차트로는 그렇게 큰 효과가 없어 보입니다. 그래서 이번에는 그나마 가능성이 있어 보이는 60분봉차트를 가지고서 한번 강화학습을 시도해 보고자 합니다. 먼저 왜 60분봉이 그나마 가능성이 있는지 한번 살펴보겠습니다.



먼저 일봉차트의 종가 변화량을 계산하는데, 방법은 (오늘의 종가 - 어제의 종가)라는 식으로 계산을 해서, 그 차이를 그냥 변화량 항목에 넣도록 하고, 그 다음에 그 변화량의 음수이냐 양수이냐는 관계없이 그냥 절대값으로 변환을 하였습니다. 여기서 나오는 변화량 평균이라는 항목은 바로 이 절대값으로 변환한 값들의 평균이며, 그냥 변화량 평균이라는 것은 바로 절대량으로 변환하기 전의 변화량이라는 값을 평균을 구한 것 입니다.



여기서  60분봉이 그나마 일봉차트에 가장 가까운 값을 나타내는 것을 볼 수 있었습니다. 그래서 비록 일봉차트의 1/5수준이기는 하지만, 그래도 이정도면 다른 결과가 있을 것 같아서 한번 60분봉을 가지고서 강화학습을 시도해 보고자 합니다.



그리고 나서 구글 코랩에서 작동을 시키기 위한 프로젝트인 yellowoperation에서 위 스크린샷처럼 일일히 여러번 데이터 베이스 이름을 바꾸기도 힘들기 때문에, 일단 변수를 선언하는 항목을 만들어 주도록 합니다.



그리고 나서, 위 스크린샷에 나와 있는 붉은색 밑줄 친 부분은, 원래는 문자열을 나타내는 작은 따옴표('')가 있었으나, 그걸 위에서 설정한 변수로 만들어 주도록 합니다.



그리고 나서 구글 드라이브에 업로드를 해 주도록 합니다. 그리고 당연하다면 당연한 것이지만, 일단 main.py의 경우 구글 드라이브에 미리 있던 파이썬 파일을 미리 제거해 주도록 합니다.




그런데 처음에는 강화학습을 시도하였습니다만, 이유를 알 수 없는 에러가 나오는 것을 확인할 수 있었습니다. 왜 이런가 했더니, 위 스크린샷처럼 .db라는 확장자를 빼먹어서 생기는 문제였습니다.



다음으로는 위 스크린샷처럼 os.rename을 이용해서 데이터 베이스 명에 이상한 문자열이 추가로 붙었는데, 그 내용을 원래 의도하고자 하는 이름으로 바꾸어 주도록 합니다.



일단 이렇게 os.rename이라는 함수를 사용해서 구글 드라이브에 있는 파일들의 이름을 바꾸어 주도록 합니다. 그리고 나서 RLTrader의 폴더안에 있는 파일이름들을 확인해 보면, 위 스크린샷처럼 원래 의도하고자 하는 이름으로 바뀌어져 있는 것을 확인할 수 있습니다.



먼저 첫번째 강화학습을 시도해서 모델을 만들었을 때의 모습입니다. 총 시간이 2시간 41분이 걸린 것을 확인할 수 있었습니다. 역시 100개가 넘는 데이터로 학습을 하다보니까, 3시간 가까이 걸리는 모습을 확인할 수 있었습니다.



그리고 loss라는 항목을 보면, 얼마나 정책 신경망이 학습 데이터와 괴리가 되어 있는지를 보여주고 있습니다. 그런데 여기서는 어쩐지 그렇게 많이 가까워 진 것은 아닌가 하는 생각이 듭니다.




다음은 두번째 강화학습을 완료했을 때의 결과입니다. 위 결과에서 마지막에 수익이 나기는 났는데, 문제는 수익이 난 경우가 1000개의 학습 에포크 중에서 단 5개만 나온다는 것이 많이 불안하기는 불안합니다.



다음으로는 3번째 강화학습을 완료한 시간을 기록했습니다. 조금은 짧아졌는지 2시간 35분 조금 더 넘게 걸렸습니다만, 그래도 여전히 많이 걸리는 것은 분명하다는 생각이 듭니다.



네번째 강화학습을 완료했을 때는 시간이 더 걸려서 2시간 40분이 걸린 것을 확인할 수 있었습니다. 그러나 이러한 학습과는 관계없이 1000번을 넘는 강화학습을 하는 동안 수익이 나온 경우가 겨우 17번이라는 것은 무언가 문제가 있다는 생각이 듭니다.



마지막 5번째 강화학습을 마친 다음의 결과입니다. 거의 3시간 시간이 걸리고 나서 다음으로 나온 것입니다만, 여기서도 역시나 그다지 좋은 결과는 아니라는 생각이 듭니다.



이렇게 해서 하룻밤 조금 넘는 시간이 걸린 다음에, 위 스크린샷처럼 5개의 모델을 얻는데 성공했습니다. 그런데 이 모델들을 백테스트를 해서, 어떻게든 수익이 나오는지 아닌지 알아보는 것이 중요하다는 생각이 듭니다. 그래서 다음 포스팅에서는 위에서 얻은 5개의 강화학습의 모델을 가지고서 한번 백테스트에 들어간 내용을 올려 보고자 합니다.

반응형