인공지능으로 암호화폐 미래 가격 예측해보기

1. 암호화폐 가격 데이터 수집

by 삼더하기일
인공지능으로 암호화폐 미래 가격 예측해보기


머신러닝, 딥러닝 기술을 통해서 암호화폐의 미래 가격을 예측하기 위해서는 암호화폐 가격에 대한 데이터가 필요합니다. 머신러닝, 딥러닝 등 인공지능 기술이 빅데이터를 기반으로 하고 있기 때문입니다. 그렇기에 데이터가 준비되어 있지 않다면 인공지능으로 암호화폐 미래 가격을 예측하는 것 자체가 불가능합니다. 일일이 눈으로 실제 암호화폐 시장을 보며 가격을 수동으로 입력하기에는 분명히 한계가 있습니다.


하지만 다행히도 국내 최대 암호화폐 거래소인 업비트에서 형성된 암호화폐 거래 가격은 파이썬 프로그램을 통해 쉽게 내려받을 수 있습니다. 그래서 이번 1. 암호화폐 가격 데이터 수집에서는 활용 가능한 암호화폐 데이터의 모습과 이를 선택하는 의사결정 과정을 함께 살펴보도록 하겠습니다. pyupbit라는 이름의 API를 통해 암호화폐 가격 데이터를 볼 수 있으며 이를 실제로 확인해보면 아래와 같습니다.


암호화폐4.png


pyupbit를 통해 업비트에 거래되고 있는 암호화폐 중 원화(KRW)로 거래 가능한 암호화폐의 리스트를 확인해 보았습니다. 2022년 6월 16일 기준으로 총 114개의 암호화폐가 업비트에서 원화를 통해 거래 가능함을 알 수 있습니다. 그리고 그 리스트를 살펴보면 우리에게 익숙한 비트코인(BTC), 이더리움(ETH) 등의 이름이 리스트에 담겨 있습니다. 다음으로는 실제 데이터의 형식을 살펴보겠습니다.


암호화폐5.png


대표적 암호화폐인 비트코인(BTC)의 데이터를 불러온 결과 2021년 11월부터 2022년 6월까지 약 7개월의 데이터가 불러와짐을 알 수 있습니다. 데이터에는 구체적으로 시초가, 고가, 저가, 종가, 거래량, 거래액이 담겨 있습니다. 그리고 모든 데이터는 하루 중 9시를 기점으로 형성되어 하루에 한 개의 데이터가 적재되어 있는 형식입니다.


그런데 분석 목적에 따라 원하는 데이터의 형식은 파란만장하게 달라질 수 있습니다. 장기간의 기간을 두고 암호화폐 가격을 예측하고자 한다면 하루에 하나의 데이터만 쌓이더라도 이를 분명 활용할 방법이 있을 수 있습니다. 하지만 인공지능 기술을 통해 초단타 거래를 하고자 한다면 하루에 한 개 데이터는 분명 부족할 수밖에 없습니다. 또한 전체 기간에 대해서도 의사결정이 필요할 수 있습니다. 누군가는 암호화폐의 연간 데이터를 보고 싶어 할 수 있고 누군가는 3개월, 누군가는 6개월의 데이터를 보고 싶을 수 있습니다. 행운스럽게도 pypubit는 다양한 기능을 통해 원하는 데이터의 개수와 시점을 조절하여 불러올 수 있습니다.


암호화폐6.png


실제로 하루가 아닌 60분을 기준으로, 총 365개의 데이터를 내려받도록 설정하는 것을 쉽게 설정할 수 있습니다. 실제로 시초가, 고가, 종가 등의 데이터를 한 시간 단위로 내려받아 총 365개의 데이터를 가진 업비트 내 비트코인 가격 데이터를 위와 같이 불러올 수 있습니다. 다만, 하루에 24개에 데이터를 활용하며 총 데이터 수는 365개로 세팅하였으므로 데이터의 전체 기간은 2022년 6월 1일부터 6월 16일까지 약 2주 기간으로 단축된 것을 확인할 수 있습니다.


이제부터는 데이터를 분석하는 사람의 머신러닝 지식, 도메인 지식을 포함한 주관 및 직관이 필요합니다. 기본적으로 이 예제는 5일 뒤의 암호화폐 가격 움직임을 머신러닝을 통해 예측하는 것을 주된 목적으로 합니다. 이를 위해 최소 1년 치의 데이터를 살피고 이를 인공지능에게 학습시켜야 그 움직임을 예측할 수 있음을 기본 전제로 삼겠습니다. 1년 간의 데이터를 살펴보면 암호화폐의 가격 움직임 대부분의 패턴이 발생했으며 향후 비슷한 패턴이 또 발생할 경우 이를 인공지능 모델을 통해 캐치해낼 수 있다는 가정입니다.


또한 5일 뒤라는 나름의 인터벌을 두고 암호화폐 가격을 예측하기 때문에 너무 짧은 시간 단위의 데이터를 활용하면 장기적인 암호화폐 움직임 예측에 안좋은 영향을 미칠 수 있습니다. 예를 들어, 한 시간 단위의 데이터를 통해 미래 암호화폐 가격을 예측한다면 생성된 인공지능 역시 한 시간 뒤의 암호화폐 가격을 예측하는데 최적화될 수밖에 없습니다. 그래서 이상적으로는 5일 단위의 데이터를 활용하는 것이 좋지만 이것은 학습 가능한 데이터의 수를 줄이는 행위이며 또한 5일이라는 기간 사이에 암호화폐 움직임을 모두 놓쳐버리는 결과를 초래할 수 있습니다. 따라서 하루 1회의 데이터를 살펴보면 충분히 해당 움직임을 사전에 예측할 수 있다고 가정하도록 하겠습니다.


필요 데이터셋 선정에 대한 모든 과정은 저의 주관에 의해 결정하였습니다. 또한 이러한 의사결정 과정에는 암호화폐 가격 예측 그 자체보다는 쉬운 예제 생성을 위해 데이터를 단순화하기 위한 목적도 포함되어 있습니다. 당연히 분석 목적과 필요 데이터 형식을 바라보는 관점에 따라 세팅해야 하는 데이는 충분히 달라질 수 있습니다.


추가적으로, 이 예제에서는 현재에 대비해 5일 뒤 가장 높은 상승을 보이는 암호화폐를 찾는 것을 그 목적으로 합니다. 따라서 위 데이터 예제에서는 비트코인의 데이터만을 수집하였지만, 업비트에서 원화를 통해 거래 가능한 모든 암호화폐를 그 분석 대상으로 삼겠습니다. 이러한 의사결정 과정을 통해 최종적으로 우리에게 필요한 데이터셋의 형식이 정해졌습니다. 거래 가능한 모든 암호화폐의 하루 단위 데이터를 1년 동안의 기간으로 쌓아 둔 데이터를 생성해야 합니다. 그리고 이 모든 것들은 파이썬 프로그래밍과 pyupbit API를 통해서 간단하게 데이터 형식으로 저장할 수 있습니다.


암호화폐7.png


실제로 해당 조건으로 데이터를 가져오면 114개 암호화폐의 365일 치의 데이터를 불러와 총 39,960개의 양을 지닌 데이터셋을 형성할 수 있습니다. 공유된 코드를 돌린 시점에 따라 데이터 개수와 암호화폐 개수, 데이터 전체 기간에는 차이가 있을 수 있습니다. (114개의 암호화폐 중 상장 1년 미만 암호화폐가 있다면 해당 데이터는 1년보다 적은 데이터를 가지고 있습니다.) 위와 같이 필요 데이터를 설정했다면 이제 머신러닝 프로세스 중 가장 첫 단계인 데이터 수집이 완료되었다고 볼 수 있습니다. 가장 기초적이면서도 중요한 필수 단계를 거친 셈입니다.


이제는 이 데이터를 어떻게 가공해야 인공지능이 가격 움직임을 예측할 수 있을지에 대한 고민이 필요합니다. 다음 인공지능으로 암호화폐 미래 가격 예측해보기 2편에서는 수집한 데이터를 기반으로 기본 전처리 및 필요 변수를 생성하는 과정에 대해 살펴보도록 하겠습니다.


keyword
매거진의 이전글인공지능으로 암호화폐 미래 가격 예측해보기