봇의 전투 : 시장 조성자가 암호 화폐 거래소에서 싸우는 방법

2017 년 12 월부터 2018 년 3 월 사이에 저는 약 5 천만 달러 상당의 암호 화폐 시장 조성 거래를 실행하는 봇을 구축했습니다. 이것이 제가 어떻게 시장을 만들 었는지에 대한 이야기, 봇의 알고리즘 뒤에있는 이론, 시장 조성자 사이에서 성장한 경쟁에 대한 이야기입니다.

FOMO

2017 년 11 월 — 비트 코인 가격이 10,000 달러까지 빠르게 상승하고 있습니다. 기하 급수적 인 가격 상승은 매주 더 많은 투자자를 끌어 들이고 가격을 더 끌어 올리면서 주류의 의식으로 나아가고 있습니다.

이 기간 동안 저는 두 명의 친구와 함께 휴가를 떠납니다. 이 두 친구는 모두 자신의 돈을 비트 코인에 투자했고 가격 상승으로 이익을 얻었습니다. 투자를 고려한 적도 없었던 세 명 중 단 한 명이기 때문에 놓치고있는 것 같습니다.

여행을 마치고 집에 돌아 왔을 때 가장 먼저하는 일 중 하나는 온라인 암호 화폐 거래소를 찾아 계좌에 500 달러를 입금하는 것입니다. 파도를 타고 싶을 때 내 계획은 간단합니다. $ 500 상당의 비트 코인을 구입하고 수익이 보이면 투자를 늘리세요.

스프레드

하지만 500 달러 투자에 대한 방아쇠를 당기기 전에 이상한 점을 발견했습니다. 내가 거래하고 있던 거래소는 ‘스프레드’가 크다. 스프레드가 무엇이며 이것이 중요한 이유를 이해하려면 교환 작동 방식에 대한 몇 가지 기본 사항을 살펴 봐야합니다.

일반적으로 주식과 같은 교환 거래 자산을 생각할 때 우리는 그것을 사고 팔 수있는 고정 가격을 가지고 있다고 생각합니다. 예를 들어, 가격이 $ 100 인 Apple (AAPL) 주식을 생각할 수 있습니다. 실제로는 단일 가격이 아니라 두 가지 다른 가격이 있습니다.

대부분의 구매자는 판매자가 판매하려는 것보다 적은 금액을 지불 할 의향이 있으므로 자산의 입찰 가격은 항상 요청 가격보다 낮습니다.

Apple 주식의 경우이 두 가격이 매우 가깝습니다. 입찰 가격은 $ 99.99이고 요청 가격은 $ 100.01입니다. 이 두 숫자 (0.02 달러)의 차이가 스프레드 입니다.

애플과 같이 인기 있고 안정적인 주식의 스프레드는 작습니다. 그 이유는 주식을 매수하려는 사람들이 항상 많기 때문에 매수 가격이 상승하고 매도 의사가 많아 매도 가격이 하락합니다. 구매자와 판매자 사이의 경쟁은 입찰을 밀고 가격을 서로 가깝게 요구합니다.

처음 비트 코인 거래소를 살펴보기 시작했을 때 스프레드는 훨씬 더 컸으며 종종 최대 100 달러였습니다. 이 기간 동안 비트 코인은 약 $ 10,000에서 거래되었으며, 이는 스프레드가 전체 가치의 최대 1 % 일 수 있음을 의미합니다 (애플 예제에서는 0.02 %에 불과했습니다.

비트 코인 스프레드의 규모는 2017 년 12 월에 발생한 시장 혼란의 결과였습니다. 소매 투자자 (당신, 나, 평범한 사람)가 시장에 몰려 들었습니다. 그 결과 가격 변동이 너무 커서 스프레드가 안정화 될 수 없었습니다.

큰 스프레드는 나쁜 것으로 들릴 수 있으며 어느 정도 그렇더라도 수익 기회를 제공합니다.

비트 코인의 입찰 가격이 $ 9,900이고 요청 가격이 $ 10,000이며 스프레드가 $ 100이라고 가정 해 보겠습니다. 비트 코인 1 개를 $ 9,900에 구매 한 후 즉시 $ 10,000에 판매 할 수 있다면 방금 $ 100의 수익을 올린 것입니다.

메이커 및 테이커

너무 좋게 들려서 사실이라고 생각하지 않으신다면 맞습니다. 위 내용에 회의적인 이유 중 하나는 교환 수수료는 어떻습니까? 수수료가 여기에 어떻게 적용되는지 확인하려면 교환이 작동하는 방식을 약간 우회해야합니다.

9,900 달러의 입찰 가격과 10,000 달러의 매도 가격으로 거래되는 비트 코인을 사고 싶다고 가정 해 보겠습니다. 여기에는 크게 두 가지 방법이 있습니다.

먼저 제조업체 주문을 제출할 수 있습니다. 여기에서 매도 가격 ($ 0에서 $ 10,000 사이)과 구매하려는 수량까지 가격을 지정합니다. 누군가가 와서 그 주문을 받아들이기로 결정할 때까지 귀하의 주문은 거래소에 있습니다. 가격이 얼마나 높고 거래소의 거래량에 따라 밀리 초 또는 며칠 후에 발생할 수 있습니다.

또는 테이커 주문을 제출할 수 있습니다. 이것은 메이커 주문과 정반대이며, 즉시 비트 코인을 구매할 수 있습니다. 하지만 문제는 테이커 주문이 모든 판매 메이커 주문 중 가장 낮은 가격과 일치한다는 것입니다. 당연히 이것은 매도 가격이 될 것입니다. 왜냐하면 이것은 누구라도 기꺼이 팔고 자하는 가장 낮은 가격이기 때문입니다.

진행하기 전에 Maker & amp; 테이커 주문 :

이 마지막 요점은 대부분의 거래소가 갖는 수수료 구조를 설명하는 데 도움이되므로 매우 중요합니다. 거래소는 유동성을 극대화하기 위해 일반적으로 메이커 주문보다 테이커 주문에 더 높은 수수료를 부과합니다. 내가 사용했던 거래소를 포함한 일부 거래소에서는 수수료 만 청구합니다. 메이커 주문에는 수수료가 0 %입니다.

이전 예로 돌아갑니다. 비트 코인을 $ 9,900에 구매하고 메이커 주문만으로 $ 10,000에 판매 할 수 있다면 거래하는 각 비트 코인에 대해 100 달러의 순수 수익을 얻게됩니다.

메이커 주문을 사용해야하는 이유는 수수료를 피하는 것뿐만 아니라 테이커 주문을 사용하여 구매 한 경우 매도 가격 인 $ 10,000를 지불해야한다는 사실에서 비롯됩니다. 그런 다음 테이커 주문을 통해 판매 한 경우 입찰 가격 ($ 9,900)에 판매해야 $ 100를 잃게됩니다.

따라서 메이커 주문을 사용하면 매수 호가로 매수하고 매도 호가로 매도함으로써 거의 이익을 보장 할 수 있습니다. 그러나 마지막 문제는 프로그래밍 방식으로이를 수행 할 수있는 알고리즘을 만드는 데 가장 큰 도전이되었습니다.

앞서 언급했듯이, 메이커 주문은 거래가 발생하기 전에 테이커 주문을 받아 ‘취득’해야합니다. 테이커 주문은 항상 최상의 가격을 ‘취득’합니다. 메이커 주문을 통해 비트 코인을 구매하려면 테이커 주문이 주문과 일치하도록하려면 입찰 가격 바로 위에 입찰해야합니다. 입찰 가격보다 얼마나 높은지는 중요하지 않습니다. 예를 들어 1 센트 단위로 적을 수 있습니다. $ 9,900.01.

따라서 시장 만들기 봇을 작성하는 첫 번째 단계는 현재 입찰 가격 바로 위에 매수 (메이커) 주문을 할 수있는 것입니다. 입찰 가격을 확인하기위한 하나의 API 요청과 주문을 제출하기위한 다른 API 요청이 필요합니다.

이론적으로는 입찰가보다 1 센트 높게 입찰하는 것이 좋습니다. 그러나 실제로는 입찰 가격을 확인하고 주문을 제출하는 사이에 입찰 가격이 자주 변경됩니다. 귀하의 주문이 다른 모든 구매 주문보다 높고 새로운 입찰 가격을 설정하도록하려면 현재 입찰 가격보다 5 ~ 10 ¢ 높게 입찰하는 것이 좋습니다.

이렇게하면 (테이커) 매도 주문이 들어 오면 당사의 (메이커) 매수 주문과 일치하게되며 수수료 손실없이 비트 코인을 얼마만큼 구매할 수 있습니다.

그러면 판매 측면에서 방금 수행 한 것과 정반대의 작업을 수행 할 수 있습니다. 현재 매도 가격을 확인하고 그보다 몇 센트 낮은 가격으로 입찰합니다. 이렇게하면 (테이커) 매수 주문이 들어 오면 (메이커) 매도 주문과 일치하게됩니다.

스프레드 (매수 호가와 매도 호가의 차이)에 비트 코인을 거래 할 수있는 양을 곱한 것과 거의 동일한 수익을 올렸습니다.

경쟁

여전히 이것이 사실이라고하기에는 너무 쉽다고 생각한다면 여전히 맞습니다. 분명한 수익 기회가있을 때마다 트레이더가 쌓이고 이로 인해 경쟁이 발생합니다. 이에 대한 가장 분명한 예는 입찰 가격을 설정하기 위해 서로 밀집하는 시장 조성자들이 만든 경쟁을 보면 알 수 있습니다. (다음에 판매자의 테이커 주문이 들어올 때 거래를 실행하려면 입찰 가격으로 구매 주문을해야합니다.)

2017 년 12 월에는 경쟁이 너무 치열하여 입찰가가 일반적으로 초당 여러 번 변경되었습니다. 거래자들이 입찰 가격을 설정하는 시간을 최대화하기 위해 서로 싸웠으며 동시에 가능한 한 낮은 가격을 제시하기를 원했기 때문에 종종 1 ~ 2 센트 만 증가합니다.

내 봇은 처음에 입찰 가격을 확인하고 1 ¢ 더 높게 입찰했습니다. 처음에는 당연해 보였지만 주문이 처리 될 때쯤에는 입찰 가격보다 몇 센트 낮다는 것을 알았습니다.

이 문제를 해결하고 최대한 많은 주문이 현재 입찰 가격을 능가 할 수 있도록 입찰 가격이 일반적으로 100ms마다 변경되는 정도를 측정했습니다. 이를 통해 내 봇이 입찰 가격보다 충분히 높은 가격 (~ 5 ¢ 더 높음)을 제공 할 수 있었으므로 내 주문이 처리되는 동안 다른 거래자들이 내 가격을 이길 수 없었습니다.

또한 스프레드의 크기가 현재 입찰 가격에 대해 제공 할 의사가있는 금액에 어떤 영향을 미칠지 고려하기 시작했습니다. 앞서 살펴본 것처럼 모든 거래의 수익은 스프레드 크기에 정비례합니다. 이로 인해 스프레드가 클 때 입찰 가격을이기는 것이 더욱 중요해졌습니다. 이 때문에 나는 스프레드의 크기에 따라 내가 제안 할 입찰 가격보다 훨씬 더 높은 공식을 작성했습니다.

지금까지 시장 조성의 구매 측면에 대해 대부분 이야기했지만 판매는 똑같이 작동합니다. 비트 코인을 구입하자마자 (더 높은) 매도 가격으로 오프로드해야합니다. 매도 가격과 마찬가지로 매도 가격에 경쟁이있을 것이므로 현재 매도 가격보다 몇 센트 낮은 매도 가격을 제시하여 경쟁사를 약화시켜야합니다.

그러나 2017 년 말 / 2018 년 초에는 일반적으로 매도 가격에 대한 경쟁이 훨씬 적었습니다. 당시 나는 이것이 비트 코인 공급보다 수요가 더 많기 때문이라고 생각하고 판매자보다 구매자 사이에 경쟁이 더 많은 이유를 설명했습니다.

시장 조작

시장 조작은 거래자가 불공정 한 이익을 얻기 위해 시장에서 사용하는 다양한 악의적 인 전술을 말합니다. 규제되지 않은 시장으로서, 암호 화폐 거래소는 시장 조작으로 무르 익었습니다. 가장 빈번한 조작 방식은 스푸핑 이라고 불리는 것으로 단순히 시장 상황의 모양을 변경하기 위해 주문하는 행위입니다.

이 작동 방식의 예를 제공하려면 입찰 가격이 $ 9,900이고 매도 가격이 $ 10,000 인 앞의 예를 고려하십시오. 여기서 우리의 스프레드는 $ 100이며, 이는 시장에서 좋은 기회를 제공합니다. 그러나 누군가가 와서 $ 9,999.99의 가격으로 매수 주문을하면 스프레드는 단 1 ¢로 축소됩니다. 스프레드가 너무 작 으면 시장 조성으로 이익을 얻는 것이 불가능 해 보이고 모든 활동이 중단됩니다.

매수자가 매도 호가보다 1 ¢ 아래로 메이커 주문을하는 것은 그 자체로 시장 조작이 아닙니다. 실제로 거래소에서 메이커 수수료를 청구하지 않는 경우 이는 빠른 & amp; 비트 코인을 구매하는 효율적인 방법. 그러나 문제는 이러한 매수 주문이 나타날 때마다 일반적으로 가능한 한 가장 적은 양에 해당한다는 것입니다. 0.00001 비트 코인, 약 10 ¢.

다른 시장 조성자가 매도 가격 바로 아래에 이렇게 작은 매수 주문을하는 이유는 천재적입니다. 다른 시장 조성자가 방금 입찰 가격으로 비트 코인을 구매할 수 있었다면 가능한 한 빨리이를 매도 가격으로 판매 할 인센티브를 갖게됩니다. 비트 코인을 판매하는 데 시간이 오래 걸릴수록 매도 가격 (따라서 스프레드) 이동 및 수익 변동의 위험이 커집니다.

물론 이번에는 가격이 하락할 확률만큼이나 가격이 상승 할 가능성이 있다고 말할 수 있습니다. 하지만 시장 조성자는 이것에 대해 신경 쓰지 않습니다. 그들의 임무는 가격을 추측하는 것이 아니라 가능한 한 빨리 출입하는 것입니다.

가격 하락을 막고 매도 측의 경쟁이 매도 가격을 내리는 것을 막기 위해 시장 조성자는 매도 주문을 매도 가격 바로 아래에 놓고 ( ‘스푸핑 된’) 매수 주문을 삽입합니다. 가격보다 낮습니다. 이 후자의 주문은 가능한 한 주문 크기가 작습니다 (0.00001 비트 코인).

두 가지 효과가 있습니다.

이 두 번째 요점은 스푸핑 된 구매 주문이 매도 가격 바로 아래로 내려갈 때 거의 모든 시장 제작 봇이 꺼지는 이유를 설명하기 때문에 중요합니다. 하지만 실제로는 스프레드가 1 ¢에 불과한 것처럼 보이지만 여전히 가질 수있는 기회가 있습니다.

다음 판매자의 테이커 주문이 비트 코인 1 개로 들어 왔다고 가정 해 보겠습니다. 첫 번째 0.00001 비트 코인은 스푸핑 된 주문으로 시장 조성자에게 판매되어 해당 주문을 거래소에서 제거합니다. 다음 0.99999 비트 코인은 스푸핑 된 주문 아래 최고가 주문 인 입찰 가격으로 주문에 판매됩니다.

내 봇의 가장 큰 개선 사항 중 하나는 스프레드를 계산할 때 스푸핑 된 주문을 무시하도록 허용하는 것이 었습니다. 매도 가격이 입찰 가격보다 1 ¢ 더 높을 수 있지만, 내 봇은 스푸핑 된 주문을 지나쳐서 스푸핑 된 주문이 아닌 경우 스프레드가 무엇인지 확인합니다 (여전히 $ 50– $ 100 일 수 있음). 이 스프레드가 기회를 제공 할만큼 충분히 크면 스푸핑 된 주문 에 가장 높은 가격의 구매 주문을하기 위해 경쟁합니다. 판매자의 테이커 주문이 들어 왔을 때 이것은 몇 센트 상당의 비트 코인이 스 푸퍼에게 판매되고 나머지는 나에게 판매된다는 것을 의미했습니다.

2018

2018 년 처음 몇 달은 격동이었습니다. 12 월 비트 코인이 2 만 달러로 상승한 후 바퀴가 떨어지기 시작했고 가격이 빠르게 하락했습니다.

투자자에게는 좋지 않지만 시장 조성자에게는 엄청난 기회를 제공했습니다. 매수 및 매도 측면 모두에서 높은 수준의 거래량 (즉, 더 많은 테이커 주문이 들어옴)은 효율적인 시장 조성자가 실행할 수있는 일일 거래량을 엄청나게 증가 시켰습니다.

이 기회의 기간은 상대적으로 짧았습니다. 1 월과 2 월의 열풍 이후 거래량이 줄어들 기 시작하여 수익 기회가 줄어 들었습니다. 거래량 감소에도 불구하고 새로운 봇이 거래소에 진입함에 따라 시장 조성자의 수는 계속 증가했습니다.

거래소에 대한 더 많은 시장 조성자들은 매수 호가와 매도 호가에 대한 경쟁을 더 많이 불러 일으켜 스프레드를 좁혔습니다. 추가 경쟁자는 또한 주문이 제출되는 즉시 더 많은 경쟁자가 귀하를 능가 할 준비가되어 있기 때문에 주문이 일반적으로 더 짧은 기간 동안 입찰 가격으로 유지된다는 것을 의미했습니다.

경쟁이 치열 해지고 수익 기회가 줄어들었기 때문에 3 월까지 모든 봇을 사용 중지했으며 그 이후로는 다시 사용 설정하지 않았습니다. 많은 거래소에서 증가하는 메이커 수수료로 인해 시장 제작 게임으로 돌아 가지 못했지만 순간을 고를만큼 영리한 사람에게는 여전히 기회가있을 것입니다.

전체적으로 저는 2017 년 12 월부터 2018 년 3 월까지 약 5 천만 달러 상당의 비트 코인을 20.2의 ROI로 거래했습니다.