□实现策略逻辑复杂 。事件驱动系统中 , 有大量的事件对应的行动需要自行定义 , 这会让编程变得比较复杂 , 对于很多简单的策略来讲 , 有点杀鸡用牛刀的感觉 。
□速度很慢 。事件驱动的特点就决定了它的运行速度不会很快 。在有大量参数需要优化的时候 , 事件驱动系统就会变得非常难用 。
文章插图
总的来说 , 并没有哪一种方法可以包打天下 , 都要具体问题具体分析 。比如 , 策略逻辑很简单 , 但需要优化的参数很多 , 这种情况就适合使用向量化系统 。若策略无法向量化实现 , 但又想快速进行验证 , 这种情况就比较适合采用For循环系统 。若策略参数已经确定 , 想比较真实地进行模拟 , 这种情况就适合使用事件驱动系统 。
所以理想情况下 , 这三种系统最好都要会使用 。
回测的陷阱
在回测的时候 , 会遇到很多陷阱 , 让回测结果出现偏差 。其实很多陷阱都是可以避免的 。比较常见的陷阱一般包含以下几种情况 。
□ 样本内回测 。如果我们使用同样的样本数据去训练模型(参数优化)并得到测试结果 , 那么这个测试结果一定是被夸大的 。因为这里的训练是纯粹针对已知的数据进行训练 , 并没有对未知的数据进行测试 。所以在实盘的时候 , 表现会差得很远 。这是一种过度拟合的形式 。
□ 幸存者偏差 。比如将市面上的对冲基金业绩表现做一个综合性指数 , 这个指数其实并不能代表对冲基金的真实业绩 , 因为业绩很差的那些基金都已经不存在了 。在编制指数的时候 , 如果不对这种情况加以考虑 , 就会产生很大的偏差 , 因为最差的那一部分并没考虑进来 。
□ 前视偏差 。在进行回测的时候 , 有时候我们会不小心使用未来的数据(又称为"未来函数") 。举个例子 , 假设我们使用线性回归 , 计算了某段时间内价格的斜率 , 如果在这段时间内 , 我们又用到了这个斜率 , 那么这就是使用了未来数据 。有时候 , 如果历史回测表现得非常好 , 甚至是惊艳 , 那么就需要注意了 , 这很有可能是因为使用了未来数据 。这种情况比较严重 。
□ 交易成本 。交易成本在回测中其实非常重要 。假如我们将交易成本设为0 , 那么在训练模型的时候 , 筛选出来的模型往往都是交易频率非常高的模型 。这些交易频率非常高的模型在0成本的时候表现非常好 。但是一旦加入了交易成本 , 这些模型就会一落千丈 。所以在回测的时候 , 一定要加入合理估计的交易成本 。
□市场结构转变 。在进行长时间的回测的时候 , 经常会忽视这个问题 。比如 , 国内的期货品种 , 有的品种有夜盘交易 , 夜盘交易的时间还变化过好几次 。在进行回测的时候 , 如果不能对应地做出合理的调整 , 那么也会出现一定的问题 。
回测中的其他考量
对于回测 , 其实还有很多细节和问题需要考虑 , 具体如下 。
□ 数据的准确性 。获取数据有很多种来源 。没有人能打包票 , 百分之百地确定数据一定是准确的 。但是我们应该在一定的成本范围内 , 尽量保证数据的准确性 。所以开始的数据清洗工作就显得异常重要了 。当然 , 会有很多供应商号称自己提供的数据是经过认真清洗的 , 但我们不能完全信任他们 。毕竟承担投资决簧结果的是投资者 , 而不是他们 。
- 关于刘欢五棵松演唱会的介绍 刘欢五棵松演唱会
- 五月桃什么时候种?
- 莫春者春服既成冠者五六人童子六七人
- 人机对抗代码 五子棋的简单算法——评分法
- 第五版 1 《数学模型》学习笔记 第1章 建立数学模型 第2章 初等模型
- 五 ESP8266-NodeMCU项目:集成空调控制器于洞洞板上并打造电源方案
- 五、使用unittest生成HTML报告和xml文件
- 华夏五千年,法律有多少年
- 五 网络编程懒人入门:快速理解为什么说UDP有时比TCP更有优势
- 五弊三缺什么意思 五弊三缺是指什么