玩轉「可計算的金融」第一步:充分了解風險並學會完美對衝策略。

撰文:Jackson

開宗明義:做市有風險,對衝不可少!

CoFiX 作爲一種可計算的金融交易模型的實現,需要做市商角色提供資金流動性。必須指出,在 CoFiX 的資金池中添加流動性的行爲不是「儲蓄」,而是參與「做市」!流動性提供者應充分理解其中存在的風險。

簡而言之,CoFiX 的資金池中添加流動性,也就是做市商通過承擔一定的價格波動風險,來獲取交易過程中收益的行爲。CoFiX 中定義的做市、贖回、兌換交易,都有可能會影響 CoFiX 資金池的資金結構,這是價格波動風險的來源。

有風險並不可怕,CoFiX 設計的最大優勢,是讓這些風險皆可計算,從而讓參與者可以根據自身的風險偏好來有效管理、完美對衝這些風險。

簡單來說,對於價格波動風險,做市商可以通過在場外進行反向交易對衝來消除。基本思路是:根據資金池中資金的結構和自己的份額比例,實時計算出自己可以分得的部分,與自己選定的參考點進行比較,消除負增量,從而保證在任何價格下,總資產都是處於增長狀態。

何爲對衝?對衝邏輯是什麼?

由於不同的人知識背景不同,理解 CoFiX 的對衝邏輯的難度也不相同。本文假定讀者對 CoFiX 的基本邏輯有全面的理解,對以太坊和基於以太坊的 DeFi 都有基本的瞭解,逐步從一個最簡單的模型,推導出 CoFiX 的對衝邏輯。

假設 Alice 有 200ETH 和 2000USDT 的總資產,並認爲這個是她心中理想的資產配置,我們稱之爲「參考狀態」。後來 Alice 希望通過參與某些活動(例如 DeFi),來讓資產增值。

資產變化

假設 Alice 參與某 DeFi,使得資產變成了如下狀態:

1. 絕對增長
- 200ETH,2001USDT
- 201ETH,2000USDT
- 201ETH,2001USDT

顯然,上面三種情況,都是比參考狀態(200ETH、2000USDT)更優的,無論 ETH/USDT 的價格如何變化。我們稱之爲「絕對增長」。

2. 相對增長
- 201ETH,1999USDT
- 199ETH,3000USDT

假設現在的價格爲 400,即 1ETH=400USDT。此時顯然 Alice 的資產情況也是比參考狀態(200ETH、2000USDT)更優的。但是,這種更優是依賴於 ETH/USDT 價格的:
- 當 ETH 價格跌倒 1USDT 以下時,201ETH,1999USDT 相對於參考狀態會發生虧損。
- 當 ETH 漲到 1000USDT 以上時,199ETH,3000USDT 相對於參考狀態會發生虧損。

可見這種情況的盈虧依賴於價格,當價格變化時,盈虧狀態可能發生改變,我們稱之爲「相對增長」。

3. 相對虧損
- 201ETH,1500USDT
- 199ETH,2100USDT

假設現在的價格爲 400,即 1ETH=400USDT。此時顯然 Alice 的資產情況是比參考狀態(200ETH、2000USDT)更差的,當然,這種更差也是依賴於 ETH/USDT 價格的。我們稱之爲「相對虧損」。

4. 絕對虧損
- 200ETH,1999USDT
- 199ETH,2000USDT
- 199ETH,1999USDT

顯然,上面這三種情況,是比參考狀態(200ETH、2000USDT)更差的,無論 ETH/USDT 的價格如何變化。我們稱之爲絕對虧損。

出現這種情況,說明是 Alice 參與 DeFi 使其發生虧損。

狀態分析

1. 絕對增長
對於絕對增長,說明 Alice 參與 DeFi 的過程中直接獲利,沒有任何的不確定性。

2. 相對增長
對於相對增長,說明 Alice 參與 DeFi 的過程中可能獲利,但是依賴於價格。爲了消除價格變化帶來的不確定性,Alice 可以通過做一次等價交換,從而把狀態變爲絕對增長狀態。

  • 201ETH,1999USDT
    對於此狀態,Alice 可以通過賣出 1ETH,換得 400USDT;也可以通過賣出 1/400ETH,換得 1USDT (也可以是這兩個點之間的任意狀態),來達到絕對增長狀態。

  • 199ETH,3000USDT
    對於此狀態,Alice 可以通過使用 400USDT 買入 1ETH,也可以通過使用 1000USDT 買入 2.5ETH (也可以是這兩個點之間的任意狀態),來達到絕對增長狀態。

我們將 Alice 上面的兩種操作稱之爲「對衝」。

3. 相對虧損
對於相對虧損,虧損已經發生,無法通過 2 中描述的對衝操作來改變虧損局面。出現這種情況,有兩種可能:
- Alice 參與的 DeFi 直接給 Alice 帶來虧損
- Alice 沒有及時對衝,價格波動造成虧損

4. 絕對虧損
對於絕對虧損,虧損已經發生,也沒有辦法通過對衝來改變虧損局面。出現這種情況,也有兩種可能:
- Alice 參與的 DeFi 直接給 Alice 帶來虧損
- Alice 沒有及時對衝,價格波動造成虧損

Alice 作爲向 DeFi 投資的人,希望盈利,並且忽略價格波動帶來的風險,只有總是保持絕對增長狀態才能達到這個目的。也就是,Alice 的目標就是 1 狀態。

對於 2 狀態,Alice 可以通過及時對衝,將狀態轉化爲 1 狀態。
對於 3 和 4 狀態,有兩種可能導致:

  • 其中一種是 DeFi 給 Alice 帶來虧損,Alice 可以通過調整策略(參與策略不正確),或者不參與這個 DeFi (DeFi 本身存在被套利的可能)來避免這種情況。

  • 另外一種可能,就是沒有及時從 2 狀態對衝,導致其演變成 3 或者 4 狀態。可見對衝的重要性。

結論:

  1. 對衝就是將相對增長狀態改變爲絕對增長狀態,避免其演化成相對虧損狀態或者絕對虧損狀態的操作。
  2. 要進行對衝,必須要先選定一個參考狀態作爲依據。
  3. 要保持確定的收益,對衝不可避免。

CoFiX 做市

假設 Alice 參與的 DeFi 就是在 CoFiX 上做市,且是爲「ETH/USDT」資金池提供流動性,我們可以來看看她會面對的一些選擇。

假設 Alice 的總資產是 200ETH 和 2000USDT,她將 100ETH 和 1000USDT 放到 CoFiX 中做市,另外 100ETH 和 1000USDT 放在場外用於對衝。

爲了簡化問題,先考慮 CoFiX 只有 Alice 一個人做市。此時 Alice 份額佔比 100%,下面模擬操作過程(下面的計算,忽略交易費用)。

  1. Bob 從 CoFiX 用 USDT 買入 1ETH,此時 ETH/USDT 價格爲 400,考慮到 CoFiX 的 K 值和θ手續費,Bob 實際用 410USDT 換得的 1ETH。此時,CoFiX 資金池中有 99ETH、1410USDT。由於 Alice 份額佔比 100%,所以 CoFiX 資金池中全部資金都是 Alice 的,因此 Alice 此時總資產變爲 199ETH、2410USDT,這對應上一節描述的相對增長狀態,存在價格波動風險,需要做對衝操作。

  2. 根據前面的描述,Alice 此時需要做對衝操作,具體操作方式是從用於對衝的資產中拿出 400USDT 到交易所換成 1ETH,交換後,Alice 在外部的對衝資產爲 101ETH、600USDT,總資產爲 200ETH、2010USDT,處於絕對增長狀態。

  3. 之後,CoFiX 陸續發生兌換交易,兌換方向各不相同。Alice 需要根據交易池中被成交後的狀態,不停的重複 2 中描述的對衝操作,來保證資產始終處於絕對增長狀態。

  4. 如果在較短的時間內,CoFiX 連續發生多筆正向和反向的交易,這些交易之間帶來的資產比例變化會抵消一部分。考慮到市場價格的連續性,Alice 可以針對這些交易帶來的總變化進行對衝。

前面描述的是隻有 Alice 一個人做市的情況,但是現實通常不會這樣。下面我們逐步來演化分析更復雜的情況。

  1. 回到原來的狀態,考慮在 Alice 之前,Carol 已經在做市,且 Alice 加入後,份額比例各佔 50%。

  2. Bob 從 CoFiX 用 USDT 買入 1ETH,此時 ETH/USDT 價格爲 400,考慮到 CoFiX 的 K 值和θ手續費,Bob 實際用 410USDT 換得的 1ETH。此時,CoFiX 資金池中減少了 1ETH,增加了 410USDT。由於 Alice 份額佔比 50%,因此 Alice 此時資產減少了 0.5ETH,增加了 205USDT,總資產 199.5ETH、2205USDT。

  3. 根據前面的描述,Alice 此時需要做對衝操作,具體操作方式是從用於對衝的資產中拿出 200USDT 到交易所換成 0.5ETH,交換後,Alice 在外部的對衝資產爲 100.5ETH、800USDT,總資產爲 200ETH、2005USDT,處於絕對增長狀態。

考慮 CoFiX 陸續有人加入,會使 CoFiX 資金池的總份額增加,相對應的每個做市商的佔比下降,先考慮做市商都是資金等比進入的,即不會影響到其他做市商的資金結構。此時,當 CoFiX 資金池通過交易發生變化時,每位做市商只需要按照自己所佔比例,對衝增量中自己佔比的部分就可以。

再考慮做市商不是等比做市加入的。這會帶來兩個影響:
1. 資金池的份額會增加,同時資金池的資金比例會變化。
這可以拆分成一個等比例的做市,和一個兌換交易來處理。

  1. 新做市商自己的資金結構在做市前後發生變化。
    這種情況,需要做市商自己應對。有兩種策略:
    A) 接受資金結構的改變,以此狀態作爲參考狀態
    B) 不接受資金結構的改變,做市後,立即發起一次對衝交易。

重要概念

參考狀態:要判斷盈虧,必須選定一個參考狀態,這個參考狀態就是用戶判斷盈虧的標準,也是對衝操作的目標和依據。

如何制訂 CoFiX 對衝策略?

在 CoFiX 中定義了做市、贖回、兌換三種基本操作,其中做市和贖回是針對做市商的,交易是針對普通用戶的。

對於兌換交易,不管是從哪個方向發生的,都可以按照上文「CoFiX 做市」章節中描述的策略進行對衝。
對於做市和贖回,可以分成「等比做市 / 贖回」,和「不等比做市 / 贖回」。

  1. 等比做市 / 贖回
    對於等比做市 / 贖回,相當於只是改變了每位做市上的份額比例,沒有改變資產結構,因此其他做市商只需要在後續的對衝時,重新計算自己的份額就可以。

  2. 不等比做市 / 贖回
    對於不等比做市 / 贖回,可以將其拆分成一個等比做市 / 贖回,以及一筆兌換交易來處理。

根據上面的描述,對於做市、贖回、兌換三種操作,做市商不必分別處理,可以統一對待,即根據 CoFiX 資金池中每個狀態下的 ETH 總量、USDT 總量、資金池總份額、做市商自己份額,來等比計算出自己可以獲得的 ETH 和 USDT 的數量,與參考狀態進行比較,然後按照上文描述的方式進行對衝。

一個簡單好用的對衝程序

根據前面的描述,具體的對衝策略可以有多種。爲了讓用戶更方便地參與到 CoFiX 做市中,我們選擇了一種策略,通過編碼的方式實現了自動化對衝的功能。這個對衝程序按照前面描述的基本思路,實現了一種策略,來進行自動化對衝,具體邏輯如下:

  1. 程序定義了一個資產結構參考狀態,然後輪詢檢測狀態變更,得到狀態變更增量。
  2. 當一種資產的增量小於 0,且絕對值超過一個設定的閾值時,就通過賣出另外一種資產,來將負增長的資產補齊(由於 CoFiX 交易機制,可以確保做市商需要賣出的資產數量小於其增量,從而實現盈利)
  3. 完成 2 中描述的對衝操作後,將新狀態更新爲參考狀態。
  4. 程序運行時,將第一次獲取到的狀態作爲參考狀態。

關於這個對衝程序的詳細信息請參考:
https://github.com/Computable-Finance/CoFiX-hedger

FAQ

  1. 做市商做市前後資產結構發生變化如何處理?

答:由於做市的過程是做市商資金和 CoFiX 資金池資金融合的過程,只要兩者比例不一致,做市動作就會導致做市前後做市商和資金池的比例發生變化。對於發起做市操作的做市商而言。可以有如下應對策略:
A) 根據資金池資金比例,等比例做市,這樣做市前後,兩邊的資金結構都不會發生變化。
B) 接受資金結構的改變,以此狀態作爲參考狀態
C) 不接受資金結構的改變,做市後,立即發起一次對衝交易。

  1. 做市資產和對衝資產如何配置?

答:對衝資產的配置,本質是爲了填平做市商在 CoFiX 中資金結構變化的增量,由於交易可以雙向進行,兩邊交易的量不會嚴格匹配,導致資金比例失衡,這個可能失衡的比例,決定了對衝資產的配置比例,這個比例沒有一個絕對的建議,前面的例子中是 1:1,這是一種較安全的做法,但是資金利用率不高。

實際採取什麼配比,取決於用戶對 CoFiX 資金池資產比例失衡的預期,CoFiX 設計了挖礦平衡係數來儘量促使 CoFiX 資金池的平衡,但這並不是絕對的保證,對於悲觀者,可以將對衝資金比例調高,對於樂觀者,可以將比例調整低一些。

但是,不管悲觀還是樂觀,當出現資金比例失衡,導致對衝資金的一種資金即將消耗完時,就必須採取行動,考慮停止做市,或者重新調整資產結構。

  1. 可以只在進入和退出的時候各進行一次對衝嗎?

答:不可以。
對衝是爲了避免時時刻刻存在的價格波動帶來的風險。如果只在進入和退出時各做一次對衝,那麼在做市期間,假設每次都是即將漲價的資產被兌換走,即將貶值的資產被換進來,這樣每次兌換,都會讓 CoFiX 資金池中的資產貶值。

當然,實際情況可能不是這樣,甚至有可能是反向的,但是我們不能對價格變化做假設,因爲對衝的目的是爲了消除價格波動帶來的風險,實現確定的增長。

  1. 對衝資金不夠了怎麼辦?

答:對衝資金需要分 ETH 和 USDT 兩部分,資金不夠有兩種情況:
A) 通常對衝資金不夠只會時一種資產不夠(通常是由於 CoFiX 被單方向成交,導致一種對衝資產被換成另外一種)。

B) CoFiX 資金池中由於交易時機和市場趨勢的變化,導致總是即將貶值的資產被兌換走,從而 CoFiX 資金池一直在通過交易實現增值,此時由於對衝,可能導致兩種對衝資產都慢慢消耗殆盡。(需要注意的是,這並不代表虧損,因爲對衝本質是消除價格波動的不確定性,這種不確定性,有可能是有利的,也有可能是有害的,但是不管是有利還是有害,都已經被對衝掉了,理解此邏輯有難度,需要仔細思考)

此時,可能出現無法繼續對衝的情況,爲了避免價格波動風險,保證資金安全,需要立刻停止做市,或者重新調整資金配置。

  1. 可以通過在 CoFiX 裏面發起交易來完成對衝嗎?

答:不可以。
CoFiX 本質是讓做市商通過承擔一定的價格波動風險,來換取交易過程中的利潤。其基本假設是 CoFiX 的交易成本比場外交易的成本高,這樣做市商纔可以通過對衝來完成相對確定的盈利。

由於 CoFiX 交易成本較高,如果做市商通過在 CoFiX 裏面交易來完成對衝,會有較大的對衝成本,從而導致無利可圖甚至虧損。這種做法無異於想左腳踩右腳上天。

  1. 做市有可能虧損嗎?

答:有可能。
做市商是通過承擔一定的價格波動風險,來獲取交易過程中的利潤,通過對衝可以儘量減少這種風險。但是,一些客觀因素,還是可能造成做市商虧損,這主要體現在兩個方面:

A) 做市商不對衝
這種情況,價格波動的風險就會一直影響做市商,極有可能發生虧損。
B) 對衝不及時
由於對衝不及時,或者價格波動太劇烈,對衝程序執行間隔又較大,可能導致虧損。

  1. 當資金池裏面的 ETH 全部被換成 USDT 了,無法贖回 ETH 怎麼辦?

答:此時,儘管資金池中只能贖回 USDT 了,但是對衝資金裏面,已經買入了大量 ETH,總 ETH 數量不會減少。