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

원숭이 투자자(MT)로 백테스팅을 한 결과

by 인터넷떠돌이 2018. 12. 23.
반응형

안녕하세요?


이번 포스팅에서는 일단 최저로 AJ렌터카라는 주식 종목에서 1년 6개월간의 데이터인 2017년 5월 2일부터 2018년 12월 7일까지의 결과를 가지고 한번 원숭이 투자자라고 해서 모든 행동을 렌덤하게 진행하는 투자자를 만들어 볼 것이고, 그런 투자를 10회에 걸쳐서 반복해서 얼마나 수익률을 거두는 지를 살펴보고자 합니다.



먼저 일일히 코드를 주석처리 하고 바꾸기가 귀찮기도 하기 대문에, 일단 Qt Designer에서 위 스크린샷처럼 원숭이 투자자자라는 체크박스를 만들어 주도록 합니다.



그리고 나서 위 스크린샷에 보이는 것처럼 PyCharm에서 체크박스의 상태가 변한다 = stateChanged라는 이벤트라고 해서 체크박스를 건드리면 Monkey_Trader_Activation이라는 메서드가 활성화 되도록 코드를 짜 줍니다.



그리고 나서 원숭이 투자자의 실행 여부를 알려주는 monkey_trader라는 변수를 클래스 변수로 선언해 주도록 하고, 초기값을 False로 지정해 주도록 합니다.



다음으로는 체크박스가 체크가 되었다 = checkBox.isChecked: 라는 조건에서는 변수를 True로 만들어 주고, 아니라면 False로 만들어 주도록 합니다.



그렇게 하고 나서, 기존의 백 테스를 위한 메서드에서 위 스크린샷처럼 먼저 monkey트레이더를 버튼을누르는 순간 따지도록 설계를 해 주도록 합니다.




다음으로는 else: 라고 해서, 위 스크린샷에 보이는 것처럼 체크박스가 체크되어 있다 = 원숭이 투자자가 활성화 된 상황이라면 본격적으로 모든 행동을 랜덤으로 하는 작업을 실행하도록 합니다.



위 스크린샷에서 로그기록을 하는 구절 다음으로 강화학습을 집어 넣도록 하는데, 여기서 중요한 것은 에포크의 숫자는 1로 지정을 하고, 시작시 epsilon = 랜덤한 행동을 할 확률을 1이라고 집어 넣어서 100%로 맞춰 주도록 합니다. 다음으로는 가장 중요한 것으로 learning을 False로 지정합니다.



그런데 프로그램을 실행 시키고 나서 위 스크린샷과 같은 문제가 떳습니다. 이게 무슨 문제인가 하면, 백테스트에 사용할 데이터의 비율을 지정해야 하는데, 위와같이 원숭이 투자자를 체크했음에도 지정이 안되는 문제점이 발생했습니다.



그래서 위 스크린샷과 같이 trigger_of_testing01이 선택이 되었거나, or을 주어서 monkey_trader가 True로 선택이 되었다면 작업이 진행이 되도록 설정을 했습니다.



이제 원숭이 투자자의 조건을 다 갖추는 데는 성공했다는 생각이 듭니다. 이렇게 해서 모델을 지정하는 것 빼고는 모두 지정을 하는 데는 성공했습니다.




그런데 어디서 문제가 생긴 것인지 모르겠지만, 위 스크린샷과 같이 오류가 나서 작동이 중단되는 사태가 벌어지는 것을 볼 수 있었습니다.



알고보니 오타로 인해서 생긴 휴먼에러 였습니다. 이렇게 해서 에러가 발생을 하였고, 이걸 수정하면 이제 다른 문제는 없을 듯 합니다. 이렇게 포스팅 상으로는 한개의 스크린샷으로 끝냈지만, 실제로는 이 오류를 잡는다고 이 잡듯이 뒤져야 했습니다.



이번에야 말로 제대로 원숭이 투자자를 돌려 보도록 하겠습니다.



일단 원숭이 투자자 답게 할때마다 결과가 다르게 나오는 것을 볼 수 있었습니다.



계속해서 결과가 다르게 나오는데, 일단 계속해서 시도를 하기는 합니다.




그렇게 해서 10번의 시도를 하는 데 성공했습니다. 그런데 이게 눈의 착각인지 모르겠지만, 어째서 인지 손해를 보는 경우가 거의 없다는 생각이 듭니다.



놀랍게도 2번재 원숭이 투자만이 -34.2%의 손실을 기록하는 것을 볼 수 있었고, 그 외에는 꾸준하게 수익을 내는 것을 볼 수 있었습니다.



다만 원숭이 투자자 답게 중간에 이상한 PV의 그래프를 그리는 것을 볼 수도 있습니다만, 아무튼 간에 마지막에는 손해를 보지 않고 수익을 내는 것을 볼 수 있었습니다.



결국 24.1%라고 해서, 1년 6개월로 6개월이 길기는 하지만, 그래도 워렌버핏의 수익률 보다도 더 많이 나오는 원숭이 투자자도 있는 것을 볼 수 있었습니다. 거기다가 한번 -30%대의 손실만 없으면 평균 수익률이 더 올라갈 것이라는 생각이 드는데, 이렇게 보면, 원숭이 투자자를 무시할 수만도 없다는 생각이 듭니다. 


여기 포스팅의 스크린샷으로 나오지는 않았지만, 원숭이 투자자를 또 10번 반복해서 시도를 해 보니까, 이번에는 평균 수익률이 17.2%라고 더 높이 나오는 것도 볼 수 있었습니다. 이 경우에도 한번만 -0.24% 라고 미미한 손실만 냈고, 가장 높은 수익률은 34.9%로 무슨 원숭이가 주식투자를 더 잘하는 것을 볼 수 있었습니다. 그래서 종목인 AJ렌터카가 정말 좋은 주식인지, 아니면 대다수의 주식투자자가 돈을 잃는데, 모두 원숭이만도 못한 것인지....... 아니면 원숭이가 주식을 하면 무슨 손오공으로 변신이라도 하는 것인지 결과를 보고서 입이 다물어 지지 않습니다.

반응형