머신러닝과 딥러닝을 활용하여 새로운 알고리즘을 만들어 보려고 합니다.
최근에 빗썸에서 분봉에 대해서 상승, 하락 예측을 보여주는 서비스를 추가하였습니다
느낌상 ohlcv 데이터와 보조지표를 활용해서 머신러닝이나 딥러닝으로 예측한게 아닌가 싶은 생각이 들었습니다.
1분봉이 74%, 4시간봉이 62%로 데이터가 많을수록 정확도가 높아지기에 그런 생각이 들었습니다. (1분봉이 4시간봉보다 240배(60분*4시간) 많은 데이터를 가지게 됩니다.)
그래서 일봉, 주봉, 월봉 같이 데이터가 적을 경우, 예측 성능이 많이 떨어지기에 제공하지 않는것 아닌가 하는 추측을 해보았습니다.
빗썸에서 어떠한 방식으로 예측을 하였는지 정확히 알수는 없지만, 추측한 내용을 바탕으로 저만의 모델을 만들수 있겠다 싶어 한번 도전해 보았습니다.
우선 1시간봉으로 데이터를 가져와 보았습니다.
10년이면 87,600개의 데이터가 있기에, 넉넉히 10만개를 불렀는데, 17년9월부터 66702개의 데이터가 불러와졌습니다.
그리고 전일가격과 거래량, 이평선, 스토캐스틱, 모멘텀등의 보조지표를 몇개 추가한 후 dropna로 데이터가 없는 부분은 제거하였습니다.
업비트 수수료인 0.05%보다 클 경우 1, 아닌 경우 0으로 하여 pred값을 만들었습니다.
하고 보니 pred가 아닌 다른 컬럼명(gournd truth)을 주었어야 했네요. 예측이 아닌데 예측으로 이름을 준...
0을 기준으로 하면 거의 50%가 나왔는데, 수수료를 추가하니 56대 44정도로 나누어 집니다.
베이스라인으로 gradient boosting, random forest, knn, xgboosting으로 예측모델을 돌려보았습니다.
역시나... 수치가 낮게 나오네요.
개인적으로 여기서는 precision값이 중요하다고 생각되는데, 4개 모델 모두 낮게 나왔습니다.
precision이 중요한 이유는 true로 예측해서 실제 true가 얼마인지를 나타내기에, 이익이 날것으로 예측(true)하였을때 실제 이익이 났는지 확인 가능하기 때문입니다.
성능을 올리기 위해 gridsearch와 randomizedsearch를 사용해 최적의 parameter를 찾아보았습니다.
베이스모델에서 그나마 나았던 gradient boosting은 2시간 넘게 돌려도 끝나지 않아... 정지하였습니다. (사용중인 컴퓨터 사양은 맥북 M1 16GB 입니다.)
random forest의 최적 파라미터를 찾고 모델을 저장하였습니다. 5분도 되지않아 결과가 나왔습니다.
xgboosting도 최적 파라미터와 모델을 저장하였습니다.
전체에 대해서 모델을 돌려보니, 5413개가 오를것으로 예측되었습니다.
실제로 약 29,000가 올랐는데, 많은 차이가 납니다.
실제값과 비교해보니, 5413개 중 3459개는 오른것으로 나오네요. precision이 낮았던 것에 비하면 결과가 양호해 보입니다
그래서 1만원으로 반복적으로 사고 팔았을 경우 어떻게 되나 한번 계산해 보았습니다. 0.05%는 수수료, 0.05%는 슬리피지 (제때 사지 못하기에 발생하는 차이(??))로 적용하였습니다.
1만원으로 사고 팔고를 자동으로 하였다면 수익이 39,256원이 되고, 거래당 7원 이익이네요...
업비트에서 비트코인 첫 시초가가 420만원이고 지금 1억 4천으로 30배가 넘게 오른걸 생각하면 처참한 결과입니다.
하지만 낮은 예측율에도 수익이 난다는 점이, 가능성을 보게 하는듯 하네요
머신러닝을 돌렸기에 지표별로 가중치를 확인할수 있는데, 역시나 스토캐스틱이나 모멘텀 같은 보조지표에서 가중치가 높게 잡히는 것을 볼수 있네요.
다음에는 좀더 짧은 단위의 분봉과 다양한 보조지표를 적용하여 테스팅해 봐야겠습니다
'개발공부 > 자동매매 프로그램' 카테고리의 다른 글
비트코인 자동매매 프로그램 개발일지 - 03 (0) | 2025.05.25 |
---|---|
비트코인 자동매매 프로그램 개발일지 - 01 (2) | 2025.05.11 |
패스트캠퍼스 - 한번에 끝내는 퀀트(금융공학) 실무 초격차 패키지 Online (1) | 2023.12.03 |
파이썬 공부 (자동매매) (3) | 2022.09.18 |