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

인공지능의 묻지마 매수를 막기위한 작업-2-

by 인터넷떠돌이 2019. 3. 1.
반응형

안녕하세요?


일단 지난번 포스팅에서 어떻게 해서 묻지마 매수를 막기는 막았습니다만, 문제는 프로그램이 명령을 내린 매수 명령도 전혀 반영이 되지 않는 문제점이 노출이 되었습니다. 그래서 새로 생긴 문제점을 해결해 보고자 하는 가지가지 시도를 이번 포스팅에서 다루고자 합니다.



먼저 위 스크린샷처럼 agent.py로 가서, action항목을 float()으로 바꾸어 주도록 합니다. 왜냐하면 지금까지 혹시 문자열로 모두 처리가 되어서 적용이 되지 않은 것이 아닌가 하는 생각이 들었기 때문입니다.



일단 agent.py를 구글 드라이브에 업로드 한 다음에, 위 스크린샷처럼 구글 코랩에서 강화학습을 시키자, 12분만에 강화학습이 마무리 된 것을 확인할 수 있었습니다.



그런데 이렇게 하고도 여전히 프로그램이 매수 명령을 내렸는 타이밍에 전혀 매수가 이루어 지지 않는 것을 확인할 수 있었습니다.



혹시나 if문이 연속으로 나열된 것이 문제가 아닌가 하는 생각이 들어서, 이번에는 위 스크린샷처럼 elif로 바꾸어서 작업을 하도록 해 보았습니다.



그리고 나서, 다시금 만들어 놓았는 agent.py를 구글 드라이브에 올려 놓은 다음, 구글 코랩에서 강화학습을 시키도록 합니다. 이번에는 13분 정도 시간이 걸린 다음에 강화학습이 끝난 것을 확인할 수 있었습니다.




그런데 강화학습의 그래프를 보고나니, 전혀 프로그램의 의도대로 매수 명령이 이루어 지지 않는 것을 볼 수 있었습니다. 이래서는 곤란하다는 생각이 슬슬 들기 시작합니다.



그래서 어디가 문제인지를 몰라서, 위 스크린샷처럼 self.action의 값과, confidence의 값을 표시하도록 하고, 알아보기 쉽도록 표식을 찍어 주도록 합니다.



일단 위 스크린샷처럼 표식자체는 찍히는 것을 구글 코랩에서 강화학습을 돌리면서 확인은 할 수 있었습니다. 계속해서 강화학습이 돌아가기를 기다려 봅니다.



일단 이 표식에서 계속해서 self.action은 0을 보여주는 데 반해서 confidence만은 어찌된 셈인지 nan이라는 값도 반환하는 것을 볼 수 있었습니다.



일단 15분이 지나고 나서, 위 스크린샷처럼 강화학습이 끝난 것을 확인할 수 있었습니다. 이제 진짜로 self.action은 전부 0이 되어 나오는 것은 확인할 수 있었습니다.




먼저 위 스크린샷에서 보이는 것처럼 초반에는 confidence의 값이 nan으로 나오는 것을 확인할 수 있기는 있었습니다. 그리고 나서 자세히 더 살펴보니



위 스크린샷의 내용처럼 특정한 부분을 기준으로 nan으로 나오는 부분과 숫자가 나오는 부분이 따로 떨어져 나오는 것을 확인할 수 있었습니다.



그래서 위 스크린샷의 이런 결과를 보고저 이번엔느 confidence의 값을 가져와서 작업을 하도록 합니다. 여기서 numpy의 함수중에 하나인 isnan()함수가 nan이면 True, 아닌 다른 값이면 False를 반환하기에 이를 이용해서 if문을 만들어 보았습니다.



새로 만들어진 agent.py의 값을 가지고서 구글 코랩에서 작업을 하도록 합니다. 그렇게 해서 14분 만에 모두 강화학습이 모두 완성이 된 것을 확인할 수 있었습니다.



이제서야 프로그램이 매수 명령을 내릴때 매수를 하는 것을 볼 수 있었습니다.물론 이 모델이 제대로 수익을 백테스트에서 내느냐 마느냐는 확인해 보아야 하는데, 일단 제 의도대로 묻지마 매수만 방지하는 데 이렇게 많은 시행착오를 요구하면서 수정하는 작업이 필요하기는 필요했습니다.

반응형