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

새로운 수익모델을 만들기 위한 종목찾기 알고리즘의 제작

by 인터넷떠돌이 2019. 2. 14.
반응형

안녕하세요?


한동안 이 무모한 도전에 대한 포스팅이 없어서 궁금해 하신 분들이 계실지 모르겠는데, 일단 AJ렌터카에서 더는 제가 원하는 식으로 수익을 얻기가 힘들다고 판단을 했습니다. 예, 일단 이 무모한 도전을 시작했을 때, 정확하게 1주당 1만원인 주식이 지금 와서는 1만 2천원으로 올라갔기 때문에 어떻게 장기적으로 보면 수익을 올리기는 올릴 수 있습니다. 하지만, 하루안에 수익을 얻기 위해서는 최소 60분봉 차트는 가지고 와야만 하는 것인데, 그 때문에 새로운 종목을 찾아야 할 필요가 있었습니다.


일단 가장 큰 것은 60분봉을 가지고 오는 것도 좋은데, 특정한 시점까지의 현재가=종가의 변화량이 커야 한다는 결론에 도달했습니다. 그래서 대~충~ 찍어서 2018년 10월 1일부터 60분봉 차트를 가지고 와서, 여기서 찾아낸 종가의 변화량을 절대값으로 바꾸고, 그 절대값의 평균이 300을 초과하는 과목만 선정하는 프로그램을 짜 보고자 합니다. 일단 이 도전은 제가 이 포스팅을 쓰는 지금까지 100% 완료가 되지 않았고, 너무 포스팅할 꺼리가 많기 때문에, 하는 수 없이 몇 파트로 자르게 되었습니다.



언제나 새로운 스크립트를 짜기 위해서는 기존의 pytraderWithBrain이라는 프로젝트에서 새로운 python file을 하나 만들어 보도록 합니다. 좀 오타가 나기는 했지만, 그게 개의치 않기로 했습니다.



일단 워낙에 코드가 개판5분 전이랄까, 지금 단계에서는 공개하기에는 1%도 완성이 되지 않아서 뭐라 공개하지는 못하고, 단지 결과만을 공개하고자 합니다. 결과를 보면, 우선 60분봉 차트를 코스피에서 가지고 오는 것에는 성공했습니다만, 문제는 위 스크린샷과 같이 완전히 빈 형태로 추출을 하는 바람에 아무런 계산도 되지 않는 경우가 나오는 것 입니다.



그나마 위 스크린샷처럼 어떻게 추출을 하는 데는 성공하는 것을 보여주고 있습니다. 즉 지금 단계에서는 어찌어찌 머리를 굴려서 키움증권 Open API가 제공해 주는 60분봉 차트를 가지고 오는데 성공했습니다.



그런데 처음에는 불완전하게 가져오는 것이 되어서, 다시한번 코드를 수정해서 위 스크린샷처럼 어찌된 것인지 모르겠습니다만, 가장 최근의 데이터부터 상단에 올라오는 것을 볼 수 있었습니다.




그리고 나서 종가인 close만을 가지고 와서 추출하는 데 성공하기는 했습니다. 물론 현재 진행형으로 관망/매수/매도 결정을 할때는 아니지만, 그래도 지금은 그럴때가 아니라서 close만을 추출합니다.



그런데 다음으로 계산을 진행하려고 하고자 했습니다만, 위 스크린샷처럼 무언가 제대로 일어나지 않는 듯한 불길한 느낌을 주는 출력이 하나둘씩 나오는가 했더니......



일단 첫번째로 2018년 10월 1일부터만 가지고 오도록 코드를 변경하는 데 성공했습니다. 하는 방법은 우선 여기서는 dataframe객체를 사용했기 때문에, dataframe.iloc[dataframe['column이름'] > 20181001] 이라는 코드를 사용했습니다. 여기서 가장 중요한 것은 저렇게 날찌별로 dataframe객체를 선택하기 위해서는 먼저 column이름이 되는 열을 날짜의 형태로 바꾸어야 합니다. 그래서 dataframe['date'] = pd.to_datetime(dataframe['date']) 라는 식으로 날짜에 해당하는 열을 진짜 날짜의 형식으로 바꾸어 주어야 합니다.



그런데 어떻게 된 것인지 몰라도, 이렇게 특정한 날짜 이상부터 최근까지 가지고 오는데 성공했습니다만, KeyError라고 하는 처음보는 에러 메세지가 나오는 것을 볼 수 있었습니다.




그리고 나서 조금 손을 보자, 이렇게 keyError는 사라졌습니다만, 문제는 인덱스 밖에 있는 요소를 불러오는 것을 했다는 식으로 에러가 뜨는 것을 볼 수 있었습니다.



어찌어찌해서 해결은 된것 같다고 이 때는 생각했습니다만, 문제는 이 때는 완전히 해결은 된 것이 아니라는 것 입니다. 어쨎든 이때는 어떻게 절대값으로 변형한 지금 현재가 - 이전 현재가 = 변화량 으로 나온 변화량을 절대값으로 바꾸어서 한번 평균을 구한 값이 나오기는 나왔습니다.



그런데 이렇게 나왔다고 좋아하는 것도 잠시였고, 위 스크린샷처럼 계속해서 KeyError이라는 에러가 나오는 것을 볼 수 있었습니다. 그래서 하는 수 없이 이 에러에 대해서 찾아 보고자 했습니다. 일단 이 에러는 dict라고 해서, 딕셔너리 형태의 자료구조에서 없는 key에 접근하기 때문에 발생하는 에러라고 합니다.



그렇게 keyError가 원인이 되는 것이 없는 key를 자꾸호출한다는 것을 알고는 이를 수정하는 데는 성공했습니다만, 문제는 위 스크린샷처럼 조회횟수 제한이라는 에러가 뜨는 것을 확인할 수 있었습니다. 저는 분명히 2분간 쉬어서 가라고 명령을 내렸습니다만, 이것만으로는 안되고, 하는 수 없이 그대로 잘라야 한다는 것을 알 수 있었습니다. 아무튼 이번 포스팅은 여기까지 합니다만, 다음 포스팅에서는 이 에러를 해결하고 계속해서 제가 생각한 알고리즘을 찾아보고자 합니다.

반응형