티스토리 뷰

1편은 읽은 사람들은 아마 허탈감에 빠져있을 것이다. 궁금했던 내용은 하나도 없고 쓸데없는 내용만 봤기 때문에… 이들이 1편의 내용이 무엇이었는지를 기억이나 할까? 기껏해야 LOOM 선물 초반에 숏을 쳤다가, 등산차트타고 와서 겨우 탈출하고, 디아4를 위한 컴퓨터를 샀다 정도밖에 기억을 못할 것이다. 하지만 놀랍게도 그것이 내용의 전부이다. 즉, 위 내용을 기억한다면 이전편의 내용을 완벽하게 기억하고 있다는 것이다. 복습은 이쯤하고 2편으로 넘어가자.

 

이번에 해볼 것은, 과거 데이터(가격, 펀딩비)를 가지고 몇개의 테스트 또는 시뮬레이션을 돌려볼 것이다. 금융공학자들은 백테스팅이라고도 하는데, 사실 문과도 충분히 할 수 있는 것이다.

 

PnL은 어떻게 계산될까?

대부분의 사람들은 PnL은 플랫폼에서 제공하는 수치를 참고한다. (물론 나도…)

비트코인 1억간다

 

위 그림은 바이낸스 스냅샷이며, 포지션을 유지할때 나오는 수치인 미실현PnL이다. 그러나 단지 수치 하나만으로 보기엔 한계가 있다. 포지션을 늘릴때는 투자금이 평균화되어 적당한 PnL이 나오지만, 포지션을 줄일때는 PnL이 실현되면서 전체 수치에서 제외되기 때문이다. 전체적인 PnL(실현PnL+미실현PnL)을 추적할 수 있다면 가장 좋겠다. 어쨌건 표시되는 PnL 수치가 어떻게 나오는지 알아야 하고, 그러기에 보이는 저 숫자에 현혹될 필요도 없다. 결국 바이낸스의 경우 보여지는 가격은 현재 포지션에 대한 계산된 값 정도이다. 

 

펀딩피는 어떻게 계산될까?

펀딩피는 특정 공식에 의해 계산되는 펀딩비율(Funding rate)을 펀딩피 제공 시점때의 포지션 크기(Notional Size)만큼 곱하면 된다. 방향은 펀딩비율의 음양(+/-)을 따져서 상대측 포지션에 준다. 양(+)펀비일 경우 롱포지션→숏포지션, 음(-)펀비일 경우 숏포지션→롱포지션으로 준다. 그런데 숏포지션은 손해를 보고 있을때 펀딩피 계산이 불리하다. 숏포지션을 $100정도에 시작했는데, 가격이 올라 포지션 크기가 $200가 되면 그 금액에 펀딩 비율을 곱해야 한다.

 

바이낸스의 경우, 정산된 펀딩비는 PnL에 반영되지 않고 잔고에 반영된다. 즉, 이번 LOOMUSDT같이 많은 펀딩비가 발생하는 경우 표시되는 PnL에는 반영되지 않는다.

 

참고로 PnL과 펀딩피에서 레버리지는 고려하지 않는다. 아니 사실 고려할 필요가 없다. 레버리지는 담보금에 대한 주문 가능 개념과 청산에 영향을 미친다. 수익율(ROI %)또한 믿을 필요가 없는 것이 그냥 위 거래에서 레버리지를 변경하면 수익율이 바뀐다.

10배 넘는 수익쯤이야 코인에선 기본 아닌가요

 

데이터 수집

이제 데이터를 모아보자. 사실 평소에는 차트를 찍어서 시간과 가격을 찾는데, 블로그에 쓰기에는 좀 부족해보인다. 이제는 발전된 삶을 살아보자. 이름하여 문과도 할 수 있는 데이터 수집.

 

바이낸스의 경우 데이터를 API로 제공해서 어느정도 받아 볼 수 있다. 우리가 받아올 데이터는 두 가지이다. 하나는 캔들차트 정보 (시간별 가격), 하나는 펀딩피 이력.

[바이낸스 API 페이지]

 

Buy/Sell Bitcoin, Ether and Altcoins | Cryptocurrency Exchange | Binance

Binance VIP and Institutional offers access to professional services including better fees, higher trading limits, flexible account management function and OTC services. Our experienced team works closely with a wide range of market participants to provide

www.binance.com

위 문서를 보면 호출 방법이 있다.

  • symbol : 마켓의 심볼 - LOOMUSDT
  • interval : 시간 단위이며 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M 을 지원한다고 함. 여기선 15분단위인 15m
  • startTime, endTime : 시작시간을 정해야 하는데, 데이터 형식이 보통 epoch time 또는 unix timestamp라고 많이 불리우는 타입이다. 1970년 1월 1일 기준으로 해당 시간까지의 초를 나타낸다. 이건 수를 변환시켜주는 사이트들 적당히 찾으면 나온다. 예를들어 https://www.unixtimestamp.com/
 

Unix Time Stamp - Epoch Converter

Epoch and unix timestamp converter for developers. Date and time function syntax reference for various programming languages.

www.unixtimestamp.com

  • limit : 가져올 건수, 1000으로 해보자

 

그래서 다음과 같이 URL을 쓰고, 뒤에 파라미터를 붙이면 된다. 다른 파라미터는 처음엔 ?로, 다음엔 &로 연결할 수 있다.

이걸 크롬같은 브라우저에서 호출할 수 있다. 결과는 대강 json 형식의 문서가 나온다.

히익... 이게 뭐야

 

마찬가지로 펀비 이력 역시 다음과 같이 다운받을 수 있다.

 

여기까지가 가장 어려운 부분이었다. API, epoch time, URL, parameter, json 개념이 나왔는데… 여기까지 왔다면 이과도 커버하는 슈퍼 문과가 된 것이다.

 

 

원래 json이 2차원 테이블 형태는 아닌데, 운좋게(?) 이것들은 2차원 형태라, 바로 csv형태로 바꿀 수 있다. 개발자는 프로그램을 개발해서 처리하는데 문과의 경우 대강 인터넷에서 변환해주는 다음과 같은 온라인 툴을 사용하면 된다. https://json-csv-xls.com/

 

JSON to CSV Converter online

DRAG AND DROP Or browse your JSON file

json-csv-xls.com

 

위의 사이트에 json 파일을 업로드하여 CSV로 바꿀 수 있다. 예전에 했을땐 json 텍스트를 파일로 다운받았다가 다시 업로드 했었는데, 지금은 URL을 입력하니 알아서 긁어와서 알아서 변환해준다.

 

이렇게 쉬운 방법이!

 

나오는 csv를 다운받아서 저장!

 

PnL을 계산해보자

선물의 롱이나 숏을 계산 하는 것은 그리 어렵지 않다. 이해하기 쉽게 XRP/USDT 현물을 생각해보자. 계산이 쉽게 XRP=0.5USDT라고 하고, 시간이 지나 0.6USDT가 된다고 생각해보자. 기본 잔액 10,000 USDT가 있고, 이것으로 10,000 XRP를 롱 또는 숏 하는 것이다.

 

롱 시나리오는 현물과 거의 동일해서 이해하는데 문제가 없다고 본다. PnL은 1,000 USDT이다. ROI를 구하고 싶은 욕망은 잠재우자. 처음 잔액으로 계산할 수도 있지만 굳이 할 필요는 없다.

 

숏 시나리오는 처음에 XRP를 1만개 판매하면서, 이것을 판 USDT가 5천개 있다고 생각하면 쉽다. 이를 잔액과 분리해서 생각하자. 추후 XRP 가격이 0.6이 되면서 전체 가치는 -1,000 USDT가 되었다. 중요한 것은 판값USDT의 가치는 변하지 않는다는 것이다. 숏의 승리는 XRP의 금액이 0에 수렴해서 갚아야 할 XRP가 없게 되는 것이다. 즉, 최대 이익은 5,000 USDT이고 최대 손실은 무한이다.

 

참고로 판값 이런건 전문용어 아닌데 이해하기 쉬운 용어로 만들었음

 

이후엔 PnL을 구하기 위한 것이니 잔액USDT는 생략한다.

 

 

엑셀로 생성

그래서 위 표로 엑셀을 만들어봤다. (엑셀 링크는 맨 마지막에)

김대리. 내가 엑셀 팡션을 아꼈던 이유는 지금 사용하기 위함이었읍니다.

 

전제조건은 다음과 같다.

  • 데이터는 시간과 가격의 데이터이다. 특정 시점의 가격이 있어서 그것을 사용한다.
  • 슬리피지는 고려하지 않는다.
  • 호가창의 두께 역시 고려하지 않는다.
  • 따라서 특정 시점에 다량의 토큰을 구매/판매가 가능했다고 가정하자.
  • 수수료는 고려하지 않는다.

 

여기서 [구매/판매] 셀만 입력 값이고, 나머지는 계산되는 값이다. 모든 부호는 지출시 -, 수입시 +임.

  • 포지션합(LOOM) : 구매/판매 LOOM을 누적
  • 포지션합(USDT) : LOOM포지션의 현재 가치를 USDT로 환산한 값
  • 판값(USDT) : LOOM을 팔거나 샀을때, 해당 시점 포지션 변화의 USDT 가치
  • 판값합(USDT) : 판값(USDT)의 누적
  • 펀딩피(USDT) : 해당 시점에 발생한 펀비. 펀비는 포지션합(USDT) * 펀딩비율(%)로 구해진다.
  • 펀딩피합(USDT) : 펀딩피(USDT)의 누적
  • PnL(USDT) : 포지션합(USDT) + 판값합(USDT) + 펀딩피합(USDT)

 

사용방법

구글 스프레드시트를 적당히 복사해서 kline시트, funding_rate시트에 적당히 데이터를 붙여넣고, simulation시트의 노랑 부분에 포지션 변경을 적으면 된다.

 

그럼 대강 옆에있는 차트에도 불이 들어오는데 몇 개 살펴보자.

 

1) 가격 - 펀딩비율 : 대강 코인글라스에서 자주 보는 그것

 

2) 가격 - 구매/판매 : 내가 언제 어떤 주문을 넣었었나

 

3) 가격 - 펀딩피합 : 시간이 흐를때 누적 얼마의 펀딩피를 지급했는지

4) 가격 - 포지션합 : 시간이 흐를때 포지션 변화는 어떻게 되는지

5) 포지션합 - 판값합 - 펀딩피합 : 어느정도 규모인지 가늠

6) 가격 - PnL : 우리들이 원하던 바로 그것

 

사례분석

대강 내가 매매했을것 같은 시나리오를 만들어봤다.

시나리오 1

  • 100,000 LOOM을 10번에 분할하여 상승장 내내 구입하고 존버했을 경우
  • 손익분기가 되는 지점은 등산을 한참 한 이후 LOOM이 $0.164정도 되는 시점에 겨우 탈출 가능
  • 가장 힘들었을 PnL이 -16,000 USDT까지 찍히는 걸 보고 견뎠어야 함 (총 누적한 판값은 28,260 USDT였었다… 1배수 레버리지라 해도 -56%가 찍힘. 5배수면 -260%…)

 

시나리오 2

  • 위 케이스와 동일한데, 가격이 하락할 때 5번에 걸쳐 포지션을 종료했을 경우
  • 마찬가지로 가장 힘들었을 PnL -16,000 USDT찍는것을 견딘 이후… 이득을 못내고 최종 -2,036 USDT로 손절 완료

 

결론

  • LOOMUSDT는 너무 힘든 싸움이었다. 특히나 살인적인 펀딩 피... 아니 살인이었다.
  • 이번에 숏으로 손해만 안났어도 대단한 고수임
  • 엑셀 링크는 여기 말고 채널 소개에 있습니다. 채널에 아무도 오지 않아요… 이 게시물 인기 있던데 채널구독 구걸한번 해봅니다.

 

소확이익 코인투자노트

코인 투자하다가 생각나서 끄적이는 잡글 채널입니다. 홈페이지 : sohwak.tistory.com 댓글 : @sohwak_chat

t.me

 

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