搭 A 股量化系统的第一行代码不是 import——是把你最相信的策略写成 5 年回测
先抛一个反直觉的事实——
追涨型策略(强势股 + 主升浪 + 龙头打板组合)跑 5 年完整历史回测,累计净值曲线几乎是一根横线。
这是绝大多数 A 股散户最爱的玩法,也是被自媒体反复强化的"显学"。但当它进入工程系统的回测框架,夏普比率在所有主流风格中排名垫底。
这就是认知关要解决的问题——在动手写代码之前,你"以为对"的那套策略,本身是不是站得住脚。
一、为什么"认知关"必须放在第一位
大多数自学 A 股量化的工程师,第一步是这样——
选回测框架(backtrader / vnpy / zipline)
→ 接一份行情数据
→ 写一个"看起来有道理"的策略
→ 跑回测、调参数
→ 上线
这条路的问题不在工程,在第一性假设。
你写的策略基于你对 A 股的某套认知。如果认知本身就是错的,回测框架再漂亮、参数调得再细,你都是在错误的前提上盖楼。
# 单看代码完全没问题
def chase_momentum_strategy(df):
cond1 = df['close'] > df['MA20'] * 1.05 # 强势股
cond2 = df['vol_ratio'] > 1.5 # 主升浪
cond3 = df['is_sector_leader'] # 龙头
return df[cond1 & cond2 & cond3]
# 真正的问题在前提
# "强势 + 主升浪 + 龙头"——这套假设的长期胜率是多少?
# 5 年净值横线,夏普垫底。代码没毛病,前提塌了。
二、认知陷阱——A 股最危险的隐藏成本
认知陷阱指的是——在散户群体里被广泛相信、被自媒体反复强化的策略思路,但用长周期历史数据回测时,其实际胜率和收益曲线远低于直觉预期。
A 股市场上典型的认知陷阱——
| 陷阱 | 传播度 | 直觉预期 | 5 年回测实测 |
|---|---|---|---|
| 强势股可以一直强 | 极高 | 持续上涨 | 净值横盘震荡 |
| 龙头打板长期有效 | 极高 | 高胜率 | 夏普垫底 |
| 主升浪追入还能继续涨 | 极高 | 高弹性 | 收益已被透支 |
「认知陷阱的危险之处不在于策略本身错,而在于它被相信的程度高于它的真实有效性,导致大量散户在错误方向上做出一致行为。」
三、5 年回测的关键发现——"反向"对照组
把追涨型策略和一种"看起来又怂又跌、散户普遍不愿持有"的反向风格做对照测试——
| 风格 | 5 年累计净值 | 夏普比率 | 散户偏好度 |
|---|---|---|---|
| 追涨型 | 横盘震荡 | 垫底 | 高 |
| 反向(低位 / 超跌 / 防御) | 显著上行 | 显著占优 | 低 |
两者的净值曲线在 5 年长度上完全不在一个量级。
为什么?
被广泛相信的策略,往往是已经被市场充分博弈、收益被透支的策略。一个策略被传得到处都是,意味着信它的人很多,大家在同一个方向上做一致行为,把红利提前吃掉了。真正能产生长期超额收益的策略,常常在直觉上反人性、在传播上低声量——因为它"不爽",所以没人愿意推。
四、认知验证清单(5 步法)
在写第一行系统代码之前,按以下清单完成——
第 1 步|列出最坚信的 3 条 A 股策略假设
例:"追涨有效"、"龙头延续"、"突破必涨"
第 2 步|为每条假设设计最简版可回测策略
纯单因子规则即可,不必复杂——不要在验证认知的阶段
就掺入参数调优、组合权重等"二阶问题"
第 3 步|用至少 5 年历史数据进行回测
关注两个指标:
- 累计收益曲线形状
- 风险调整后收益排名
第 4 步|对每条假设给出"成立 / 部分成立 / 不成立"的结论
记录数据来源、回测窗口、参数取值——
可复现是认知验证的基本要求
第 5 步|对"不成立"的假设,反向构造对照组(反转 / 低位 / 超跌)
看是否能得到镜像有效的结论——
散户普遍嫌弃的方向,常常是 alpha 的来源
目的是避免错误前提,不是找完美策略。
五、工程含义——认知验证产物如何落地到代码
认知关跑完,最直接的产出是一份"已验证的策略假设清单"——这是后续工程的输入。
@dataclass
class VerifiedHypothesis:
name: str
rule: Callable # 最简单因子规则
backtest_window: tuple # 数据窗口
sample_size: int # 至少 5 年
verdict: Literal['hold', 'partial', 'reject']
sharpe_rank: int
notes: str
# 后续架构关的策略原型库 = 所有 verdict in ('hold', 'partial') 的假设
verified_pool = [h for h in hypotheses if h.verdict != 'reject']
没有这份清单,后面所有工程都是空中楼阁——你会在错的目标上写出正确的代码。
六、认知关的最大价值——保护你的下一年时间
工程师最贵的资源不是 CPU 也不是带宽——是时间。
一年的时间写一套基于"追涨假设"的系统,上线后净值横线——这一年的工程价值约等于零。而5 年回测花掉的那 1–2 周,可能是你能为这套系统做出的最高 ROI 投入。
「写代码之前先验证认知。在错误前提上盖楼,造得越快倒得越彻底。」
七、思考题
- 列出你目前最坚信的一条 A 股策略假设,设计一个最简单的验证方案
- 为什么"被广泛相信的策略"往往不再有效?从市场参与者结构的角度做一段分析
- 如果认知验证结果与你的直觉相反,你会选择相信哪个?请说明你的判断依据
更多推荐



所有评论(0)