The Coffee Times

シゴト・英語・テクノロジー・人生の楽しみ方を発信してます

『UMAプロトコル』が可能にする"DeFi"の世界/オープンな金融市場

DeFi(Decentralized Finance)が一部で盛り上がりつつあり、UMA(Universal Market Access) も重要な役割を果たすため、書きました。
まだあまり話題になっていなく、若干ステルス気味ではありますが、先取りするのは得意なので、見ていきましょう。

 

【目次】

 

 

UMAは、誰もが公正に金融商品・投資機会にアクセスできるようにするための金融契約プラットフォームです。 誰でもというのは、個人だけに限らずスマートコントラクト、DAOも含めてです。オラクルで価格がブロックチェーンに提供される限り、どのような資産・もの・リスクに対してもロングやショートができるという、グローバルなプラットフォームを目指します。

独自チェーンではなく、Ethereum上のプロトコルです。Ethereum以外も主要なチェーン上で動くようになる予定です。ICOも予定していませんし、ERC20のトークンもありません。

このレポートの前半は、金融契約やデリバティブの歴史について少し触れていきますが、先に具体例のところを見ていただいても理解できるかと思います。

投資家

投資家としては、Placeholderを始め、coinbase ventureやBlockchain capitalなどが初期の投資家となっています。アドバイザーとして、Chris BurniskeやJill Carlsonがいます。

 

 

金融契約,デリバティブの歴史

簡単に金融契約の歴史を見ていきます。

金融派生商品デリバティブ)は、原資産(Underlying Asset)に対する、2者間での取り決めです。実際の資産を交換する代わりに、現金または他の資産を交換すると合意された状態です。

原資産の価値が変化するにつれ、デリバティブ契約の正味現在価値(Net Present Value:NPV)も変化します。これに基づいて、相場が有利なほうに動いた側は得をし、相手方は損をするという仕組みです。

金融派生商品の登場により、売買することが不可能だったリスクに賭ける、資産をヘッジすることが可能になり、現代の金融で主要な立場となっています。

1930年代に最初の近代的なデリバティブが登場し、将来的に特定の価格で商品を交換することに合意することによって、ボラティリティをヘッジできるようになりました。

この初期のデリバティブは、特定の商品と量を設定し、契約の条件に従って両当事者がしっかり支払うことを保証する証拠金要件(契約を維持するための担保金)を管理するために、仲介者として決済会社(クリアリングハウス)を使用していました。これが基礎をつくり、金融市場が20世紀に拡大し、デリバティブも、新たな種類の金融リスクをヘッジするために拡大しました。

その拡大に合わせて、店頭(OTCデリバティブ市場が出来ました。OTCデリバティブ契約は、原資産の価値の変動に応じて、各取引相手が他方に支払う金額を明記した、2つの取引相手間での"オーダーメイドの契約"といえばいいでしょうか。

典型的なOTCデリバティブ取引では、一人の取引相手(Taker)が、一人以上のマーケットメーカーから特定の条件を見て相見積もりを要求し、そこから相手を決め、お互い契約に対して同意します。

OTCデリバティブは柔軟で、何でも書くことができるため、 1990年代と2000年代にOTCデリバティブ市場が急速な成長しました。UMAのホワイトペーパーによると、2017年にはOTC金融デリバティブの540兆ドル以上発行されていると推定されており、OTCデリバティブ市場は世界最大規模の金融市場となっています。

この柔軟性に対する代償が、カウンターパーティーリスクです。相手方が破綻するなどして、契約が履行されずに損失を被るリスクのことです。(2008年の金融危機の間にリーマン・ブラザーズベア・スターンズがそうであったように)取引相手が破綻すると、信用が破綻し、次々とドミノ倒しのように契約が崩れていくリスクが市場に持ち込まれる可能性があります。
仲介として決済機関がある場合でもカウンターパーティリスクを避けるため、洗練された投資家、審査された人しかアクセスができません。またそれでもカウンターパーティリスクを100%防ぐことはできません。

Synthetic Asset の概要

OTCデリバティブにより、Synthetic Asset(合成資産)に投資できる、などと言い方がされます。DeFi関連の記事や会話をしていて登場することがあるので、一応この単語を出しておきましたが、要するに資産を保持せずとも、その資産の変動分に投資(ロング、またはショート)できるということです。
一般的な取引方法がトータルリターンスワップ(TRS)です。
UMAプロトコル自体は柔軟で、ほとんどすべての形態の金融派生商品に拡張することができますが、例としてトータルリターンスワップに焦点を当てているとホワイトペーパーに書かれています。

トータルリターンスワップとはあとで具体例で説明しますが、特定の原資産の”トータルリターン”を一方が支払い、その相手方が固定キャッシュフローを支払います。
トータルリターンとはその名の通り、契約期間内に原資産への投資から得られるすべての収益を指します。配当、資本の増価、減価償却、変動要素をすべてです。固定キャッシュフローは、原資産を借りるための、金利コストと考えれば良いでしょう。

原資産は、保持されるわけではなく、その価格が参照されるため、”参照資産”などとも呼ばれ、債券、ローン、株式、その他の金融資産の組み合わせで構成することが可能です。

そして取引は、お互いが合意した将来の指定された日に決済、そして終了します。これにより、片方は、実際の資産を購入および保管(または借入および売却)することなく、資産を所有(または売却)することで得られるすべての利益を享受することができます。その代わりにするのは、固定の利子を払うこと、また不利な方向に相場が動いたときに、マージンを維持するだけです。

UMAプロトコルの動機

あらゆる金融市場へのアクセスに対する障壁を解消して、個人、団体、またはDAOが金融商品・リスクにアクセスにし公正な市場を目指す、というのがプロジェクトの動機、方向性です。

ここに至った歴史とロジック的には以下のように整理できるかと(個人的に)考えています。

そもそも特定の資産を購入して所有する(または借りて売る)のは、金額的に、保持コスト的にも、移動リスク的にも、難しい

デリバティブは、資産を保管する必要性をなくし、これを解決

しかしカウンターパーティーリスクがある

結果として、金融派生商品は、デューデリジェンスと費用のかかる法的手続きを行い、かつ信頼できる少数の機関投資家だけが利用できるようになる

大きな機関以外はデリバティブの恩恵を受けることができなかった

UMAコントラクトにより、透明性を持った状態でデポジットできることを利用し、金融市場へのアクセスに対する障壁を排除し、単一のグローバル市場を作る。個人も、スマートコントラクトも、DAOも参加できる金融市場を作る。デポジットされたものからコントラクトが清算するのでカウンターパーティリスクも排除。

UMAコントラクトの構成

取引する人(アドレス)にそれぞれ、マージンアカウントがコントラクト内にあり、そこに資金を預けていく形になります。後に具体例で説明します。

その他、原資産とするオラクルの参照先、また期間、不履行になった場合のペナルティなどをコントラクト内に定義します。計算を走らせる関数を置き、その計算の結果をもって、不履行や資金の移動、契約の終了などを行います。この計算を走らせる関数をremargin()と定義していますが、以下ではリマージンと呼ぶことにします。

 

 

UMA コントラクトを使った例

それでは、細かい点よりも、具体例で見ていきましょう。※具体例は一例です、数字などは柔軟に設定ができます。

アリスが、1年間で$10 millon の「金」のトータルリターン(変動による損益)を受け取りたいと仮定します。代わり固定金利を支払います。(このときアリスはTakerと立場になります)

つまり$10 million分の金が上がったら上がった分だけ得をし、下がったら下がった分だけ損をする、という投資をしたいと考えているとしましょう。

Aliceは現在の金のボラティリティを鑑み、最低証拠金要件(最低限デポジットしておかないといけない証拠金、お金)を5%に設定します。その証拠金を割ってしまった場合は不履行となります(不履行は、以下デフォルトということにします)。

このデフォルトになったときのペナルティを3%に設定します。

ちなみに今回は、すべてUSDで表示しますが、価格、証拠金要件、デフォルトペナルティなど、すべてETHで支払い、保管がされます。

さてここで、最初の価格を、1オンスの金= $1100、1ETH = 100ドルとします。アリスはUMAコントラクトをオープンにし、10,000 ETH($1million分)を預けます。

 

 

図、アリスのオープンUMAコントラクト

アリスはこのオープンになったコントラクトを、2人の有名なマーケットメーカーである、ボブとチャーリーに送ります。ボブとチャーリーはこのコントラクトに対し「マーケットを作る」ことに決めました(ゆえにMakerとよびます)。

この時点では、ボブとチャーリーのどちらがマーケットを作れるかは決まっていません。

ボブもチャーリーも、「選ばれたら、自分のアドレスから15,000 ETH($ 1.5million相当)を引き出してもいいよ」とUMAスマートコントラクトに対して許可を与えます(資金の移動はまだありません)。

当然ですが、この15,000ETHは、アリスが定めた必要証拠金である5%($10millionの5%なので$500,000、つまり500ETH)以上あることを満たしています。

ここでアリスは、2人の掲示した条件を見てみます。

ボブが提示した条件としては:

①(アリスがロングしたいなら)金利である5%を受け取ることに対して、アリスにトータルリターン(金の変動による損益)を支払う、

もしくは

②(アリスがショートしたいなら)金利として4.75%を支払うことに対して、アリスからトータルリターン(金の変動による損益)を受け取る、

というものでした。

一方でチャーリーの提示した条件は:

①(アリスがロングしたいなら)トータルリターンを支払うのに対して5.2%を受け取る、

もしくは、

②(アリスがショートしたいなら)トータルリターンを受け取るのに対し、4.9%を支払う、

というものでした。

最初に書いた通り、アリスは金のトータルリターンを受け取ることを望んでいる(ロングしたい)ので、ボブの申し出ることを受け入れることにしました。アリスはチャーリーに5.2%より、ボブに5%の固定金利を支払うほうがお得だからです。

UMAのスマートコントラクトは、ボブに取引が「成立」したことを通知し、すでにボブが承認している15,000 ETHをUMAのスマートコントラクトの中のマージンアカウント(アドレス)に転送します。

チャーリーは参加できなかったので、UMAコントラクトが、15,000ETHを引き出してもいいというチャーリーの承認を取り消します。

取引が確認され、コントラクトの詳細がブロックチェーンに記録されます。

 

 

図 最終的に決まった、アリスとボブ間のコントラクト

 

アリスとボブは同意し、お互いに支払う約束がスマートコントラクトのETH証拠金で裏付けられました。

 

 

図. コントラクトの開始

次の日、ETHの価格は変わらないまま、1オンスの金= $1199に価格があがったとします。

アリスとボブの両方が、自分たちで(オフチェーンで)、コントラクトの今の価格、正味価格(NPV)と証拠金要件をチェックします。すると以下のようになっていることがわかります。

金が9%($1,100から$1,199まで)高騰し、そして1日の利息が過ぎたわけです。

利息は$10millionの年5%と最初に書いていますが、1日だけ経ったので365日で割ると1日分の利息は$1370ドルですから、高騰した9%分のプラス分$900,000 から利息の 1,370ドルを引いた $898,630ドル分が、アリスが得した分となります。

ここで、コントラクト内のremargin()関数という関数がオンチェーンで呼び出されると、スマートコントラクトは、8986.30 ETH($898,630ドル相当)をボブのマージンアカウントから、アリスのマージンアカウントに移動することになります。

しかしこの関数を呼び出すかどうかは、ガス代削減のためにも任意となっています。アリスが自分の負担でガス代を払って、コントラクトを実行すると、計算され資金が移動します。

ボブは、当初$1.5mmのマージン残高から、898,630ドル減少すると、$601,370になり、最低証拠金要件である$500,000を下回りそうで危ない、ということが分かります。これを割ると、デフォルトになり、$ 300,000相当ドルのペナルティを支払うリスクがあります。

このままでも最低証拠金要件は上回っているので維持はできますが、やはりデフォルトが怖いので、Bobはスマートコントラクト内の彼のマージンアカウントに追加の10,000 ETH($1millionドル相当)を預けます。

 

 

図. ボブが証拠金を追加

リマージン(再計算)と資金の移動

その間、アリスはをコントラクトでリマージン(オンチェーンで計算して資金の移動を行うこと)のためにガスを支払う価値があるかを考えます。

結果、アリスは必要なガスを支払い、remargin()関数を呼び出しました。remargin()関数は、別の関数を使い、指定されたオラクルを照会して価格情報をとってきて、898,630ドル分アリスが得すると判断します。

その後、コントラクトは8986.30 ETH(898,630ドル相当)をBobのマージンアカウントからAliceのマージンアカウントに移動します。

Aliceのマージンアカウントは、コントラクト開始時の10,000 ETHから18,986.30 ETHに変更され、Bobのマージンアカウントは、25,000 ETH(追加の10,000 ETHを預託した後)から16,013.70 ETH(8986.30 ETHが、 remargin()がチェーン上で呼び出されたときのアリスのマージンアカウントに差し引かれて)に変更しました。

継続できるかの判断

UMAコントラクトは、リマージンの最後のステップとして、アリスとボブの各マージンアカウントに証拠金要件を満たす証拠金があることを確認します。

アリスは、マージンアカウントに現在18,986.30 ETH($1.899 millionの価値がある)が含まれていることを確認できるので、必要な証拠金$ 500,000に対して13,986.30 ETH(または$1.398 million)分が余剰に担保されています。アリスはこの13,986.30 ETHを引き出すこともできます。

ボブのマージンアカウントには現在16,013.70 ETH($1.601 m相当)が含まれており、必要な証拠金 $ 500,000に基づいて11,013.70 ETH(または1.101 mm)だけ過剰担保されています。AliceとBobの両方のマージンアカウントが必要証拠金を上回っているため、コントラクトは有効なままです。

 

 

図. アリスがリマージンをし、コントラクトが資金を移動させる(ボブ→アリス)


翌日、金の価格は変わっていませんが、ETH/USDは初期価格の1 ETH = 100ドルから1 ETH = 80ドルに下がりました。

もしアリスがremargin()を呼び出したら、1日分の利子として先ほど計算したように、$1,370がアリスからボブに支払われますが、UMAコントラクトがオラクルに問い合わせたときに1ETH =80ドルに下がったことを認識します。

その結果、コントラクトは、13.70 ETHではなく、17.12 ETH(このときのレートで$1,370分) をAliceのアカウントからBobのアカウントに移動します。

繰り返しになりますが、このコントラクトは表示はUSDでも基軸通貨はETHです。移動されるETHの金額は、その時点でのETHの価格に基づいて、転送時に計算されます。

コントラクトの終了

結局1年後、金は1オンスの金= 1320ドルまで高騰し、ETHは1 ETH = 80ドルに下がったままとします。

終了の日に、アリスは最後にremargin()を呼び出します。最終的な正味価格(NPV)は、

トータルリターン$2millionドル(1100ドルから1320ドルまでの金の$10millionドル相当の価値の上昇)から、$500,000の固定金利分($10millionの5%の利子)を差し引いて、合計$1.5millionが、アリスの勝ち分、つまり利益になります。

この金額は、その時のレートで計算し、1ETH = 80ドルなので、18,750 ETHに相当します。

まとめると、AliceとBobは契約期間(この場合1年間)を通じて必要証拠金を維持したので、年間の証拠金移動は、

Aliceのアカウントは+18,750ETH、ボブのアカウントは-18,750ETHとなります。

そしてterminate()関数が、アリスおよびボブのマージンアカウントに残っている証拠金を、それぞれのパブリックアドレスに戻します。

デフォルトがあった場合の例

上の例と同じように、アリスとボブの間で最終コントラクトが締結され、開始されたとします。

翌日、ETHの価格は1 ETH = 100ドルのまま変わらないで、1オンスの金= 1221ドルへ高騰したとしましょう。

コントラクトのremargin()関数がオンチェーンで呼ばれ、ボブのマージンアカウントからアリスに移される資金は、$ 1,100,000 - 1,370= 1,098,630であるため、スマートコントラクトは10,986.30ETHを、ボブのマージンアカウントからアリスのマージンアカウントへ移動します。

これにより、ボブの証拠金残高が4,013.70 ETH($401,370ドル)になり、証拠金残高要件である$500,000を下回る金額になります。

ボブはこれを見て、「このままremargin()関数が呼ばれてリマージン(チェックして資金を移動する操作)されるとデフォルトになるが、もし『ETHが1ETH = 100ドルから1ETH = 125ドルまで上昇し、金の価格が変わらない』のであれば、自分の4,013.70 ETHは$500,000以上の価値に持ち直すのでデフォルトにならない」と考えました。

そしてボブは、コントラクトがリマージンされる前にETH / USDの値が変わることを期待して待つことを選択しました。

しかし、アリスは、マージンアカウントから余分な証拠金のいくらか引き出したいと思ったので、コントラクトをリマージンすることにしました。

ボブが期待した『ETHの125ドル回復』となる前に、アリスがremargin()関数を呼び出したわけです。

スマートコントラクトは対応するETHをボブのマージンアカウントからアリスのアカウントに移動します。

 

 

図. リマージンにより、金額が移動

証拠金を移動した後、スマートコントラクトは、証拠金残高が依然として証拠金要件(5%以上ないといけないという条件)を満たしているのかを確認し、必要ならデフォルトを処理するためにterminate()関数を実行します。

ボブの証拠金残高が、証拠金要件である$500,000を下回っていることを確認すると、UMAコントラクトは、ボブからアリスに3,000 ETH($ 300,000相当)のデフォルトペナルティを支払い、残りの証拠金残高をアリスとボブの各パブリックアドレスに返します。そしてコントラクトを終了させます。

結果から考えると、ボブは、証拠金要件を満たさず3,000 ETHのデフォルト・ペナルティを支払うよりも、証拠金要件を満たすために追加の約1,000 ETHをマージンアカウントに預けたほうがよかったということになります。

予想と反して、ETHがすぐに上がらなかった、またはアリスがすぐリマージンをした、というのが敗因です。

 

 

図. ペナルティが支払われてクローズする図

具体例を見ましたが、ここで出てきた証拠金要件(または維持証拠金とも言えるでしょう)の5%や、デフォルトがあった際のペナルティの有/無、また有る場合はその金額%、コントラクトの期間、参照とするオラクルをどれにするか、例では金であったが対象となる資産を何にするか(金でもBitcoinでも、オラクルがある限りは、りんごでも可)などはすべて、コントラクトを作成時に当事者が決めることができます。

その他、コントラクト内のロジックの部分、関数なども柔軟にセットできます。

トークン化について

コントラクトによって、Synthetic Assetに投資できるようになるわけですが、それをさらに細かく分割して流通させるなどをする場合はトークン化をこともできます(この場合は、当事者が多少の実装をする必要があります。しかしそれもサードパーティがツール等を作っていくと予想できます)。

トークンを導入し、参照資産のロング(またはショート)の所有権を表すERC-20トークンを作成できます。たとえば、アリスが、金でロングポジションを表す$10million相当のERC-20トークンを作成したいとします。

$10m相当のETH(今の例だと100,000ETH)の預金と引き換えに、アリスは預金の金額の権利を表すトークンを受け取ります。

以下の図の示すように、アリスのマージンアカウントは完全に担保になり、アカウント内のマージンの値がトークンになります。この図では、1 ETH = 100ドルで、ボブは最初に15%の証拠金を預けると仮定しています。

 

 

これらのトークンの所有権はさらに細分化することができ、アリスはERC-20トークンとして分配できます。ERC20なので、もちろん取引所やウォレットが扱うことができます。

そして例えば、アリスが自分のコミュニティで、多くの個人を知っているとします。これらの人たちも、金への買いの投資機会(ロングポジション)を得たいが、金の価格を反映した現物の金または既存の金融商品が買えないとします。

既存金融で金の取引することに慣れているスワップトレーダーのボブをみつけ、アリスが投資家からの利子の調達するので、ボブは金のロングの投資機会を提供してくれ、というような契約を提案することもできます。それで両者が条件を決め、UMAコントラクトで合意するという流れです。

ボブが、もし自分自身で金のロングを持ち続けたくない場合は、既存の金融市場の、金先物や金スワップで、UMAコントラクトのリスクを相殺することもできます(図の右側)。

さらには、ボブがこの既存金融の取引相手から、年5%などの手数料を請求することができるのであれば、アリスにその一部(たとえば1%)を支払い、ビジネスパートナーとして拡大していくということもできます。

 

=== 

 

以上が、UMAの背景、動機、仕組み、具体例を見ましたが、リスクと対策、ユースケースとこれから起こることについて、TokenLabにまとめましたので、ご興味のある方はぜひ御覧ください。