아침 일찍 Peter에게 전화가 왔다. 그는 출근 전에 잠깐 만날 수 있냐고 물어왔다. 예전엔 습관적으로 그가 만나자는 얘기를 할 때면, 나는 이 핑계 저 핑계로 거절을 했었다. 만나면 내가 잘 모르는 세계에 대한 얘기만 했기 때문이다. 처음 몇번은 괜찮지만, 현실감 없는 그들, 마법사들의 세상 얘기는 평범한 머글이 듣기엔 너무 허황되게 들릴 때가 많았다. Peter와 어울린다고 내가 마법사의 일원이 되는 것도 아니었다.
나이 들면 그냥 오가다 만나 아무말 없이 마주 앉아 소주 한잔 하는 편한 친구가 그래서 더 소중하다. Peter에겐 내가 그런 존재였지만, 내게 Peter는 부담스러운 친구였다. 매번 계산하는 Peter 대신 한번은 내가 사겠다고 했을 때, 두명 식사비가 팁 포함 800불 정도 나왔을 때도 그랬다.
그런데 해킹 사건 이후 생긴 마음속 빚 때문인지 그의 요청을 거절하기가 쉽지 않았다. 나는 알겠다고 대답을 한 후 Penn Station 근처 로컬들만 아는 간판도 없이 빵과 커피를 저렴하게 파는 35가에 있는 중국 카페에서 만나자고 했다.
Penn Station에서 두 블럭 떨어진 곳인데, 아주 작은 공간에 인테리어도 안되어 있고 심지어 불도 안켜고 영업을 해서 관광객들은 절대 찾지 못할 그런 장소였다. Peter 같은 대마법사들이 주로 이용하는 Fancy 한 곳이 아닌 평범한 머글들이 아침 출근길에 들려 부담없이 커피와 빵을 사는 그런 곳이었다.
약속 장소로 향하면서도 밤세 고민한 API 호출 제한 관련 해결 방안을 생각하고 있었다. 그렇게 생각에 잠겨 걷고 있는데 뒤에서 누군가 와락 날 껴안았다. 깜짝 놀라 뒤를 보니 Peter 였다.
Peter와 그렇게 카페 앞에서 만나, 달달한 중국식 아이스 커피를 마시면서 사무실로 향했다. 걷는 동안 그는 대뜸, 자신이 날 전혀 배려하지 않은거 같다며 얘길 시작했다. 그는 새로운 회사 설립을 할 것이고, 그 회사의 공동 창업자와 CTO로 함께 해달라고 내게 얘길했다. 나는 Peter의 제안에 1초도 생각하지 않고 거절 의사를 밝혔다.
“Peter, 내가 할 수 있는 일이 아닌거 같아. 그리고 난 지금 일을 줄여나가고 있어.”
그러자 Peter는 “아냐 너는 이미 전문가야. 우리 함께 하자. 복잡하게 생각하지마. 그냥 너랑 나랑 공동 창업자가 되고 너가 CTO를 맡아주면 돼. 형식적인 회사 설립야. 개발하는게 어렵고 부담되면, 개발 하지마. 대신 개발팀을 맡아줘. 그리고 너가 기술쪽 관련 업무만 커버 해줘”
나는 어제 Taylor에게 다른 거래소용 차익 거래 봇에 대해 검토해달란 얘기에 난색을 표했던게 생각 났다. 그 때 Taylor는 내 입장을 배려하지 못했다며 사과를 했었는데, 내가 나간 후 Peter와 그 부분에 대해서 얘길 나눈 듯 싶었다.
나는 이 얘기를 Peter에게 하며, 공동 창업자든 CTO든 괜찮다고 얘길 하면서 다른 거래소 봇도 크라켄 차익 거래 봇이 어느 정도 정리가 되면 리뷰를 해볼테니 걱정하지 말라는 대답을 했다.
그런 내게 Peter는 내게 “아니 그걸 그럼 그냥 해줄려고? 난 그런거 싫은데, 난 최고랑 함께 일하고 싶어. 너는 내가 아는 최고의 연금술사야. 내가 몇일 사이에 준비를 할테니 그럼 그 때 다시 얘기하자. 그리고 나랑 함께 St. Vincent and the Grenadines에 한번 같이 다녀오자. 오케이?!”라고 얘길 했다.
얘기를 듣던 내가 “St. Vincent and the Grenadines?”라고 묻기도 전에 Peter는 도망가듯 나와 반대 방향인 횡단보드를 뛰어 건너가버렸다.
그렇게 짧고 정신없게 Peter를 만난 후 난 다시 크라켄 봇에 대해서 생각을 하고 있었다.
그리고 내 자리에 앉아 어제부터 밤세 작성한 코드를 다시 테스트했다. 제일 처음 생각한 방법은 그냥 한번의 차익 거래를 찾은 후 그냥 쿨 타임을 몇 초 갖게 하는거였는데, 너무 날림으로 쓴 코드 같았다. 그래서 우선 순차적으로 차감되는걸 카운팅 한 후 다시 차증되는 딜레이 시간을 계산했다. 처음부터 한 사이클 매매를 완료하기 위해 몇번의 API 호출이 필요한지를 계산한 후 이 횟수 자체를 처음부터 빼고 카운팅 하는 방식을 택했다. 중간에 쿨타임은 가변적으로 발생할 수 밖에 없지만, 그나마 정해진 시간에 더 많은 차익 거래 기회를 찾을 수 있었기에 이게 차선책이라고 생각했다. 하나의 어카운트에 정해진 API 호출 리밋이 있었기에, 제일 처음 생각한 여러 PC에서 하나의 가격쌍만을 확인하는 차익 거래봇을 각각 돌리면 좋겠다는 생각을 버리고 나니, 오히려, 많은 어카운트들이 필요하다는걸 깨닫게 되었다.
시간은 어느새 점심 시간이 훌쩍 지난 오후 2시 30분이 되어 있었다.
나는 Taylor와 Mike에게 업데이트 한 봇을 첨부하고 어제 얘기한 생각해 볼 문제점들에 대해 리스트를 이메일로 작성하고 있었다.
- 가격쌍별(예를 들면, 비트코인-이더리움, 비트코인-에이다 등) 봇을 만들어 여러 PC에서 돌려도 결국 한 어카운트에 API 호출 제한이 있을 수 있다. 비슷한 문제로 봇을 가격쌍별로 나눠 운영해도 한 어카운트의 달러 밸런스는 하나이기 때문에 비중을 선택하는 알고리즘 또한 필요하다.
- 소액인 경우 위험도가 덜하지만 큰 금액인 경우 거래소 차익거래의 경우 위험이 따른다. 시장가로 해당 코인을 매수하게 되는데, 해당 시장가 기준 매도 호가가 없을 경우 매수 가격이 위로 올라가게 된다.
- 시장 변동성이 커졌을 때, 가격 변동 타이밍을 맞추지 못한체 시장가 매수가 될 수 있다. 이 때, 실제 차익 거래를 발견했을 때의 각 매수 가격보다 낮은 가격이면 문제가 없지만 더 비싼 가격일 땐 매수 주문이 안될 수 있다. 이 경우 API 호출을 계속 하게 되면서 차익 거래 매매가 진행중이지만 API 호출 제한에 걸릴 수 있게 된다.
- 가장 큰 문제는 달러로 비트코인을 매수한 후, 다음 알트 코인 매수가 실패했을 경우이다. 이 경우, 이미 달러가 비트코인으로 바꿔진 상태인데, 삼각 차익 거래를 위해 리셋을 해야 한다면, 다시 비트코인을 달러로 매도해야 한다. 이 경우 비트코인 가격 변동으로 인해 매도 시점에서 손해가 발생할 수 있다.
이런 저런 경우의 수를 적어 함께 보냈다. 대충 이 정도 예상되는 문제들을 보내면서, 해결 방법을 고민해보겠다고 적었다. 그리고 다른 거래소용 차익 거래 봇을 만든다고 해도 위와 같은 유사한 문제들이 발생할 수 있다고 코멘트 했다. 우선 새로 업데이트 한 크라켄 봇을 돌려보고 다른 문제가 있으면 알려달란 말로 메일을 마무리했다.
그리고 난 방금 내가 작성한 문제점들을 어떻게 해결할 수 있을지 리스크는 어떻게 관리할 수 있을지 고민하기 시작했다.
오리마왕
Peter님께서 대표님을 친근하게 느끼고 있다는게 느껴지네요.
자꾸 부담되는 요청을 하셔서 난감하실 것 같은데,
그러시는 와중에 몰입하시고 계신 대표님 모습에서
죄책감과 호기심이 동시에 느껴지네요.
계정을 여러개 운영하는 방법이 있었군요.
봇이 어떤식으로 개선되어 나갈지 기대됩니다
Wizz
네 크립토 거래소를 위한 삼각 차익거래봇이 이제 조금씩 정교하게 다듬어지기 시작합니다.
동시에 새로운 연금술도 이제 곧 시작합니다.