ADX、多周期和机器学习,怎样增强海龟策略而不把风险控制弄丢?

海龟增强:ADX、多周期与机器学习

约 13 分钟1 个动手实验4 道小题

学完你能说清楚先冻结海龟基线,再分别检验 ADX、周线和模型过滤,最后回到真实交易结果。

01学完这一课,你能做到什么

上一课已经把海龟策略写成了完整规则。本课不重新发明一套策略,而是测试三个过滤器: 环境过滤、周线方向过滤、监督学习过滤。

学完这一课,你应该能:

  1. 固定 20 日进入、10 日退出、ATR20、1% 风险单位、最多四单位、0.5N 加仓和 2N 的基线;
  2. 解释 ADX 过滤器和周线过滤器分别增加了什么假设;
  3. 为突破事件定义特征、标签和时间切分,避免把未来信息混进模型;
  4. 区分类别准确率、交易和扣费后的策略收益;
  5. 用滚动验证比较过滤前后的真实改善。

02先冻结基线,增强才有比较意义

本课的海龟基线是:20 日高点进入,10 日低点退出, 周期 20,并把每个风险单位设为账户的 1%;最多四个单位,每上涨 0.5N 顺势增加一个单位,保护距离为 2N。

假设账户 100 万元,1% 就是 10,000 元。若 N=30,按 1N 口径计算单位数量:

单位数量 = 10,000 ÷ 30 ≈ 333 股

如果按 100 股向下取整,就是 300 股。2N 只是退出距离,不等于“最多只亏账户 1%”。

某段样本里,基线可能出现 9 笔交易只有 1 笔盈利。这个现象只能提出“是否需要过滤”的问题,不能直接证明某个过滤器有效。过滤器可能减少坏突破,也可能错过真突破。

比较增强版的正确顺序
  1. 1冻结基线20/10、ATR20、1%风险
  2. 2只加一个过滤器其余规则不变
  3. 3留出验证区间不能边看边调
  4. 4比较交易结果收益、回撤、成本一起看

一句话记住不先固定基线,就无法判断过滤器到底改变了什么。

03ADX:描述趋势强弱,不预测涨跌方向

ADX 是“平均趋向指数”,可以把它理解成趋势力量的刻度;它不负责告诉你方向。

先计算当天相对前一天的移动:

  • up = 今日最高价 − 昨日最高价;
  • down = 昨日最低价 − 今日最低价;
  • 如果 up 大于 down 且 up>0,记 +DM=up,否则 +DM=0;
  • 如果 down 大于 up 且 down>0,记 −DM=down,否则 −DM=0。

随后按固定方法平滑 DM 和真实波幅 TR,得到 +DI 与 −DI,再计算:

DX = 100 × |+DI−−DI| ÷ (+DI+−DI)

假设平滑后的向上力量是 50、向下力量是 30、波幅基数是 200,则:

+DI=50÷200×100=25,−DI=30÷200×100=15,DX=100×10÷40=25

这里算出的 25 是一次 DX,不是已经完成平滑的 ADX。分母为零、初始化方式和平滑方法,都要在实现中固定。

本课采用 14 周期 ADX、阈值 15:只有 ADX 不低于 15,才允许检查 20 日突破。低于门槛时不新开仓,但已有仓位的退出和止损仍必须执行。阈值 15 比 25 宽松,可能保留更多机会;这是待验证的参数,不是普遍正确答案。

曾经在平安银行、茅台和沪深 300 相关 的样本里观察到不同变化:有的收益、回撤和 改善,有的变化较小,有的改善有限。没有完整数据和成本,就不能把这些观察写成稳定结论。

先从 DM 算到 DX

DX = 100 × |+DI − −DI| ÷ (+DI + −DI)

示意:+DI=25、−DI=15 时,DX=100×10÷40=25。完整 ADX 还要继续平滑。

一句话记住ADX 高代表方向力量更明显,不代表价格一定上涨。

04周线过滤:先看大一级环境,再决定日线能否进场

把日线数据重采样成周线后,用过去 8 周的通道判断环境:

  • 周收盘高于前 8 周高点,记为 up;
  • 周收盘低于前 8 周低点,记为 down;
  • 其余情况记为 neutral。

周线处于 down 时,过滤器拒绝新的日线开仓;up 和 neutral 允许继续检查日线条件。是否连已有也退出,必须在策略版本中提前写明,不能看到结果后再决定。

假设前 8 周最高价为 100,本周已经结束的收盘价是 101,则周线状态可能为 up。假设前 8 周最低价为 95,本周已结束收盘价为 94,则为 down。关键是窗口和收盘都必须是当时已经完成的信息。

周中做决定时,本周的最高、最低和收盘尚未完成,不能使用“完整周线”判断。可以使用上一根已完成周线,或者只使用截至当前时刻已经发生的数据,但两种做法必须分开记录。

多周期过滤可能减少交易,也可能错过上升行情。它的价值要通过同一数据、同一成本和同一成交规则验证,不能只看交易数量变少。2N 保护退出也不能偷偷改成始终跟随最高价上移的移动止盈,改规则就要建立新的版本。

周线状态怎样影响日线
周线 down

拒绝新开仓

日线即使突破,也先不新增仓位;已有仓位按事先写好的规则处理。

周线 up 或 neutral

允许检查日线

继续执行日线突破和风险规则,不代表一定盈利。

一句话记住多周期过滤的第一原则,是不能偷看尚未结束的高周期。

05模型过滤:先定义特征和标签,再谈准确率

模型过滤不是让模型接管整个交易系统,而是给每个突破事件一个“是否放行”的判断。

可以使用八类特征:相对波动、ADX、量比、RSI、突破力度、五日、盘整天数和波动变化率。每个特征都要写出计算窗口和可用时点。例如突破力度若要跨价格比较,可以定义为:

突破力度 =(收盘价 − 前期通道高点)÷ ATR

假设收盘价 105、前期通道高点 100、ATR=2,则突破力度为 (105−100)÷2=2.5。不能只写“突破力度”,也不能把乘 ATR 当成默认正确公式。

标签可以定义为:突破事件之后 5 个交易日内,最高价是否超过事件参考价的 2%。假设参考价是 10 元,未来 5 日最高价是 10.2 元以上,标签记为 1,否则记为 0。

这个标签只表示“未来最高价是否达到阈值”,不等于策略实际赚了 2%。价格可能先跌到止损,最高价也可能只短暂出现,手续费和还会减少收益。标签制作可以使用未来数据,但未来数据绝不能进入事件发生时的特征。

模型输出可以是通过概率,例如概率大于 0.5 才放行。0.5 也是参数,需要用验证区间选择。无论模型是否放行,海龟的仓位、加仓、退出和风险控制都不能被取消。

一句话记住模型只做入场门控,数量、加仓和退出仍由海龟规则负责。

06小样本和准确率:先和正确基准比较

某组事件统计中,茅台有 17 次突破、约 18% 达到标签条件;宁德时代 32 次、约 56%;沪深 300 相关 ETF 31 次、约 29%;中芯国际 48 次。合并样本曾记录为 174 个事件,其中正例 72 个、负例 102 个。

如果模型测试准确率约 51%—51.6%,不能直接说它优于随机。因为只把 174 个事件都预测为负类,也能得到:

102 ÷ 174 ≈ 58.6%

因此至少要报告类别比例、混淆矩阵、精确率、召回率、阈值下保留的信号数量,以及完整交易的收益、回撤、和成本。若保留 20 个测试事件,普通准确率每次变化是 5 个百分点,也不能直接得到 51.6%;样本数量、切分或指标口径需要重新核对。

数据要按时间切分:较早事件用于训练,较晚事件用于测试;调参和选阈值还需要独立验证安排。标签向后看 5 天时,训练区间末尾事件的标签可能越过测试边界,要处理这种重叠。不同股票在同一市场日也可能共享市场状态,不能把它们随机拆开后假装样本完全独立。

树模型可以表达非线性关系,但小样本仍可能记住噪声。限制复杂度、正则化和跨行业样本有帮助,却不能只凭一个测试分数证明没有。

51% 准确率应该怎样读
不能直接下结论

51% 不一定比随机好

如果负类有 102 个,永远预测负类也有 102÷174≈58.6% 的准确率。

还要看交易

分类不是成交

要继续检查胜率、回撤、换手、费用和滑点。

一句话记住分类准确率高,不等于交易系统能赚钱。

07重要性是研究线索,不是因果证明

如果 ATR 变化率、ADX 和盘整天数在模型中较重要,可以提出一个待验证的组合假设:充分盘整后波动扩大、趋势力量增强,突破可能更容易延续。

但特征之间可能互相关联,模型重要性也会受到样本选择影响。它不能证明某个变量造成了上涨。

例如一个长期箱体整理的股票看起来很符合故事,也要按同一特征定义检查其他资产和其他时期,不能只挑一张最符合的图。大盘状态、行业状态、资金状态和过去 N 天特征可以作为后续扩展,但没有加入当前实验的字段,不能写成已经实现的模型。

一句话记住特征重要性告诉你先查什么,不告诉你什么造成了上涨。

08把过滤器接回海龟,检查是否真的改善

接回海龟时,先保持退出和风险规则不变,只让过滤器影响新进入。这样才能回答“过滤器改变了什么”。

曾记录过这样的样本观察:平安银行总收益约从 8% 到 14%,年化约 4% 到 7%,约 14% 到 9%,胜率约 40% 到 42%;换到茅台时,年化约为 −10% 到 −6%,最大回撤约 21% 到 12%。这些数字缺少完整源码、样本切分、成本和成交明细,不能当成可复现的投资预测器。

还有 18 个突破只放行 7 个、过滤 11 个的示意,放行比例是:

7 ÷ 18 ≈ 38.9%

过滤掉的信号里也可能有盈利机会,所以不能把“少交易”直接解释成“少坏交易”。

滚动验证可以让模型连续接受新考试:用过去一段窗口训练,预测后面一段;时间向前推进后,去掉最早数据并加入新数据,再重新训练。只有等未来 5 日标签窗口结束,事件才有资格进入训练集。每轮都记录训练区间、测试区间、样本数、类别比例、参数、模型版本和成绩。61%、62%、63%可以作为示意,不是已经验证的结果。

最终报告要把标签结果和真实交易结果分开,并与永远预测多数类、只用 ADX 的简单基准比较。

动手试试

海龟过滤对照实验

在趋势、震荡和下跌样本中,比较完整海龟、ADX 大于 25 才入场、周线向下否决,以及盘整加波动的多特征过滤。

固定教学样本海龟过滤对照实验
上涨 K 线下跌 K 线唐奇安上轨 20ADX14
正在载入过滤实验图表
不过滤,只看通道完整海龟

沿用上一课完整海龟:20 日突破入场,10 日低点或 2 倍 N 离场,按 1% / N 取单位。假突破也会成交。

运行后将显示突破候选、成交与被挡次数ADX 门卫、周线否决与多特征差异样本收益、回撤与盈亏比2 倍 N 止损与周线平仓

09动手任务:把三个过滤器放进同一张实验表

按下面顺序完成实验:

  1. 先跑 ADX=15 的版本,确认它只阻止新进入,不阻止已有仓位止损和退出;
  2. 再建立周线 8 周状态,检查周中是否误用了尚未结束的周线;
  3. 最后逐条建立突破事件表,记录事件日、八个特征、未来 5 日标签和标签真正可得的日期;
  4. 保留“永远预测多数类”和“只用 ADX”的基准,再比较树模型;
  5. 至少检查三条正例、三条负例和一条先跌后涨的路径;
  6. 用同一成本和成交规则比较收益、最大回撤、换手、信号数量和费用。

验收标准:每个字段都能解释;训练测试没有时间泄露;能说明 20 个测试事件与 51.6% 口径为什么需要核对;能报告被过滤但后来盈利的信号;不会把一次样本改善说成实盘有效。

检验
检验一下

4 道小题

全部答对,这一课就算真正读懂了。答错了会告诉你为什么。

01ADX 较高最准确的理解是?
02ADX 过滤器应该影响哪一部分?
03174 个事件中负类有 102 个,永远预测负类的准确率约是多少?
04未来五日最高价超过 2% 的标签,能直接代表策略赚了 2% 吗?
知识卡

这一课,浓缩成一张卡

学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。

AI+金融投资训练营 · 海龟增强:ADX、多周期与机器学习海龟增强实验最容易犯什么错?

只看过滤后的准确率或收益,却没有冻结基线、处理时间泄露并扣除交易成本。

  • ADX不代表上涨
  • 标签不等于收益
  • 模型不接管风控
quant.jtxaionline.com
这一课的要点

记住这 5 句话

  1. 01先固定 20/10 海龟基线,再一次只加入一个过滤器。
  2. 02ADX 描述趋势力量,不单独预测涨跌;过滤新进入不能阻止退出。
  3. 03周线过滤必须使用当时已经完成的数据,周中不能偷看完整周线。
  4. 04模型特征、标签、时间切分和标签跨界都要提前定义。
  5. 05分类准确率不等于交易收益,滚动验证要同时比较基准、成本和回撤。
完成这一课

完成这一课

读完讲义、动手做一次实验、答对小题,这一课就算学完了。

  • 读完讲义
  • 完成一次海龟过滤对照实验
  • 通过随堂自测

实验数据AI+金融投资训练营教学样本。固定合成趋势、震荡与下跌路径。按收盘确认、次日执行、100 股整手和简化交易成本模拟。

固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。