回测里最漂亮的那条曲线,可能一行都执行不了——流动性是量化“实验室到现实“的死亡谷

发布时间:2026/7/2 8:39:38

回测里最漂亮的那条曲线,可能一行都执行不了——流动性是量化“实验室到现实“的死亡谷 先抛一个会让很多回测党脸色一变的判断——一套策略在回测里跑出漂亮的净值曲线不等于它能在实盘里赚到这笔钱。中间隔着一道叫流动性的死亡谷。你成交不了的收益在回测里是净值在实盘里是幻觉。大部分人研究买什么研究了一辈子也不研究能不能卖出来。但在一套系统化选股的框架里流动性是几道独立硬筛之一跟基本面、技术形态一样重要——甚至更靠前。这一讲不讲交易代码源文里没有任何回测收益、胜率我也不会硬凑。我讲的是一件更靠前的事为什么流动性必须做硬筛以及冲击成本这个看不见的成本是怎么吃掉散户利润的。一、先把流动性定义成三个可判定的问题简单说流动性 你想交易的时候能不能以接近当前价格成交。它可以拆成三个问题——你想买的时候有没有人卖给你你想卖的时候有没有人买你你的成交价格会不会因为你的交易而被推走一只票流动性好意味着这三个答案都是是。这三个问题翻译成工程语言就是三个必须在下单前回答的约束——它们不是买什么的问题是这笔交易能不能落地的问题。二、最直观的指标日均成交额但要小心单日噪声最容易看的流动性指标是日均成交额。A 股的粗略分档——日均成交额流动性状态10 亿以上极好进出无忧1-10 亿正常普通投资者无压力5000 万 - 1 亿偏弱大资金需分批1000 万 - 5000 万差谨慎参与1000 万以下流动性陷阱区能买进未必卖得出关键工程细节这个数字必须是滚动均值单日不算数。一只票今天成交了 5 个亿可能只是因为它今天涨停了不代表平时也有这个水平。系统里用单日成交额做筛选等于被一次异常值骗进一个陷阱。三、为什么卖不出比买不到更可怕——冲击成本的数学新手最容易忽略后者。买不到最多是错过一笔交易只是机会成本卖不出就要命了。想象你重仓的票出了利空开盘 -7%你想割肉但盘口卖一只挂着 200 手你 5000 手砸下去卖 1 (-7.0%) 吃掉 200 手 卖 2 (-7.5%) 吃掉 300 手 卖 3 (-8.0%) 吃掉 500 手 …… 最终成交均价 ≈ -9.5%比你看到的开盘价还差 2.5 个点。这就是冲击成本——你的交易行为本身在拖低你的成交价。流动性差的票单这一项就能吃掉你的利润。所以系统里光有信号不够还要有冲击成本估算模拟以策略所需仓位下单后的成交均价作为可执行性的二次校验。四、把四种流动性陷阱做成排除标签源文列了四种典型陷阱每一种都对应一个系统该识别的状态——微盘股20 亿以下小票日均成交可能只有几千万。100 万资金进去都要分批。长期阴跌的僵尸股连续阴跌、无人问津日成交只有 1-2 千万。你看它低估想抄底结果套进去出不来。重组停牌前的突然冷清临近重大事项停牌前成交极低、价格不动的诡异平静。看起来稳定其实是预期被锁定消息一出你来不及反应。涨停/跌停后的假满涨停封单 5 亿看起来流动性极好——但你想卖时需要价格回到板下那时已经雪崩了跌停反之封单巨大恰恰是你出不去。注意最后一条涨停封单大 流动性好是一个必须在系统里显式反转的幻觉。封单代表的是想买进不来不是想卖能卖掉。五、流动性是时变的——昨天的流动性 ≠ 你出货那天的流动性很多人以为某只票一直流动性都还行但实际上利好出来流动性会突然激增一天几百亿都可能利空、退市风险、停牌预期流动性会突然枯竭行业进熊市整个板块流动性集体下台阶。昨天的流动性 ≠ 今天的流动性更 ≠ 你出货那天的流动性。所以系统在配置一只票前不能只看当前成交额还要看历史最差成交额、类似情形下的成交模式——你要为最坏的那天留出口而不是为平均的那天。六、流动性和持仓规模强相关——这是散户的隐形天花板10 万、100 万、1000 万对流动性的要求完全不同10 万基本不挑票连小盘都能玩。100 万要避开微盘至少日均 5000 万以上。1000 万要找日均 5 亿以上不然分批都费劲。1 亿以上基本只能在沪深 300 中证 500 里挑。很多散户从 10 万做到 100 万很快但从 100 万到 500 万就突然不顺——不是策略失效了是策略撞上了流动性天花板。这意味着系统的成交额下限本质上是资金量的函数不是一个固定常数。七、一段诚实的伪 schemafromdataclassesimportdataclassdataclassclassLiquidityCheck:adv_rolling:float# 滚动日均成交额——绝不用单日值adv_worst:float# 历史最差成交额为出货那天留出口est_impact_cost:float# 按本策略仓位模拟下单的冲击成本估算is_limit_locked:bool# 是否处于涨停/跌停封单的假满状态near_suspension:bool# 是否临近停牌等预期锁定情形# —— 显式声明 ——# 1. 成交额一律取【滚动均值】单日放量(如涨停)会骗过筛子。# 2. 流动性下限是【资金量的函数】不是固定常数。# 3. is_limit_lockedTrue 时封单大 ≠ 能卖掉必须反转流动性好的直觉。# 4. 本结构不含任何收益/胜率仅回答这笔交易能否落地。这段 schema 的全部价值是把能不能卖出来翻译成了下单前的硬约束——没有流动性校验的策略回测里看着漂亮实盘可能一行都执行不了。这是量化最经典的实验室到现实的死亡谷。八、给系统的三条纪律也是给人的成交额用滚动均值且下限随资金量浮动。单日放量是噪声固定阈值会在大资金上失效。给每个信号配一次冲击成本估算。信号说该买冲击成本说买得起吗、卖得掉吗。把5 分钟内能否全部卖出当作一道硬测试。答案是不行的票不该出现在这个仓位的候选池里。九、思考题如果让你给LiquidityCheck再加一个字段去防住重组停牌前诡异平静这种陷阱你会加什么它对抗的是哪种直觉源文说流动性是资金量的函数。如果要让系统的成交额下限随账户规模自动调整你会怎么设计这个映射冲击成本在回测里通常被忽略。你认为一个诚实的回测应该怎样把冲击成本近似进净值曲线风险提示本文为系统科普与个人思考分享不构成任何投资建议。低流动性股票存在显著流动性风险请审慎参与。投资有风险入市需谨慎。

相关新闻