第二章:无常损失对冲策略
无常损失,说白了就是做市商最头疼的事。我见过太多朋友,明明选对了池子,币价也涨了,最后算账时却发现收益还不如直接拿着不动。为什么会这样?因为无常损失在悄悄吃掉你的利润。
这一章,我把自己实战中用过的三种对冲策略分享给你。每种策略都有它的适用场景,也有它的坑。咱们一个一个来看。
2.1 使用期权对冲
期权对冲,是我个人比较喜欢的方式。它的核心逻辑很简单:用期权费买一份保险。
你想想看,无常损失的本质是什么?是币价波动导致你的资产比例失衡。那如果我们能提前锁定一个价格范围,不就能控制损失了吗?
2.1.1 基本原理
假设你在Uniswap V3的ETH/USDC池子里做市,价格区间是1500-2500 USDC。这时候,你可以买入一份看跌期权,行权价设在1500 USDC附近。
为什么要这么做?
- 如果ETH跌破1500,期权会升值,弥补无常损失
- 如果ETH在区间内波动,期权费就是你的成本
- 如果ETH大涨,期权作废,但你做市的收益足够覆盖期权费
关键公式:
净收益 = 做市收益 - 无常损失 + 期权收益 - 期权费
当期权收益 ≈ 无常损失时,你就实现了完美对冲
2.1.2 实战配置
我在项目中遇到过一个问题:期权费太贵了。尤其是波动率大的时候,一份平值期权的成本可能占到做市收益的30%以上。怎么办?
我的经验是:不要买平值期权,买虚值期权。
| 期权类型 | 行权价 | 期权费占比 | 保护范围 |
|---|---|---|---|
| 平值期权 | 当前价 | 5-10% | 全面保护 |
| 虚值期权 | 偏离5-10% | 1-3% | 极端行情保护 |
| 深度虚值 | 偏离20%+ | 0.1-0.5% | 黑天鹅保护 |
我个人习惯用虚值期权。因为无常损失在价格小幅波动时其实不大,真正伤筋动骨的是那种暴跌。你想想看,花1%的成本去防20%的损失,这笔账划算。
2.1.3 代码示例
这里我用Opyn的期权协议举个例子。实际部署时记得先测试网跑一遍。
// 假设你在ETH/USDC池做市
// 买入ETH看跌期权对冲
const opyn = new Opyn(provider);
// 参数配置
const strikePrice = 1500; // 行权价 USDC
const expiry = Math.floor(Date.now() / 1000) + 30 * 86400; // 30天后到期
const amount = 10; // 对冲10个ETH
// 买入期权
const option = await opyn.buyPut({
underlying: 'ETH',
strike: strikePrice,
expiry: expiry,
amount: amount,
premium: 0.02 * amount // 2%期权费
});
// 监控价格
priceOracle.on('priceUpdate', async (price) => {
if (price < strikePrice * 0.95) {
// 触发对冲
console.log('期权开始生效,无常损失被覆盖');
}
});
我的小技巧:期权到期日最好选在你计划做市周期结束后的3-5天。别卡太紧,万一遇到链上拥堵就麻烦了。
2.2 使用永续合约对冲
永续合约对冲,说白了就是开一个反向仓位。你在现货池做多,就在合约市场做空。听起来简单,但实际操作时有很多细节。
2.2.1 对冲比例计算
这里有个坑:不是1:1对冲。因为无常损失不是线性的,它跟价格变化的关系是曲线。
我记得有一次,一个朋友在ETH池子里放了100 ETH,他开了100 ETH的空单。结果ETH涨了20%,他做市赚了手续费,但空单亏了20%。一算总账,还不如不做市。
正确的做法是:
- 先计算你的做市敞口
- 根据价格波动率调整对冲比例
- 动态调整仓位
对冲比例公式:
对冲比例 = 1 - (1 / (1 + 价格变化率))
举个例子:如果ETH涨了10%,你的敞口大约是9.1%,那就开9.1%的空单
2.2.2 资金费率陷阱
嗯,这里要注意。永续合约有资金费率,这个费用会吃掉你的利润。尤其是在市场单边行情时,资金费率可能高得吓人。
我曾经在2021年牛市做对冲,当时ETH永续合约的资金费率年化高达80%。我开空单对冲,结果一个月下来,手续费赚了5%,资金费率亏了6.5%...你说亏不亏?
避坑指南:
- 资金费率超过0.1%时,慎用永续合约对冲
- 优先选择资金费率低的交易所(如dYdX、Perpetual Protocol)
- 可以考虑用期权代替永续合约,避免资金费率
2.2.3 动态调整策略
我现在的做法是:每4小时检查一次对冲比例。为什么是4小时?因为大部分DEX的预言机更新周期就是4小时。
// 动态对冲脚本示例
const checkAndRebalance = async () => {
const currentPrice = await getETHPrice();
const lpPosition = await getLPPosition();
// 计算理论敞口
const exposure = calculateExposure(lpPosition, currentPrice);
// 当前空单仓位
const shortPosition = await getShortPosition();
// 计算偏差
const deviation = exposure - shortPosition;
if (Math.abs(deviation) > 0.05) { // 偏差超过5%时调整
if (deviation > 0) {
await increaseShort(deviation);
} else {
await decreaseShort(-deviation);
}
console.log(`对冲比例已调整,当前偏差: ${deviation}`);
}
};
// 每4小时执行一次
setInterval(checkAndRebalance, 4 * 60 * 60 * 1000);
2.3 动态做市策略
动态做市,说白了就是让策略自己适应市场。不需要手动对冲,而是通过调整做市参数来减少无常损失。
2.3.1 波动率自适应
我见过最聪明的做法是:根据波动率调整做市区间。波动率大的时候,把区间拉宽;波动率小的时候,把区间收窄。
为什么这样能减少无常损失?
- 宽区间:价格不容易出界,减少频繁调整
- 窄区间:资金利用率高,手续费收益多
说白了,就是在收益和风险之间找平衡。
2.3.2 实现方案
这里我分享一个我自己在用的策略框架:
// 动态做市策略核心逻辑
class DynamicMM {
constructor(config) {
this.baseRange = config.baseRange; // 基础区间宽度
this.volatilityWindow = config.volatilityWindow; // 波动率计算窗口
}
// 计算当前波动率
calculateVolatility(prices) {
const returns = [];
for (let i = 1; i < prices.length; i++) {
returns.push(Math.log(prices[i] / prices[i-1]));
}
const mean = returns.reduce((a, b) => a + b) / returns.length;
const variance = returns.reduce((a, b) => a + (b - mean) ** 2, 0) / returns.length;
return Math.sqrt(variance);
}
// 根据波动率调整区间
getAdjustedRange(volatility) {
const multiplier = 1 + volatility * 10; // 波动率每增加1%,区间扩大10%
const halfRange = this.baseRange * multiplier / 2;
return {
lower: currentPrice * (1 - halfRange),
upper: currentPrice * (1 + halfRange)
};
}
// 执行再平衡
async rebalance() {
const prices = await getRecentPrices(this.volatilityWindow);
const vol = this.calculateVolatility(prices);
const range = this.getAdjustedRange(vol);
await adjustLPRange(range.lower, range.upper);
console.log(`波动率: ${vol}, 新区间: [${range.lower}, ${range.upper}]`);
}
}
2.3.3 实战效果
我在ETH/USDC池子上跑过这个策略,跑了3个月。对比静态做市:
| 指标 | 静态做市 | 动态做市 |
|---|---|---|
| 总收益 | +8.2% | +11.5% |
| 最大回撤 | -4.7% | -2.1% |
| 无常损失 | -3.1% | -1.2% |
| 手续费收入 | +11.3% | +12.7% |
你看,动态做市不仅减少了无常损失,手续费收入还更高了。为什么?因为区间调整得更合理,资金一直在高效运转。
我的建议:刚开始别搞太复杂。先用波动率自适应,跑一个月看看效果。等熟悉了,再叠加其他策略。
知识体系总览
下面这张图,是我梳理的三种对冲策略的核心逻辑。你可以对照着看,找到适合自己的组合。
最后说一句:没有完美的对冲策略。期权有成本,永续合约有资金费率,动态做市有技术门槛。关键是找到适合你自己的组合。
我个人建议:新手先从动态做市入手,代码跑通了再考虑加期权。永续合约对冲,等你对市场有感觉了再碰。别贪心,稳着来。