开宗明义:做市有风险,对冲不可少!
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 状态。可见对冲的重要性。
结论:
对冲就是将相对增长状态改变为绝对增长状态,避免其演化成相对亏损状态或者绝对亏损状态的操作。
要进行对冲,必须要先选定一个参考状态作为依据。
要保持确定的收益,对冲不可避免。
假设 Alice 参与的 DeFi 就是在 CoFiX 上做市,且是为「ETH/USDT」资金池提供流动性,我们可以来看看她会面对的一些选择。
假设 Alice 的总资产是 200ETH 和 2000USDT,她将 100ETH 和 1000USDT 放到 CoFiX 中做市,另外 100ETH 和 1000USDT 放在场外用于对冲。
为了简化问题,先考虑 CoFiX 只有 Alice 一个人做市。此时 Alice 份额占比 100%,下面模拟操作过程(下面的计算,忽略交易费用)。
Bob 从 CoFiX 用 USDT 买入 1ETH,此时 ETH/USDT 价格为 400,考虑到 CoFiX 的 K 值和θ手续费,Bob 实际用 410USDT 换得的 1ETH。此时,CoFiX 资金池中有 99ETH、1410USDT。由于 Alice 份额占比 100%,所以 CoFiX 资金池中全部资金都是 Alice 的,因此 Alice 此时总资产变为 199ETH、2410USDT,这对应上一节描述的相对增长状态,存在价格波动风险,需要做对冲操作。
根据前面的描述,Alice 此时需要做对冲操作,具体操作方式是从用于对冲的资产中拿出 400USDT 到交易所换成 1ETH,交换后,Alice 在外部的对冲资产为 101ETH、600USDT,总资产为 200ETH、2010USDT,处于绝对增长状态。
之后,CoFiX 陆续发生兑换交易,兑换方向各不相同。Alice 需要根据交易池中被成交后的状态,不停的重复 2 中描述的对冲操作,来保证资产始终处于绝对增长状态。
如果在较短的时间内,CoFiX 连续发生多笔正向和反向的交易,这些交易之间带来的资产比例变化会抵消一部分。考虑到市场价格的连续性,Alice 可以针对这些交易带来的总变化进行对冲。
前面描述的是只有 Alice 一个人做市的情况,但是现实通常不会这样。下面我们逐步来演化分析更复杂的情况。
回到原来的状态,考虑在 Alice 之前,Carol 已经在做市,且 Alice 加入后,份额比例各占 50%。
Bob 从 CoFiX 用 USDT 买入 1ETH,此时 ETH/USDT 价格为 400,考虑到 CoFiX 的 K 值和θ手续费,Bob 实际用 410USDT 换得的 1ETH。此时,CoFiX 资金池中减少了 1ETH,增加了 410USDT。由于 Alice 份额占比 50%,因此 Alice 此时资产减少了 0.5ETH,增加了 205USDT,总资产 199.5ETH、2205USDT。
根据前面的描述,Alice 此时需要做对冲操作,具体操作方式是从用于对冲的资产中拿出 200USDT 到交易所换成 0.5ETH,交换后,Alice 在外部的对冲资产为 100.5ETH、800USDT,总资产为 200ETH、2005USDT,处于绝对增长状态。
考虑 CoFiX 陆续有人加入,会使 CoFiX 资金池的总份额增加,相对应的每个做市商的占比下降,先考虑做市商都是资金等比进入的,即不会影响到其他做市商的资金结构。此时,当 CoFiX 资金池通过交易发生变化时,每位做市商只需要按照自己所占比例,对冲增量中自己占比的部分就可以。
再考虑做市商不是等比做市加入的。这会带来两个影响:
1. 资金池的份额会增加,同时资金池的资金比例会变化。
这可以拆分成一个等比例的做市,和一个兑换交易来处理。
新做市商自己的资金结构在做市前后发生变化。
这种情况,需要做市商自己应对。有两种策略:
A) 接受资金结构的改变,以此状态作为参考状态
B) 不接受资金结构的改变,做市后,立即发起一次对冲交易。
参考状态:要判断盈亏,必须选定一个参考状态,这个参考状态就是用户判断盈亏的标准,也是对冲操作的目标和依据。
在 CoFiX 中定义了做市、赎回、兑换三种基本操作,其中做市和赎回是针对做市商的,交易是针对普通用户的。
对于兑换交易,不管是从哪个方向发生的,都可以按照上文「CoFiX 做市」章节中描述的策略进行对冲。
对于做市和赎回,可以分成「等比做市 / 赎回」,和「不等比做市 / 赎回」。
等比做市 / 赎回
对于等比做市 / 赎回,相当于只是改变了每位做市上的份额比例,没有改变资产结构,因此其他做市商只需要在后续的对冲时,重新计算自己的份额就可以。
不等比做市 / 赎回
对于不等比做市 / 赎回,可以将其拆分成一个等比做市 / 赎回,以及一笔兑换交易来处理。
根据上面的描述,对于做市、赎回、兑换三种操作,做市商不必分别处理,可以统一对待,即根据 CoFiX 资金池中每个状态下的 ETH 总量、USDT 总量、资金池总份额、做市商自己份额,来等比计算出自己可以获得的 ETH 和 USDT 的数量,与参考状态进行比较,然后按照上文描述的方式进行对冲。
根据前面的描述,具体的对冲策略可以有多种。为了让用户更方便地参与到 CoFiX 做市中,我们选择了一种策略,通过编码的方式实现了自动化对冲的功能。这个对冲程序按照前面描述的基本思路,实现了一种策略,来进行自动化对冲,具体逻辑如下:
程序定义了一个资产结构参考状态,然后轮询检测状态变更,得到状态变更增量。
当一种资产的增量小于 0,且绝对值超过一个设定的阈值时,就通过卖出另外一种资产,来将负增长的资产补齐(由于 CoFiX 交易机制,可以确保做市商需要卖出的资产数量小于其增量,从而实现盈利)
完成 2 中描述的对冲操作后,将新状态更新为参考状态。
程序运行时,将第一次获取到的状态作为参考状态。
关于这个对冲程序的详细信息请参考:
https://github.com/Computable-Finance/CoFiX-hedger
做市商做市前后资产结构发生变化如何处理?
答:由于做市的过程是做市商资金和 CoFiX 资金池资金融合的过程,只要两者比例不一致,做市动作就会导致做市前后做市商和资金池的比例发生变化。对于发起做市操作的做市商而言。可以有如下应对策略:
A) 根据资金池资金比例,等比例做市,这样做市前后,两边的资金结构都不会发生变化。
B) 接受资金结构的改变,以此状态作为参考状态
C) 不接受资金结构的改变,做市后,立即发起一次对冲交易。
做市资产和对冲资产如何配置?
答:对冲资产的配置,本质是为了填平做市商在 CoFiX 中资金结构变化的增量,由于交易可以双向进行,两边交易的量不会严格匹配,导致资金比例失衡,这个可能失衡的比例,决定了对冲资产的配置比例,这个比例没有一个绝对的建议,前面的例子中是 1:1,这是一种较安全的做法,但是资金利用率不高。
实际采取什么配比,取决于用户对 CoFiX 资金池资产比例失衡的预期,CoFiX 设计了挖矿平衡系数来尽量促使 CoFiX 资金池的平衡,但这并不是绝对的保证,对于悲观者,可以将对冲资金比例调高,对于乐观者,可以将比例调整低一些。
但是,不管悲观还是乐观,当出现资金比例失衡,导致对冲资金的一种资金即将消耗完时,就必须采取行动,考虑停止做市,或者重新调整资产结构。
可以只在进入和退出的时候各进行一次对冲吗?
答:不可以。
对冲是为了避免时时刻刻存在的价格波动带来的风险。如果只在进入和退出时各做一次对冲,那么在做市期间,假设每次都是即将涨价的资产被兑换走,即将贬值的资产被换进来,这样每次兑换,都会让 CoFiX 资金池中的资产贬值。
当然,实际情况可能不是这样,甚至有可能是反向的,但是我们不能对价格变化做假设,因为对冲的目的是为了消除价格波动带来的风险,实现确定的增长。
对冲资金不够了怎么办?
答:对冲资金需要分 ETH 和 USDT 两部分,资金不够有两种情况:
A) 通常对冲资金不够只会时一种资产不够(通常是由于 CoFiX 被单方向成交,导致一种对冲资产被换成另外一种)。
B) CoFiX 资金池中由于交易时机和市场趋势的变化,导致总是即将贬值的资产被兑换走,从而 CoFiX 资金池一直在通过交易实现增值,此时由于对冲,可能导致两种对冲资产都慢慢消耗殆尽。(需要注意的是,这并不代表亏损,因为对冲本质是消除价格波动的不确定性,这种不确定性,有可能是有利的,也有可能是有害的,但是不管是有利还是有害,都已经被对冲掉了,理解此逻辑有难度,需要仔细思考)
此时,可能出现无法继续对冲的情况,为了避免价格波动风险,保证资金安全,需要立刻停止做市,或者重新调整资金配置。
可以通过在 CoFiX 里面发起交易来完成对冲吗?
答:不可以。
CoFiX 本质是让做市商通过承担一定的价格波动风险,来换取交易过程中的利润。其基本假设是 CoFiX 的交易成本比场外交易的成本高,这样做市商才可以通过对冲来完成相对确定的盈利。
由于 CoFiX 交易成本较高,如果做市商通过在 CoFiX 里面交易来完成对冲,会有较大的对冲成本,从而导致无利可图甚至亏损。这种做法无异于想左脚踩右脚上天。
做市有可能亏损吗?
答:有可能。
做市商是通过承担一定的价格波动风险,来获取交易过程中的利润,通过对冲可以尽量减少这种风险。但是,一些客观因素,还是可能造成做市商亏损,这主要体现在两个方面:
A) 做市商不对冲
这种情况,价格波动的风险就会一直影响做市商,极有可能发生亏损。
B) 对冲不及时
由于对冲不及时,或者价格波动太剧烈,对冲程序执行间隔又较大,可能导致亏损。
当资金池里面的 ETH 全部被换成 USDT 了,无法赎回 ETH 怎么办?
答:此时,尽管资金池中只能赎回 USDT 了,但是对冲资金里面,已经买入了大量 ETH,总 ETH 数量不会减少。