안녕하세요?


지난번 시간에 어떻게 수익이 나오는 모델을 찾을 수 있으리라 생각을 하기는 했는데, 이번 포스팅에서 그 결과부터 말씀 드리자면, 그렇지는 못했습니다. 이게 CS홀딩스라는 종목 자차가 않 좋거나, 여기서 이상치가 있어서 이런 반응이 나온 것이 아니라, 제가 강화학습을 시킬 때 조건을 잘못 지정해서 이런 일이 생기기는 했습니다. 그럼 그렇게 이어진 과정을 이번 포스팅에서 올려 보고자 합니다.



먼저 지난번 처럼 조건을 달리해서 한번 강화학습에 들어간 결과입니다. 그런데 제 예상과는 다르게 전혀 수익이 나오지 않은 것을 볼 수 있습니다.



일단 강화학습을 시킨 각각의 에포크를 보고 있으면, 어떻게 된 것인지는 몰라도, 점점 주식을 매수만 하기만 하고, 전혀 매도를 하지 않은 것을 볼 수 있습니다.



그래서 한번 확대해서 자세히 살펴보니까, 프로그램에서 전혀 매도라는 명령을 내리지 않고, 오로지 랜덤한 행동에서만 나왔다는 것을 알 수 있습니다.



그래서 이런 문제가 벌어진 원인으로 먼저 RLTrader를 구성하는 agent객체에서 맨 먼저 매수를 하는 행동을 체크하고 나서, 1주를 살수 없는 상황에서 매도를 체크하기 때문에 벌어진 일이라는 생각이 들었습니다. 위 스크린샷처럼 원래는 키보드의 Tab키를 눌러서 한 칸 더 오른쪽으로 가야하는 elif문을 더 왼쪽으로 옮겼습니다.




당연하다면 당연하게도 구글 드라이브에 원래 있던 agent.py는 제거를 하도록 하고, 다음으로는 방금 만들어 놓은 agent.py를 업로드 해 놓도록 합니다.



이제 강화학습을 새로이 시작하도록 합니다.



첫번재 강화학습의 결과인데, 이러고도 전혀 매도가 일어나지 않은 것을 확인할 수 있었습니다.



두번째 강화학습도 그다지 좋은 결과가 아니기는 합니다. 다만 첫번째 강화학습에 비해서 시간이 1시간 정도 단축이 된 것을 확인할 수 있었습니다.



세번재 강화학습에서도 그다지 차도가 없다는 것을 확인할 수 있었습니다.



4번째 화학습에서도 강화학습이 진행이 되면 될 수록 매수는 있는데 매도가 없는 상황이 벌어지는 것을 볼 수 있었습니다.


5번째 강화학습에서도 그다지 좋지 못한 모습을 보여주고 있는 것을 볼 수 있었습니다.



마지막 여섯번째 강화학습에서도 그다지 좋지 못한-학습이 진행이 되면 될수록 어째서 인지 매도는 전혀 하지 않는 모습을 볼 수 있었습니다.



그래도 일단 6개의 후보를 만들어 내기는 냈으니, 이제는 한번 백테스트에 들어가기 위해서 기존에 만들어 두었는 TestAI라는 프로젝트에 있는 RLTrader를 작동시켜서 위 스크린샷처럼 준비를 하도록 합니다.



그런데 어떻게 된 것이 6개의 모델 모두 같은 결과가 나오는 것을 볼 수 있었습니다. 이래서야 이걸 제대로 했다고 말할 수 있는지 모르겠습니다.




그리고 6번의 벡테스트 결과를 그래프로 보여주는 결과에서도 수익이 난 것은 순전히 강화학습으로 얻은 모델의 결정이 아니라, 순전히 주가가 올랐기 때문에 PV가치가 올라간 것이라는 것을 보여주고 있습니다.



그래서 한번 원숭이 투자자를 가동시켜 보도록 해서 여섯번을 시도해 보았습니다. 이 경우에는 위 스크린샷처럼 딱 1경우만 빼고는 모두 손해를 본다는 것을 알 수 있었습니다.



그리고 6번의 시도 모두 다른 패턴을 가지고 있는 것으로 보아서, 랜덤한 행동을 했다고 해서, 모두 같은 포트폴리오 가치 패턴이 나오는 종목도 아니라는 것을 알 수 있었습니다.



그래서 한번 강화학습을 했는 결과를 자세히 보니, 제가 지정한 지연보상 임계치 1%도 실은 여기서 하루는 걸려야 나오는 포트폴리오 가치변동이라는 것을 알 수 있었습니다.



그래서 무모한 도전인 줄은 알지만, 일단 지연보상 임계치를 0.1에 해당하는 0.001로 두고서 강화학습을 시켜보고자 했습니다. 이게 하다가 중간에 구글 드라이브와 구글 코랩간의 연결이 끊어져서 결과를 저장 못하고 끝날 수도 있는데, 일단 죽이되든 밥이 되든 시도는 먼저 해 보고나서 생각해 보기로 결정을 했습니다.

+ Recent posts

티스토리 툴바