[py] 파이썬으로 김프 계산하기

@codemaru · July 05, 2017 · 3 min read

requests 패키지가 있으면 편리하다. 아래 명령어로 requests 패키지 설치가 가능하다.

pip install requests

거래소가 많기 때문에 일단 기준 거래소를 정해야 가격 비교가 쉽다. 거래소가 비교를 위한 REST API를 제공하지 않으면 힘들다. 만약 제공하지 않으면 그냥 과감하게 그런 거래소는 빼도록 하자. 개념이 있는 대부분의 거래소는 REST API를 제공한다. 우리는 거래량이 많은 Bittrex와 Coinone의 가격을 토대로 김치 프리미엄을 계산해 보자.

Bittrex거래소의 API는 여기 설명 페이지를 참고하면 어떤 REST API를 제공하는지 알 수 있다. Coinone은 여기 설명 페이지를 참고하면 된다. REST API라는게 별 거 없다. 그냥 get이나 post 방식으로 명령을 주면 주로 json 형태로 응답을 주는게 전부다.

우리가 가격 비교를 위해서 사용할 Bittrex API를 알아보면 다음과 같다.

https://bittrex.com/api/v1.1/public/getticker?market=USDT-BTC

위 쿼리를 날리면 비트트렉스에서 가격 정보를 JSON 형태로 날려준다. 응답에서 우리가 참고할 부분은 success필드가 true인가 하는 것과 result의 Last 값이다.

Coinone API는 다음과 같다.

https://api.coinone.co.kr/ticker/?currency=BTC

위 쿼리 응답의 result가 success인지 체크하고 last 값을 사용하면 된다.

이제 프리미엄을 계산할 달러 환율만 있으면 된다. 달러 환율은 아래 사이트를 통해서 구할 수 있다. 똑같이 REST API 형태의 쿼리로 결과를 얻을 수 있다. 결과의 USD_KRW 필드의 val 값을 참조하면 된다.

https://free.currencyconverterapi.com/api/v5/convert?q=USD_KRW&compact=y

이제 준비물이 모두 모였다. 파이썬 코드를 작성해보자.

import requests
import json

resp = requests.get('https://free.currencyconverterapi.com/api/v5/convert?q=USD_KRW&compact=y').text
usd_krw = float(json.loads(resp)["USD_KRW"]["val"])

resp = requests.get('https://bittrex.com/api/v1.1/public/getticker?market=USDT-BTC').text
btc_usd = float(json.loads(resp)["result"]["Last"])

resp = requests.get('https://api.coinone.co.kr/ticker/?currency=BTC').text
btc_krw = float(json.loads(resp)["last"])

fprice = btc_usd * usd_krw
print('Bittrex: %d Coinone: %d KP: %.2f%%' % (fprice, btc_krw, btc_krw / fprice * 100 - 100))

각각 Bittrex 가격, Coinone 가격, 김치 프리미엄이 표기된다. +면 한국이 비싼거고, -면 한국이 싼 거라고 생각하면 된다. +면 Bittrex에서 사서 Coinone에서 팔고, -면 Coinone에서 사서 BIttrex에 파는 전략을 구사하면 완벽하다. 물론 거래 수수료와 전송 속도에 따른 불확실성을 헷징할 방법은 각자 찾는 걸로…​

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중