[패키지 소개] 암호화폐 시세와 인덱스를 제공하는 ubci 패키지를 소개합니다

R ubci crypto package

ubci 패키지 개발을 시작하였습니다.

true
2018-05-18

세줄요약

  1. 암호화폐 관련 시세와 인덱스 정보를 제공하는 ubci 패키지를 공개함.
  2. ubciupbit에서 제공하는 데이터로 비영리 배포는 자유라고 해서 개발함.
  3. 데이터 라이선스는 또 다른 문제이니 ubci 가서 확인바람.

암호화폐는 2017년의 붐을 기점으로 사회 곳곳에 그 존재감을 드러내고 있습니다. 여러 이슈가 있긴 하지만 국내에는 4대 거래소(빗썸, 업비트, 코빗, 코인원)외에도 새로운 거래소들이 속속 나타고 있는 중입니다. 이외에도 카카오와 라인(네이버)이 각각 암호화폐 전문 자회사를 세우는 등 기업의 관심이 그 어느때보다 높습니다.

아직 이슈가 안정적인 분야가 아니다 보니 이슈 파이팅이 그 어느 분야보다 중요한데요. 현시간 코인마켓캡 기준 전세계 거래량 6위쯤 되는 upbit가 코인 인텍스를 들고나왔습니다. 바로 UBCI입니다. 저도 관심이 가는 내용이라 사이트를 둘러보았는데, 데이터를 깨끗하게 제공하더라구요. 그래서 간단하게 R 패키지화 해보았습니다. 놀랍게도 패키지 이름은 ubci입니다.

## github에서 패키지 설치
remotes::install_github("mrchypark/ubci")

한글 데이터가 포함되어 있으니 인코딩이 UTF-8인지 확인해 주세요.

[1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"

함수 예

패키지가 리드미와 설명서를 제공하고 있지만 저도 다시 사용해 보겠습니다.

인덱스 코드 가져오기

ubci_index_options() 함수는 인덱스를 가져오기에 앞서 인덱스의 이름과 설명을 알려줍니다.

# A tibble: 26 × 4
   index    name                                cate           smry   
   <chr>    <chr>                               <chr>          <chr>  
 1 UBMI     UBMI(Upbit Market Index)            Market Indexes "It is…
 2 UBMI_ST  UBMI BTC quote(Upbit Market Index)  Market Indexes "It is…
 3 UBAI     UBAI(Upbit Altcoin Index)           Market Indexes "It is…
 4 UBAI_ST  UBAI BTC quote(Upbit Altcoin Index) Market Indexes "It is…
 5 UTTI     UBMI 10(Upbit Top 10)               Market Indexes "It is…
 6 UTHI     UBMI 30(Upbit Top 30)               Market Indexes "It is…
 7 THMIDX20 NFT & Collectibles                  Theme Indexes  ""     
 8 THMIDX21 Oracles                             Theme Indexes  ""     
 9 THMIDX22 IoT                                 Theme Indexes  ""     
10 THMIDX23 Smart Contracts                     Theme Indexes  ""     
# … with 16 more rows

자료형은 tbl로 되어 있네요. 주식 분석 패키지의 최강자인 tidyquant와 상성을 고려한 선택이었습니다. ubci_index_options() 함수는 lang 인자로 언어를 변경할 수 있습니다.

ubci_index_options(lang="ko")
# A tibble: 26 × 4
   index    name                                cate        smry      
   <chr>    <chr>                               <chr>       <chr>     
 1 UBMI     UBMI(Upbit Market Index)            시장 인덱스 업비트 거…
 2 UBMI_ST  UBMI BTC quote(Upbit Market Index)  시장 인덱스 UBMI 인덱…
 3 UBAI     UBAI(Upbit Altcoin Index)           시장 인덱스 업비트 거…
 4 UBAI_ST  UBAI BTC quote(Upbit Altcoin Index) 시장 인덱스 UBAI 인덱…
 5 UTTI     UBMI 10(Upbit Top 10)               시장 인덱스 업비트에 …
 6 UTHI     UBMI 30(Upbit Top 30)               시장 인덱스 업비트에 …
 7 THMIDX20 대체불가능 토큰                     테마 인덱스 NFT 자산… 
 8 THMIDX21 오라클                              테마 인덱스 오라클을 …
 9 THMIDX22 아이오티                            테마 인덱스 사물인터… 
10 THMIDX23 스마트컨트랙                        테마 인덱스 스마트컨… 
# … with 16 more rows

인덱스 데이터

ubci_index() 함수는 인덱스의 일별 시가, 고가, 저가, 종가, 거래량을 제공합니다. from,to 인자로 기간을 조절할 수 있습니다.

loi<-ubci_index_options()
loi$index[1]
[1] "UBMI"
ubci_index(loi$index[1])
# A tibble: 1,000 × 6
   index date           open     high      low    close
   <chr> <date>        <dbl>    <dbl>    <dbl>    <dbl>
 1 UBMI  2023-04-22 6169.914 6212.795 6121.631 6209.938
 2 UBMI  2023-04-21 6421.822 6445.108 6119.519 6168.685
 3 UBMI  2023-04-20 6500.100 6560.716 6369.886 6423.079
 4 UBMI  2023-04-19 6812.058 6824.046 6486.427 6508.215
 5 UBMI  2023-04-18 6693.523 6864.357 6620.453 6815.248
 6 UBMI  2023-04-17 6828.662 6829.781 6662.256 6695.011
 7 UBMI  2023-04-16 6827.484 6874.221 6798.592 6826.233
 8 UBMI  2023-04-15 6811.903 6862.126 6787.944 6827.564
 9 UBMI  2023-04-14 6749.026 6888.010 6730.551 6813.440
10 UBMI  2023-04-13 6641.552 6770.711 6625.907 6742.490
# … with 990 more rows
tail(ubci_index(loi$index[1], from="2018-05-15"))
# A tibble: 6 × 6
  index date           open     high      low    close
  <chr> <date>        <dbl>    <dbl>    <dbl>    <dbl>
1 UBMI  2020-08-01 2049.607 2167.811 2029.016 2158.541
2 UBMI  2020-07-31 1994.824 2062.920 1974.955 2050.174
3 UBMI  2020-07-30 1978.934 2005.418 1946.185 1994.665
4 UBMI  2020-07-29 1935.356 2016.314 1924.165 1981.866
5 UBMI  2020-07-28 1942.519 1982.472 1886.983 1935.062
6 UBMI  2020-07-27 1801.783 1990.225 1800.267 1942.809
ubci_index(loi$index[1], to="2018-05-15")
# A tibble: 0 × 6
# … with 6 variables: index <chr>, date <date>, open <dbl>,
#   high <dbl>, low <dbl>, close <dbl>
ubci_index(loi$index[1], from="2018-05-10", to="2018-05-15")
# A tibble: 0 × 6
# … with 6 variables: index <chr>, date <date>, open <dbl>,
#   high <dbl>, low <dbl>, close <dbl>

암호화폐 코드

ubci_get_options() 함수는 취급하는 암호화폐의 종류를 이름과 코드로 제공합니다.

# A tibble: 1,100 × 5
   code           name             exchange tradeStatus  marketState 
   <chr>          <chr>            <chr>    <chr>        <chr>       
 1 UPBIT.KRW-BTC  Bitcoin          UPBIT    ACTIVE       ACTIVE      
 2 UPBIT.KRW-DASH Dash             UPBIT    DELISTED     DELISTED    
 3 UPBIT.KRW-ETH  Ethereum         UPBIT    PREVIEW      ACTIVE      
 4 UPBIT.BTC-NEO  NEO              UPBIT    DELISTED     DELISTED    
 5 UPBIT.BTC-ETH  Ethereum         UPBIT    PREVIEW      ACTIVE      
 6 UPBIT.BTC-LTC  Litecoin         UPBIT    DELISTED     DELISTED    
 7 UPBIT.BTC-XRP  Ripple           UPBIT    PREVIEW      ACTIVE      
 8 UPBIT.BTC-ETC  Ethereum Classic UPBIT    PREVIEW      ACTIVE      
 9 UPBIT.BTC-OMG  OmiseGo          UPBIT    PREDELISTING PREDELISTING
10 UPBIT.BTC-CVC  Civic            UPBIT    PREVIEW      ACTIVE      
# … with 1,090 more rows

ubci_get_options() 함수 역시 한글 옵션을 제공합니다.

ubci_get_options(lang="ko")
# A tibble: 1,100 × 5
   code           name           exchange tradeStatus  marketState 
   <chr>          <chr>          <chr>    <chr>        <chr>       
 1 UPBIT.KRW-BTC  비트코인       UPBIT    ACTIVE       ACTIVE      
 2 UPBIT.KRW-DASH 대시           UPBIT    DELISTED     DELISTED    
 3 UPBIT.KRW-ETH  이더리움       UPBIT    PREVIEW      ACTIVE      
 4 UPBIT.BTC-NEO  네오           UPBIT    DELISTED     DELISTED    
 5 UPBIT.BTC-ETH  이더리움       UPBIT    PREVIEW      ACTIVE      
 6 UPBIT.BTC-LTC  라이트코인     UPBIT    DELISTED     DELISTED    
 7 UPBIT.BTC-XRP  리플           UPBIT    PREVIEW      ACTIVE      
 8 UPBIT.BTC-ETC  이더리움클래식 UPBIT    PREVIEW      ACTIVE      
 9 UPBIT.BTC-OMG  오미세고       UPBIT    PREDELISTING PREDELISTING
10 UPBIT.BTC-CVC  시빅           UPBIT    PREVIEW      ACTIVE      
# … with 1,090 more rows

암호화폐 시세 정보

ubci_get() 함수 또한 암호화폐의 일별 시가, 고가, 저가, 종가, 거래량을 제공합니다.

loc<-ubci_get_options()
loc$code[1]
[1] "UPBIT.KRW-BTC"
ubci_get(loc$code[1])
# A tibble: 400 × 7
   code        date           open     high      low    close   volume
   <chr>       <date>        <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
 1 UPBIT.KRW-… 2023-04-22 36337000 36560000 36055000 36541000 1173.189
 2 UPBIT.KRW-… 2023-04-21 37672000 37779000 36108000 36337000 5934.620
 3 UPBIT.KRW-… 2023-04-20 38300000 38572000 37400000 37672000 5515.282
 4 UPBIT.KRW-… 2023-04-19 39637000 39719000 38181000 38300000 6118.482
 5 UPBIT.KRW-… 2023-04-18 38700000 39847000 38251000 39630000 4976.832
 6 UPBIT.KRW-… 2023-04-17 39612000 39673000 38506000 38700000 5420.857
 7 UPBIT.KRW-… 2023-04-16 39800000 39981000 39600000 39607000 2393.495
 8 UPBIT.KRW-… 2023-04-15 39804000 39999000 39752000 39800000 1938.561
 9 UPBIT.KRW-… 2023-04-14 39912000 40333000 39470000 39804000 5561.144
10 UPBIT.KRW-… 2023-04-13 39694000 40198000 39689000 39911000 5171.073
# … with 390 more rows
tail(ubci_get(loc$code[1], from="2018-05-15"))
# A tibble: 6 × 7
  code         date           open     high      low    close   volume
  <chr>        <date>        <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
1 UPBIT.KRW-B… 2022-03-24 52138000 53416000 51800000 52966000 7289.942
2 UPBIT.KRW-B… 2022-03-23 51689000 52232000 51118000 52138000 5293.403
3 UPBIT.KRW-B… 2022-03-22 50128000 52396000 50013000 51704000 8395.367
4 UPBIT.KRW-B… 2022-03-21 50471000 50756000 49832000 50128000 4418.716
5 UPBIT.KRW-B… 2022-03-20 51245000 51350000 50001000 50462000 4050.029
6 UPBIT.KRW-B… 2022-03-19 50736000 51300000 50615000 51245000 5016.392
ubci_get(loc$code[1], to="2018-05-15")
# A tibble: 0 × 7
# … with 7 variables: code <chr>, date <date>, open <dbl>,
#   high <dbl>, low <dbl>, close <dbl>, volume <dbl>
ubci_get(loc$code[1], from="2018-05-10", to="2018-05-15")
# A tibble: 0 × 7
# … with 7 variables: code <chr>, date <date>, open <dbl>,
#   high <dbl>, low <dbl>, close <dbl>, volume <dbl>

라이선스 문제

ubci와 시세는 라이선스가 다를텐데요. ubci는 메인 페이지에서 데이터 라이선스와 법적 이슈에 대해 고지하고 있습니다. 시세는 제가 못찾은건지 데이터관런 라이선스 고지를 찾을 수가 없네요.

ubci는 비영리 배포에 대해 허용하고 있어 마음껏 작성하였구요. 시세는 하는김에 라는 느낌이라서 업비트에서 뭐라고 하면 내릴 계획입니다.

패키지 계획

만들다 보니 ubci의 세부 정보(ex> 구성 화폐시세와 비율, 추가 설명 등)가 함께 있으면 좋겠다 싶어서 추가하려고 계획하고 있습니다. 시세쪽은 지금은 데일리만 있는데, 분단위 정보를 제공하기는 하더라구요. 비정상 이용에 대해 막을 가능성이 높긴 하지만, 제한적으로나마 분단위나 15분 단위의 데이터를 제공하는 함수를 만들 수 있을 것 같습니다.

깃헙주소는 https://github.com/mrchypark/ubci 입니다. 재밌게 보신 분들은 별이라도 한번 눌러주시구요. 설명의 추가나 위에 예정중인 함수 작성, 테스트 케이스 작성등 패키지 개발을 위해서 아직 남은 일이 많은데요. 도움 주시는 분이 계시면 정말 감사할 것 같습니다.

언제나처럼 문의나 잘못된 점 등 알려주시면 반영하겠습니다. 감사합니다.

p.s 간단한 분석을 포함한 영문 포스팅을 해주실 용자분을 찾습니다. 해외에서도 관심가질만한 주제라고 생각해서 소개하고 싶은데, 제가 능력이 안되네요. 감사합니다.

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY-NC-ND 4.0. Source code is available at https://github.com/mrchypark/mrchypark.github.io, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

Citation

For attribution, please cite this work as

Park (2018, May 18). mrchypark: [패키지 소개] 암호화폐 시세와 인덱스를 제공하는 ubci 패키지를 소개합니다. Retrieved from https://mrchypark.github.io/post/패키지-소개-암호화폐-시세와-인덱스를-제공하는-ubci-패키지를-소개합니다/

BibTeX citation

@misc{park2018[패키지,
  author = {Park, Chanyub},
  title = {mrchypark: [패키지 소개] 암호화폐 시세와 인덱스를 제공하는 ubci 패키지를 소개합니다},
  url = {https://mrchypark.github.io/post/패키지-소개-암호화폐-시세와-인덱스를-제공하는-ubci-패키지를-소개합니다/},
  year = {2018}
}