본문 바로가기
Python

파이썬을 이용한 가상화폐 시세 분석

by 아짱이아빠 2021. 3. 21. 13:20
반응형

이번에는 가상화폐 시세를 다운로드하여 분석하는 내용을 알아보겠다.

 

가상화폐 또는 암호화폐에 대해서 개인적으로 지식이 별로 없고 가상화폐를 가지고 있거나 거래를 해본 적도 없다.

가상화폐에 대해 잘 알지도 못하고 그동안 관심도 없었으면서 이 주제를 정한 이유는 가상화폐 이외에 데이터를 분석을 위한 파이썬 코드나 시각화와 관련된 코드에 대한 공부가 되기에 정리하게 되었다. 

파이썬 코드를 공부하면서 자연스럽게 가상화폐에 대해 조금 알게 되었으며 나중에 기회가 되면 좀 사볼까 하는 생각이 들기도 했다.

 

여기서는 몇 개의 가상화폐 시세를 다운받아 그래프로 표현하고 각 가상화폐의 변동성을 분석하며 각 화폐 간 연관성 분석, 그리고 누적 수익률을 분석해 본다.

파이썬 코드는 유튜브 “Computer Science”의 동영상 강좌를 활용하였다.  

 

먼저 가상화폐 또는 암호화폐 의미를 간단히 정리하면 다음과 같다.

실물 없이 컴퓨터 등에 정보 형태로 남아 사이버상으로만 거래되는 전자화폐의 일종이며 처음 발명한 사람이 정한 규칙에 따라 가치가 매겨진다.

대표적인 가상화폐는 비트코인이나 이더리움등이 있다.

외환시장, 주식에 이어 새로운 가치에 투자함으로써 수익을 확보할 수 있는 기회의 시장으로 부상하고 있으며 주식시장과 달리 24시간 개장된 시장에서 거래가 이루어지고 수급 주체나 수익, 성장 기준 등이 모호하고 시장 규제가 없어 큰 수익을 낼 수도 그 반대가 될 수도 있다.

 

파이썬을 통해 아래와 같은 순서로 분석을 한다.

 

파이썬을 이용한 가상화폐 분석 순서
(파이썬을 이용한 가상화폐 분석 순서)

 

[가상화폐 시세 다운 및 시각화]

 

먼저 다음의 코드를 통해 프로그램 실행을 위한 기본적인 라이브러리를 불러오고 가상화폐의 시세를 불러온다.  

 

기본 라이브러리 및 시세 불러오기
(기본 라이브러리 및 시세 불러오기)

 

기존에 주식 시세 분석에 대해 알아볼 때에는 야후 Finance를 크롤링 하였는데, 이번 가상화폐의 시세를 가져오는 코드에서는 FinanceDataReader 라이브러리를 사용한다. 

만약 “FinanceDataReader”가 설치되어 있지 않다면 명령어 “! pip install finance-datareader”를 이용하여 설치할 수 있다.

분석의 대상 화폐는 비트코인(BTC)과 이더리움(ETH), 리플코인(XRF), 라이트코인(LTC)이며 달러 기준으로 2019년도부터 현재까지의 시세 데이터를 불러온다.

원화 기준으로 데이터를 보려면 ‘USD’대신 ‘KRW’로 바꾸면 된다.

 

불러온 결과 중 비트코인에 대한 결과는 아래와 같다.

 

비트코인 시세
(비트코인 시세)

 

다음의 코드는 각 가상화폐의 ‘Close’ 값만을 모아 ‘df’로 정의하기 위한 것이다.

불필요한 columns은 삭제하고 4개의 가상화폐 ‘Close’ 값을 넣고 column 이름을 변경한다.

 

가상화폐 'Close' 값 정리
(가상화폐 'Close' 값 정리)

 

위에 대한 결과는 아래와 같다.

가상화폐 "Close" 값 정리 결과
(가상화폐 "Close" 값 정리 결과)

위의 결과를 그래프로 표현하기 이전에 간단히 데이터의 평균이나 최댓값, 최솟값 등을 분석해 볼 수 있는데, 다음의 코드로 가능하다.

“df.describe()”

 

가상화폐 시세 간단 분석
(가상화폐 시세 간단 분석)

위와 같이 파이썬은 코드 한 줄로 데이터의 수, 평균, 표준편차, 최소값, 최댓값 등 분석이 가능하다.

위 결과를 보면 가상화폐간 가격 차가 상당히 많이 난다는 것을 알 수 있는데 그만큼 가상화폐 투자를 통해 수익을 올리는 것이 쉽지 않을 것 같다는 생각이 든다.

 

다음 코드는 각 가상화폐의 가격을 시각화하는 것이다.

데이터 시각화 코드
(데이터 시각화 코드)

 

기존에 데이터를 그래프로 시각화했던 것과 좀 다른 부분은 for 문을 사용하였다는 것이다.

‘my_crypto’에 있는 column의 값들은 for 문 내에서 column 별로 그려지며 ‘alpha’를 통해 그래프의 투명도를 주고 ‘lw’를 통해 그래프 선 굵기를 정했다.

for 문을 사용한 데이터의 시각화는 다른 프로젝트에서도 유용하게 쓰일 수 있을 것 같다.

각 그래프의 legend는 ‘upper left’를 통해 좌측 상단에 배치한다.

이렇게 해서 나온 결과는 아래와 같다.

 

데이터 시각화 결과
(데이터 시각화 결과)

확실시 그래프로 보면 비트코인의 가격이 타 코인의 가격에 비해 월등히 높다는 것을 쉽게 알아볼 수 있으며 가격의 변동폭 역시 쉽게 확인할 수 있다.



[Scaler를 통한 데이터 조정 및 시각화]

 

앞에서 알수 있듯이 비트코인의 가격이 다른 코인의 가격에 비해 월등히 높아 다른 코인의 가격을 확인하는 게 쉽지 않다.

그렇기 때문에 여기서 데이터 스케일 조정을 통해 좀 더 직관적으로 데이터를 볼 수 있게 한다.

데이터의 스케일 조정은 다른 말로 데이터를 표준화 한다고도 표현하는데 MixMaxscaler는 데이터를 0~1로 표준화해준다. 

요즈음에는 딥러닝과 같은 기계학습에서 데이터를 표준화할때 많이 사용한다.

여기서는 MinMaxscaler를 이용하여 0~100 사이의 수로 데이터를 표준화한다.

 

데이터 scale
(데이터 scale)

scaled 된 데이터는 아래의 코드를 이용하여 DataFrame 포맷으로 변경하여 ‘df_scale’에 저장한다.

 

DataFrame으로의 변경
(DataFrame으로의 변경)

‘df_scale’을 시각화하면 아래의 그림과 같다.

그래프로 시각화하는 코드는 앞에 얘기했으므로 반복해서 넣지 않도록 하겠다.

 

scaled된 데이터 시각화
(scaled된 데이터 시각화)

앞에서 비트코인과의 가격차 때문에 다른 코인의 가격을 확인하기 힘들었으나, 코인의 가격 데이터를 특정 범위 내의 값으로 표준화하면 위의 그림과 같이 각 코인의 가격 변동을 확인할 수 있다.

XRP의 경우 2020년 12월경에 가격이 최고치를 찍었고 기타 다른 코인들도 2021년 2월이나 3월에 최고가를 나타내고 있음을 알 수 있다.



[기타 분석]

 

이제부터는 몇 가지 추가적인 가상화폐 가격 추이에 대한 분석에 대해 알아본다.

 

(1) 일일 손익률(Daily Simple Return) 분석

이전날 가격에 대비 오늘 가격에 대한 손익을 퍼센티지로 나타낼 수 있다. 

코드는 아래와 같이 PCT_change()를 사용하여 DSR(=Daily Simple Return) 변수에 저장하는 내용이며 아주 단순하다. 

“DSR = df.PCT_change(1)”

 

결과를 그래프로 시각화하면 아래와 같다.

 

일일 손익률
(일일 손익률)

위의 그림에서 ‘+’ 값은 이득을 의미하고 ‘-’ 값은 손해를 의미한다.

위의 그림에서 ETH와 LTC는 2020년도 3월경 40%대의 하락이 있었음을 알 수 있고 2020년도 말부터 현재까지 XRP의 경우 손익률이 크게 변동하고 있는 것을 볼 수 있다.

 

반응형

 

(2) 변동성(Volatility) 분석

다음은 각 코인의 일일 손익률을 기반으로 한 변동성을 분석하는 것이다.

코드는 다음과 같다.

“DSR.std()”

 

결과를 보면 아래와 같이 XRP 코인이 가장 변동성이 크며 그다음은 LTC 코인이다. 

변동성이 크다는 의미는 그만큼 리스크가 있다는 의미이기도 하다.

비트코인 BTC는 가장 안정적인 것으로 분석된다.

 

변동성 분석 결과
(변동성 분석 결과)

(3) 화폐 간 연동성(Correlation) 분석

다음은 일일 손익률을 기반으로 각 화폐간 얼마큼 서로 연관관계가 있는지 분석하는 것이다.

코드는 다음과 같다.

“DSR.corr()”

 

아래의 결과를 보면 ETH 코인과 LTC 코인이 서로 79%로 가장 높은 연관관계를 갖고 있으며 BTC 코인과 XRP 코인은 52%로 가장 낮은 연관성을 갖고 있음을 알 수 있다.

화폐간 연동선 분석 결과
(화폐간 연동선 분석 결과)

위의 숫자로 된 결과보다 좀 더 직관적으로 연관성 결과를 확인하려면 아래 코드를 사용하여 시각화할 수 있다.

 

화폐간 연동성 시각화
(화폐간 연동성 시각화)

 

그래프 상에 데이터를 넣기 위해 ‘annot=True’로 설정하고 소수점 둘째 자리까지 퍼센티지 표현을 위해 ‘fmt=’. 2%’’를 설정하면 결과는 아래의 그림과 같다.

 

화폐간 연동성 시각화 결과
(화폐간 연동성 시각화 결과)

위의 그림에서 색이 진할수록 연관성은 낮아진다.

위와 같은 다른 코인과의 상관관계 분석을 통해서도 내가 관심 있는 코인의 미래를 예측해 볼 수 있겠다.



(4) 일일 누적 손익률(Daily Cumulative Simple Return) 분석 

마지막은 일일 손익률을 누적하여 분석하는 것이다.

시작을 1달러로 가정하고 2019년도부터 현재까지의 손익률에 대한 분석을 위한 코드는 다음과 같다.

“DSCR = (DSCR+1).cumprod()”

 

아래는 결과를 시각화한 것이다.

 

1달러 기준 누적 손익률 결과
(1달러 기준 누적 손익률 결과)

 

2019년에 1달러를 투자했다고 했을 때 BTC 코인의 경우 약 16달러로 16배 이득을 볼 수 있었고 ETH 코인의 경우는 이보다 조금 낮은 약 13배 정도의 이득을 볼 수 있었다.

XRP의 경우는 거의 이득이 없었다는 것을 알 수 있다.



여기까지 비트코인을 포함한 4개의 가상화폐에 대한 2019년도부터 현재까지의 시세 데이터를 통해 일일 손익률이나 변동성, 연관성 누적 손익률 분석을 하는 파이썬 코드를 알아봤다.

맨 처음에도 얘기했듯이 가상화폐를 전문적으로 분석하는 것이 아니고 파이썬의 데이터 분석과 시각화 공부가 중심이었다.

이번 주제를 통해 가상화폐 시세 데이터를 불러오고 변수간 차이가 큰 경우 데이터 표준화가 필요하며 손익률과 누적 손익률을 분석하는 코드 그리고 seaborn을 통한 데이터 분포 시각화도 공부할 수 있었다. 

 

반응형

댓글