如何测试摆动定义?
将摆动定义明确为可测试的规则
要测试“摆动定义”,首先需要一个清晰且可衡量的定义。在实践中,“摆动”通常指持续数天而非数分钟的市场波动,但要进行测试,必须将这一概念转化为可操作的规则。
一种实用的方法是提出一个假设,然后明确在什么条件下该假设成立。例如,一个假设可能是:
- 如果使用你的规则集将一次市场波动归类为“摆动”,那么该波动的方向和幅度在你的测量程序下应表现出一致的行为。
关键在于,你的规则集在应用于相同价格路径时必须产生相同的标签(即确定性)。需明确以下要素:
- 时间范围规则:什么最大和最小持有期构成一次摆动?示例:“未来 X 到 Y 个时间单位。”
- 事件规则:摆动如何开始和结束?例如,使用峰值/谷值变化、阈值突破或识别转折点。
- 方向规则:什么算作“上升摆动”与“下降摆动”?
- 测量规则:什么指标定义了波动的“主要部分”(如期间收益、覆盖范围、经历的回撤等)?
- 过滤规则:是否排除低波动性时期或流动性不足的时段?如果排除,请写出具体标准。
这将“摆动定义”从一个概念转化为可测试的程序。
明确假设、基准和数据划分
只有将你的定义与代表“无特殊摆动结构”的基准进行比较时,测试才有意义。你的基准应在查看结果前就固定且简单。
假设形式
写出具有可衡量结果的假设。例如可衡量结果包括:
- 结果 A(稳定性):当你的定义标记为摆动时,在指定时间范围内的平均未来走势应根据方向持续为正或负。
- 结果 B(选择性):由你的规则识别的摆动,其平均特征应与非摆动时期不同。
避免使用“效果更好”等模糊表述。使用具体指标。
基准选择
基准可以是:
- 在相同时间段内随机标记事件的规则。
- 使用不同定义(例如,更短或更长的时间范围)的朴素标记规则。
- “无信号”方法,即在随机时间戳开始测量相同时间范围,评估结果。
基准必须与你的程序测量方法一致,以确保差异归因于定义本身,而非测量方式的改变。
数据划分(训练 vs 测试)
摆动定义测试应至少使用两个不重叠的数据段:
- 开发阶段(可选):使用一个数据段定义和优化规则。
- 评估阶段(必需):将最终规则一次性应用于独立的数据段。
对于摆动标记这类概念,常见失败模式是过拟合:规则偶然匹配了某一时期的行为。基于时间的划分可降低此风险。
考虑成本和可变因素
许多“摆动定义”测试因忽略成本和执行摩擦而失败。即使你测试的是定义而非实际交易,将标记的波动转化为可衡量结果时仍需成本模型。
需包含的成本类型
应在计算中明确以下哪些成本被包含:
- 点差或交易成本代理:每次波动中有多少被交易摩擦抵消。
- 滑点:观察价格与执行价格之间的预期差异。
- 再平衡频率:如果你的定义意味着在特定时点进出,你关于行动速度的假设会影响结果。
若无法合理化具体数值,仍可进行敏感性测试(例如,在“低/中/高”成本假设下评估结果变化)。这使测试聚焦于稳健性,而非单一乐观成本数字。
可变市场条件
将稳定机制与可变条件区分开。例如,波动率状态、趋势强度和事件密度都会影响摆动的形态。你的测试程序应记录状态描述符(即使简单),并检查定义在不同状态下的表现是否一致。
你还应明确说明假设:
- 使用什么数据频率?
- 如何处理缺失数据点?
- 时区或交易时段是否与你的数据集相关?
即使结果有变化,通常也能识别出定义何时及为何不再按预期表现。
进行针对失败模式的稳健性检验
一个强有力的“摆动定义”测试不仅报告单一结果,还应检验结果在合理变化下是否脆弱或稳定。
稳健性检验类型
至少应考虑以下类别:
- 参数敏感性:若定义使用阈值(如最小波动幅度),测试附近阈值。若结论因微小变化而反转,则定义可能不稳定。
- 样本/周期稳健性:在多个时间段(不同月份/年份)评估。历史关系不保证未来结果,因此需寻找一致性。
- 执行敏感性:在小范围内扰动进出时间,以代表实际延迟。
- 成本敏感性:在多种成本假设下重复评估。
- 状态稳健性:在不同波动率/趋势条件下比较结果。
实质性局限与失败模式
至少应明确一种失败模式。常见包括:
- 转折点模糊性:许多市场存在重叠摆动。若你的规则使用局部极值定义起止,可能因微小噪声对同一价格波动给出不同标签。
- 时间范围不匹配:你的摆动时间范围可能在某些状态下与实际波动持续时间不符,导致测量的“未来结果”退化。
- 选择偏差:若使用决策时不可用的信息定义摆动,测试将无效。
为正确测试定义,事件标记必须仅基于摆动声明时刻可获得的信息。
使用清晰报告以便他人独立验证
为实现准确、自包含的解释和独立验证,报告应包括:
- 精确的摆动标记规则(确定性步骤)。
- 精确的假设和结果指标。
- 基准定义。
- 数据划分方法和边界。
- 使用的成本和执行假设。
- 执行的稳健性检验,包括变化和不变的内容。
缺少这些,其他研究者将无法复现测试。
验证清单与下一个问题
验证你的摆动定义是否具备测试条件的实用方法是提问: