원숭이 투자자(MT)로 백테스팅을 한 결과
안녕하세요?
이번 포스팅에서는 일단 최저로 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렌터카가 정말 좋은 주식인지, 아니면 대다수의 주식투자자가 돈을 잃는데, 모두 원숭이만도 못한 것인지....... 아니면 원숭이가 주식을 하면 무슨 손오공으로 변신이라도 하는 것인지 결과를 보고서 입이 다물어 지지 않습니다.