量化交易策略注意事项1—未来信息的规避[古期心得]
[p=30, 2, left]在量化交易策略的研发过程当中,存在着许多需要注意的事项。如果忽视了这些 问题,轻则造成量化交易策略的优化结果与实际要求存在偏差,重则直接导致最后的 量化交易策略没有任何实际用处,甚至造成真实的损失。在这些事项之中,首先需要 注意的是量化交易策略研发中是否存在未来信息的问题,如果对历史数据进行建模和 优化的过程中包含了未来信息,那么应该重新构建研发模型,规避掉所有的未来信息, 保证量化交易策略与实际相符。[/p][p=30, 2, left] [attach]8845[/attach][/p][p=30, 2, left] 所谓未来信息问题,就是指基于历史数据进行回溯测试的过程中,使用交易完成 之后的信息来决定交易本身。为了更为直观的说明何为未来信息,这里给出了一个用 来解释的示意图,如图 3.1 所示。在图中,回溯测试能够使用的样本数据包括 A 阶段 的数据和 B 阶段的数据,假设模型判断出一个买卖点在 A 和 B 之间,那么 B 阶段所 有的信息对于这一个买卖点而言都是发生在未来的信息,因此在判断交易的时刻,B 阶段的所有信息都是无法得知的。在量化交易策略正常执行的过程中,买卖、仓位等 策略组成部分的判断都是基于之前所有可以获取的数据得到的,也就不存在未来信息 的问题。但是在进行回溯测试的时候,由于我们已经得到了超越买卖点的数据信息, 也就是图 3.1 中 B 阶段的信息,因此就可能发生将 B 阶段的未来信息用以判断买卖点 这样一种不符合实际交易逻辑的情况。[color=#ffffff] { 原文来自 [/color][url=http://www.cxh99.com/][color=#ffffff]www.cxh99.com[/color][/url][color=#ffffff] }[/color][/p][p=30, 2, left] 在国内的一些资料当中,这样一种问题更常见的名称是未来函数,这样的习惯可能源自于国内交易者对于技术指标的深入研究。在编写技术指标函数的时候, 往往会由于疏忽等问题出现这种使用不应该出现的未来信息的情况。而在国外的一些 文献和资料当中,比较常见的叫法还包括前视偏差。相较于未来函数而言,这种叫法的覆盖面更加广泛一些,因为在一个较为完整的量化交易策略研发过程当中, 函数只是其中的一部分。而前视偏差则比较形象的说明了这个问题,站在图 3.1 中的 买卖点上,B 阶段的信息都是时间前进后才能得到的,这样所造成的偏差就会让未来 的信息进入交易决策本身。[/p][p=30, 2, left] 使用 K 线图当前柱的最高、最低价判断买卖点是一个比较常见的使用未来信息 的情况。举例而言,当一个建仓策略为“若今日的最低价高于上日的收盘价,则在今 日的最低价买入”时,就是一个很典型的含有未来信息的交易策略。在该策略中,买 卖决策依赖于两个重要的价格信息,一个是上日的收盘价,一个是今日的最低价。上 日的收盘价显然是没有问题的,是一个从当日开始交易时就已经获得的信息。但是今 日的最低价就是一个比较明显的未来信息或者说未来函数,因为不到今日收盘,是不 可能确定当日的最低价的,要求在最低价买入是一个在现实中不可能完成的任务。不 过在回溯测试过程当中,由于已经在做决策时得到了关于当日最低价的信息,因此就 有可能错误的将今日最低价当作可用信息并用来确定买卖决策。[color=#ffffff] { 原文来自 [/color][url=http://www.cxh99.com/][color=#ffffff]www.cxh99.com[/color][/url][color=#ffffff] }[/color][/p][p=30, 2, left] 还有其他一些关于未来信息错误使用的例子,比较知名的如“在牛市当中持有股 票”。实际上,除非具有预判牛市来临时间点的技术手段,否则这种说法往往只是牛 市确认之后的事后诸葛亮。当一波牛市已经形成甚至走完的时候,再说出初期建仓之 类的意见已经没有任何实际操作意义,而在牛市刚刚开始的时候,交易员常常无法准 确的判定这到底是牛市的开始、持续的盘整、还是前一波下跌途中的波动,也就无从 谈起牛市持有股票了。[/p][p=30, 2, left] 另外一个例子则更偏技术一些,当研究人员使用整个样本的数据进行优化并得到 一个量化交易策略之后,使用该量化交易策略在全样本的整体回溯测试中判断买点、 卖点、仓位大小等设置就属于引入了未来信息。这时的未来信息问题不在于量化交易 策略本身,而在于量化交易策略的研究过程。用上面的示意图 3.1 来进行说明,就是优化量化交易策略时,无差别的使用了 A 阶段和 B 阶段的数据,但是最终优化得到 的量化交易策略,又放到整个样本中进行回溯测试并得到了 A 和 B 之间的买卖点。 因此在回溯测试的过程中,该买卖点的确认就使用了 B 阶段的信息,也就是未来的信 息。[/p][p=30, 2, left] 由于未来函数对于回溯测试的可靠性有负面的影响,因此在实际的策略研发过程 当中是需要极力规避的。最直接的办法莫过于将研发完成的量化交易策略放入实际环 境中进行模拟交易或者实盘交易,原因在于实际交易中判断策略执行的时间点总是现 在,因此必然是无法得到未来的信息的。如果在回溯测试过程中不慎加入了未来信息 用来判断,具有相同结构的量化交易策略在实际的交易中也必将暴露出来。但是在实 际的策略研发过程当中,由于量化交易策略会经历频繁的变更,因此全部采取实际检 验的方法有时是难以达到的。在有些回溯测试的情形下可以人为的将数据样本分成两 个部分并分开存储,使用其中一个部分进行量化交易策略的优化工作,然后再将优化 完成的策略放入另外一个部分的样本数据进行模拟运行。这种强制分开储存数据的做 法,其实也是在效仿实际运行中未来数据的绝对不可得。如果在实际的研发工作中数 据分开存储也因为工作量过大而不易完成,那么似乎也只能依靠量化交易策略研究人 员自身的逻辑思考和判别能力来规避未来信息了。[/p][p=30, 2, left] 虽然这里给出了一些办法用来规避未来信息,但是仍然存在一些未来信息的种类 是难以发觉甚至是难以避免的,例如在其他资料中讨论较多的存活者偏差。存活者偏 差是指在某一个数据集当中,由于时间的推移,集合中之前包含的一部分成员由于无 法存活而离开数据集,而在回溯测试时参照的是最后的存活成员,因此提前剔除了表 现不好的非存活成员,造成了未来信息的问题。依然使用图 3.1 来进行说明,研究人 员在回溯测试时得到的数据是 B 阶段末尾所有存活成员的数据,但是在箭头所指向 的买卖点时,所能见到的成员中还包括一些在 B 阶段离开的成员。回溯测试中由于数 据集的问题直接把这些在 B 阶段表现不佳的成员进行了排除,就是滥用了 B 阶段才 能得到的信息,从而虚假的提升了量化交易策略的回溯测试成绩。[/p][p=30, 2, left] 这种问题常常发生在选股策略当中,一些较为常见的股票数据库实际上已经根据 当前的信息剔除了之前由于退市等问题而消失的股票的数据,使用这些数据库的数据进行回溯测试就会产生存活者偏差的问题。例如“买入价格极低的股票”这一策略, 在获得的数据具有存活者偏差的情况下,能够在测试中建仓的都是之后会存活下来的 股票,在价格很难更低的前提下上涨的可能性很高,因此回溯测试的结果往往不切实 际的优秀。由于完全排除存活者偏差问题的数据库通常价格更高甚至无法得到,依靠 研究人员在时间轴上自行搜集数据组建数据库的做法又耗时耗力,因此在这类情况下 完全规避存活者偏差是非常困难的。[/p]页:
[1]