历史数据的实例演示(附明确假设说明)
历史数据的含义
历史数据是一组你记录下来的过去观测值,可用于后续的计算、比较或测试。在实际应用中,它通常包括时间戳、观测值(例如价格),有时还包括其他字段(例如点差或与执行相关的细节)。关键在于,历史数据是“来自过去的输入数据”,而不是对未来结果的承诺。
一个实例演示之所以有用,是因为它迫使你明确每一个假设:你使用的日期、收益的计算方式、所应用的成本(或未应用的成本),以及当数据不完整时会发生什么。
实例演示如何运作(附明确假设)
以下是一个展示历史数据机制的场景,无需依赖任何实时市场数据。
场景设定(所有假设)
假设你正在使用10个连续的每日观测值来分析一个简单规则。
- 日期:第1天到第10天是固定的;你不会更改它们。
- 观测值:你拥有每一天的历史“中间价”。(这些中间价你已从数据集中获知;不是实时获取的。)
- 收益定义:你将每日收益定义为当天的 (收盘价 − 开盘价) / 开盘价。
- 固定成本假设:你假设每笔交易的交易成本为 0.10%,在规则指示“交易”时应用。如果你的数据集不包含成本,你必须(a)建模成本,或(b)承认你测试的是无成本版本。
- 规则逻辑(示例规则):在前一天收益为正的日子进行交易。在这些交易日,假设你在第二天开盘时买入,并在当天收盘时退出。
- 执行假设:你假设可以按历史数据集中记录的开盘价和收盘价执行(无滑点)。
小型数据集
使用以下第1–10天的历史收益。(它们是你的记录值;视为已知。)
- 第1天:开盘100,收盘102 → 收益 = 0.02(2%)
- 第2天:开盘102,收盘101 → 收益 = -0.009803…
- 第3天:开盘101,收盘103 → 收益 = 0.019802…
- 第4天:开盘103,收盘103 → 收益 = 0
- 第5天:开盘103,收盘105 → 收益 = 0.019417…
- 第6天:开盘105,收盘104 → 收益 = -0.009523…
- 第7天:开盘104,收盘106 → 收益 = 0.019231…
- 第8天:开盘106,收盘107 → 收益 = 0.009434…
- 第9天:开盘107,收盘106 → 收益 = -0.009345…
- 第10天:开盘106,收盘108 → 收益 = 0.018868…
应用历史数据规则
该规则取决于前一天收益的符号。
- 第1天无法交易,因为没有“前一天”的收益。因此从第2天开始交易。
假设交易日是前一天收益为正的日子。
- 第2天:前一天(第1天)收益为正 → 交易第2天。净收益 = (第2天收益)− 0.10% = -0.009803… − 0.001
- 第3天:前一天(第2天)收益为负 → 第3天不交易。净收益 = 0
- 第4天:前一天(第3天)收益为正 → 交易第4天。净收益 = 0 − 0.001
- 第5天:前一天(第4天)收益为零 → 不为正,因此第5天不交易(按此规则)。净收益 = 0
- 第6天:前一天(第5天)收益为正 → 交易第6天。净收益 = -0.009523… − 0.001
- 第7天:前一天(第6天)收益为负 → 第7天不交易。净收益 = 0
- 第8天:前一天(第7天)收益为正 → 交易第8天。净收益 = 0.009434… − 0.001
- 第9天:前一天(第8天)收益为正 → 交易第9天。净收益 = -0.009345… − 0.001
- 第10天:前一天(第9天)收益为负 → 第10天不交易。净收益 = 0
本示例展示的内容
此场景展示了使用历史数据通常需要的要素:
- 明确的计算字段定义(如何计算收益)。
- 明确的规则时序(是否使用前一天信息在第二天行动)。
- 成本模型假设(此处为每笔交易固定0.10%)。
- 执行假设(无滑点;使用记录的开盘价/收盘价)。
即使使用相同的历史数据集,不同的假设也会产生不同的结果。
主要局限性与失败模式
历史数据是有用的,但它存在局限性,可能导致“实例演示”与实际结果出现偏差。