第 18 课 怎样阅读任何一条策略¶
策略名称只提供一条检索线索。阅读时要继续追问它观察什么、怎样行动、依赖哪些条件,又会在哪里失效。
看到策略名字以后先不要寻找收益¶
小岚在网上看到两个标题。一个说“二十日均线策略”,另一个说“二十日突破策略”。两者都使用二十日价格,却可能属于不同方法。均线策略在价格跌得离平均值较远时买入,希望偏离修复;突破策略在价格超过过去高点时买入,希望方向延续。相同的二十日窗口,只表示它们都回看相似长度的历史,没有说明两者依赖同一种市场现象。
策略名称经常省略大量决定。“动量”可能指一项资产过去上涨就继续持有,也可能指同一天比较许多资产并买入相对强者;“均值回归”中的均值可能是自身移动平均、两项资产价差、行业中性残差或某种估值中心。窗口、资产范围、成交时间和仓位一变,风险也会跟着变化。
阅读策略时先放下“历史赚了多少”。脱离数据版本、成本、市场、样本时期和验证方式,两个收益数字没有公平比较基础。先把方法还原成一条能够执行和反驳的研究链,再看证据支持到哪里。
指标、信号和策略不是同一层东西¶
指标是从原始数据计算出的量,例如二十日平均价、过去一个月收益率或成交量变化。它负责描述某个现象,没有自动决定买卖。信号把指标放进条件,例如“收盘价高于二十日最高价时标记为一”。订单再把信号翻译成准备买卖的对象、数量、价格条件和有效时间。
成交以后,账户才得到实际持仓。仓位规则决定每项资产占多少资金,风险规则限制总暴露、单项集中、最大换手或停止条件,退出规则说明持仓何时结束。把这些层连起来,才得到一条完整策略。
flowchart LR
accTitle: 从数据到完整策略的六层结构
accDescr: 原始数据先计算指标,指标经过阈值或排序形成信号,信号生成订单,成交回报改变持仓,仓位与风险规则共同决定账户结果
data["数据<br/>价格、成交、财务、事件"] --> indicator["指标<br/>把现象变成可比较数字"]
indicator --> signal["信号<br/>条件是否成立"]
signal --> order["订单<br/>对象、方向、数量、时间"]
order --> position["持仓<br/>实际成交后的账户暴露"]
position --> risk["风险与退出<br/>限制、再平衡、停止"]
risk --> ledger["账本<br/>收益、成本和失败记录"]
classDef input fill:#eef3ff,stroke:#3157d5,stroke-width:2px,color:#172b65
classDef middle fill:#f6f0ff,stroke:#7653c7,stroke-width:2px,color:#34205f
classDef finish fill:#e9f8f1,stroke:#15805d,stroke-width:2px,color:#103d30
class data,indicator input
class signal,order,position,risk middle
class ledger finish
“使用 RSI”只指出一个指标,仍然缺少资产、参数来路、触发阈值、买卖时间、持有期、仓位、成本和验证。“价格突破就买”多了一条信号,也没有说明突破怎样定义、订单是否能够成交、买入多少以及何时退出。阅读时把内容放回六层结构,缺口会比单看代码名称清楚得多。
五个策略家族按核心假设区分¶
策略家族是依赖相近市场现象的一组方法。它不是严格学术分类,一条策略也可能跨越多类。分类的价值是帮助读者先找到核心假设,再寻找与它匹配的失败环境和比较基线。
flowchart TB
accTitle: 经典量化策略的五个家族
accDescr: 策略按照方向延续、偏离修复、资产差异、事件与持有收益、数据驱动五类核心假设整理,每类需要不同数据、执行方式和验证证据
library["策略库"] --> trend["方向延续<br/>均线、突破、时间序列动量"]
library --> revert["偏离修复<br/>短期反转、配对、残差回归"]
library --> factor["资产差异<br/>价值、质量、动量、低波动"]
library --> event["事件与持有收益<br/>公告、季节、Carry、波动率"]
library --> model["数据驱动<br/>线性模型、树模型、序列模型"]
classDef root fill:#f6f0ff,stroke:#7653c7,stroke-width:2px,color:#34205f
classDef leaf fill:#eef3ff,stroke:#3157d5,stroke-width:2px,color:#172b65
class library root
class trend,revert,factor,event,model leaf

左上山路表示顺着已经出现的方向前进,右上弹簧表示偏离中心后的修复假设,左下卡片从多个因子中形成选择,右下天平提醒所有信号最终都要接受仓位与风险配置。图中四块是阅读入口,不是收益高低排名。
方向延续家族认为已经出现的方向可能持续一段时间。均线、价格突破与时间序列动量都属于这里。它们往往在横盘期反复进出并承受小损失,希望在较长趋势中获得补偿。核心压力情景是快速反转、拥挤退出和交易成本上升。
偏离修复家族认为价格、价差或残差离开某个中心后可能返回。短期反转、布林带回归和配对交易属于这里。它们最怕中心本身已经移动,过去关系因公司事件、制度变化或趋势形成而断裂。不断下跌的资产会一再显得更便宜,仓位限制因此格外重要。
资产差异家族在同一个日期横向比较许多对象。价值、质量、规模、动量和低波动因子会给每项资产计算分数,再把排序变成组合。财务披露时间、历史候选池、行业暴露、换手与组合约束决定研究是否公平。
事件与持有收益家族围绕公告、指数调整、分红、期限结构、期权定价和交易制度展开。它们经常需要精确事件时钟、合约规则、保证金和更细执行数据。Carry 表示持有某种头寸随时间可能获得或支付的收益来源,第 23 课会先用租借与合约价格把它讲清。
数据驱动家族让模型从历史样本学习输入与未来目标的关系。线性模型、树模型、神经网络和序列模型能够表达不同复杂度,也带来数据泄漏、过度拟合与解释困难。机器学习部分会要求每个模型和更简单方法使用同一时间切分、费用与基线。
一张统一策略卡需要回答九个问题¶
| 栏目 | 需要回答的问题 | 为什么不能省略 |
|---|---|---|
| 核心假设 | 哪类过去信息可能与未来结果有关 | 决定策略在研究什么 |
| 可能机制 | 参与者行为、制度或风险怎样产生现象 | 帮助推导适用与失效环境 |
| 市场范围 | 哪些资产在每个历史日期有资格进入 | 防止结论无限外推和幸存筛选 |
| 所需数据 | 字段、频率、单位和最早可见时间是什么 | 检查能否在当时真实计算 |
| 信号形成 | 指标怎样变成阈值、方向或排序 | 让另一位读者能够复现判断 |
| 订单与持仓 | 何时交易、成交如何模拟、买多少、何时退出 | 把判断连接到真实账户 |
| 失效原因 | 哪个关系变化后策略会受伤 | 提前设计压力情景与停止条件 |
| 简单基线 | 复杂方法需要战胜哪个透明对手 | 判断新增部件是否提供增量价值 |
| 验证计划 | 时间怎样切分,参数、成本与市场状态怎样检查 | 让历史证据不只来自一条冠军曲线 |
答不出的栏目先写“待确认”,旁边附上查证途径。用想象填补交易所规则、数据字段或论文没有公开的设置,会让卡片看似完整,却降低了可复查性。
用同一组价格比较两条相反策略¶
假设一只虚构资产过去二十日大多围绕 10 元波动,昨天最高价为 10.40 元,二十日平均价为 10.00 元。今天收盘突然达到 10.50 元。突破策略看到价格越过 10.40 元,认为新的方向可能继续;偏离回归策略看到价格高于平均值 5%,认为短期偏离可能修复。两者读取同一张价格表,却给出相反判断。
| 阅读问题 | 二十日突破 | 二十日均值回归 |
|---|---|---|
| 核心假设 | 越过过去边界后,方向可能延续 | 离开近期中心后,价格可能回到中心附近 |
| 当日指标 | 收盘价与过去二十日最高价之比 | 收盘价与二十日平均价的偏离 |
| 本例信号 | 10.50 高于此前最高 10.40,出现顺势信号 | 10.50 高于平均 10.00,可能出现反向信号 |
| 常见订单 | 下一可交易时点沿突破方向进入 | 等待偏离达到阈值后逆向进入 |
| 主要风险 | 假突破、横盘反复与快速反转 | 中心漂移、趋势加速与基本关系断裂 |
| 简单基线 | 买入持有或更朴素的单均线 | 无交易或固定阈值回归 |
它们都使用二十日,不代表共享参数含义。突破窗口决定过去边界,均值窗口估计当前中心。参数稳定性也要分别解释。突破策略可以检查十八至二十二日边界是否方向一致,回归策略还要检查均值是否在当前制度和市场状态中具有稳定含义。
把指标写成规则以前先完成手算¶
突破指标可以先用普通中文表达。取信号日以前二十个交易日的最高收盘价,与今天收盘比较;今天更高时,方向判断为正。这里强调“信号日以前”,因为把今天同时放进二十日最高值后再用严格大于比较,今天收盘最多等于包含自身的最高值,规则会发生意外变化。
均值偏离也可以先手算。二十日平均价为 10 元,今天收盘 10.50 元,偏离比例为 10.50 除以 10 再减 1,得到 5%。5% 只是指标,只有研究卡提前规定例如“高于平均 4% 后观察回落”之类阈值,它才变成信号。阈值来路、订单时间和退出仍需继续填写。
代码要按策略层次阅读¶
读到完整策略代码时,先根据变量输入输出给每一段贴上六层标签。读取与清洗价格属于数据层,rolling 和收益计算属于指标层,比较与排序属于信号层,shift 常用于把信号移动到可执行持仓日期,权重与限制属于仓位风险层,费用和净值属于账本层。
若一段代码从价格直接跳到净值,尝试寻找被省略的订单与成交假设。position = signal 看起来只有四个单词,却可能默认信号出现就立即全量成交;return * position 也可能没有说明两列属于哪段时间。代码越短,隐藏决定不一定越少。
复杂策略要回到最简单祖先¶
多层过滤动量可以与只使用价格动量比较,树模型排序可以与线性打分比较,风险平价可以与等权组合比较。简单祖先保留核心假设,减少参数、数据与故障位置,能够帮助研究者判断新增部件究竟贡献了什么。
复杂版本若只在一段历史略好,却带来更高换手、更窄参数和更多数据依赖,当前证据可能不足以支付复杂度成本。简化为增量价值提供公平起点,新方法仍然可以在同一条件下证明自己。后面的每个策略章节都会先给朴素版本,再介绍扩展。
学习顺序按照可解释难度安排¶
单均线、价格突破和简单截面排序适合第一次独立研究。它们使用的数据较少,信号能在图上标出,时间错误也容易通过小表发现。均值回归与配对交易会加入中心估计和关系稳定性,多因子会加入财务时点与组合暴露,适合完成基础回测以后继续。
高频做市、期权波动率和深度模型把数据、模型与执行同时变复杂。新手若一开始就研究它们,很难判断失败来自信号、清洗、成交还是风险。学习顺序只反映可解释难度,不代表简单策略更容易盈利,也不代表后面的模型天然更先进。
接下来怎样使用策略库¶
第 19 课阅读趋势、均线、突破与动量,观察方向延续怎样从单资产扩展到跨资产排名。第 20 课转向均值回归、网格与配对交易,重点检查中心是否稳定。第 21 课学习价值、质量、动量与多因子排序,把财务和价格信息放进同日截面。第 22 课处理仓位、再平衡和风险预算。第 23 课最后进入事件、季节、Carry、波动率和做市。
每读一课,选择一种方法完成九格策略卡,并写出一个答案已知的小数据例子。一次收藏十种名称不会自动形成研究能力,一条规则从假设、手算、订单、账本走到验证,才会暴露真正需要掌握的环节。
突破策略遇到连续横盘时,价格可能多次越过边界又迅速返回,订单会反复支付费用。均值回归策略若遇到公司基本关系永久恶化,历史中心可能已经失去意义,价格越跌反而让信号越强。请分别为两者补上一条停止条件。
查看参考
突破策略可以限制连续若干次假突破后的总风险,或在成本压力下净优势消失时停止当前版本。均值回归策略可以设置最大持有期、关系稳定检查和单项损失上限,不能无限等待价格回到已经失效的中心。具体阈值要在研究卡中给出依据。容易弄错的地方¶
| 常见做法 | 缺少的层次 | 怎样补全 |
|---|---|---|
| 用指标名代替策略 | 缺信号、订单、仓位、成本与退出 | 按六层结构逐项填写 |
| 先挑高收益曲线再补机制 | 机制已经受到结果选择影响 | 区分事先假设与事后探索,使用新数据检验 |
| 把经典论文结论直接搬到当前市场 | 制度、资产、成本与样本可能不同 | 重建数据时间与执行,并独立验证 |
| 认为同一窗口代表同一策略 | 窗口在不同假设中承担不同工作 | 解释参数具体估计什么 |
| 策略名称相同就直接比较收益 | 数据与风险口径可能不公平 | 统一候选池、成本、基准与时间切分 |
一分钟自测¶
“使用 RSI 指标”是否已经构成一条完整策略?
查看答案
没有。它只指定了一项指标,还需要市场范围、参数来路、信号阈值、订单时间、成交假设、仓位、退出、费用、基线和验证计划。本课术语¶
| 词语 | 先这样理解 |
|---|---|
| 指标 | 从数据计算出来、用于描述某种现象的量 |
| 策略 | 把指标、信号、订单、仓位、风险和退出连接起来的完整规则 |
| 策略家族 | 依赖相近核心假设的一组方法 |
| 市场机制 | 可能让某种现象出现并持续的行为、制度或风险解释 |
| 失效场景 | 核心关系改变、执行恶化或风险超限的环境 |
| 策略卡 | 用统一问题保存一条方法的假设、实现与验证计划 |
| 简单祖先 | 保留核心假设、减少复杂部件的对照版本 |
课后练习¶
1 区分指标与策略¶
二十日移动平均与均线交易策略有什么差别?
提示
一个是计算结果,一个还要规定动作与账户。答案
移动平均只是一项指标。完整策略还要说明价格怎样与它比较、何时交易、买多少、如何成交、何时退出、成本怎样扣除以及如何验证。2 策略归类¶
配对交易更接近方向延续还是偏离修复?为什么?
提示
它通常观察两项资产关系偏离以后会发生什么。答案
更接近偏离修复,因为它假设经过研究的价差或残差离开稳定范围后可能回到中心。3 寻找代码缺口¶
代码只计算 signal,随后直接展示累计收益。还要检查哪些层?
提示
沿六层结构从信号继续往后走。答案
要检查订单时间与类型、成交价格和数量、实际持仓、仓位与风险限制、费用、退出规则和逐日账本。4 动手比较¶
使用本课 10.50 元案例,为突破和均值回归各完成一张九格策略卡。允许保留待确认项。
提示
重点让两条策略拥有不同机制、订单方向和失效环境。答案
答案可以不同,但必须说明同一价格为什么在延续假设下支持顺势,在修复假设下支持反向,并为两者安排不同基线与压力情景。5 开放思考¶
一条被广泛研究的经典策略为什么仍可能在你的市场中失效?
评价要点
市场制度、参与者、数据口径、交易成本、做空条件、策略拥挤和样本时期都可能不同。经典地位只说明它值得研究,不能替代当前市场的时点数据、执行模型和独立验证。看到任何策略名称时,先把它还原为数据、指标、信号、订单、持仓、风险和账本,再填写假设、机制、失效、基线与验证。名字相同的策略也可能因为窗口、成交和仓位不同而承担完全不同的风险,这张阅读卡就是后面比较各个策略家族的共同尺子。