티스토리 뷰

[연재]
-
[트레이딩] 주문 매칭 알고리즘
코빗 대량 BTC 판매사태 분석

 

지난 글 - 매칭 엔진 알고리즘 - 관련 글을 쓰려던 이유는 즉, 순차적인 order처리가 가장 중요하다는 이야기를 하고 싶어서 였다.

그런데, 오늘 코빗에서 매우 핫한 일이 발생해서... 그 일을 먼저 알아보자.

 

호가창 끝쪽이 아닌 중간에 있는 것을 거래할 수 있을까?

그러니까 호가창으로 보자면 아래 그림에서 파란 부분을 건너뛰고 빨간 부분을 거래할 수 있느냐 하는 것이다.

왈가왈부

그러니까 거래엔진에서는 안되는 이유는 매칭 엔진이 그렇게 짜여 있기 때문이다.

 

봉준호 감독님 오스카상 4관왕 축하드립니다!

 

 

그러니까... 난 잘 모르겠다. 이쪽 업계에 깁ㅍ숙히 관여해본게 아니라서. 아무리 막장 거래소라도 오더북을 넘어선 거래를 본 적은 없다. 하지만 만약 그게 가능하다면... 주문 매칭 알고리즘에 손을 댔다면 스캠 정도의 사기가 아니라 그냥 범죄라 생각하고 있다.

비교하자면 이정도 수준

 

 

여튼 다시 돌아와서... 다음 바이낸스의 BTC-USDT 마켓이 있다고 보자.

호가창이 다음과 같을 때 1 BTC를 9882 USDT로 판매할 수는 없다. 이게 가능하려면 다음 처럼 해야 한다.

  • 9899 USDT → 9883 USDT 에 해당하는 대략 20 BTC정도의 주문을 뚫어야! 한다.
  • 기적적으로 모세의 기적을 만들어 9882 USDT로 매도할 수 있다.
    여기서 모세의 기적이란
    1. 내가 주문하기 전 20 BTC 정도 되는 수많은 주문들이 모두 취소 되었다가
    2. 내가 9882 USDT에 매도하고
    3. 다시 수많은 주문들이 원복이 되어야 한다.

 

물론 모세의 기적이 일어날 확률은....

행성이 직렬로 되어 지구가 멸망할 정도의 확률

 

 

그러나 간혹 나타난다.

 

사건1.

프로피(PRO) 코인. 업비트 BTC마켓 상공에서 2019-10-29에 등장. 평균가 0.00001000 BTC정도에서 800% 상승한 0.00009000 BTC에 거래됨

 

사건2.

아르고(AERGO), 업비트 BTC마켓 지하에서 2019-10-29에 등장. 0.00000500 BTC 시세였으나 순간적으로 0.00000182 까지 60% 이상 하락함

 

원인.

비트렉스와 결별로 없어진 BTC마켓 일부가 재개되면서, 모든 주문이 없는 상태에서 고점/저점 주문이 생성되었고, 그게 체결되었음

 

사건3.

비티유프로토콜(BTU)가 업비트 BTC마켓 상공에서 2019-11-01에 등장. 0.00002500 BTC 시세의 코인이 500% 상승한 0.00016000 BTC에 거래됨

 

사건4.

메트로놈(MET)이 업비트 BTC마켓 상공에서 2019-11-01에 등장. 0.00010000 BTC 시세가 0.00030000 BTC까지 200% 상승함

 

원인.

공지 참조

 

 

참고로 옛날엔 이런일도 있다. 쎄타토큰이 업비트 KRW마켓에 상장하는 날 3000% 이상 상승했던 것. (7원→250원)

 

옛날엔 그랬다. 자세한 설명은 밑줄

 

오늘은 진짜가 나타났다.

 

출처: 코인데스크코리아

 

 

그러니까 이건 진짜 실제로 그것이 발생했다!

이건 UFO가 아니라, 실제로 바닥을 쳤다. 중간에 호가가 얼마나 있었는지 모르겠지만 중간의 호가를 모두 체결하고 1000원까지 바닥을 찍은 것이다.

 

 

API (Application Programming Interface)

...설명 순서가 꼬였는데, 거래소가 투명하냐 투명하지 못하느냐를 따질 때 보는 하나가 거래소에서 API를 제공하고 있는지의 여부이다.

 

API가 무엇이냐 하냐면...

하양이아빠의 정말 쉬운 암호화폐 이야기 <용어편 - API, UX, NDA, Dusting Attack> 에 나와있다.

 

그러니까 API는 프로그래밍덕후들이 쓰는 도구이긴 하다. 프로그램들을 API에 연결해서 정보도 받고 거래도 하기 위해 쓰는 것이긴 한데, 본인이 이걸 쓰지 않아도 거래소에서 API를 지원하는지 여부는 중요하다. 왜냐하면 API에서 호가창, 거래내역등을 제공하기 때문에 이 거래소가 투명하게 거래되는지 스스로 알리는 부분이기 때문이다.

 

대부분 좋은 거래소들은 별도의 인증 없이 거래소 마켓에 대한 데이터를 제공한다. 주로 제공하는 것들은 24시간 통계, 시세, 호가, 그리고 거래내역(trade history)이 있다. 거래소에서 하는 거래내역이 투명하게 제공되는지는 매우 중요하다. 코인마켓캡이나 코인겍코같은 곳에서도 이런 데이터를 받아 사용하고 있다. 특히 거래내역은 매우 중요하다.

 

코빗 BTC 덤핑 분석

API는 개발자의 전유물은 아니다. 어느정도 지식이 있으면 일반인도 이용할 수 있다. 그래서 금일 코빗 BTC 덤핑을 분석해보자.

오늘은 거래내역(trade history)를 이용할 것인데, 거래소의 거래내역은 매우 큰 데이터라 (거래소가 활성화될수록 거래가 많이 발생함) 대부분 최근 1시간 또는 1일정도의 데이터만 제공한다.

 

API 문서 확인

코빗의 API는 이곳에 있다.

 

이 중 공개 - 체결내역이 거래내역(trade history)이다.

대상 주소와 파라미터를 확인한다. 다행히 time 파라미터가 있으며, day 까지 있는 것을 보니 최근 24시간 까지 확인이 가능한 것 같다.

 

위에 보면 https://api.korbit.co.kr/v1/transactions 기본 주소이고, 파라메터는 처음에 ? 그 다음엔 &로, 값은 =로 연결하면 된다.

 

즉, BTC-KRW 마켓의 24시간 거래 내역을 가져 오려면 다음 주소를 접속하면 된다.

https://api.korbit.co.kr/v1/transactions?currency_pair=btc_krw&time=day

 

브라우저로 접속해보면

양질의 데이터가 나온다.

 

보통은 JSON이라고 하는 형식의 파일로 저장이 되는데 참으로 보기 어렵다. 일반인은 역시 엑셀인데... 이걸 일단 저장한다. 다른이름으로 저장 등을 눌러 저장하면 된다.

 

결론적으로 다음과 같이 메모장에서 깨끗하게 텍스트 형식으로 보여야 한다는 것이다.

 

 

JSON따위 CSV로 바꿔줘!

 

세상은 넓고 서비스는 많다. 구글에서 JSON TO CSV를 검색하면 개발스러운 JSON 파일을 CSV로 변환 시켜주는 서비스가 많이 나온다. 그 중에 하나(https://json-csv.com/)를 골라 들어가보면

 

영어는 몰라도 버튼 누르고 다운 받은 파일 업로드

 

잘 저장 되었다. CSV나 XLSX 파일로 다운받읍시다.

그래서 엑셀로 열면...

대강 좋은 느낌이 온다.

 

여기서 tid라는 부분은 거래소에서 주문을 처리하기 위한 주문번호라 생각할 수 있다. price는 가격. amount는 수량. type는 매수/매도 주문을 의미한다.

timestamp는? 시간을 나타내는데, 보통 특정 시점으로 부터의 밀리초 또는 초로 나타낸다. 뭐... 시간을 나타낸다 생각하고, 역시 엑셀에서 변환을 하면 되겠다.

 

대강 밀리세컨드라 다음과 같이 변환하면 된다.

=(A2/ 86400000) + DATE(1970,1,1)

대강 복사해서 만들면 다음과 같이 숫자가 되는데

날짜 형식으로 바꿔주면 끝

 

 

본격 거래 내역 데이터 분석

분석1

 

X축 : 시간으로 나와있지만 한칸당 한 주문이다. 즉, 우측으로 갈 수록 주문이 하나씩 늘어나는거. 실제로 하락하기 시작한 때(빨간색)가 오후 12:00정도 되었고, 종료할 때(갈색)가 오후 1:30정도까지가 된다. (시계열로 하면 너무 뭉쳐져서...)

Y축 : 체결가격

  • 빨간색 : 처음엔 11,050,000원으로 유지되다가, 중간부터 1,000원까지 미친듯이 매도주문을 한다. 실제 시간을 보면 10여분간 계속 매도주문을 한다. 팔릴때까지. 땅이 뚫릴때까지
  • 주황색 : 중간중간 재정거래봇에 의해 11,000,000원대 buy 주문이 들어간 것일 것이다. 물론 두께가 얇고 중간 부분은 주문이 없어서 바로바로 매도 체결되어 1,000원을 향해 가는 것 처럼 보인다.
  • 노란색 : 마찬가지로 띄엄띄엄 있는데, 마찬가지로 몇개월 이상 묵은 중간 주문들이 없어 바닥 최저가 까지 도달하고 만다.
  • 갈색 : 막판에는 최저가 까지 도달하지 못하는데, 아마 중간에 매수주문이 많이 있었을 것이다. 반면 프로그램은 몇분 지난 후에도 오작동을 한다.

 

 

+ 보완

그러니까. 갑툭튀 위가 나왔는데, 실제 시간은 10~20분ㄴ 채 안된다. 아래 그래프는 12시~1시반의 그래프이고, 12시반 이후 10~20분정도 가격추이가 된 것

 

 

아래 그래프는 1시간 30분간 주문당 한 칸 이라고 했을때, sell은 파란색, buy는 빨간색으로 나타낸 것. 수량의 가중치는 없고 오직 가격만으로 본 그래프

 

 

 

분석2.

2-1. 1백만 단위의 히스토그램

 

  • 판매금액 구간을 나눔. 예를들어 1백만미만은 1,000원 ~ 1,000,000원에 팔린 대상이고, 2백만미만은 1,000,000원~2,000,000원에 팔린 대상이다.
  • 수량은 BTC의 합
  • 즉, 130 BTC는 1백만원 이하에 판매되었고, 400 BTC정도가 시세 (11,500,000원) 이하로 판매되었다.

 

2-2. 1십만 단위의 히스토그램

 

  • 분석2와 동일. 이번엔 1백만 단위가 아닌 1십만 단위로. 즉, 1BTC가 1십만원 이하로 팔린 수량이 약 100 BTC가 됨. 진짜 1만원에 BTC를 산게 100개 가까이 된다는 것. (10%만 싸게 사도 대박인데...)

 

분석3

기간(1시간 30분 time frame)동안 SELL 주문 및 BUY 주문.

BUY주문의 경우 재정봇에 의해 생성이 되었기에 3백만원, 5백만원 이런식으로 안되고 10백만원 가까이 된 듯 함. 물론 SELL의 경우 대중 없이 땅파기였지만....--> 아마 재정봇이 아니라 MM 봇이 더 맞을 듯 하다. 

 

정확한 시작/종료/주체등은 모르지만, 대략 500 BTC급의 대형 매도 폭탄이었음

 

 

결론

대박사건... 아마 매도봇 잘못돌린 분은 타격이 꽤 크실 것 같다. ㅠㅠ

 

 

 

공지채널 : https://t.me/sohwak

소확코인 : 휴식중;;

 

잡담 -> 개나리반(포탈) or 밋업방에 거주중

댓글
최근에 올라온 글
Total
Today
Yesterday