안녕하세요?


지난번 포스팅에서 400에포크로 강화학습을 했는 강화학습의 모델이 5개 나왔다는 것을 올렸습니다. 이제 이번 포스팅에서 이 5개의 모델에 대해서 한번 강화학습을 하도록 하고, 다음으로 할 일은 지난번 포스팅에서 우연히 잡은 이 에러를 한번 잡도록 하는 시도를 했는데, 그 과정에서 있었는 줄도 모르는 오류를 하나 잡는데 성공했습니다.



먼저 구글 드라이브에서 5개의 강화학습의 모델을 다운로드 받도록 합니다. 그리고 나서 위 스크린샷처럼 RLTrader를 작동시켜서 백테스트에 들어가 보도록 합니다.



그런에 뭐라고 해야 할까요? 이번 강화학습에서도 그다지 신통치 않게도 결과가 나오는 것을 확인할 수 있었습니다. 역시 2종류의 패턴을 만들어 내기만 하고 있습니다.



실제로 백테스트의 결과를 그래프로 표시한 그림을 보면, 확실하게 알 수 있는데, 진짜로 주식을 매수도 매도도 하지 않고서 가만히 있는 경우가 있거나, 아니면 매수하고 나서 그냥 가만히 있습니다. 이로서 에포크 숫자를 늘린 작전은 더는 유효하지 않다는 것을 알 수 있었습니다.



다음으로는 어디서 문제가 일어났는지 몰라서, 과거에 RLTrader의 원형이 되는 소스를 한번 인터넷에서 보았습니다. 그 때는 엑셀 파일에 저장이 되어 있는 데이터를 가지고 왔기 때문에 차트 데이터 분리나 학습 데이터 분리가 별 필요없을 것이라 판단을 해서 그냥 버렸습니다.




그리고 보시면, chart_data에서는 위 스크린샷과 같이 초록색 선으로 연결이 된 다음에 그대로 차트 데이터로 들어가는 것을 볼 수 있으며, 다음으로는 training_data라고 이름을 붙인 곳은 강화학습을 시작하면서 붉은색 지점으로 가게 됩니다.



그런데 제가 만들어 놓은 RLTrader나 yellowoperation을 보면, 위 스크린샷과 같이 제대로 되어 있지 않은 것을 확인할 수 있었습니다. 즉, 다른건 모르겠지만, training_data에 한해서는 따로 항목을 지정해 주는 작업을 하지 않았다는 것 입니다.



그래서 한번 확인을 해 보기 위해서 먼저 강화학습의 에포크를 그냥 10으로 대폭 줄이도록 합니다. 그리고 차트를 그리는 데이터와 강화학습에 사용되는 데이터가 어떻게 나오는지 표식을 찍어 보도록 합니다.




10회에 지나지 않는 강화학습의 경우에는 위 스크린샷처럼 겨우 2분도 걸리지 않은 것을 확인할 수 있기는 있었습니다. 이제 데이터를 확인하러 갈 시간입니다.



일단 차트를 그리는 데이터의 경우인데, 제대로 날짜와 시가, 고가, 저가, 종가, 거래량이 나와 있는 것을 확인할 수 있기는 있었습니다.



그리고 나서 한번 강화학습에 사용될 데이터만 추려본 결과, 위 스크린샷처럼 제대로 데이터가 형식을 갖추어서 정렬이 되어 있는 것을 확인할 수 있었습니다.



그리고 다른 보조지표라고 해야 할까요? 이런 데이터에 대해서도 제대로 반영이 되어 있는 것도 확인을 할 수 있어서, 무슨 차이가 나올지 모르겠다는 생각이 이 때는 들었습니다.




아무튼 그래도 확인을 하기 위해서, 위 스크린샷철검 한번 features_training_data라는 것을 따로 지정해 주도록 해 봅니다. 그리고 나서, 기존의 RLTrader에 위 스크린샷처럼 집어 넣습니다.



이번에도 10번의 강화학습을 끝내는 데는 겨우 2분도 걸리지 않은 것을 확인할 수 있었습니다.



그런데 학습에 사용되는 데이터는 무언가 달라지는 것을 확인할 수 있기는 있었습니다. 먼저 위 스크린샷의 결과처럼 기존에는 있던 시가, 고가, 저가, 종가, 거래량이 없어진 것을 확인할 수 있었습니다.



다만 이렇게 하고 나서도, 아직도 120개의 데이터에 대해서는 전혀 프로그램이 아무런 결정도 하지 않고 있는 것을 확인할 수 있기는 있었습니다. 아무튼 그래도 이렇게 학습에 사용되는 데이터를 다르게 해주는 것이 어떤 효과를 냈는지 위 스클니샷을 보시면 상당히 다이나믹한 움직임을 보여주는 것을 볼 수 있습니다. 이로 미루어 볼 때 이때까지 있는 줄도 몰랐던 오류를 어떻게 뒷걸음질 치다가 잡았다고 할 수 있습니다.

+ Recent posts