多数交易想法起初只是一句话:「强势股回调后往往会反弹」「放量突破往往会延续」。仅凭一句话无法检验。在回放任何一根历史 K 线之前,想法必须先转化为一套足够精确的规则,使计算机或陌生人执行时,所做的交易与您完全相同。本课说明如何完成这种转化,以及规则中残留的每一个含糊字眼,为何都会让回测结果显得比实际更好。
从想法到假设
一个可检验的假设包含三个部分:
- 条件:可以用当时已知数据衡量,例如「收盘价低于最近 20 个交易日的最低价」。
- 预期的反应及其时间范围,例如「在随后 5 至 20 个交易日内,该股表现优于基准」。
- 理由:这种规律为何可能存在。常见的解释包括对利空的过度反应、信息的缓慢扩散、被迫抛售,以及承担风险所获得的补偿。理由并不能证明什么,但没有理由的规则,更可能只是从噪声中找到的巧合(见第 5 课)。
假设还需事先界定何为失败。在检验之前写下「若该规则在收益和风险调整后收益上均未跑赢直接持有同样的股票,就放弃它」,是防止事后自我说服的最有效手段。
规则的基本要素
几乎所有基于日线价格的规则,都由少数几种度量组合而成。每种度量都有确切的定义,写进规则的正是这一确切定义:
| 要素 | 定义 | 典型用法 |
|---|---|---|
| 价格 | K 线的开盘价、最高价、最低价或收盘价 | 信号通常用收盘价,止损通常参照最低价 |
| 简单移动平均线 SMA(n) | 最近 n 个收盘价的平均值 | 趋势过滤:收盘价高于 SMA(200) |
| 指数移动平均线 EMA(n) | 对近期收盘价赋予更高权重、反应更快的均线 | 交叉信号,如 EMA(10) 上穿 EMA(30) |
| RSI(n) | J. Welles Wilder 提出的相对强弱指数,取值 0 至 100,由平均上涨与下跌幅度计算 | 短线超卖:RSI(2) 低于 10 |
| ATR(n) | Wilder 提出的平均真实波幅:包含跳空在内的典型单日波幅 | 止损与仓位:入场价 − 2 × ATR(14) |
| N 日最高价或最低价 | 此前 n 根 K 线的最高价或最低价(与 Richard Donchian 相关的通道) | 突破:收盘价高于此前 20 日最高价 |
| 平均成交量 | 最近 n 个交易日成交量的均值 | 确认:成交量高于 50 日均量的 1.5 倍 |
有两个细节比看上去更重要。第一,「此前 n 根 K 线」必须不含当天:收盘价不可能高于一个已经包含该收盘价的 20 日高点。第二,每个指标都需要预热期:200 日均线要等满 200 根 K 线才有数值,因此从 1 月 1 日开始的检验需要前一年的数据。各项指标的详细说明,可参阅移动平均线、RSI 与 ATR 止损。
入场、离场与仓位
一套完整的规则要回答七个问题。缺少任何一项,检验就会用一个您从未选择过的假设来填补空白。
离场分为四类,一套规则可以同时使用多种,以先触发者为准:信号离场(收盘价高于 5 日均线)、止损(限制亏损的价格)、目标(锁定利润的价格或风险倍数)以及时间止损(无论盈亏,10 个交易日后卖出)。一些经典的择时规则完全不设止损,依靠信号离场来保护。这是合理的选择,但必须是有意为之。
仓位由每笔交易愿意承担的风险决定。采用固定比例风险法时,股数等于风险金额除以止损距离:
| 步骤 | 算例 |
|---|---|
| 权益 × 每笔风险 | 100,000 美元 × 1% = 风险金额 1,000 美元 |
| 止损距离 | 入场价 50.00 美元,ATR(14) 为 1.50 美元,止损 = 50.00 − 2 × 1.50 = 47.00 美元,即每股 3.00 美元 |
| 股数 | 1,000 ÷ 3.00 = 333 股(向下取整) |
| 持仓市值 | 333 × 50.00 美元 = 16,650 美元,占权益的 16.65%,低于单只股票 20% 的上限 |
止损很近时,上限尤为重要:若止损仅在 1% 之外,公式会要求买入 100,000 美元的股票,即整个账户。设定单笔持仓上限,可以避免某一笔交易主导整个检验。各种仓位方法的比较,可参阅仓位管理方法。
模糊之处即是偏差来源
含糊的措辞不只是让规则难以编程,还会让事后之见混入其中。若规则写的是「趋势转弱时卖出」,检验者早已知道趋势在哪里真正转弱,离场点便会不自觉地向顶部靠拢。这样的检验衡量的是检验者的记忆,而不是规则本身。
以下问题可以消除大部分模糊之处,每个问题都有一个保守的默认答案:
- 用哪个价格触发信号?默认:收盘价。
- 信号何时可知?信号日收盘之后。
- 何时成交?下一交易日开盘。按信号日收盘价成交,在实际操作中只能依靠临近收盘时下单,并会使检验结果略显乐观。
- 开盘跳空越过止损怎么办?亏损按开盘价计算,而非止损价。
- 两个信号争夺最后一笔现金怎么办?事先写明固定的取舍规则,例如按代码字母顺序,或优先选择成交量较大者。
- 使用哪些数据?经拆股调整的价格(见第 6 课),且只使用当日已公布的信息。
精确的规则也会给出精确、有时令人不快的日期。在 SPY 上执行简单的「收盘价高于或低于 200 日均线」规则,从 2015 年 8 月到 2016 年 3 月,随着指数在均线附近反复波动,信号翻转了十次。加入缓冲区后,即仅在收盘价跌破均线 3% 以上时才卖出,同期的指令减少为四次:两次卖出、两次买入。两种版本都谈不上普遍正确。关键在于缓冲区本身就是一项决策,必须在检验之前作出,此后无论规则给出怎样的日期,检验都必须照单接受。
一个完整的示例
下面把「只在市场处于长期上升趋势时持仓」这一想法完整地写出来,思路参照 Mebane Faber 2007 年关于均线择时的研究:
| 组成部分 | 规则 |
|---|---|
| 股票范围 | 仅 SPY |
| 入场 | 收盘价高于 SMA(200),次日开盘买入 |
| 离场 | 收盘价低于 0.97 × SMA(200),次日开盘卖出 |
| 止损 | 不设(以离场规则作为保护) |
| 仓位 | 持仓期间全部权益投入 SPY,其余时间持有现金 |
| 成本 | 单边 10 个基点,含滑点 |
| 理由 | 大幅下跌往往发生在价格低于下行的长期均线、波动率较高的时期 |
Faber 的原始研究使用月末收盘价和 10 个月均线;这里的日线版本与之不同,如实的描述应当说明这一点。表中每一行都可以讨论,这并无不妥:讨论应在检验之前进行,而每一处改动都会产生一条需要单独检验的新规则。
如何应用
入场
写明入场条件所用的指标、周期、比较方式和价格字段,并注明于次日开盘成交。
止损
选定止损类型(ATR 倍数、百分比、N 日最低价或不设),并写明跳空越过止损时如何处理。
目标
写明离场方式:信号离场、以风险倍数计的目标或时间止损,以及同一天触发多项时以哪项为准。
失效条件
只要规则中有任何一行需要主观判断才能执行,规则就尚未完成。应反复改写,直到两个人会做出完全相同的交易。
常见错误
- 使用「强势」「明确」「已确认」等词语,却没有对应的数字。
- 把当天的 K 线计入「此前 N 日最高价」,导致突破无法成立或检验不公平。
- 忽略预热期,使检验的最初几个月建立在尚未成形的指标之上。
- 每笔交易买入相同的金额,而止损距离却各不相同,导致每笔风险大幅波动。
- 看过图表之后才选择缓冲区、止损或均线周期。
小结
一套可检验的规则需要写明股票范围、过滤条件、入场、止损、离场、仓位和成交时点,每一项都有确切的数字,且只使用决策当时已知的信息。价格、均线、RSI、ATR、N 日高低点和平均成交量足以覆盖大多数日线规则。仓位应按风险确定:股数等于风险金额除以止损距离,并受单笔持仓上限约束。每一个含糊的字眼都是事后之见的入口,务必在检验之前将其堵住。下一课将在历史数据上回放规则,并解读回测报告的各项数字。
仅供学习与参考,不构成投资建议。