見出し画像

Defiを理解しようシリーズ 第4回:レバレッジの悪魔 ~stETHレバレッジステーキング~


「ククク… APYが欲しいか?」

Defiでは、さまざまなプロトコルを組み合わせることで高いAPYを出すことができます。

ただ、高いAPYにはそれ相応のリスクがあり、よく知らないと危険です。

今回は、レンディングプロトコルAave v3でレバレッジをかけて、LSD(Liquid Staking Derivatives)トークンであるstETHを手に入れ、
その代償として高APYを得る、 レバレッジステーキングを紹介します。

レバレッジ・APY見積もり・清算価格などの設計、それをもとにした実践などをやります。

さあレバレッジの悪魔と契約して高APYという力を得よう!


Aave, LSD, レバレッジステーキング

Aave v3のE-mode


Aaveは、言わずとしれたEthereumチェーン(+L2, 互換チェーン)上のレンディングプロトコルです。

Aaveは2017年に元々ETHLendという名前でICOからスタートし、その後現在のAaveという名前にリブランドしました。

その後v1, v2, v2.5とバージョンアップを続け、2023年1月27日にAaveのv3がEthereumのmainnetにリリースされました。

色々と改善された機能はあるのですが、注目なのはE-modeです。

E-modeを簡単に言うと、USDCを担保に入れてDAIを借りるなど、同じステーブルコイン同士ならば高い資本効率を出せる、というものです。

パッと聞いた感じ、何に使うのかわからないかと思いますが、これは

「stETHを使って”レバレッジステーキング"やる機能」に他ありません。

実際ドルステーブル以外は、stETH(正確にはwstETH。違いは後述)しかE-modeを提供していません。

今回はこのAave v3 のE-modeを使っていこうと思います。


Liquid Staking Derivatives (LSD)トークンとは

LSDとは、EtheruemなどにETHを直接Stakingするのではなく、プロトコルを介してStakingを行い、Stakingされた資産から利回りを得ることを可能にする言わば債券のようなものです。

例えばEthereumチェーン上で最大手であるLIDOでは、1 ETHを預けることによって、1 stETHというトークンを得ることができます。1 stETHは保有しているだけで、その量が増えていきます(リベースされる)。

ETHを直接Stakingすると、現状ではETHを引き出すことができなくなります。この引き出せない状態は2023年上旬にリリース予定のShanghaiアップグレードまで続きます。

しかし、stETHは市場で売却が可能なので、Shanghaiアップグレードを待たずに、ETHやUSDCに交換が可能です。
また、stETHをAaveなどに担保として預け借入を行うことにより、Staking
の利回りを得ながら、レバレッジを効かせて運用することができます。


レバレッジステーキングとは

例えば、stETHを預けて、USDCを借入した場合を考えてみましょう。
ETHのpriceが下落すると、stETHのpriceも当然下落します。そうすると担保価値が下がり、借入したUSDCの額を下回ると清算が発生します。

しかし、stETHを預けて、ETHを借入した場合、stETHとETHが1対1である限り(stETH/ETHのpriceが1.0。pegしていると呼ぶ)ETHのドル建てのpriceがどうなろうとも、担保価値に対する借入額は変わらないので、清算は発生しません。

stETHを預けてETHを借りたとしても、ETHの値上がりに対する利益は得られません。ですが、借入したETHを再度stETHに交換し、再度担保に預けることによってstETHの保有量が増大します。

ぐるぐると回転させるようにレバレッジをかけることから、「ぐるレバ」とも呼ばれています。

レバレッジをかけているため、stETHから得られる利回りは、そのレバレッジの掛け算で増大します。しかしETHの借入に対する金利はかかるため、最終的にはレバレッジ×(stETHの利回り - ETHの借入金利)の利回り得られます。

ただ清算を受けるリスクもレバレッジをかけている分増大します。ETHのドル建てのpriceの下落によって清算は発生しませんが、stETH/ETHのpegがはずれれば清算は発生し損失を被ります。


設計に必要な計算式を求めてみよう

レバレッジ・APY・清算価格の見積もりのために必要な計算式を求めていきます。数学が嫌いな人は読み飛ばしてOK!

レバレッジとLTV

レンディングプロトコルには、最大LTV( Loan to Value。担保に対して借りられる借入の率)というパラメータがあります。
まずは、LTVとレバレッジの関係を求めてみましょう。

ぐるレバの具体的な手順は以下です。

  1. 原トークン保有額を$${V}$$とする

  2. Vを全額LSDトークンに変換する

  3. 2で変換したLSDトークンを担保に、LTV $${r}$$で原トークンを借りる

  4. 3で借りた原トークンをすべてLSDトークンに変換する

  5. 4で変換したトークンを担保に、再度LTV $${r}$$で原トークンを借りる

  6. 繰り返す

このときのレバレッジ$${L}$$を求めます。

まず、2-4を1回実施したあとの保有量$${V_1}$$は

$${V_1 = V + rV}$$

これをn回繰り返すと

$$
V_n=V+ rV + r^2 V + r^3V … r^n V= V(1- r^{n+1}) /( 1-r)
$$

n=∞のとき

$$
S= V /(1-r)
$$

従ってレバレッジ(初期量Vにたいしての割合)は

$$
L= 1 / (1-r)
$$

となります。


フラッシュローンを使う

担保→借入→交換→担保… を繰り返すのではなく、フラッシュローンを使って同等のポジションを作成することもできます。

  1. フラッシュローンで原トークンを$${LV}$$借入

  2. 1で借入した原トークン$${LV}$$をLSDトークンに変換する

  3. 2のLSDトークンを担保にLTV $${r}$$で原トークンを借入

  4. 3で借入した$${rLV}$$と原資Vでフラッシュローンを返済

同様にレバレッジ$${L}$$を求めてみましょう。

$${LV}$$と$${rLV}$$の差額を原資で返す必要があるので、以下の式となります。

$$
LV-rLV = V
$$

$${L}$$について解くと

$$
L = 1/ (1-r)
$$

となり、前項と同値のレバレッジとLTVの式が導かれます。

利回りは?

では次に利回りを求めてみましょう。
担保のLSDトークンのAPYを$${Y_1}$$、借入した原トークンの金利を$${Y_2}$$とすると、以下の式が成り立ちます。

$$
L y_1 - r L y_2 =  ( y_1 - r y_2) / (1 - r) 
$$

担保のAPYや借入金利は固定で計算していますが、これは実際には変動するものであり関数となります。

特に借入金利は、変動金利の場合Utilization Rate(預入と借入の需給)によって決まるため、かなり変動します。

正確な見積もりは複雑すぎるので今回は定数として算出します。

Aaveには固定金利も用意されていますが、変動金利よりも高くStakingの利回りを超えてしまうため、レバレッジをかけてもほとんど利回りが出ません(むしろマイナス)


清算が発生する価格


清算の仕組みはレンディングプロトコルごとに色々あるのですが、Aaveでは以下の式を使用しています。
その式のHealth Factor $${H_f}$$が1を下回ると清算が発生します。

$$
H_f = \frac{ \sum{Collateral_i \: in \: ETH \: \times \: Liquidation \: Threshold_i}}{Total \: Borrows \: in \: ETH}
$$

この清算の式から、清算が発生する価格$${p_L}$$を求めてみましょう。


Liquidation Thresholdを$${T}$$とします。
預けられた担保は、ある地点tのLSDトークンの額$${V_t}$$とすると、$${LV_t}$$となります。
借入した額は、当初の原トークンの額を$${V_0}$$とすると、$${rLV_0}$$となります。
従って、上記のHealth Factorの式に当てはめると以下を得ます。

$$
\frac {LV_tT} {rLV_0} = 1
$$

$${\frac {V_t} {V_0}}$$が地点tでのprice (借入時からのpriceの変化率。0地点で1=1のpegを維持してると仮定)となるので

$$
p_L= \frac {r} {T}
$$

となります。

清算が発生した場合は?

Aaveでは、前述した通りHealth Factorが1を下回った場合、担保の精算が行われます。
これはオークションによって行われ、ある一定の割合(close factorと呼ばれる)まで担保清算が行われます。

close factorは0.5(v3では条件によって1.0)であり、それの意味するところは、清算を実行する清算人は、50%まで担保を処分できます。
大体の場合、清算人は利益を最大化するために50%を選択します。

また、清算される側は清算人にliquidation bonusを支払う必要があります。

このliquidation bonusは担保の資産のリスクによって異なり、ETHでは5%です。

清算によって原資がいくら減少するかを式を求めてみましょう。

清算発生価格を$${P_l}$$ close factorを$${C_f}$$  liquidation bonusを$${B}$$ 借入時のLTVを$${r}$$ 原資を$${V_0}$$とすると

清算発生時の担保$${Collateral_a}$$は$${\frac {P_LV_0} {1-r}}$$
借入$${Borrows_a}$$は$${\frac {rV_0} {1-r}}$$
清算後の借入額$${Borrows_b}$$が$${Borrows _a - C_f * Borrows_a = \frac {r(1-C_f)V_0} {1-r}}$$
清算人に渡す担保$${Bonus}$$が$${C_f * (1+B) * Borrows_a = \frac {rC_f(1+B)V_0} {1-r}}$$
となります。

これらから、清算後に残る原資の式は以下となります。

$$
Collateral_a - Bonus- Borrows_b = V_0\frac {P_L - rC_fB -r}{1-r}
$$


レバレッジステーキングの設計をする

上記でレバレッジ、利回り、清算の式が求まりました。
そこで実際にstETHとAaveを使ったレバレッジステーキングの設計をしてみましょう。

大事なのは清算を発生させないように、かつレバレッジを最大限にする、です。
清算さえ発生しなければ、StakingされたETHが引き出し可能になった後にpriceは1に戻ります。(と仮定します!!)

清算が発生する価格と利回りを見積もる

そのためには、精算が発生する価格と利回りを見積もる必要があります。
当然、高い利回りを得ようと思えば、清算が発生する価格は上昇します。
そのギリギリを見極める必要があります。

そこで、stETH/ETHの過去の底値を探ってみましょう。

下記はstETH-ETHの長期チャートです。3ACショックの後、0.933の底値をつけてることがわかります。

そこで、「stETH/ETHのpriceは、今後3ACの底を割らない。なので清算の価格を0.92くらいにしておけば清算は発生しない」と仮定し、LTV $${r}$$と利回り$${y}$$を求めてみましょう。

stETH-ETH chart (CoinGeckoより)


LTV, レバレッジ、利回りを求める

見積もりが終われば、そこから具体的な数字に落とし込めます。

Aave v3・E-mode・ETHのLiquidation Thresholdは0.95です。
そのため、LTV $${r}$$とレバレッジ$${L}$$は

$$
r = p * T = 0.92 * 0.95 = 0.874
$$

$$
L = 1 / (1 - r ) = 7.93
$$

ここでLTVとレバレッジが求まりました。次はAPYです。

現在、stETHのAPYは4.7%であり、Aave v3のETHの借入金利は3.4%です。
このAPYと借入金利が一定だと仮定して、APYの式に上記数値を当てはめると、

$$
y = \frac {0.047- 0.874 * 0.03.4} {1 - 0.874} = 0.1371
$$

となり、APYは13.7%と求められます。 


もしも清算が発生するといくら損する?

清算後に残る原資の式に上記の数値を代入してみましょう。

$$
V_0\frac {P_L - rC_fB -r}{1-r}
$$

$${r = 0.874 、P_L=0.92、C_f=0.5、B=0.05}$$です。

計算すると、0.1916となります。
つまり清算が発生すると、原資は約8割減になります。
priceは1.0->0.92と8%しか減少してないにも関わらず、です。

特に清算によるペナルティは原資に対して17.3%と高額になります。

清算だけは絶対に避けましょう!



実践編

では、Aave v3とstETHで実際にやってみましょう。

具体的にぐるレバやってみよう

Aaveでは以下のように借入時にHealth Factorが表示されます。なので前項で決定したLTVからHealth Factorを求めます。

$$
h_f = \frac {T} {r} = 0.95 / 0.874 = 1.08
$$

Health Factorが求まったので、この数値が1.08になるように借入を繰り返します。

  1. wstETHをAave v3に預入

  2. ETHをHealth Factorが1.08になるように借入

  3. 借入したETHを、1inch等でwstETHに変更

  4. 再度、wstETHをAave v3に預入

  5. 再度、ETHをHealth Factorが1.08になるように借入

  6. 借入できる額がある程度小さくなるまで繰り返す(無限にやる必要ないです)

これによって、設計したポジションが構築できます。

Defi Saverでフラッシュローンを使ってポジションを構築してみる

https://app.defisaver.com/


実際にぐるぐると何回も担保差入と借入を繰り返すのは、めんどくさいですしガスもかかります。
なので、フラッシュローンを使って同様のポジションを構築してみましょう。

自分でContractを書いてフラッシュローンを使うのは現実的ではないので、Defi Saverを使います。

Defi Saverは様々なDefiプロトコルを組み合わせて、独自のDefiのレシピを作成できます。

今回は、10ETHを元手として、7.9倍のレバレッジをかけるレシピを作成します。

レシピの詳細は以下になります

  1. 79 WETHをAaveのフラッシュローンで借入

  2. 79WETHを全額wstETHに変換

  3. Aave v3 E-modeを設定

  4. wstETHを全額Aave v3に預入

  5. Aave v3から69WETHを借入

  6. 保有してる10ETHをWETHに変換

  7. 79WETHのフラッシュローンを返済

下記がレシピのリンクになります。
wstETHのamountはレートによって違うので逐次調整してください。(全額ぶち込むという設定ができない)

このレシピを実行すると、以下のポジションが生成されました。

ガス代やプロトコルの手数料、wstETH/ETH交換時のslipage等々があり、想定のAPY13.7%より若干下回っていますが、13.52%と概ね予想通りのAPYができていることがわかります。

**試してみるときはシミュレーションモードで実行してね!mainnetで実行して損失を被っても知らん!**



高APYは持続可能なのか

上記で見積もったAPYは、「1年間priceが清算priceを下回らず、stETH利回り・ETH借入金利が一定で、かつ最終的にpriceが1.00で交換できた場合」の1年間の利回りです。
この利回りは、「ETHの引き出しが開始されるまでdepegするリスク」をとるからこその利回りになります。

Shanghaiアップデート後、StakingされたETHの引き出しが可能になり、stETHとETHの双方向の1v1交換が可能になれば、stETH/ETHのpriceはほぼ1.0で均衡するでしょう。

ということはdepegのリスクは限りなく低くなりますが、反面APYも下がります。
なぜならdepegのリスクが低くなり、レバレッジステーキングのリスクが低くなれば、それだけETH借入の需要が増え、金利が上昇するからです。

高APYはリスクの裏返しであり、リスクが低くなればAPYは低くなります。常にそれを頭に入れ、高APYにAPE INするのではなく、「裏側にあるリスクは何なのか?」を正確に見積もるようにしましょう。


補足

stETHとwstETH

stETHは、ERC20のトークンであり、保有しているだけでAmountが増加していきます。これがリベースと呼ばれるものです。

通常のトークンはERC20のContract内でaddressとamountを持っていますが、リベースされるトークンは下記のように全体に対するshare率を保有しています。

そのため、全体の保有量(totalPooledEther)が増加すると、保有するamountも増加する仕組みとなっています。

balanceOf(account) = shares[account] * totalPooledEther / totalShares

https://docs.lido.fi/contracts/lido/

ただ、この仕組みは一部のプロトコルでサポートされていません。

例えば、シンプルなレンディングプロトコルを考えてみましょう。

stETHをAmount Xで預入れ、その代わりにcTokenを同量受け取ったとします。
この際のstETHの所有者はプロトコルとなり、cTokenと同量のstETHをClaimできます。
しかし預け入れられたstETHはリベースされていきますが、cTokenはリベースされません。
つまり常にXのstETHしか保有できないことになります。

この問題を解決したのがwstETHです。
wstETHはamountが増加するのではなく、priceが増加します。
LIDOが増加分をpriceに乗せて、stETH<->wstETHの交換を担保しています。

これによって、プロトコル側の実装なしにリベース分をpriceの増加として受け取ることができます。

Aave v2とv3 E-modeの比較

下記にv2とv3の比較表を載せてます。

最大LTVまでstETHをレバレッジステーキングした際の、最大レバレッジと最大APYです。(stETHのAPYを5.0%, ETHの借入金を3.5%として計算)

v2のほうは、最大レバレッジ4倍、APY9.5%で清算はprice0.94で発生します。
一方でv3のほうは、最大レバレッジ13倍、APY23.50%、清算price0.97と、効率がかなりよくなっているのがわかります。




この記事が気に入ったらサポートをしてみませんか?