암호화폐 정보를 위한 crypto2
최근 암호 화폐의 인기가 높아짐에 따라 암호 화폐 데이터에 대한 정보의
분석도 금융권 데이터 분석에 큰 화두가 되고 있다. 그러다보니 당연히
R에서도 암호 화폐를 전문적으로 다루는 패키지가 개발되었다.
crypto2
가 바로 그것인데 crypto2
는 지금은
제공되고 있지 않는 crypto
패키지의 개선판이다.
crypto2
에서 제공하는 정보는 암호화폐 정보를 전문적으로
다루는 https://coinmarketcap.com/의 정보를 기반으로 제공하는데
이 사이트에서 제공하는 API를 기반으로 제작되었다. 패키지 자체에서 모든
API 접속이 이루어지기 때문에 사용자는 API 접속 키를 따로 받지 않아도
사용할 수 있는 장점이 있지만 이 사이트에서 제공하는 정보에 한정된다는
단점도 있다.
crypto2
패키지에서는 총 7개의 함수를 제공하는데 이
함수들 중 주요한 함수를 살펴보겠다.
설치
crypto2
패키지는 현재(2020-08-20) CRAN에 정식 등록되어
있기 때문에 install.packages()
를 사용하여 간단히 설치가
가능하다.
if (!require(crypto2)) {
install.packages('crypto2')
library(crypto2)
}
암호 화페 리스트 가져오기
앞서 설명했듯이 crypto2
는 https://coinmarketcap.com/의 정보를 가져온다. 이
정보중에 가장 기본적인 것이 이 사이트에서 제공하는 암호화폐의 리스트를
알아보는 것일 것이다. CMC에서 제공하는 암호화폐의 종류는
crypto_list()
를 사용하여 가져올 수 있다.
crypto_list()
로 가져올수 있는 정보는 id, name, symbol 등
8개의 정보이고 이들은 tibble
형태로 반환된다.
<- crypto_list(only_active=TRUE)
list_crypto
glimpse(list_crypto)
## Rows: 9,662
## Columns: 8
## $ id <int> 1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 18, 25, 35, 37,~
## $ name <chr> "Bitcoin", "Litecoin", "Namecoin", "Terracoin", ~
## $ symbol <chr> "BTC", "LTC", "NMC", "TRC", "PPC", "NVC", "FTC",~
## $ slug <chr> "bitcoin", "litecoin", "namecoin", "terracoin", ~
## $ rank <int> 1, 21, 664, 1763, 744, 2394, 1391, 1991, 1708, 7~
## $ is_active <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ~
## $ first_historical_data <date> 2013-04-28, 2013-04-28, 2013-04-28, 2013-04-28,~
## $ last_historical_data <date> 2022-08-20, 2022-08-20, 2022-08-20, 2022-08-20,~
위의 결과에서 보이는 바와 같이 현재 CMC에서 제공하는 암호화폐 정보 중 현재 거래되고 있는 암호화폐 총 9,660개의 정보를 가져온다.
이중 ’Bitcoin’과 ’Dogecoin’의 정보는 다음과 같다.
|> filter(name %in% c('Bitcoin', 'Dogecoin')) list_crypto
id | name | symbol | slug | rank | is_active | first_historical_data | last_historical_data |
---|---|---|---|---|---|---|---|
1 | Bitcoin | BTC | bitcoin | 1 | 1 | 2013-04-28 | 2022-08-20 |
74 | Dogecoin | DOGE | dogecoin | 10 | 1 | 2013-12-15 | 2022-08-20 |
암호 화페 세부 정보 가져오기
CMC에서 제공하는 암호화폐의 종류를 가져왔으니 이제 분석 대상 암호
화폐의 세부 정보를 가져와야 한다. 특정 암호 화폐의 세부 정보를 가져오기
위해서는 crypto_info()
를 사용한다.
crypto_info()
는 crypto_list()
에서 가져온
데이터 중 분석 대상인 데이터에 대한 리스트를 매개변수로 전달하면
해당하는 암호 화폐에 대한 정보를 가져온다.
<- crypto_info(list_crypto |> filter(name %in% c('Bitcoin', 'Dogecoin')), finalWait=FALSE) info_crypto
## > Scraping crypto info
## Scraping https://web-api.coinmarketcap.com/v1/cryptocurrency/info?id=1,74 with 64 characters!
## > Processing crypto info
## > Sleep for 60s before finishing to not have next function call end up with this data!
glimpse(info_crypto)
## Rows: 2
## Columns: 19
## $ id <int> 1, 74
## $ name <chr> "Bitcoin", "Dogecoin"
## $ symbol <chr> "BTC", "DOGE"
## $ category <chr> "coin", "coin"
## $ description <chr> "## What Is Bitcoin (BTC)?\n\nBitcoin~
## $ slug <chr> "bitcoin", "dogecoin"
## $ logo <chr> "https://s2.coinmarketcap.com/static/~
## $ subreddit <chr> "bitcoin", "dogecoin"
## $ notice <chr> "", ""
## $ date_added <chr> "2013-04-28T00:00:00.000Z", "2013-12-~
## $ twitter_username <chr> "", "dogecoin"
## $ is_hidden <int> 0, 0
## $ date_launched <lgl> NA, NA
## $ self_reported_circulating_supply <lgl> NA, NA
## $ self_reported_market_cap <lgl> NA, NA
## $ tags <list> [<tbl_df[28 x 1]>], [<tbl_df[8 x 1]>]
## $ self_reported_tags <lgl> NA, NA
## $ urls <list> [<tbl_df[10 x 2]>], [<tbl_df[12 x 2]>~
## $ platform <lgl> NA, NA
crypto_info()
의 결과로 가져오는 정보는 총 19개의 열을
가진 tibble
객체이다. 이 객체의 열 중 2개는 중첩된
tibble
을 포함한다.
중첩된 tibble
은 다음과 같이 unnest()
를
사용하면 정보를 확인할 수 있다.
|> select(name, tags) |> unnest(tags) |> head() info_crypto
name | tags |
---|---|
Bitcoin | mineable |
Bitcoin | pow |
Bitcoin | sha-256 |
Bitcoin | store-of-value |
Bitcoin | state-channel |
Bitcoin | coinbase-ventures-portfolio |
|> select(slug, urls) |> unnest(urls) |> head() info_crypto
slug | name | url |
---|---|---|
bitcoin | website | https://bitcoin.org/ |
bitcoin | message_board | https://bitcointalk.org |
bitcoin | explorer1 | https://blockchain.coinmarketcap.com/chain/bitcoin |
bitcoin | explorer2 | https://blockchain.info/ |
bitcoin | explorer3 | https://live.blockcypher.com/btc/ |
bitcoin | explorer4 | https://blockchair.com/bitcoin |
암호 화페 가격 가져오기
암호 화폐를 분석하기 위해서 가장 필요한 것이 암호 화폐의 가격일 것이다. 이 데이터는 당연히 시계열 데이터로 다운로드 될 것이다.
암호 화폐 가격 데이터를 가져오기 위해서는
crypto_history()
를 사용한다. 여기서 가져오는 가격 정보는
주식 정보와 유사한 시가(Open), 고가(High), 저가(Low), 종가(Close)와 이
가격에 사용된 화폐, 거래량 등이다. 주식과 달리 암호 화폐는 장의 시작과
종료가 없기 때문에 CMC에서 측정하는 OHLC는 매일의 시작(0시 0분 0초)과
매일의 끝(23시 59분 59초)을 기준으로 산출된다.
<- crypto_history(list_crypto, limit=3, start_date="20220101", end_date="20220820", finalWait=FALSE) hist_crypto
## > Scraping historical crypto data
## > Processing historical crypto data
timestamp | id | slug | name | symbol | ref_cur | open | high | low | close | volume | market_cap | time_open | time_close | time_high | time_low |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2022-01-01 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 46311.74 | 47827.31 | 46288.49 | 47686.81 | 24582667004 | 902104193385 | 2022-01-01 | 2022-01-01 23:59:59 | 2022-01-01 17:49:00 | 2022-01-01 00:01:00 |
2022-01-02 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 47680.93 | 47881.41 | 46856.94 | 47345.22 | 27951569547 | 895688387523 | 2022-01-02 | 2022-01-02 23:59:59 | 2022-01-02 17:08:00 | 2022-01-02 18:35:00 |
2022-01-03 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 47343.54 | 47510.73 | 45835.96 | 46458.12 | 33071628362 | 878946596803 | 2022-01-03 | 2022-01-03 23:59:59 | 2022-01-03 12:19:00 | 2022-01-03 20:45:00 |
2022-01-04 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 46458.85 | 47406.55 | 45752.46 | 45897.58 | 42494677905 | 868383282082 | 2022-01-04 | 2022-01-04 23:59:59 | 2022-01-04 15:17:00 | 2022-01-04 19:03:00 |
2022-01-05 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 45899.36 | 46929.05 | 42798.22 | 43569.00 | 36851084859 | 824368284530 | 2022-01-05 | 2022-01-05 23:59:59 | 2022-01-05 10:11:00 | 2022-01-05 22:35:00 |
2022-01-06 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 43565.51 | 43748.72 | 42645.54 | 43160.93 | 30208048289 | 816685390313 | 2022-01-06 | 2022-01-06 23:59:59 | 2022-01-06 01:20:00 | 2022-01-06 09:59:00 |
crypto_history()
로 가져오는 가격 데이터의 간격은 매 1일
간격으로 가져온다. 만약 이 간격을 조절하기 위해서는 ‘interval’
매개변수를 사용한다. 다음은 주 단위로 가격정보를 가져오는 코드이다.
<- crypto_history(list_crypto, limit=3, start_date="20220101", end_date="20220820", finalWait=FALSE, interval ="weekly") hist_crypto_weekly
## > Scraping historical crypto data
## > Processing historical crypto data
timestamp | id | slug | name | symbol | ref_cur | open | high | low | close | volume | market_cap | time_open | time_close | time_high | time_low |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2022-01-03 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 47343.54 | 47510.73 | 45835.96 | 46458.12 | 33071628362 | 878946596803 | 2022-01-03 | 2022-01-03 23:59:59 | 2022-01-03 12:19:00 | 2022-01-03 20:45:00 |
2022-01-10 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 41910.23 | 42199.49 | 39796.57 | 41821.26 | 32104232331 | 791484886194 | 2022-01-10 | 2022-01-10 23:59:59 | 2022-01-10 05:01:00 | 2022-01-10 14:37:00 |
2022-01-17 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 43118.12 | 43179.39 | 41680.32 | 42250.55 | 21690904261 | 799910089279 | 2022-01-17 | 2022-01-17 23:59:59 | 2022-01-17 00:09:00 | 2022-01-17 22:18:00 |
2022-01-24 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 36275.73 | 37247.52 | 33184.06 | 36654.33 | 41856658597 | 694196560317 | 2022-01-24 | 2022-01-24 23:59:59 | 2022-01-24 20:59:00 | 2022-01-24 11:07:00 |
2022-01-31 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 37920.28 | 38647.26 | 36733.57 | 38483.13 | 20734730465 | 729073641688 | 2022-01-31 | 2022-01-31 23:59:59 | 2022-01-31 19:19:00 | 2022-01-31 02:07:00 |
2022-02-07 23:59:59 | 1 | bitcoin | Bitcoin | BTC | USD | 42406.78 | 44401.86 | 41748.16 | 43840.29 | 28641855926 | 830838884165 | 2022-02-07 | 2022-02-07 23:59:59 | 2022-02-07 19:46:00 | 2022-02-07 00:50:00 |
crypto_history()
에서의 암호 화폐 가격은 기본적으로 미국
달러(USD)로 설정되어 있다. 만약 이 통화를 다른 통화로 바꾸려면 ‘convert’
매개변수를 사용한다. ’convert’에서 하나 이상의 통화로 변환하기 위해서는
콤마(,)를 사용하여 통화의 이름을 명기해주면 각각의 통화로 변환된 행들이
추가되어 변환된다.
<- crypto_history(list_crypto, convert = 'EUR, KRW', limit=3, start_date="20220101", end_date="20220820", finalWait=FALSE) hist_crypto
## > Scraping historical crypto data
## > Processing historical crypto data
timestamp | id | slug | name | symbol | ref_cur | open | high | low | close | volume | market_cap | time_open | time_close | time_high | time_low |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2022-01-01 23:59:06 | 1 | bitcoin | Bitcoin | BTC | EUR | 4.071738e+04 | 4.204987e+04 | 4.069693e+04 | 4.192634e+04 | 2.161313e+10 | 7.931318e+11 | 2022-01-01 | 2022-01-01 23:59:59 | 2022-01-01 17:49:00 | 2022-01-01 00:01:00 |
2022-08-19 23:59:06 | 3 | namecoin | Namecoin | NMC | EUR | 1.105026e+00 | 1.106187e+00 | 1.022230e+00 | 1.029409e+00 | 5.569530e+03 | 1.516979e+07 | 2022-08-19 | 2022-08-19 23:59:59 | 2022-08-19 00:48:00 | 2022-08-19 21:49:00 |
2022-01-01 23:59:06 | 1 | bitcoin | Bitcoin | BTC | KRW | 5.505911e+07 | 5.686093e+07 | 5.503146e+07 | 5.669390e+07 | 2.922584e+13 | 1.072494e+15 | 2022-01-01 | 2022-01-01 23:59:59 | 2022-01-01 17:49:00 | 2022-01-01 00:01:00 |
2022-08-19 23:59:06 | 3 | namecoin | Namecoin | NMC | KRW | 1.479713e+03 | 1.479443e+03 | 1.370472e+03 | 1.380097e+03 | 7.466896e+06 | 2.033766e+10 | 2022-08-19 | 2022-08-19 23:59:59 | 2022-08-19 00:48:00 | 2022-08-19 21:49:00 |
거래소 리스트와 정보
crypto2
에서는 암호 화폐 자체의 정보외에 거래소에 대한
정보를 제공한다. exchange_list()
를 사용하면 암호 화폐를
거래하는 거래소 리스트를 가져오고 exchange_info()
는
거래소의 수수료나 거래량 등의 상세 정보를 가져올 수 있다.
<- exchange_list(only_active=TRUE) list_exchanges
|> head() list_exchanges
id | name | slug | is_active | first_historical_data | last_historical_data |
---|---|---|---|---|---|
16 | Poloniex | poloniex | 1 | 2018-04-26 | 2022-08-20 |
21 | BTCC | btcc | 1 | 2018-04-26 | 2022-08-20 |
22 | Bittrex | bittrex | 1 | 2018-04-26 | 2022-08-20 |
24 | Kraken | kraken | 1 | 2018-04-26 | 2022-08-20 |
34 | Bittylicious | bittylicious | 1 | 2018-04-26 | 2022-08-20 |
36 | CEX.IO | cex-io | 1 | 2018-04-26 | 2022-08-20 |
<- exchange_info(list_exchanges |> filter(name %in% c('Upbit', 'Bithumb', 'Korbit', 'Coinone')), finalWait=FALSE) info_exchange
## > Scraping exchange info
## Scraping exchanges from https://web-api.coinmarketcap.com/v1/exchange/info?id=174,194,200,351 with 69 characters!
## > Processing exchange info
id | name | slug | description | notice | logo | type | date_launched | is_hidden | is_redistributable | maker_fee | taker_fee | spot_volume_usd | spot_volume_last_updated | weekly_visits | tags | urls | countries | fiats | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
174 | 174 | Coinone | coinone | NA | https://s2.coinmarketcap.com/static/img/exchanges/64x64/174.png | 2014-06-11T00:00:00.000Z | 0 | NA | 0 | 0 | 130134802 | 2022-08-20 16:35:16 | 256177 | NA | twitter , chat , website , fee , https://twitter.com/CoinoneOfficial, https://coinone.co.kr/chat/ , https://coinone.co.kr/ , https://coinone.co.kr/fees/ | NA | KRW | ||
194 | 194 | Korbit | korbit | NA | https://s2.coinmarketcap.com/static/img/exchanges/64x64/194.png | 2013-07-25T00:00:00.000Z | 0 | NA | 0 | 0 | 7020274 | 2022-08-20 16:35:16 | 36030 | NA | website , fee , https://www.korbit.co.kr , https://www.korbit.co.kr/notice/?id=6yMDTqvYPYGaGKoBvzKVo2 | NA | KRW | ||
200 | 200 | Bithumb | bithumb | Since its launch, Bithumb has developed from a Korea-focused cryptocurrency exchange to one that serves the global market. Bithumb aims to become a comprehensive digital financial corporation based on the blockchain. |
- General Inquiry: info@bithumbcorp.com
- Listing Inquiry: listing@bithumbcorp.com
- Partnerships: partnership@bithumbcorp.com
- Medium: https://medium.com/bithumb-official-blog https://s2.coinmarketcap.com/static/img/exchanges/64x64/200.png
2014-01-01T00:00:00.000Z 0 NA 0 0 600960260 2022-08-20 16:35:16 381684
NA twitter , chat , website , fee , blog , https://twitter.com/BithumbOfficial , https://t.me/BithumbExchange , https://www.bithumb.com/
, https://en.bithumb.com/customer_support/info_fee, https://blog.naver.com/bithumb_official NA KRW
351 351 Upbit upbit NA https://s2.coinmarketcap.com/static/img/exchanges/64x64/351.png 2017-10-24T00:00:00.000Z 0 NA 0 0 1509503596 2022-08-20 16:35:16 1635996 NA twitter , chat , website , fee , https://twitter.com/upbitglobal , https://pf.kakao.com/_DWxgVxl , https://upbit.com/ , https://upbit.com/service_center/guide NA KRW
각각 거래소의 수수료와 거래량은 다음과 같이 알아볼 수 있다.
|> select(name, contains("fee"), contains("spot")) info_exchange
name | maker_fee | taker_fee | spot_volume_usd | spot_volume_last_updated |
---|---|---|---|---|
Coinone | 0 | 0 | 130134802 | 2022-08-20 16:35:16 |
Korbit | 0 | 0 | 7020274 | 2022-08-20 16:35:16 |
Bithumb | 0 | 0 | 600960260 | 2022-08-20 16:35:16 |
Upbit | 0 | 0 | 1509503596 | 2022-08-20 16:35:16 |
'금융 데이터 분석' 카테고리의 다른 글
plotly를 사용한 동적 주가 그래프 그리기 in R (0) | 2022.11.23 |
---|---|
세계은행(World Bank) 데이터 사용 in R (0) | 2022.09.20 |
환율 데이터 가져오기 in R (0) | 2022.07.07 |
주가 그래프 그리기 in R (0) | 2022.07.01 |
주가 데이터 가져오기 in R (0) | 2022.07.01 |
댓글