一只 ETF 同时挂着两个价格,这是它和普通股票最不一样的地方:
- 一级市场净值 IOPV(Indicative Optimized Portfolio Value):交易时段内,按篮子成分股实时行情算出来的「基金该值多少钱」。它给的是「参考价」,你没法直接在一级市场按它成交。
- 二级市场市价:你在交易所买卖 ETF 份额时真实付出的价格,由供需撮合决定。
两个价格天然应该等于——如果不等,就出现了折溢价(premium / discount)。当市价长期、显著地高于 IOPV,叫溢价;低于,叫折价。套利者的工作,就是在这条缝里赚钱,而且理论上这是一类风险极低的生意:你不是在赌方向,而是在赚「两个市场定价不一致」的收敛。
本文讲清四件事,并用可复现代码演示:
- ETF 的两个价格怎么来的、折溢价从哪冒出来;
- 溢价 / 折价时,一级创设与二级卖出、或二级买入与一级赎回,怎么拼成一笔无风险套利;
- 成本结构为什么往往比「价差」更决定你能不能赚钱;
- 用 Python 模拟 IOPV 与市价,回测一个折溢价收敛套利,并做成本阈值敏感性分析。
一、两个市场的供需是割裂的#
股票只有二级市场一个价格。ETF 多了一条**一级市场创设(creation)/ 赎回(redemption)**的通道:授权参与人(AP)可以用一篮子股票去基金公司「换」ETF 份额(创设),也可以把份额退回基金公司「换回」一篮子股票(赎回)。这条通道的结算价锚定的是 IOPV,而不是二级市价。
关键点在于:一级和二级的参与者不是同一拨人,反应速度也不同。
- 二级散户看到价格异动,几秒就能买卖;
- 一级 AP 要凑齐一篮子股票、走创设/赎回流程,T 日申请后通常 T+1 甚至更晚才拿到份额或股票。
于是当某只成分股突发利好、二级市场瞬间把 ETF 价格拉高时,一级篮子的 IOPV 还没跟上,或者 AP 凑篮子需要时间——市价就短暂地跑到了 IOPV 上面,形成溢价。反过来,成分股大面积跌停、二级抛压集中,市价就可能砸到 IOPV 下面,形成折价。
折溢价率定义为:
它围绕 0 上下波动,平时很窄(几 bp 到十几 bp),但在流动性冲击、成分股停牌、跨境 ETF 汇率跳变时会瞬间拉大。

二、溢价套利:买篮子、创设、卖二级#
当 ( 为单边总成本)时,市价「贵」了,可以做正向套利(forward / creation arbitrage):
- 在一级市场按 IOPV 对应的篮子,买入一篮子成分股;
- 把篮子提交给基金公司,创设出相应数量的 ETF 份额(实物申赎,T 日申请);
- 在二级市场,以偏高的市价卖出这些份额;
- 锁定利润 ≈ 溢价 − 双边成本。
逻辑上你「用便宜的篮子,造出了贵的份额,卖掉」,中间的差就是利润。只要创设通道通畅、成本覆盖得住,这笔交易在开仓那一刻就已经锁定了收益,不依赖未来价格涨跌。
三、折价套利:买二级、赎回、卖篮子#
当 时,市价「便宜」了,做反向套利(reverse / redemption arbitrage):
- 在二级市场折价买入 ETF 份额;
- 把份额退回基金公司,赎回成一篮子股票;
- 在二级市场卖出整篮股票;
- 锁定利润 ≈ 折价 − 双边成本。
这一步对 A 股散户往往不友好:赎回得到的是一篮子股票,不是现金,且通常要 T+1 才能卖,等于你被动持有一篮子股票过夜,承担成分股隔夜风险。所以折价套利的主力是拥有融券和一级通道的机构。
四、成本结构:真正决定你能不能赚钱的,是它#
很多人以为「有溢价就能套利」,结果一算账全是给券商和冲击成本打工。一笔完整的折溢价套利,单边就要吃掉至少这几项:
- 佣金 / 经手费:股票 + ETF 双边;
- 买卖价差(bid-ask):篮子成分股多、流动性差的,价差累加很可观;
- 市场冲击成本:大单砸进去,价格先动,成交均价劣于标记价;
- 申购 / 赎回费:部分 ETF 收创设赎回费(尤其跨境、商品类);
- 印花税:A 股卖出股票收,赎回卖篮子时触发。
我们记单边总成本为 ,一笔套利从开仓到平仓要经历「买 + 卖」两次,所以实际要覆盖的是 。把成本阈值画出来,折溢价率落在 之间的区域就是「无套利带」——进去就亏钱。
补充一点:申赎分实物和现金两种。A 股多数 ETF 是实物申赎——你给基金公司一篮子股票、拿回份额(或反向),中间不经过现金,所以没有「篮子现金估值」那道滑点;部分跨境 / 商品 ETF 是现金申赎,基金公司按 IOPV 折算现金差额,这里会多一层汇率与估值误差。套利者偏好实物申赎,正是因为少了这道不确定性。对散户而言,即便借到了一级通道,现金申赎的这层折算误差也会悄悄把薄溢价吃成亏损。

五、用 Python 回测一个折溢价收敛套利#
下面这段代码和生成上文图表的是同一套逻辑:先模拟 IOPV 与市价(折溢价率用 Ornstein-Uhlenbeck 均值回复,并叠加稀疏的流动性冲击尖峰),再在折溢价越出成本带时开仓,回到带内时平仓,按日盯市计盈亏。
import numpy as np
def simulate(T=1500, seed=7):
rng = np.random.default_rng(seed)
dt = 1/252
mu, sig = 0.06, 0.18
nav = np.empty(T); nav[0] = 100.0
for t in range(1, T):
nav[t] = nav[t-1] * np.exp((mu-0.5*sig**2)*dt + sig*np.sqrt(dt)*rng.normal())
# 折溢价率:OU 均值回复到 0,叠加稀疏冲击
theta, sigma_p = 0.05, 0.004
prem = np.zeros(T)
for t in range(1, T):
prem[t] = prem[t-1] + theta*(0.0 - prem[t-1]) + sigma_p*rng.normal()
shock_idx = rng.choice(np.arange(20, T-20), size=T//120, replace=False)
for i in shock_idx:
prem[i:i+8] += rng.uniform(0.006, 0.012)
mkt = nav * (1 + prem)
return nav, mkt, prem
nav, mkt, prem = simulate(T=1500, seed=7)
T = len(nav)
COST = 0.0018 # 单边套利成本约 0.18%
# 收敛套利:越出 +COST 做空溢价,越出 -COST 做多折价,回带平仓
pos = np.zeros(T); ret = np.zeros(T)
for i in range(1, T):
p_prev, p_cur = prem[i-1], prem[i]
if p_cur > COST: target = -1 # 溢价过高 -> 做空溢价(创设卖高)
elif p_cur < -COST: target = 1 # 折价过低 -> 做多折价(买低赎回)
else: target = 0 # 回到无套利带 -> 平仓
cost = 0.0
if target != pos[i-1]:
cost = COST if (pos[i-1]==0 or target==0) else 2*COST
ret[i] = pos[i-1] * (p_cur - p_prev) - cost # 盯市 + 当日成本
pos[i] = target
pnl = np.cumsum(ret) * 100.0
print("累计净收益=%.2f%%, 最大回撤=%.2f%%" %
(pnl[-1], np.min(pnl - np.maximum.accumulate(pnl))))python在这组参数下,样本内累计净收益约 +26%,最大回撤仅约 −3.5%——典型「低波动、稳收敛」的套利曲线:你赚的不是方向,是价差收敛。

六、阈值敏感性:成本吃掉利润#
把成本阈值从 5 bp 一路抬到 60 bp,看可套利机会数和平均捕获溢价怎么变:
- 阈值越低,触发越频繁,机会数最多(本例低至约 1459 次),但每次捕获的溢价薄;
- 阈值越高,只在「厚溢价」时才动手,机会数下降(高阈值约 980 次),但单笔吃得厚;
- 真正决定你赚不赚钱的,是你的成本落在曲线的哪一点——机构单边成本能做到 10~20 bp,散户往往 30 bp 往上,后者大量「看起来有溢价」的窗口,其实连成本都覆盖不了。

七、真实陷阱(别看到溢价就冲)#
1. 一级通道不是谁都有。 创设/赎回通常只对授权参与人(券商/机构)开放,散户只能做二级,等于被卡在套利的「半程」。
2. T+0 / T+1 的时滞风险。 A 股 ETF 二级买卖多是 T+1,创设/赎回份额到账更晚;你在二级卖掉「还没到手」的份额,本质是裸短,碰到停牌成分股会卡死。
3. 成分股停牌 / 跌停。 折溢价往往正是成分股大面积跌停时最大——可偏偏这时你赎不回篮子、卖不掉股票,套利窗口对你关闭。
4. 跨境 ETF 的汇率与时区。 美股/港股类的 ETF,IOPV 用的是境外收盘价或汇率快照,和二级市价之间夹着汇率跳变和时差,溢价可能「看着有、实则补不上」。
5. 流动性踩踏。 大家都看到同一笔溢价、同时去创设卖二级,二级市场瞬间被砸平,你的「溢价」在成交前就消失了,反而吃了一身冲击成本。
6. 幸存者偏差。 回测里默认创设赎回永远通畅、篮子永远凑得齐,实盘里这些约束会系统性地吃掉你回测里最肥的那几笔。
八、小结#
- ETF 的 IOPV(一级篮子净值)与二级市价是两个不同市场的定价,瞬时分离产生折溢价;
- 溢价→买篮子创设卖二级,折价→买二级赎回卖篮子,理论上是锁定的无方向收益;
- 真正卡你的不是「有没有价差」,而是双边成本 ——散户的成本曲线往往把大部分窗口都划进了亏损区;
- 回测显示折溢价收敛套利是低波动、稳收敛的策略(本例 +26%、回撤 −3.5%),但实盘的通道门槛、T+1 时滞、停牌与踩踏,会系统性吃掉回测里最肥的几笔。
附:本文所有图表与数值均来自上方可运行代码(IOPV/市价模拟 + OU 折溢价 + 收敛套利 + 阈值扫描),参数与结果一致,可直接复现。