量化交易约 8 分钟

指标曲线不是交易规则:从计算到可检验信号

只有明确输入、时间、阈值和决策逻辑之后,指标才真正适合用于研究。

核心观点: 指标只是对数据的变换,不是完整决策规则;可检验信号还必须明确时点、比较方式、例外和评估边界。 标签: 量化交易 · 指标 · 研究设计

本文仅供教育用途,不构成投资建议、交易推荐或行情预测。示例仅用于说明;市场状况和执行结果可能不同。

含有噪声的K线经过阈值筛选后,形成少数可检验的信号点
明确时点和事件规则后,指标才成为可检验对象。

技术指标被绘制成曲线、柱状图、颜色或标记时,可能显得很精确。但展示精确不等于含义精确。计算也许有明确定义,解释却仍可能模糊:一条线穿过另一条线、一个数值看起来很高,或者转折附近出现一个标记。在评估这种观察之前,研究者应说明具体计算了什么,以及图形要支持什么判断。

这一区分对量化研究至关重要。指标是对输入数据的变换;信号是在明确时点、为特定目的分类信息的规则。入场、出场或仓位大小则是进一步的一层。把这些层混在日常说法中,容易把视觉提示误认为完整方法。

为什么应该先看指标的计算方式,而不是名称?

趋势、动量、超买等名称概括的是一类想法,而不是完整规格。应记录输入序列、回看窗口、平滑方式、初始化,以及数据缺失时的行为。两种实现即使名称相同,也可能因一项使用收盘价、另一项使用典型价格,或预热规则和交易时段边界不同而产生不同结果。

计算还需要时间约定。数值是在K线形成时持续更新,还是等K线完成后才确定?规则使用当前观察值,还是上一根已经收盘的K线?如果历史数据会被修订或聚合,在模拟决策的时间戳上究竟能获得哪个版本?收盘前仍然变化的数值,不能当作当时已经知道了最终结果。

TradingView 的 Pine 文档说明,实时数据更新时脚本可以重复执行;如果计算没有谨慎设计,历史K线与实时K线也可能表现不同。这是平台特有的例子,也提醒我们遵循更普遍的研究原则:记录数值何时最终确定并可用,不要从历史图表的画面倒推当时可用信息。

把解释变成规则

可检验信号通过可复现条件回答一个范围明确的问题。例如,研究者可能会检查一项已经完成的数值是否超过固定阈值,两条已完成序列是否交叉,或某项条件是否持续了预先规定的观察次数。这些是规则形式示例,不是建议使用哪种指标或阈值。

完整定义应写明比较方式、时点和输出。它需要说明是否把相等视为满足、事件只触发一次还是持续有效、数据缺失时如何处理,以及相反事件是否重置状态。如果两位认真阅读的人可能写出不同逻辑,这条规则就还不够可操作。

  • 输入:使用哪条序列、哪个来源、周期、时段和调整约定?
  • 可用时间:每项输入在哪个时间戳变得完整并可用?
  • 比较:具体检验什么阈值、交叉、持续性或排序条件?
  • 状态:事件是只发生一次、持续为真,还是在特定条件下重置?
  • 例外:怎样处理缺失值、预热、数据缺口和边界K线?
  • 输出:它是用于分析的标签,还是连接到另一层决策?

先用平实语言写出规则,再将它翻译成代码,这很有帮助。另一位复核者应能在不猜测作者意图的情况下,对少量手工示例作出分类。代码负责实现规格,不应靠偶然的默认值悄悄创造规格。

让信号与行动各自独立

即使信号完全可复现,也不能因此证明应当下单。研究信号可能是二元标签、分数,或用来比较后续观察的一项事件。行动层会增加关于敞口、订单类型、执行时间、成本、限制以及使用者目标的假设。

分开这些层更便于诊断实验。模拟结果变化时,可以分别询问:计算变了吗?信号定义变了吗?执行假设变了吗?如果三者都混在一个指标脚本中,正面结果可能无法归因,失败也可能无法解释。

评估前固定规则

在看过许多历史图表后选出的阈值,已经受这些图表影响。这并不使探索不正当,却会改变样本能够证明什么。把启发规则的观察视为开发材料;保留规则版本、参数和每次修改的理由。若研究设计允许,再用没有参与规则创建的观察评估冻结后的规格。

在许多指标、周期长度、阈值、市场和时间段之间搜索,会产生许多偶然找到漂亮历史模式的机会。只报告表现最佳的一种组合,会隐藏整个搜索范围。实验日志既要记录最终候选,也要记录未成功的变体,并说明比较对象是如何选定的。

保留测试期并不是万能解法。反复查看它,就会让它变成开发集的一部分。数据重叠、样本依赖、市场结构变化与模型筛选都会影响解释。重点不是宣称一次切分证明了未来有效,而是让信息路径可见,避免把样本内发现写成独立确认。

检验时间与执行假设

定义好计算和信号之后,检查规则与数据如何对齐。由当前K线收盘价计算的数值通常要等该K线结束后才可用。信号应在输入可用后评估;模拟订单需要遵循明确的时间约定。把序列前移或后移一根K线就可能显著改变结果,因此对齐应有专门测试,不能只靠目测。

执行假设属于另一层。历史K线上出现信号,并不能揭示真实订单可以在哪个价位成交。点差、滑点、延迟、排队优先级、流动性和市场冲击可能未被建模,或只做了近似处理。例如,DayTradeDrill 的K线内价格由一分钟 OHLC 数据模拟,并不是真实逐笔行情、订单簿事件,也不保证成交。练习和评估都应明确说明这个边界。

用示例验证实现

构建一个包含普通和边界案例的小型验证集:恰好等于阈值、略高于阈值、数据缺失、预热后的第一个值、交易时段切换,以及正在形成与已完成的K线。尽可能手工算出预期结果,再与实现对比。这类检查能发现一位错位以及隐藏状态转换,而完整回测可能会掩盖这些问题。

测试不变量也很有帮助。如果信号只基于已完成数据,揭示下一根K线不应改变先前分类。两套实现若声称执行同一条规则,就应在验证集上给出相同结果。出现分歧时,不应挑视觉上更顺眼的结果,而应回头澄清规格。

写清信号没有说明什么

定义明确的信号仍只是有限的研究变量,并不能证明因果、持续性、盈利能力或适用性。标注历史条件的图表属于描述;样本外测试只能在自身数据和假设范围内增加证据。这些步骤都不会把输出变成对下一步市场走势的预测。

因此,良好的报告会说明研究问题、输入定义、时间约定、版本、搜索过程、评估样本及执行限制。也要包含信号未按预期表现的案例。边界越准确,其他研究者越容易复现结果,而不需要猜作者没有说出口的意思。

参考资料与延伸阅读