一个链上LP策略的兴衰史——云破月来花弄影

一个链上LP策略的兴衰史——云破月来花弄影

这是一个关于Solana链上策略的完整故事——从投资逻辑到卡尔曼滤波对冲建模,凸优化器解算最优持仓,再到循环贷加杠杆猛干,最终在牛市退潮后回吐一半利润离场。

投资逻辑

先交代一下背景。加密货币(Crypto)市场中存在大量的“去中心化交易所”(DEX),它们运行在区块链上,由智能合约自动执行,不需要传统交易所那样的中心化运营方。所谓“永续合约”(Perpetual Futures)是一种没有到期日的衍生品合约,交易者可以用杠杆做多或做空某个资产——这是币圈交易量最大的品类之一。而“流动性提供者”(Liquidity Provider, LP)就是这些交易所背后的资金来源,类似于传统金融中的做市商。

JLP(全称Jupiter Liquidity Provider)是Solana链上最大的现货交易所Jupiter推出的流动性质押项目,使得投资者可以作为Jupiter永续合约市场的做市商。具体来说,投资者通过申购或二级市场交易获取做市资金池的份额,作为Jupiter永续合约市场的唯一对手盘,为交易者提供流动性。资金池会获取所有手续费收益的75%作为奖励,同时承担逆向选择风险。交易所作为币圈为数不多被证明有效的商业模式,能让外部投资人零门槛地参与进来,这个项目还是比较稀缺的。

在传统金融中,做市商(Market Maker)通过挂出买卖双边报价赚取价差。但在去中心化永续合约市场中,这个机制被极大简化了——LP不需要自己报价,而是被动地接受所有交易者的对手盘。这意味着LP的收益结构类似于卖保险:绝大多数时间里稳定收割保费(手续费),但偶尔需要为极端事件赔付(交易者盈利)。

在Jupiter的永续市场,为了克服上链延迟,没有采用CLOB(Central Limit Order Book,集中限价订单簿)模型,交易者不是p2p成交的,而是由预言机(Oracle,一种将链外价格数据喂入链上的服务)喂价,加上手续费(开平仓都是万六)后与交易所直接成交。在持仓过程中,还要按小时缴纳高昂利息作为资金占用成本。其实这个合约市场仅提供3个主要币种的服务(BTC/ETH/SOL),资金池也仅包含BTC、ETH、SOL和USDC(一种锚定美元的稳定币,用于服务做空)。规则对LP是十分有利的——LP的盈亏来自于:

  • 收益项
    • 开平仓手续费
    • 持仓利息
    • 爆仓清算惩罚,十分丰厚
    • 资金池份额的申购赎回费
    • 池内闲置资金的借出收益
    • 池内闲置SOL的质押收益
  • 交易者P&L(通常为负)的反面
  • 底仓P&L

主要的风险来自于

  • 智能合约被黑客攻击
  • Jupiter团队作恶卷款跑路
  • Jupiter合约交易量下滑

在我投资JLP时(24年底至25年Q4)市场正处于牛市,我推断链上合约交易量还能高位运行较长一段时间(即使它对交易者极不友好),即使衰退也不会是遽变的,有充足的撤离时间,而Jupiter团队也不至于为了黑这笔钱放弃其他业务,包括Solana上交易量最大的现货路由聚合器。这个资金池大约有十几亿美金,没有申购赎回限制,容量非常大流动性也好。

对冲

造成JLP净值起伏的最大影响因素无疑就是底层资产波动——即使在牛市,也会出现40%左右的跌幅——而资金池的大部分又都是由风险资产构成。策略需要对冲。

这件事的美妙之处在于,JLP的流动性池子份额是以流动性质押代币JLP token的形式存在的。然后这个JLP token又可以存入当时SOL链上最大交易所之一drift,在统一账户(类似于传统券商的“组合保证金”账户,所有资产和头寸的盈亏统一计算)中以70%-80%的折算率充当保证金,去开仓做空那三个主流币。这样净值波动就被极大地平抑了,夏普嘎嘎高。这甚至能增加收益,因为牛市资金费率(永续合约中多头定期支付给空头的费用,用于将合约价格锚定现货价格)一般是正的,来行情了年化大几十。

卡尔曼滤波对冲模型

要做delta对冲,首先要回答一个问题:每1个JLP暴露了多少BTC、多少ETH、多少SOL的风险敞口?

虽然Jupiter官方有公布资金池的权重目标(比如BTC 11%、ETH 11%、SOL 44%、USDC 34%),但实际权重是时变的。一个关键的机制细节是:JLP资金池不会主动做再平衡(rebalance),而是通过调整申购和赎回时的价格偏移来制造套利机会——当某个资产偏离目标权重时,用该资产申购JLP会更便宜,用该资产赎回则更贵——从而激励外部套利者被动地将池子推回目标配比。这意味着池子的实际权重受到交易者持仓分布、套利者行为和价格波动的三重影响,随时在变。直接用静态权重去对冲会留下很大的tracking error。

我的做法是把JLP的价格变动建模为各底层资产价格变动的线性组合,然后用卡尔曼滤波(Kalman Filter,一种在线贝叶斯估计方法,常用于航天和信号处理领域)在线估计时变系数。这个方法的好处是不需要知道池子的具体再平衡机制——无论权重因为什么原因变化,卡尔曼滤波都能自适应地追踪。具体来说,模型假设:

$$\Delta P_{\text{JLP}, t} = \alpha_t + \beta_{\text{SOL}, t} \cdot \Delta P_{\text{SOL}, t} + \beta_{\text{BTC}, t} \cdot \Delta P_{\text{BTC}, t} + \beta_{\text{ETH}, t} \cdot \Delta P_{\text{ETH}, t} + \epsilon_t$$

其中 \(\alpha_t\) 代表JLP每个时间步的纯收益增量(手续费、利息等与价格无关的收入),\(\beta_{i,t}\) 则是JLP对第 \(i\) 个资产的价格敏感度——也就是需要对冲的系数。\(\epsilon_t\) 是观测噪声。

状态空间形式

$$ \mathbf{x}_t = [\alpha_t, \beta_{\text{SOL},t}, \beta_{\text{BTC},t}, \beta_{\text{ETH},t}]^{\top} $$

作为隐状态向量,卡尔曼滤波的标准形式为:

状态转移方程(Random Walk模型):

$$\mathbf{x}_t = \mathbf{x}_{t-1} + \mathbf{w}_t, \quad \mathbf{w}_t \sim \mathcal{N}(\mathbf{0}, \mathbf{Q})$$

观测方程

$$y_t = \mathbf{H}_t \mathbf{x}_t + v_t, \quad v_t \sim \mathcal{N}(0, R)$$

其中观测矩阵 \(\mathbf{H}_t\) 在每个时刻是不同的:

$$\mathbf{H}_t = [1, \Delta P_{\text{SOL},t}, \Delta P_{\text{BTC},t}, \Delta P_{\text{ETH},t}]$$

这个设定意味着对冲系数被假设为缓慢漂移的随机游走,漂移速度由转移协方差矩阵 \(\mathbf{Q}\) 控制。\(\mathbf{Q}\) 的对角元素越大,滤波器就越”敏感”、越快速地追踪系数变化。

EM算法估计超参数

\(\mathbf{Q}\)、\(R\) 和初始状态协方差 \(\mathbf{P}_0\) 这几个超参数不能拍脑袋设,否则滤波器要么过拟合、要么迟钝。我用EM(Expectation-Maximization)算法来联合估计它们:

1
2
3
4
5
6
7
8
9
10
kf = KalmanFilter(
transition_matrices=np.eye(n_dim_state),
observation_matrices=observation_matrices,
initial_state_mean=initial_state_mean,
initial_state_covariance=initial_state_covariance,
transition_covariance=transition_covariance,
observation_covariance=observation_covariance,
)
em_vars = ['observation_covariance', 'transition_covariance', 'initial_state_covariance']
kf = kf.em(observations, n_iter=100, em_vars=em_vars)

EM迭代100轮后收敛。最终用 kf.smooth() 做RTS平滑,得到全量数据上的最优状态估计——这里是离线分析,实盘中只用 kf.filter() 做在线估计。

滤波结果

下图展示了四个状态变量随时间的演化:

卡尔曼滤波估计的对冲系数演化

几个值得注意的现象:

  • \(\alpha\)(截距项) 始终为正,反映了JLP稳定的手续费收入。这是这个策略的”纯收益”来源。
  • \(\beta_{\text{SOL}}\) 是三个系数中最大的,符合池子中SOL占比最高的事实,但它并非恒定不变——在SOL暴涨或暴跌时会显著偏离平均值。
  • \(\beta_{\text{BTC}}\)\(\beta_{\text{ETH}}\) 量级较小且相对稳定,但也呈现出与池子内部再平衡一致的缓慢漂移。

下面这张图更直观——把JLP的价格分解为各底层资产的贡献:

JLP价格组成分解

堆叠面积图清晰地展示了JLP的价格主要由SOL驱动(蓝色区域),BTC和ETH的贡献相对较小。虚线代表 \(\alpha\) 的累积收益(纯做市收入),可以看到它是一条稳健的向上曲线。

最后是JLP价格与 \(\alpha\) 推导出的年化收益率(APR)的对比:

JLP价格与α推导的APR

这张图揭示了一个有趣的规律:APR在市场活跃(JLP价格上涨)时显著更高,而在价格下跌的冷清期会走低。这很好理解——牛市散户疯狂交易,手续费收入自然暴涨,反之亦然。

不过最终我没有做动态对冲,而是静态地钉死在暴露的中枢上,几个月才平衡一次。原因是数据分析发现,各个币种的风险敞口(\(\beta\) 系数)与其价格呈现极其显著的负相关——散户总是追涨杀跌,价格涨了就去做多,消耗池子里的多头头寸从而降低LP的beta暴露;价格跌了就平仓甚至反手做空,池子腾出头寸beta回升。从回测来看,做静态对冲反而可以额外获得一重均值回复的收益(至少在熊市来临前是这样)。

虽然做了delta对冲,gamma风险始终是这个策略的阿喀琉斯之踵,这是由LP策略的本质特性决定的,无法消除。当底层资产大幅单边运动时,对冲系数本身在剧烈变化,而我只是在上一个时刻的系数上做的对冲——这个追踪误差就是gamma损失。这为后续的亏损埋下了伏笔。

杠杆猛干

如果故事讲到这里就结束,那么这至多算个还不错的策略,正常情况下,一年贡献18%左右的收益,运气好多吃点爆仓可能30%-40%,在牛市中差强人意。当时我的判断是对冲模型的失效风险很小,主要风险来自尾部——稳定币暴雷/Jupiter暴雷/Drift暴雷,在承担多重尾部风险后,牛市理应获取更高的收益,而这些尾部风险又是固定的和我的杠杆率无关。

Kelly准则下的仓位推导

凯利公式(Kelly Criterion)给出了在给定赔率下使资金长期增长率最大化的最优仓位比例。这个策略的赔率结构比较特殊:收益是连续的(每天稳定赚手续费),而亏损是离散的尾部事件(平台暴雷,本金归零)。设年化收益率为 \(r\),尾部事件的年概率为 \(p_{\text{tail}}\),在尾部事件中损失全部本金,那么投入比例 \(f\) 的对数增长率为:

$$G(f) = (1 - p_{\text{tail}}) \cdot \ln(1 + f \cdot r) + p_{\text{tail}} \cdot \ln(1 - f)$$

对 \(f\) 求导令其为零:

$$\frac{(1 - p_{\text{tail}}) \cdot r}{1 + f \cdot r} = \frac{p_{\text{tail}}}{1 - f}$$

如果我估计 \(p_{\text{tail}} \approx 0.02\)(一年内某个平台暴雷的概率),\(r = 0.3\)(对冲后的年化预期),解得 \(f^* \approx 0.91\)。也就是说,凯利准则建议在这个赔率下把超过90%的可用资金投入进去。考虑到凯利公式对参数误估非常敏感,实际操作中一般取half-Kelly(约45%),但由于这里收益率足够高而尾部概率足够低,half-Kelly也意味着相当激进的仓位。

这个分析给了我信心——既然尾部风险是固定的,那么拉杠杆提高收益率,等价于在不改变 \(p_{\text{tail}}\) 的前提下提高 \(r\),根据凯利公式最优仓位也会随之上升。换句话说:在固定尾部风险下,杠杆越高,理论上应该投入更高比例的资金。

循环贷加杠杆

因此我决定拉杠杆。我利用的还是drift的统一保证金机制——当时更多人是持币待涨,很少人愿意借币做空,于是我用JLP作为抵押品借出主流币,转换成更多JLP再存入(循环贷),最后再开合约仓位。使用solver的情况下,大约十次左右操作就可以达到3以内的目标杠杆率。就这样我把这个策略的收益率提了一倍多。

最优持仓配置

加杠杆后,我面对的问题是:在8个维度的决策空间(JLP现货、SOL/BTC/ETH借贷、USDC现金、SOL/BTC/ETH永续合约)中,如何找到最优的仓位配置?这不是简单算一下就行的——需要同时满足delta中性约束、保证金约束、杠杆率限制和波动率控制。

我把这个问题建模成了一个凸优化问题。决策变量是8个资产的数量 \(\mathbf{w} \in \mathbb{R}^8\),拆分为正负两部分(\(\mathbf{w} = \mathbf{w}^+ - \mathbf{w}^-\),\(\mathbf{w}^+, \mathbf{w}^- \geq 0\))来分别建模多头和空头。

目标函数(最大化预期收益):

$$\max \sum_i r_i^{\text{long}} \cdot p_i \cdot w_i^+ - \sum_i c_i^{\text{borrow}} \cdot p_i \cdot w_i^-$$

其中 \(r_i^{\text{long}}\) 是多头年化收益(JLP的做市收入、合约的资金费率等),\(c_i^{\text{borrow}}\) 是借贷成本。

Delta中性约束——利用卡尔曼滤波输出的 \(\hat{\boldsymbol{\beta}}\):

$$\text{expo}_{\text{SOL}} = (w_0 \cdot \hat{\beta}_{\text{SOL}} + w_1 + w_5) \cdot P_{\text{SOL}} \approx 0$$

$$\text{expo}_{\text{BTC}} = (w_0 \cdot \hat{\beta}_{\text{BTC}} + w_2 + w_6) \cdot P_{\text{BTC}} \approx 0$$

$$\text{expo}_{\text{ETH}} = (w_0 \cdot \hat{\beta}_{\text{ETH}} + w_3 + w_7) \cdot P_{\text{ETH}} \approx 0$$

保证金约束

$$\sum_i \rho_i \cdot p_i \cdot w_i^+ \geq \sum_i m_i \cdot p_i \cdot w_i^- + \sum_j m_j \cdot p_j \cdot w_j^+$$

其中 \(\rho_i\) 是折算率(JLP 80%、USDC 100%),\(m_i\) 是保证金比例(借贷120%、合约5%)。

波动率控制——合约头寸的方差不能超限:

$$\mathbf{v}_{\text{perp}}^{\top} \boldsymbol{\Sigma} \, \mathbf{v}_{\text{perp}} \leq \left(\frac{V \cdot 8\%}{\sqrt{365}}\right)^2$$

其中 \(\boldsymbol{\Sigma}\) 是SOL/BTC/ETH收益率的协方差矩阵。

1
2
3
4
5
6
7
8
# 对冲关系约束
solana_expo = (w[0] * hedge_coeff[0] + w[1] + w[5]) * prices[1]
btc_expo = (w[0] * hedge_coeff[1] + w[2] + w[6]) * prices[2]
eth_expo = (w[0] * hedge_coeff[2] + w[3] + w[7]) * prices[3]

# 波动率约束
contract_pnl_penalty = cp.quad_form(value_perps, cov_matrix)
constraints.append(contract_pnl_penalty <= (portfolio_value * (0.08 / 365**0.5)) ** 2)

优化器的核心洞察是:混合使用现货借贷与合约多空调节敞口,可以利用借贷利息与资金费率之间的息差。 在牛市中,借入BTC/ETH的成本很低(很少人借),而做空合约却能收到正的资金费率——优化器会自动在两者之间寻找最优比例配置。

实盘持仓

最终优化器给出的持仓类似于:

  • JLP现货 +200000
  • BTC现货 -0.2
  • ETH现货 -10.0
  • SOL现货 -2000.0
  • BTC合约 -1.0
  • ETH合约 -10.0
  • SOL合约 +500.0

这个组合经过计算是近似delta中性的。注意SOL合约这里是做多而不是做空——这是因为借贷SOL的成本比做空SOL合约的资金费率更划算,优化器选择了借出更多的SOL现货,然后用一部分合约多头来回补过度的空头风险敞口。这种反直觉的配置正是优化器的价值所在——人脑很难在这么多维度中找到全局最优。

实盘后发现这个对冲组合太耐糙了,Health基本不怎么掉,后面我又借出了大量的稳定币和BTC参与其他的套利机会,在drift就留了一层血皮。一方面这加大了爆仓风险,需要对冲模型扛住,另一方面也降低了尾部风险,不怕drift暴雷。

尾声

云破月来花弄影。重重帘幕密遮灯,风不定,人初静,明日落红应满径。

25年Q4连续几波暴跌后,Jupiter合约交易量骤降,JLP的收益也随之走低。\(\alpha\) 从高峰期的年化40%+迅速滑落到个位数——做市商赚的是交易者的“智商税”,交易者跑了,“税源”自然枯竭。我在11月初认为风险收益比已不合适(此时SOL较高点已跌去一半),完全退出了这个策略。在我退出时,累计盈利部分已从高点回撤了大约50%。不过我想,这一定程度上也是无法避免的,策略设计上就选择了硬扛价格趋势,在开始的一两轮暴跌和反弹中也靠这个净值不减反增,最后因为散户交易者的离场实在扛不住了。从选择承担gamma开始就注定了会带着回撤离场。唯一值得反思的是没有做用户数据的日度监控,导致过久地“坚持策略”,在基础逻辑转变后退出还不够快。

26年4月,drift交易所暴雷。朝鲜黑客也好,监守自盗也罢,这一对冲组合彻底无法实施了(即使恢复运营,也很难让人重拾信心)。除了不要在风险项目上下注过多这一俗套的启示之外,我想就是在给定尾部风险的情况下,尽可能去赚取更高的收益率吧。有花堪折直须折,莫待无花空折枝。

一个链上LP策略的兴衰史——云破月来花弄影

https://heth.ink/JLP/

作者

YK

发布于

2026-04-07

更新于

2026-04-07

许可协议