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

백테스트를 위한 유저 인터페이스의 제작-3-

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

안녕하세요?


지난번 포스팅에서 예상하지 못한 장애에 부딪치기는 했습니다만, 그래도 이 문제를 해결하기 위해서 다양한 시도를 하였고, 이번 포스팅에서 다루고자 하는 내용도 이 이해할 수 없는 장애를 해결하기 위한 과정입니다.



혹시나 해서, 강화학습에 사용했는 chart_data라는 변수를 공유해서 생기는 문제가 아닐까 해서, 한번 새로운 변수를 만들어서 비었다는 선언을 해 주도록 합니다.



다음으로는 백테스트를 위한 주식 데이터의 준비에서 위 스크린샷과 같이 새로 만들어진 변수에 가지고 온 주식 데이터를 모두 데이터프레임으로써 넣어 주도록 선언을 해 봅니다.



그래도 여전해 문제가 발생하는 것이 있습니다. 아무래도 이번 시도는 실패가 아닌가 합니다.


그리고 나서 testingData라는 새로운 변수를 지정해 주도록 합니다. 그리고 당연하다면 당연하게도, 이 변수는 빈 공백이라고 선언을 해 주도록 합니다.




다음으로 주식 데이터를 준비해서 나왔는 데이터는 차트 데이터가 아니라 testingData에 집어 넣도록 해 줍니다.



다음으로는 원래는 자르기로 한 %에서 자르는 것이지만, 알고보면, 여기서 최신의 데이터를 자르기 때문에, 100-지정된 수치를 지정해야 합니다. 그래서 위 스크린샷의 붉은색 줄을 친 곳처럼 만들어 주었습니다.



다음으로는 그냥 데이터 프레임[포인트:] 라고 해서 너무 끝을 지정하지 않아서 생기는 문제가 아닌가 해서, 한번 -1을 뒤에 두어서 마지막 데이터라는 것을 명시 하도록 했습니다.



그래도 무슨 일이 있었는지 몰라도, 계속해서 에러가 나오는 것을 볼 수 있었습니다. 이렇게 하는 것으로 어디가 문제인지 아직도 모르겠다는 생각이 듭니다.



일단 강화학습에서는 제대로 위 스크린샷과 같이 Length가 나오는 것을 확인할 수 있었습니다만......



일단 문제점이 학습에서는 시작하는 인덱스가 0이지만, 백테스트에서는 시작하는 인덱스가 1174이기 때문에 생기는 문제가 아닌가 하는 생각이 들었습니다. 그래서 위 스크린샷과 같이 인덱스를 새로 지정하는 reset_index()함수를 사용했으며, 여기서 기존의 인덱스는 버릴 것이기 때문에 drop=True옵션을 지정했습니다.



이렇게 위 스크린샷과 같이 제대로 인덱스가 0으로 시작하는 것을 볼 수 있었습니다.



이제는 제대로 백테스트를 위한 데이터가 준비가 되는 것을 확인할 수 있었습니다. 이렇게 하는 것으로 이제 마지막 단계인 백테스트를 하는 단계 - 원래 RLTrader에서 trade()함수를 사용하는 방법에 들어가는 것인데, 다음 포스팅에서는 이 부분에 해서 다루어 보겠습니다.

반응형