跳转至

第 18 课 怎样阅读任何一条策略

策略名称只提供一条检索线索。阅读时要继续追问它观察什么、怎样行动、依赖哪些条件,又会在哪里失效。

适合谁已经完成回测、偏差与验证基础的读者
前置知识完成第 13 至 17 课
建议用时80 分钟
本课成果使用统一策略卡比较两条名称相近、逻辑相反的策略

看到策略名字以后先不要寻找收益

小岚在网上看到两个标题。一个说“二十日均线策略”,另一个说“二十日突破策略”。两者都使用二十日价格,却可能属于不同方法。均线策略在价格跌得离平均值较远时买入,希望偏离修复;突破策略在价格超过过去高点时买入,希望方向延续。相同的二十日窗口,只表示它们都回看相似长度的历史,没有说明两者依赖同一种市场现象。

策略名称经常省略大量决定。“动量”可能指一项资产过去上涨就继续持有,也可能指同一天比较许多资产并买入相对强者;“均值回归”中的均值可能是自身移动平均、两项资产价差、行业中性残差或某种估值中心。窗口、资产范围、成交时间和仓位一变,风险也会跟着变化。

阅读策略时先放下“历史赚了多少”。脱离数据版本、成本、市场、样本时期和验证方式,两个收益数字没有公平比较基础。先把方法还原成一条能够执行和反驳的研究链,再看证据支持到哪里。

指标、信号和策略不是同一层东西

指标是从原始数据计算出的量,例如二十日平均价、过去一个月收益率或成交量变化。它负责描述某个现象,没有自动决定买卖。信号把指标放进条件,例如“收盘价高于二十日最高价时标记为一”。订单再把信号翻译成准备买卖的对象、数量、价格条件和有效时间。

成交以后,账户才得到实际持仓。仓位规则决定每项资产占多少资金,风险规则限制总暴露、单项集中、最大换手或停止条件,退出规则说明持仓何时结束。把这些层连起来,才得到一条完整策略。

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 开放思考

一条被广泛研究的经典策略为什么仍可能在你的市场中失效?

评价要点市场制度、参与者、数据口径、交易成本、做空条件、策略拥挤和样本时期都可能不同。经典地位只说明它值得研究,不能替代当前市场的时点数据、执行模型和独立验证。
离开本页前
看到任何策略名称时,先把它还原为数据、指标、信号、订单、持仓、风险和账本,再填写假设、机制、失效、基线与验证。名字相同的策略也可能因为窗口、成交和仓位不同而承担完全不同的风险,这张阅读卡就是后面比较各个策略家族的共同尺子。