【本周否掉了什么】
我们想给卖期权加一道"开仓门槛":只有在市场结构看起来"干净"时才卖。
这个想法来自系统里每天在算、但从没被当作条件检验过的一张表(gate_daily):它标记了三件事
——仓单是否异动、持仓是否拥挤、20 日趋势是否转负。
直觉是:这三样都干净的时候,卖期权应该更安全。
结论:不成立。 而且我们找到了"看起来成立"的真正原因。
【怎么测的】
- 样本:2017-07 → 2026-09,卖 Put 价差(R5S)逐笔 4,750 笔、卖 Call 价差(R4S)4,561 笔、裸卖近 ATM Put(R6)5,083 笔
- 条件:「闸门干净」= 无仓单异动/无持仓拥挤;「趋势未转负」= 20 日趋势不为负
- 判据(事前冻结):方向为正 · 置换检验 p<0.05 · 多重比较校正(BH-FDR, q=0.10)· 逐品种方向一致率 ≥60% · 时间对半两段都为正 · 剔除首尾 1% 后仍为正 · 扣掉 IV 分位后仍为正 · 跨年 ≥5 窗且正年 ≥60%
- 批次:8 条候选 / 批;先冻结判据、再看数据(改判据 = 重新计时)
【为什么被否】
【第一轮:8 条全部淘汰 —— 但其中 4 条的"死因"是我们工具的问题】
第一轮跑出 0/8。四条候选在方向、显著性、多重比较、扣 IV 分位、跨年全部通过的情况下,
被"单调性"这一道闸拦下。
追查后发现:那道闸对 0/1 变量不适用。它的实现会先把数据按"条件值"排序,但对只有 0 和 1 的变量,
排序会把同一层内部也按收益切开 —— 于是"看起来单调"其实来自层内噪声。
实测证据:分桶后第 1 个桶与第 2 个桶同属"闸门干净"那一层,中位却相差 63 个百分点。
【第二轮:4 条存活 —— 但最强的那个是"标的在涨"换了个说法】
换闸后 4 条存活。看起来有戏。
给其中最强的一条("20 日趋势未转负",差 +10.70pp)建前向验证时,我们顺手加了一道最朴素的对照:
- 该条件(趋势未转负)差:+10.70pp
- 基线「标的过去 20 日收益为正」的同一差值:+10.67pp
- 两者标记同向:93.6%
- 在"过去 20 日上涨"的子集内,该条件的增量:−0.08pp
一旦锁定"标的在涨",这个条件就不剩任何增量。
原因不难想:卖 Put 价差本来就在赌标的别跌。把"过去 20 天没跌"叫成"趋势健康",
并不会让它变成一个新信息 —— 它只是把 beta 换了个说法。
【第三轮:把"扣掉标的涨跌"写成通用闸,重跑 8 条 —— 0 存活】
| 候选 | 差 | 逐品种一致率 | 在"标的在涨"子集内 |
|---|---|---|---|
| 卖 Put × 趋势未转负 | +10.70pp | 52.1% | −0.08pp |
| 卖 Put × 闸门干净 | +4.95pp | 62.3% | +2.45pp |
| 卖 Put × 两者都干净 | +7.97pp | 60.8% | +1.86pp |
| 裸卖 Put × 闸门干净 | +7.42pp | 55.6% | +7.65pp |
| 卖 Call × 闸门干净 | −12.56pp | 37.3% | −14.53pp |
两条独立的否掉理由:要么被"标的在涨"解释(子集内增量只剩 2pp 以下),
要么跨品种方向不一致(一致率不到 60%)。
【学到了什么】
- "全样本上条件层更好"几乎什么都没证明。 只要条件与价格路径沾边(趋势、动量、均线、涨跌幅),
它就会"更好"。必须扣掉"标的自己涨跌"这条最朴素的基线,并在该基线的两个子集内分别复算。
- 同一个数字,换个统计口径能差 39 个百分点。 我们一开始把"条件层赚钱的品种占比"(91.2%)
当成了"逐品种方向一致率"(真实值 52.1%)—— 前者宽松得多,足以让一条无效条件过关。
口径必须写进字段名,不能靠记忆。
- 自己是会犯错的,而且错的方式会重复。 这一轮我们两次引用了"自己写的临时脚本算出的数",
两次都被独立复核推翻。现在的规矩是:凡要写进台账的数字,必须来自可复现的工具输出或独立复核。
【这对你意味着什么】
不是"这个想法毫无价值",而是这个想法的验证方式一开始就错了:
- 如果你也在用"市场状态看起来不错"来择时卖期权,请先问一句:这和我已知的"标的在涨"有区别吗?
- 如果答不上来,那不是择时,那是在赌方向——只是包装成了波动率策略。
我们把这个结论写进了规则库:凡是"顺风类"的条件,必须先扣掉标的自身涨跌,否则一律不算证据。
【下周会测什么】
- 先把"测不了"讲清楚:加工利润分位只在 16 个有产业链的品种上存在,逐笔样本 998 笔
(占 R5S 全样本 21%)⇒ p20/p80 极端层只剩约 200 笔、低于我们冻结的 300 笔门槛。
这一批 6 条极端层候选全部被第一道闸判 unreachableOrNoData —— 是数据不够,不是想法错。
- 下一批要修的是工具,不是急着换假设:随机对照件在这批里"存活"了(+8.41pp、p=0.0185),
按规矩整批作废。查下来不是 bug:单个对照件在 α=0.05 下本身就有约 1/20 的概率被误判。
自下一批起改成 5 个对照件、判据「≥4/5 被拒」(零假设下 2 个及以上显著 ≈ 2.3%)。
- 待测清单(registry 现有):待测量 27 条、观察中 14 条。
取舍标准没有变:先做能复用现有样本、且不是价格路径变形的条件。
- 上一轮被否的"卖 Call 侧闸门反向"结论,继续作为负向知识留档,不删。
【附:本期的完整台账(供核对)】
| 批次 | 候选数 | 存活 | 淘汰原因分布 |
|---|---|---|---|
| C4(首测) | 8 | 0 | 4 条"工具不适用"(未判定) · 3 条不显著 · 1 条方向为负 |
| C5(判据修订) | 8 | 4(后被推翻) | 见修正文档 |
| C6(加 beta 基线闸) | 8 | 0 | 2 条 explainedByBeta · 2 条 notRobustShapeBinary · 3 条不显著 · 1 条方向为负 |
| 前向 | 0 | — | 最强候选在样本内即被判不足,未进前向 |