本文讨论的是方向型期权交易里的“合约选择”问题:已经有了看多或看空观点以后,如何从不同到期日、不同执行价、不同交易所的一整条期权链里,挑出更适合表达这个观点的合约。
文中涉及的阈值和示例均用于解释方法,不构成固定参数或投资建议。API 字段与交易规则以交易所最新官方文档为准。本文核对时间:2026 年 8 月。
很多人第一次做期权,会把问题想得很简单:看涨就买 Call,看跌就买 Put,只要方向对了,期权自然赚钱。
真正交易过几次以后,就会发现事情并不是这样。
BTC 涨了,你买的 Call 可能没涨多少;ETH 跌了,你的 Put 甚至可能还是亏的。再极端一点,方向、幅度都判断得不错,最后却被时间价值、波动率回落和买卖价差一起吃掉。
原因并不神秘。短时间内,期权价格变化可以粗略拆成:
\[ \Delta V \approx \Delta\cdot\Delta S +\frac{1}{2}\Gamma(\Delta S)^2 +Vega\cdot\Delta IV +\Theta\cdot\Delta t -\text{交易成本} \]
方向只决定了第一项的一部分。你真正买下来的,是一整组 Delta、Gamma、Vega、Theta 和流动性暴露。
所以我更愿意把期权交易拆成两层:第一层负责回答“BTC/ETH 接下来往哪走”,第二层才回答“用哪一张期权表达这个判断”。这篇文章只讨论第二层。
我把它做成一个四维筛选框架:
- 凸性:Delta、Gamma 与 Speed——选哪个 Strike。
- 时间:DTE、IV Term Structure、Basis/Funding——选哪个 Expiry。
- 估值:IV Smile / Skew / Surface——这张期权到底贵不贵。
- 执行:Spread、Depth、OI、Volume——理论优势能不能真正成交。
最后再把 Deribit、Binance Options 和 OKX Options 放进同一个候选池里做横向比较。
因为只是一个筛选器策略,主要用于研究分析和测试,所以代码封装的直接调用交易所API
javascript
function httpJson(url, source) {
var raw = null
try {
G.requestCount++
raw = HttpQuery(url, {
method: "GET",
timeout: G.cfg.requestTimeoutMs,
headers: {"User-Agent": "FMZ-Four-Dimensional-Option-Selector/1.0"}
})
if (!raw) throw "空响应"
var parsed = typeof raw === "string" ? JSON.parse(raw) : raw
if (parsed && parsed.error) throw JSON.stringify(parsed.error)
if (parsed && parsed.code !== undefined && String(parsed.code) !== "0" && !Array.isArray(parsed)) {
throw "code=" + parsed.code + ", msg=" + safeText(parsed.msg)
}
return parsed
} catch (e) {
throw source + " 请求失败: " + e + ", url=" + url
} finally {
Sleep(G.cfg.requestGapMs)
}
}
一、先把三个交易所的数据变成“同一种语言”
这一步比公式更重要。
Deribit、Binance 和 OKX 都能提供比较完整的期权市场数据,但字段命名、报价单位、合约规格、Greek 口径并不完全一致。如果直接拿三个交易所返回的 gamma、权利金或者持仓量互相比较,很容易比较出一个没有意义的结果。
截至本文核对时,三家的公开接口大致可以这样取数:
| 交易所 | 合约列表 | IV / Greeks | 行情与流动性 | 盘口 |
|---|---|---|---|---|
| Deribit | public/get_instruments | public/ticker / ticker WS:bid IV、ask IV、mark IV、Delta、Gamma、Theta、Vega 等 | ticker / public/get_book_summary_by_currency:OI、Volume、Best Bid/Ask | public/get_order_book |
| Binance Options | GET /eapi/v1/exchangeInfo | GET /eapi/v1/mark:bidIV、askIV、markIV、Delta、Gamma、Theta、Vega | GET /eapi/v1/ticker、GET /eapi/v1/openInterest | GET /eapi/v1/depth |
| OKX Options | GET /api/v5/public/instruments?instType=OPTION | GET /api/v5/public/opt-summary:Delta、Gamma、Theta、Vega、BS Greeks、markVol、bidVol、askVol、fwdPx | GET /api/v5/public/open-interest、Market Ticker | GET /api/v5/market/books |
这已经足够构建一个自动选品器。
不过进入模型前,我不会直接保留交易所原始结构,而是先统一成一条标准记录:
text
venue Deribit / Binance / OKX
underlying BTC / ETH
symbol 原始合约代码
expiry 到期时间
DTE 剩余天数
option_type Call / Put
strike K
forward F
bid_price_usd 标准化后的美元买价
ask_price_usd 标准化后的美元卖价
mid_price_usd 中间价
bid_iv 买方 IV
ask_iv 卖方 IV
mark_iv 标记 IV
delta_norm 统一口径 Delta
gamma_norm 统一口径 Gamma
theta_norm 统一口径 Theta
vega_norm 统一口径 Vega
open_interest_usd 标准化 OI
volume_24h_usd 标准化成交量
spread_ratio 相对价差
depth_slippage 目标资金量的预计滑点
quote_age_ms 报价新鲜度
这里有两个原则。
第一,价格先换成统一的美元经济价值再比较。不同平台的权利金报价、合约乘数和结算资产可能不同,不能看见 0.02 比 800 小,就说前者便宜。
第二,Greeks 最好自己按统一模型重新计算一次。交易所返回的 Greeks 很有用,可以做校验和实时展示,但跨交易所排名时,我更倾向于使用同一套 Forward、IV、DTE 和模型重新算一遍。这样至少保证比较的是同一种 Delta 和 Gamma。
对加密期权来说,用对应期限的远期价格 \(F\) 而不是单纯拿现货 \(S\) 去比较执行价,通常更自然。于是 Moneyness 可以统一写成:
\[ k=\ln\left(\frac{K}{F}\right) \]
ATM 附近 \(k\approx0\),Call 虚值时 \(k>0\),Put 虚值时 \(k<0\)。有了这个变量,三个交易所不同的 Strike 网格就能放到同一个坐标系里。
二、第一维:Delta、Gamma、Speed——不是“买便宜”,而是买凸性
方向交易里最容易犯的一个错误,是把“虚值”直接等同于“高赔率”。
一张极深虚值 Call 的确便宜,但它可能同时具有很低的 Delta、很差的流动性和很快的时间价值衰减。标的涨了一点,它仍然可以像没发生什么一样。
我真正关心的是另外一个问题:
如果 BTC 按我的方向移动,这张期权的 Delta 会不会迅速增加?
Delta 是期权对标的价格的一阶敏感度:
\[ \Delta=\frac{\partial V}{\partial S} \]
Gamma 是 Delta 的变化速度:
\[ \Gamma=\frac{\partial \Delta}{\partial S} \]
而 Speed 再往前一步:
\[ Speed=\frac{\partial \Gamma}{\partial S} \]
这三个量放在一起,就能描述一张期权从“还不太跟随标的”到“越来越像标的”的加速过程。
假设我买入一张 Delta 只有 0.18 的 BTC Call。开始时 BTC 每涨 100 美元,期权理论上只获得大约 18 美元的一阶价格暴露;如果 BTC 持续向执行价靠近,Gamma 上升,Delta 可能从 0.18 逐步变成 0.25、0.35、0.50。真正有意思的不是“0.18”这个数字本身,而是这条 Delta 路径有没有加速。
不把 Delta=0.15 当成神奇数字
很多实盘经验会偏好 0.10~0.20 Delta 的虚值期权,这个区域的确经常有不错的杠杆感,但不能把某个固定 Delta 写成数学定律。
Speed 的极值位置会随着 IV、DTE、Forward、Strike 和模型假设移动。BTC 在低波动、30 天到期时的最佳区域,不一定等于 ETH 在高波动、3 天到期时的最佳区域。
所以程序里我只把 Delta 当成第一层候选过滤器。例如方向做多时,可以先扫描:
text
0.10 <= Delta <= 0.30
做空时扫描:
text
-0.30 <= Delta <= -0.10
这不是最终答案,只是把明显太深虚值、已经太接近实值的合约先排除掉。之后再看 Gamma、Speed 和权利金成本。
Speed 不一定要相信交易所,自己“扰动”一次就能算
Speed 可以用模型解析式求,也可以用一个很实用的有限差分近似。
先把 Forward 向上、向下各扰动一个很小比例 \(\varepsilon\),重新计算 Gamma:
\[ Speed\approx \frac{\Gamma(F(1+\varepsilon))-\Gamma(F(1-\varepsilon))} {2\varepsilon F} \]
这样做的好处是:Deribit、Binance、OKX 不需要原生返回 Speed,只要我们有 Strike、DTE、IV 和 Forward,就可以按同一个模型自己算。
我更喜欢看“单位权利金买到了多少凸性”
单独比较 Gamma 也有问题,因为 ATM 期权通常 Gamma 很高,但权利金也贵。
于是可以构造一个很粗但实用的凸性效率指标:
\[ GammaEfficiency=\frac{\Gamma F^2}{Premium} \]
它不是新的金融定律,只是一个排序指标:同样花 1 美元权利金,哪一张合约给了我更多二阶价格暴露。
最终第一维不是找“Delta 最小”或“Gamma 最大”,而是找:
方向暴露还没完全释放,但 Gamma 正在有利区域、Speed 有加速潜力,而且凸性相对权利金并不贵的合约。
还有一个常见误区需要单独说清楚:Delta 翻倍,不等于期权价格翻倍。 Delta 是边际敏感度,不是价格倍率。真正形成期权爆发的,是标的价格持续移动、Gamma 凸性、剩余时间和 IV 变化共同作用的结果。
三、第二维:DTE——不要先问“买几天”,先问“行情什么时候兑现”
传统教材讲 DTE,往往只讲一句话:越临近到期,Theta 越快。
这当然没错,但对真正选合约还不够。
如果我的判断是“BTC 未来 48 小时可能突破”,和“未来一个月风险偏好持续恢复”,虽然方向都是看多,却不应该买同一个 Expiry。
在加密市场里,我会用四组信息一起判断期限:
预期兑现时间 + ATM IV 期限结构 + 期货 Basis + 永续 Funding。
1. 先看自己的预测周期
这是最容易被忽略的输入。
如果策略本身只能给出未来 3~5 天的方向优势,买一张 90 天期权可能浪费太多长期时间价值;反过来,如果基本逻辑需要两周兑现,却去买明天到期的期权,就算方向最终正确,也可能先被 Theta 清零。
所以选 Expiry 的第一条原则不是“近月 Gamma 大”,而是:
DTE 必须覆盖我的预测窗口,并留出一定误差。
预测“什么时候发生”本身,就是期权交易的一部分。
2. 再看 ATM IV Term Structure
把每个到期日 ATM 附近的 IV 连起来,就是最简单的波动率期限结构。
例如:
text
3D ATM IV 78%
7D ATM IV 72%
14D ATM IV 61%
30D ATM IV 58%
60D ATM IV 56%
这说明市场正在给近期风险支付很高的溢价。
此时如果我的方向观点只是“短期看涨”,买 3D Call 可能同时做了两件事:买方向,也买了一份非常昂贵的短期波动率。
如果标的上涨但事件落地后 IV 从 78% 掉到 60%,Vega 损失完全可能吃掉一部分 Delta 收益。
因此 DTE 选择不只是 Theta 管理,也是波动率期限价格管理。
3. Basis 和 Funding 用来判断“拥挤度”,不是直接当方向信号
Crypto 和商品期货最大的不同之一,是永续合约和资金费率非常重要。
如果出现:
text
永续 Funding 持续很高
+ 远期合约 Basis 明显为正
+ 近端 Call Skew 很贵
它至少说明多头表达已经很拥挤。即使我仍然看涨,也应该重新问一次:
我现在是不是在用最高的价格买市场最热门的方向?
反过来,Funding 很负也不能自动推出“应该买 Call”。Funding 和 Basis 可以长期保持极端,它们描述的是持仓需求、融资和期限价格,不是一个单独就能稳定预测涨跌的指标。
在这个模型里,它们的作用更像一个期限和拥挤度过滤器。
第二维最后输出什么?
我不会让程序直接输出“买 7 天”。它应该给候选期限打一个 Timing Score,至少综合:
text
预测窗口是否被覆盖
Theta / Premium 是否过高
ATM IV 是否处于异常贵的期限
Basis / Funding 是否显示方向过度拥挤
该期限是否有足够流动性
最终留下两个或三个 Expiry,再进入下一维。
四、第三维:IV Smile / Skew / Surface——方向没错,也别买最贵的那张
如果第一维决定“买哪一段 Strike”,第二维决定“买哪个到期日”,第三维就是在问:
同一个方向、同一个期限里,这张期权的波动率价格是不是合理?
这是我认为加密版本比单纯看 Delta 更值得做量化的地方。
先别直接用 Strike,改用 Log-Moneyness
不同到期日对应的 Forward 不一样,所以直接拿 \(K-F\) 比较并不理想。
统一使用:
\[ k=\ln(K/F) \]
再把隐含波动率转换成总方差:
\[ w(k)=IV(k)^2T \]
这样不同期限之间的曲线更容易统一处理。
为什么不能只拟合一个对称的“微笑”
BTC 和 ETH 期权经常不是左右对称的。某一阶段 Put 会因为避险需求明显更贵,另一阶段远虚值 Call 又可能因为追涨和结构化需求被抬高。
如果模型强制满足:
text
距离 ATM +10% 的 Call
=
距离 ATM -10% 的 Put
就会把真正有信息的 Skew 抹掉。
因此正式实现时,我更倾向于使用 SVI 一类允许偏斜的波动率曲线。经典 SVI 总方差形式可以写成:
\[ w(k)=a+b\left[\rho(k-m)+\sqrt{(k-m)^2+\sigma^2}\right] \]
它不是唯一选择。如果某个到期日有效报价很少,也可以先用更简单的非对称二次/三次平滑模型,重点不是追求最复杂,而是不能把明显的左右偏斜硬拟合成对称曲线。
“便宜”不是 IV 低,而是相对曲面低
假设某张 BTC Call 的 IV 是 55%。单独看 55% 没有意义。
如果同期限、相邻 Delta 的合理曲面应该在 62%,它可能偏便宜;如果合理曲面只有 48%,它反而很贵。
所以定义:
\[ IVResidual=IV_{market}-IV_{fair} \]
对于准备买入的期权,我尤其关心:
\[ AskResidual=AskIV-IV_{fair} \]
因为真正下单时我支付的是 Ask,而不是 Mark IV,也不是一条漂亮的中间价曲线。
这是实盘里很容易被忽略的一点。
一张期权可能显示:
text
Mark IV 52%
Fair IV 54%
看上去“便宜 2 vol”。
但它真实盘口可能是:
text
Bid IV 48%
Ask IV 58%
如果我是买方,真正能成交的是接近 58%,这张所谓“便宜期权”实际上根本不便宜。
再加入 25-Delta Skew
对于方向型交易,25 Delta Call 和 Put 很适合观察市场到底在给哪一边加价。
可以看两个简单指标:
\[ RR_{25}=IV_{25C}-IV_{25P} \]
\[ BF_{25}=\frac{IV_{25C}+IV_{25P}}{2}-IV_{ATM} \]
RR 更接近方向偏斜,BF 更接近两翼相对 ATM 的贵贱。
例如我看涨 BTC,但 25D Call 已经比 25D Put 贵很多,那么我不是不能做多,而是要承认自己正在买一条昂贵的 Call Wing。此时稍微靠近 ATM、换一个 Expiry,甚至换一个交易所,可能比简单追最虚值 Call 更划算。
五、Deribit、Binance、OKX 不应该是三套策略,而应该是一个候选池
做到这里,三家交易所开始真正发挥作用。
如果只看一个平台,我们只能回答:
这张期权相对“本交易所其他期权”贵不贵?
加入另外两个平台以后,可以再多问一层:
同样的 BTC 风险暴露,在别的平台是不是更便宜?
但这里不能直接把三个交易所相同 Strike 的权利金摆在一起比。
正确做法是先分别拟合每个平台自己的 Surface,再把它们投影到统一的 \((k,T)\) 坐标上。
例如对某个目标点:
text
BTC
DTE ≈ 14 天
Delta ≈ 0.20 Call
我们可以得到:
text
Deribit Fair IV
Binance Fair IV
OKX Fair IV
再做一个流动性加权的 Cross-Venue Consensus IV。
然后每一张实际候选合约同时拥有两个 Residual:
text
Local Residual
= 当前 Ask IV - 本平台 Fair IV
Cross-Venue Residual
= 当前 Ask IV - 三平台共识 Fair IV
这样就能区分两种完全不同的“便宜”:
一种是某张合约在自己平台的 Smile 上掉进了局部洼地;另一种是整个交易所这一段波动率都比另外两家低。
后者可能来自真实的跨市场供需,也可能来自合约规格、保证金制度、结算方式、参与者结构不同,所以我不会把它直接叫“套利”。
跨交易所 IV 差异只是选品信息,不等于无风险套利空间。 真正做跨市场套利还要处理资金分布、保证金、交易费用、合约乘数、结算规则、转账时间和腿风险,这已经是另一套系统。
本文只做一件事:
如果我本来就想买一张方向型期权,三家里哪一张更值得进入最终候选。
六、第四维:流动性——没有成交能力的“低估”没有意义
期权曲面最容易产生假信号的地方,就是远端、冷门、没有成交的合约。
某张 Call 的 Mark IV 可能低得非常漂亮,但盘口是:
text
Bid 20
Ask 35
算法如果只看 Mark IV,会把它排到第一名;真正下单以后,15 个点的价差直接把理论优势吃光。
所以第四维我更倾向于采用硬过滤,而不是给流动性一个小权重然后让其他分数把它“补回来”。
1. 相对买卖价差
\[ SpreadRatio=\frac{Ask-Bid}{(Ask+Bid)/2} \]
对方向买方来说,Spread 本质上就是刚进场就要承担的一部分亏损。
不同 DTE、不同 Delta 的合理阈值不同,因此我不会写一个永久有效的 3% 或 5%。更实用的方法,是比较同期限相邻合约的 Spread 分位数,例如只保留该期限流动性最好的 60%~70%。
2. 目标仓位的真实滑点
Best Ask 好看,不代表有足够数量。
如果计划买 20,000 美元权利金,就应该真正扫一遍 Order Book,计算:
\[ Slippage=\frac{VWAP_{entry}-BestAsk}{BestAsk} \]
而不是假定所有仓位都能在第一档成交。
三家交易所都有盘口接口,因此这个成本完全可以提前计算。
3. OI 与 Volume 分开看
Open Interest 高,说明有存量仓位;24 小时 Volume 高,说明最近真的有人交易。
我更喜欢二者一起使用,而不是只看一个。
text
OI 很高 + Volume 很低
可能是一堆老仓位。
text
OI 很低 + Volume 突然很高
可能是新合约、事件驱动,也可能只是短时交易。
真正稳定的候选,一般需要至少满足“有持仓基础 + 最近有成交 + 盘口没有明显断层”。
4. 报价必须新鲜
跨交易所扫描尤其要处理时间戳。
一个平台的数据比另外两个平台慢几秒,在快速行情里就足以制造假的 IV 洼地。所以候选记录里必须保留 quote_age_ms,超过阈值直接丢弃,不进入 Surface 拟合,也不参与跨平台比较。
七、把四维连起来:从“看多 BTC”到最终 Top 3
现在假设我的上层策略只给了三个输入:
text
Underlying: BTC
Direction: Long
Horizon: 7 days
它并没有告诉我买哪张 Call。
选品器的完整流程可以写成:
text
方向信号:BTC 看涨,预计 7 天兑现
│
▼
Deribit + Binance Options + OKX Options
│
▼
拉取全部可交易 Call 合约
│
▼
标准化价格、合约乘数、Forward、DTE、Greeks
│
▼
第一层:Delta 初筛(例如 0.10~0.30)
│
▼
Gamma / Speed / 凸性效率排序
│
▼
第二层:DTE + ATM IV Term Structure + Basis/Funding
│
▼
只保留最匹配的 2~3 个 Expiry
│
▼
第三层:分别拟合各交易所 IV Surface
│
▼
Local Residual + Cross-Venue Residual 找相对低估
│
▼
第四层:Spread / Depth / OI / Volume / Stale
│
▼
最终 Top 3
我不建议一开始就把所有东西压成一个“神奇总分”。更稳妥的方式是:先硬过滤,再分层排序。
例如:
python
# 伪代码,只表达流程
candidates = load_options_from_deribit_binance_okx("BTC")
candidates = normalize_contracts(candidates)
# 方向与基础可交易性
candidates = [x for x in candidates if x.option_type == "CALL"]
candidates = [x for x in candidates if 0.10 <= x.delta_norm <= 0.30]
candidates = [x for x in candidates if not x.stale]
candidates = [x for x in candidates if x.depth_slippage <= MAX_SLIPPAGE]
# 凸性
for x in candidates:
x.speed = calc_speed_by_bump(x)
x.gamma_eff = x.gamma_norm * x.forward**2 / x.ask_price_usd
# 时间
expiries = rank_expiry_by_horizon_term_structure_basis(candidates, horizon_days=7)
candidates = keep_selected_expiries(candidates, expiries)
# IV Surface
surfaces = fit_surface_by_venue_and_expiry(candidates)
for x in candidates:
x.fair_iv = surfaces[x.venue, x.expiry].iv(x.log_moneyness)
x.ask_residual = x.ask_iv - x.fair_iv
# 流动性与成本
candidates = hard_liquidity_filter(candidates)
# 最终排序
top3 = rank_candidates(candidates)[:3]
真正实现时,可以把阈值全部改成分位数,让 BTC、ETH、不同波动环境自动适应,而不是长期写死一个值。
八、最后一步我不会直接下单,而是做一次“情景重定价”
四维筛选之后还有一个非常重要的检查:
如果我的方向判断真的按预期兑现,这张期权究竟能赚多少?
因为 Gamma 高、IV 便宜、流动性好,仍然不代表收益一定满足交易目标。
假设上层模型给出:
text
当前 BTC Forward: F
预计 5 天后: F × 1.06
预计 IV 变化: -3 vol / 0 / +3 vol
就可以对每个候选分别重定价:
\[ V_{exit}=OptionPrice(F_{scenario},K,T-5d,IV_{scenario}) \]
再扣掉真实入场 Ask、预计退出 Spread 和手续费:
\[ NetPnL=V_{exit}-EntryAsk-ExitCost-Fee \]
我一般至少跑三种 IV 情景:
text
方向兑现 + IV 下跌
方向兑现 + IV 不变
方向兑现 + IV 上升
如果一张 Call 只有在“BTC 大涨且 IV 继续暴涨”时才有漂亮收益,那说明它其实是一个非常苛刻的双重押注。
相反,如果 BTC 按预期上涨,即便 IV 回落几 vol,它仍然能维持可接受收益,这种合约才更符合“用期权表达方向”的原始目的。
这一步也把前面的 Greeks 重新放回正确的位置:Greeks 是局部敏感度,最终交易判断仍然应该回到完整重定价和真实成交成本。
九、三家交易所各自最适合在系统里扮演什么角色
从搭建模型的角度,我不会简单评价哪家“最好”,而是更愿意把它们当作三个互相校验的市场。
Deribit:适合做主曲面与高频 Greeks 数据源
Deribit 的 ticker / WebSocket ticker 本身就能提供 bid IV、ask IV、mark IV、Greeks、OI 和行情数据,期权工具链非常集中。做 BTC/ETH 波动率 Surface 时,它很适合作为主数据源之一。
另外,Deribit 还提供历史波动率和波动率指数相关接口,后续如果要把“当前 IV 贵不贵”扩展到 IV-RV、DVOL 或历史分位数,也比较顺手。
Binance Options:适合做第二报价中心和 USDT 生态对照
Binance 的 /eapi/v1/mark 直接给出 bidIV、askIV、markIV 以及 Delta、Gamma、Theta、Vega;ticker、openInterest、depth 又能补齐成交、持仓和盘口。
对选品系统来说,它最大的价值不只是“又多一个交易所”,而是可以帮助判断:Deribit 某一段 Smile 的便宜/昂贵,到底是局部现象,还是全市场都在这么定价。
OKX Options:适合做独立 Surface 与 Forward 校验
OKX 的 /api/v5/public/opt-summary 对这套模型非常友好,因为返回数据里除了 Delta/Gamma/Vega/Theta,还有 deltaBS、gammaBS、thetaBS、vegaBS、markVol、bidVol、askVol、fwdPx 和 ATM 波动率相关字段。
也就是说,一次请求就能拿到很多构建 Smile、Skew、Forward 和 Greeks 校验所需的信息。再配合 public/open-interest 和盘口接口,可以独立形成一套完整候选池。
最终三家数据应该互相校验,而不是互相替代。
十、真正值得自动化的不是“预测涨跌”,而是把观点翻译成合约
现在很多量化策略都把大量精力放在方向信号上:趋势、动量、机器学习、订单流、链上数据,最后输出一个 Long 或 Short。
但如果执行工具从期货换成期权,方向信号只完成了一半。
同一句:
text
未来一周 BTC 偏多
可以被翻译成完全不同的风险结构:
text
3D 40Delta Call
7D 20Delta Call
14D 15Delta Call
30D ATM Call
Call Spread
这些头寸方向都叫“看涨”,实际对价格、时间和波动率的敏感度完全不同。
所以我认为一个比较合理的系统架构应该是:
text
方向模型
↓
输出:方向 + 置信度 + 预测期限 + 预期幅度
↓
期权选品器
↓
Delta / Gamma / Speed
DTE / Term Structure
IV Surface / Skew
Liquidity / Cost
↓
情景重定价
↓
Top 3 合约
↓
风险预算决定最终仓位
这里有一个很重要的变化:
我们不再问“哪张期权最便宜”,而是问“哪张期权最适合表达当前这一个预测”。
这是两个完全不同的问题。
十一、风险:买方最大亏损有限,不代表策略风险小
方向型买方最大的优点,是单笔最大损失通常可以被权利金预算明确限制。
但这很容易制造另一个错觉:反正最多亏权利金,所以可以一直买。
真正危险的是连续的小额归零。
如果一个模型每次都去买低 Delta、短 DTE 的期权,它可能长期呈现:
text
单笔最大亏损很小
胜率很低
Theta 长期为负
Spread 长期为负
偶尔一次爆发赚很多
这类收益分布到底有没有正期望,不能靠“亏损有限”证明。
所以四维选品器解决的只是:在已经决定使用期权表达方向以后,减少明显不合理的合约选择。
它不能替代:
- 方向模型本身的统计优势;
- 单笔权利金预算;
- 每日/每周最大亏损;
- 同方向集中度限制;
- 跨交易所资金和操作风险;
- 对极端行情、IV 崩塌和流动性消失的压力测试。
尤其要记住,所谓“IV 低估”只是模型相对价格,不代表它一定会向拟合值回归。Surface 本身也会移动。
结语:期权不是“带保险的期货”,而是一张可以设计的收益曲线
如果只用一句话总结这套方法,就是:
方向看对,只说明你解决了 Delta 的符号;真正决定期权交易质量的,是你同时买下了多少 Gamma、付出了多少 Theta、买贵还是买便宜了 Vega,以及最后能不能以合理价格成交。
加密期权的优势恰恰在于,这些数据高度结构化。
Deribit、Binance Options 和 OKX Options 都提供了足够完整的公开 API,让我们可以把传统期权交易里“盯着 T 型报价凭经验选合约”的过程,改造成一个可重复的程序:
text
方向
→ Strike
→ Expiry
→ IV Surface
→ Liquidity
→ Cross-Venue Compare
→ Scenario Repricing
未来如果继续往前走,我更感兴趣的并不是再加第五个指标,而是把这套选择器与上层方向模型完全分开:让方向模型只负责预测“往哪走、多久、可能走多远”,让期权模块专门负责寻找最合适的风险表达。
到那一步,期权不再只是“看涨买 Call、看跌买 Put”的交易按钮,而真正变成了一套可以计算、筛选和设计的收益函数。
策略源码
- 1



