그게 실제로 작동되는지 테스트해봤습니다
지난 번 글에서 저는 가상화폐 자동 매매를 하는 트레이딩 봇 제작 방법을 소개해드렸습니다.
그리고 나서 제가 가상화폐를 거래하는 방식을 코드로 구현해 각각 테스트해봤습니다. 테스트는 과거 데이터를 가져와 실행하는 백테스트와 실제 제 돈을 넣고, 자동 매매를 통한 테스트 두 가지로 실시해봤습니다.
단타를 좋아하는 분들은 "펴서 먹는다"는 표현을 즐깁니다. 중간중간 상승과 하락이 생길 때마다 사고, 팔고를 하면 수익이 최대화 되기 때문입니다. 이를 알고리즘으로 구현하면 어떨까요? 특히 가상화폐처럼 급등과 급락이 큰 시장이라면 펴서 먹으면 대박이 아닐까요?
가상화폐는 변동이 주식시장과 비교해 압도적입니다. 한 코인이 100%이상 상승하는 일도 많고, 시간당 3~5% 변동은 하루가 멀다하고 발생합니다. 그 뿐 아니라 심하면 전체 시장이 15 ~ 30%가 몇 시간만에 가라앉기도 하죠. 그렇다면 컴퓨터를 이용해 급락 타이밍을 주시하고 있다가 팔아버리면 어떨까요? 그럼 손실은 최소화하면서 수익은 최대화할 수 있지 않을까요?
어제 오전 11시의 비트코인 상황입니다. 11시 기준 60분 봉을 보면 -3%의 급락이 나타납니다. 그리고 이전 시간인 7~10시까지 소폭의 하락을 계속 보이고 있습니다. 단편적으로 생각해보면 최고의 수익을 내기 위해선 7~8시 경에 모든 비트코인을 팔면 됩니다.
차트를 보면 7시 이전에도 급락이 보입니다. 바로 8일 새벽 3시입니다. 그럼 이때 팔고, 4시에 다시 들어가고, 7~8시경에 다시 팔면 최대 수익이 나올겁니다. 한 번 테스트 해보겠습니다.
위의 규칙대로 거래한 결과입니다. 간단히 위의 결과를 설명드리겠습니다.
- 100만원으로 시작
- 거래당 0.05% 수수료 발생(실제와 동일)
- 매도, 매수는 언제나 전량 거래
이렇게 거래한 경우 제 알고리즘은 2번의 매수와 2번의 매도가 존재합니다. 8일 새벽 4시에 매수를 하지 않았는데 매수 강도가 약하다고 판단해 이후 매수세가 강해진 8일 새벽 6시에 매수를 하게 됩니다. 그리고 이후에 매도 강도가 강해진 8일 아침 8시에 판매합니다.
동 시간동안 비트코인의 가격은 1,386,000원 상승했습니다. 비트코인의 자체 수익률은 1.43%였습니다. 하지만 알고리즘을 따라 매수하고, 매도한 경우 2.98%의 수익을 기록합니다. 상승에 사서 하락에 대응하니 수익이 더 좋아졌네요!
하지만 위의 알고리즘은 최고일까요?
조금만 기간을 넓혀보면 위의 알고리즘의 단점이 발생합니다. 작은 상승이 꾸준히 유지되거나, 천천히 상승하고 하락하는 장에는 반응하기 어렵습니다. 괜찮은 아이디어지만 모든 시장에 대응할 수는 없습니다.
동일한 알고리즘을 최근 48시간으로 옮겨봅시다.
비트코인 수익률이 13.51%인데 반하여 트레이딩을 통한 수익은 8.01%에 그칩니다. 물론 이 수익도 많지만 비트코인 수익률에 비하면 40% 가까이 적은 수치입니다.
상승과 하락이 선명한 횡보장에서 좋은 효율
꾸준한 상승장에선 상대적으로 수익이 낮아짐
급락에 대응하기 좋음
이 전략은 제가 가상화폐 시장을 오래전부터 보면서 써보고 싶던 전략이었습니다. 가상화폐 시장은 크게 대장 코인이라 불리는 비트코인, 이더리움, 리플 등이 거래량과 시가총액이 큽니다. 그리고 이들 중에서도 비트코인의 움직임이 전체 시장의 방향성을 만드는 경우가 많았습니다. 그래서 이걸 실제로 테스트해봤습니다. 비트코인이 상승할 때 나머지 코인들을 매수하고, 하락할 때 매도합니다.
이 방법은 결론부터 말씀드리면 수익이 나지 않습니다.
제가 처음 트레이딩 봇을 만들 때 만든거라 스크린샷은 없지만 수익률이 너무 낮아서 기록할 이유도 없는 수준이었습니다. 백테스팅을 통해서 돌려봤을 때 비트코인의 성장률과 그 외 수 많은 알트코인의 수익률은 일치하지 않았습니다.
업비트에서 제공하는 시장 지표를 통해서도 어느정도 유추가 가능합니다.
업비트 알트코인 인덱스(UBAI)의 지난 1일 그래프입니다. UBAI는 비트코인을 제외한 코인들을 일정 비율로 가지고 있을 때 변화를 보여주는 지표인데 전체적으로 들쭉 날쭉한 모습을 볼 수 있습니다. 반면 지난 1일간 비트코인의 그래프는 다음과 같습니다.
동일한 시간임에도 다른 그래프를 보여줍니다. 전체적인 시장의 상승과 하락은 같이하는 모습을 보이곤 하지만 그 기준이 정확히 어디인지 추적하기는 무척 어렵습니다.
시장 전체의 방향성에는 비트코인이 영향을 줄 수 있음
비트코인을 추종해 알트 코인 단기 거래를 하는건 수익이 나지 않음
이제는 작전이라는 말을 모르는 분들은 없을겁니다. 몇몇의 세력이나 큰 손이 가격을 담합해 올리거나 낮추는 현상을 말하는데, 이걸 잘 따라 타면 가능하지 않을까요? 사실 이 방법을 테스트하는건 굉장히 어렵습니다. 몇가지 이유 때문인데요 주식 시장에서도 비슷하게 나타나는 이유가 있습니다.
작전 세력이 존재하기 위해선 작전 세력이 물량을 가지고 있는 경우를 생각해봐야 합니다. 물량이 없이 단순히 호가창으로 허매도, 허매수로 올리는 경우도 있지만 이익을 보기 위해선 어찌됐던 매수 물량이 적절한 가격대에 있어야 합니다.
바꿔 말하면 현재 변동이 극심해서 사람들의 관심을 많이 받고, 거래량 자체가 너무 큰 코인들은 작전을 통해 방향성을 이끌어내기도 어렵거니와 도리어 당할 수도 있습니다. 그러기 위해선 사람들의 눈에 띄지 않고 매집을 한 구간(적절한 횡보 구간)과 어느정도의 거래량이 보여야 합니다.
코인판이 무서운 이유는 바로 코인의 실체에 대한 가치 평가가 주식 시장처럼 정량적이지 못하다는 점입니다. 실제 회사를 다루는 주식도 거품이있고, 과열이 존재하는데 현재는 사용처가 매우 드문 알트코인의 가치가 폭등하는건 분명 이유가 있을겁니다.
어떤 코인이 이번주에 300%가 올라도 투자자 입장에서 실물 가치가 3배 높아진건진 알 수 없습니다. 만약 실물 가치에 영향을 줄 수 있는 이슈와 함께 가격 상승과 거래량이 큰 폭으로 올라간다면 작전이 아닌 가치 상승으로 볼 수 있겠지만 그게 아닌 적은 거래량으로 가격이 크게 올라버린다면 작전을 의심할 수 있습니다.
호가창은 실체를 반영하지 못합니다. 왜냐면 사람들이 매수벽, 매도벽을 허위로 세워둘 수 있기 때문입니다.
호가창을 옆으로 세우면 이런 모습이 됩니다. 위의 사진에서는 매수 물량이 많이 잡혀있고, 매도는 적으니 장기적으로 가격이 오를거라고 생각할 수 있습니다. 하지만 이 벽을 알고리즘을 통해 세우고, 없애면 어떨까요? 가격을 낮추고 싶은 작전 세력이 있다면 허매도 장벽을 세워 실제 거래가 발생하지 않는 선에서 매도 물량을 크게 넣어둘 수 있습니다.
제가 위에 적은 세가지는 사실 작전이라고 부르기도 민망한 실체에 불과합니다. 실제로는 더 많은 팩터들이 변수로 존재하고, 이를 100% 정량적으로 판단하는 것도 힘듭니다. 그럼 알고리즘 트레이딩을 통해 작전을 판단할 수 있는 방법은 없을까요?
이럴 때 필요한건 시장의 반응을 실시간으로 감시하는 이벤트 리스너(Event listener)가 필요합니다. 전체 코인의 현 가격을 계속 주시하고 있다가 일정 강도 이상의 가격 상승이 발생하면, 해당 코인의 매수 매도 포지션을 정하는 방법입니다.
리스너를 만드는 일은 생각보다 간단합니다. 한국 원화로 거래할 수 있는 코인은 업비트 기준 113개이고, 개인당 1분동안 쓸 수 있는 Quotation API 요청이 분당 600회, 초당 10회입니다. 즉 1분에 4~5회 정도 113개 코인 전체의 변동성을 계속 수집할 수 있습니다. 이 리스너를 만들어서 시장을 모니터링하고, 상승 또는 하락을 따라 매입을 하고 파는 경우를 테스트 해보겠습니다.
좋은 예를 바로 찾을 수 있었습니다. 바로 오늘 급상승한 펀디엑스 코인입니다.(이 코인이 급상승하고, 따라 탑승한 경우를 예로 들뿐 작전으로 올랐다는 건 아닙니다.)
30분 봉 기준으로 9일 오전 9시에 208% 상승했습니다.
1분봉으로 보면 오전 9시 19분경 1분에 39%라는 말도 안되는 상승이 발생합니다. 이 시점을 감시하고 있다가 들어간다고 가정하고 이후 하락이 발생한 오전 9시 30분에 매도하면 어떨까요?
9시 19분의 거래가 0.24원
9시 31분의 거래가 0.53원
12분 수익률: 120.83%
리스너를 사용하게되면 이처럼 급등 초입 구간에 잘 들어가는 경우와 급락을 따라 수익을 엄청나게 발생시킬 수 있습니다. 하지만 이 방법이 만능은 아닙니다.
위의 터미널 창은 제가 위에서 설명한 리스너입니다. 간단히 설명드리면 1분봉을 기준으로 상한가와 하한가의 차이가 일정 이상일 때 표시하게 됩니다. 1분에 600회 요청을 보내 113개의 코인을 모두 분석합니다.
알고리즘으로 감시를 하던 중 상승폭이 큰 저스트라는 코인이 나타났습니다. 고점이 4.6% 이상 올라갔기 때문에 매입을 했지만 이후 바로 가격이 낮춰지고 있는걸 볼 수 있습니다. 즉 이상적인 아이디어라 할 수 있지만 실제론 언제나 반대로 상황도 가능합니다.
1분봉을 기준으로 상승이 10~20% 상승했다는건 반대로 그 다음 1분에 그만큼의 하락이 발생할수도 있습니다. 1분봉을 사이에 두고 그정도 급등과 급락이 존재하지 않는다고 하실지도 모르겠습니다. 하지만 차트만 봐도 이런 일은 존재합니다.
가격이 급락한 9시 30분은 1분에 20.9%가 빠져나갑니다. 불과 2분전 봉에서는 17%, 1분 전에는 9.84%가 올랐음에도 말이죠. 그 다음 10분도 마찬가집니다. 9시 32분 16.98% 상승, 그 다음 2분간 6.45%, 8.62% 하락입니다.
그럼 이렇게 생각하시는 분들도 있습니다.
"1분에 16.98% 오르고, 2분간 6.45%, 8.62% 하락이면 그래도 이득 아니냐?"
아닙니다. 100만원이 20% 상승하면 120만원이지만, 120만원인 상태에서는 20%가 빠지면 96만원이 되는 것처럼 말이죠. 상승된 가격에서 하락이 동일한 퍼센트로 발생하면 손해입니다. 그렇기 때문에 리스너를 통한 알고리즘 매매에서는 상승 초입인지, 이전 기간은 어떤지도 함께 계산해야 합니다.
위의 결과는 앞선 계산 패턴을 바탕으로 펀디액스를 급등 발생 이후 50분 후부터 50분 전까지 총 100분을 거래한 내역입니다. 급등을 따라잡고, 급락에 내리는 거래를 한다 할찌라도 도리어 적자가 나는걸 볼 수 있습니다.
트레이딩 봇
-> 나를 대신해 거래를 해주는 기계
저는 주식도 하고, 가상화폐도 하지만 주식과 다르게 가상화폐는 사람이 하는게 불가능한 영역이라는 생각이 듭니다. 불과 며칠전만 해도 새벽에 가격이 폭락해 모든 코인의 파란불이 들어와도 아침이 되서야 볼 수 밖에 없었습니다. 하지만 트레이딩 봇을 쓰면 내 전략을 컴퓨터가 알아서 진행하고, 알아서 보호해줍니다.
가상화폐를 이제 막 하시려는 분들이 이 글을 보고 있으시다면 주식처럼 접근하지 마시길 권합니다. 지금은 상승이 강해서 왠만하면 이득을 보는 경우가 많고, 손해를 봐도 견딜 수 있는 수준이지만 2018년의 폭락이 또 오리 말라는 법은 없다고 생각합니다. 특히 변동성이 큰 알트코인을 거래하시는 경우, 자동 트레이딩을 통해 자산을 보호하시는게 좋아보입니다.
전문적인 트레이딩 봇 제작을 원하시면 제가 운영하고 있는 플렉스웹에서 솔루션을 제공하고 있습니다.
트레이딩 봇 또는 시장 리스너 제작에 관심이 있으시면 홈페이지 또는 이메일(contact@flexweb.io)로 연락 주세요. 어떠한 형태, 기능으로던 제작이 가능합니다. :)