brunch

You can make anything
by writing

C.S.Lewis

by Austin Jan 06. 2022

[DeFi] 쉽게 이해하는 비영구적 손실

유동성 풀에 뛰어들기 전에 꼭 알아야 하는 정보

안녕하세요. Austin입니다. 


디파이에 관심이 있으신 분이라면 비영구적 손실(IL, Impermanent Loss)은 한 번쯤 들어보셨을 겁니다. 하지만 비영구적인 손실을 알기 위해선 약간의 배경지식이 필요합니다. 오늘은 비영구적인 손실에 대해 이야기해보려 합니다. 비영구적인 손실 때문에 유동성 풀(LP, Liquidity Pool)에서 손해를 볼 수 있다는 건 아시고 계시지만 원리를 모르셨다고요? 그럼 잘 오셨습니다.




비영구적인 손실의 개념

비영구적 손실은 유동성 풀에 유동성을 공급하였을 때, 즉 자산을 예치시켰을 때 예치된 자산의 가격 변동으로 인해 임시적으로 손실을 보는 것을 의미합니다. 예치된 자산의 가격 변동이 커질수록 비영구적인 손실이 더 크게 발생합니다. 


유동성 풀에 유동성을 공급하는 대가로 받는 리워드가 없다는 가정 하에 예를 들어봅시다. Austin은 유니스왑 ETH-USDT 풀에 각각 500불 가치의 이더리움과 USDT를 예치했습니다. 총 1000불 가치의 자산을 예치한 것입니다. 처음 예치를 할 때 $100이었던 이더리움은 $200으로 100%가 올랐습니다. 이더리움의 100% 상승에 신이 난 Austin은 유동성 풀에 있던 이더리움과 USDT를 출금시켰습니다. 하지만 Austin은 당황할 수밖에 없었습니다. Austin은 자신이 유동성 풀에서 돈을 출금하면 이더리움과 USDT의 총가치가 $1500이 되어야 한다고 생각했지만, 실제로 출금을 하니 자산의 가치가 반올림하여 $1414.21밖에 안되었기 때문입니다. 따로 유동성 풀에 예치하지 않고 개인 지갑에 보관만 했다면 자산의 가치가 $1500이었겠지만 유동성 풀에 예치를 하였기 때문에 자산의 가치가 $1414.21이 되었습니다. $1500 - $1414.21 = $85.79 즉 $85.79, -5.72%의 손해를 보았네요. 하지만 손해는 처음부터 이렇게 크지 않았습니다. Austin은 몰랐지만 이더리움이 10%만 올랐던 때엔 -0.11%, 50%가 올랐던 때엔 -2.02%의 손해를 보고 있었죠. 하지만 이더리움의 가격 변동이 100%나 되어버려 결국 -5.72%의 손해를 보았습니다. 


Austin은 이더리움이 $200일 때 출금해 -5.72%는 영구적인 손실이 되었다...

여기서 이더리움이 10%만 올랐을 때 -0.11%의 손해, 50%가 올랐을 때 -2.02%의 손해 등 유동성 풀에 자산의 예치시켜 두었을 때 자산(이더리움)의 가치 변동 때문에 일어나는 임시적인 손해를 비영구적인 손실이라고 합니다. 손실이 비영구적인 이유는 이더리움의 가격 변동(+10%, +50%)에 따라서 유동성공급자(Austin)가 받는 손실이 영구적으로 일정하지 않고 계속 변화하기 때문입니다. 결론적으로 유동성 풀에서 유동성공급자(Liquidity Provider)가 자산을 출금하지만 않으면 자산의 가치 변동에 따라 부담하는 손실이 꾸준히 바뀌기 때문에 비영구적 손실이라고 부릅니다.

만약 Austin이 이더리움의 가격 변동이 +100%나 되어 -5.72%의 손해를 보았을 때 유동성 풀에서 자산을 출금하지 않고 이더리움의 가치가 다시 $110이 되었을 때 자산을 출금하였다면 -0.11%만의 손실을 보고 출금할 수 있었습니다. 하지만 이더리움의 가치 변화와 상관없이 이미 Austin은 -5.72%의 손해를 보고 출금하였기 때문에 이젠 영구적인 손실이라고 할 수 있겠네요.


Credit : Binance Academy (https://academy.binance.com/ko/articles/impermanent-loss-explained)

위 그림은 바이낸스 아카데미에서 비영구적 손실을 그래프로 표시한 그림입니다. Initial Price를 기준으로 한 가격 변동에 따른 전체 자산가치의 변화를 의미합니다. 



그럼 비영구적인 손실은 왜 생기는 걸까?

비영구적인 손실이 발생하는 원인에 대해 알아보기 전에 꼭 짚고 넘어가야 하는 배경지식이 있습니다. 

첫째로는 재정거래에 대한 개념, 둘째로는 AMM에 대한 개념입니다.


재정거래(차익거래)란, 2개 이상의 시장에서 같은 상품을 판매할 때 그 상품의 가격이 시장마다 다름을 이용해 수익을 내는 거래를 의미합니다. 암호화폐시장에서 예를 들어본다면, 유니스왑에선 이더리움을 10만 원에, 바이낸스에선 이더리움을 15만 원에 판매한다고 가정합시다. 재정 거래자들은 유니스왑에서 이더리움을 10만 원에 구매한 후 바이낸스에서 이더리움을 15만 원에 판매해 5만 원의 차익을 얻을 수 있습니다. 이를 재정거래라고 합니다.


AMM이란, 탈중앙화 거래소(DEX, Decentralized Exchange)에서 디지털 자산의 가치를 산출해내는 방법을 의미합니다. AMM의 자세한 설명은 제 이전 게시물(링크)에서 확인하실 수 있습니다. AMM은 비영구적인 손실을 이해하기 위해 꼭 알아야 하는 개념이기 때문에 읽어보시고 오시길 추천드립니다.


재정거래와 AMM을 다 이해하였다는 가정 하에, 본격적으로 비영구적인 손실의 원인에 대해 알아보겠습니다. 쉽게 이해하기 위해 예시로 접근해볼까요? 


유니스왑에 따로 리워드가 없는 ETH-USDT 풀이 있다고 가정합시다. 

- #1

1월 1일 이더리움의 가격은 $100입니다. Austin은 이더리움 10개와 USDT 1000개를 유동성 풀에 예치하였습니다. ETH-USDT 풀의 전체 이더리움 유동성 공급량은 100개이기 때문에  Austin은 전체 유동성 공급량 중 10%의 지분을 보유합니다. x * y = k 공식에 전체 유동성 공급량은 대입하면 100 * 10000 = 1,000,000 즉 k의 값(유동성)은 1,000,000이 됩니다. 


- #2

이더리움의 가치가 50% 상승했습니다. 바이낸스 기준 이더리움의 가격은 $150이 된 것이죠. 하지만 유니스왑에는 여전히 이더리움의 가격이 $100입니다. 이제 익명의 재정 거래자 A가 나타납니다. A는 유니스왑에서 $100의 가격으로 이더리움을 구매한 후 바이낸스로 옮겨 $150에 판매하여 수익을 올리기 시작했습니다. 결국 수요가 늘어남에 따라 유니스왑에서의 이더리움 가격도 $150으로 맞춰졌습니다. 이 과정에서 자연스럽게 ETH-USDT 풀엔 약 81.65개의 이더리움과 약 12247개의 USDT가 남아있게 되었습니다. 재정 거래자들이 USDT를 내고 이더리움을 가져갔기 때문이죠. 자연스럽게 풀 안에 있는 이더리움의 개수는 줄어들게 되었고 이로 인해 이더리움의 가치는 올라가게 되었습니다. x * y = k 공식에 대입해보면 반올림으로 인한 오차를 감안하였을 때 81.65 * 12247.45 = 약 1,000,000이 성립되게 됩니다. 


아까 #1에서 말씀드린 것처럼 Austin은 전체 유동성 공급량 중 10%의 지분을 보유하고 있습니다. #1에선 이더리움 전체 유동성 공급량 100개 중 10%, USDT 전체 유동성 공급량 10000개 중 10% 즉 이더리움 10개를 가지고 있었고 USDT 1000개를 가지고 있었죠. 하지만 이더리움의 가치 상승에 의해 유동성 풀에 공급된 각 자산의 개수가 변동되며 #2에선 이더리움 전체 유동성 공급량 81.65개 중 10%, USDT  전체 유동성 공급량 12247.45개 중 10% 즉 이더리움 약 8.165개 USDT 약 1224.7개를 보유하고 있게 되었습니다.


- 정산

결과적으로 이더리움의 가치는 50%가 상승해 $150이 되었습니다. Austin의 수익을 계산해볼까요?

유동성 풀에 예치를 했을 때 수익률 (리워드 제외)

유동성 풀에 예치하여 이더리움의 상승 덕에 2449.49 - 2000 = $449.49의 수익을 보았습니다.

그럼 만약 유동성 풀에 예치하지 않고 개인 지갑에 아무런 액션 없이 보관하고 있었다면 얼마의 수익을 보았을까요?

2500 - 2000 = $500의 수익을 볼 수 있었습니다. 유동성 풀에 넣지 않았더라면 $50.51의 수익을 더 얻을 수 있었을 텐데 결국 Austin은 유동성 풀에 괜히 예치한 꼴이 되었네요.




결론

결국 유동성 풀에 예치해둔 자산의 가격이 크게 변동할수록 비영구적인 손실도 커집니다. 24시간 오픈되어있고 상한가 하한가가 없는 암호화폐시장에서 큰 가격 변동은 어쩔 수 없지만 말이죠. 비영구적인 손실을 줄일 수 있는 방법도 있긴 합니다. USDT, USDC와 같은 스테이블 코인을 활용하는 것도 좋은 방법입니다. 스테이블 코인은 미국 달러와 1:1로 맞춰져 있기 때문에 변동성이 거의 없습니다. 커플링 되어 움직이는 두 자산을 묶는 방법도 있습니다. 하지만 유동성 풀에 유동성을 공급했을 때 받는 이자의 이율을 따져보는 것이 가장 중요합니다. 어찌 되었든 스테이블 코인 페어로 유동성을 공급하지 않는 한 비영구적 손실은 항상 존재하고, 이를 커버하기 위한 이율을 잘 고려하여 유동성을 공급해야 합니다. 


비영구적인 손실을 계산하기 위한 계산기도 있습니다. 구글에 IL Calculator라고 검색하시면 많은 계산기들이 나오니 참고하시길 바랍니다.


전 어떠한 현상이나 사물에 대해서 처음 공부할 때 이해가 가지 않더라도 사전적 의미는 머릿속에 새기고 공부를 시작합니다. 처음 사전적 의미만 들었을 땐 이해가 안 될 수 있지만 결국엔 공부를 통해 사전적 의미를 이해할 수 있게 되었을 때 비로소 제대로 공부를 했구나 생각하기 때문입니다. 


이 글을 읽으시고 처음엔 이해할 수 없었던 비영구적인 손실의 사전적 의미를 이젠 이해하실 수 있으시길 바라며, 이만 글을 마무리하도록 하겠습니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari