五 量化交易全流程( 五 )


□流动性限制 。在回测的时候 , 我们很容易假设能买到所有的股票 , 但实际上 , 很多股票因为流动性的原因 , 其实是买不到的 。或者即使买到了 , 冲击成本也远高于正常的成本 。比如 , 有的股票一天的交易量就只有100手 , 那么肯定就没办法买到200手 。再比如 , 有的股票一开盘就涨停 , 这种情况下我们也买不到 。
□选取合理的比较基准 。
□稳定性 。对于一个策略 , 我们希望它的表现越稳定越好 , 这就是所谓的稳定性 。稳定性有两个衡量维度 , 一是时间上的稳定性 , 二是参数上的稳定性 。时间上的稳定性 , 是指策略对于一个特定的周期 , 在不同的时间段 , 表现相对稳定 , 不会出现某段时间大赚 , 另外一段时间大亏的情况 。不稳定的策略 , 在实际中几乎不可能坚持应用 。比如 , 一个策略在回测中 , 今年收益50% , 明年倒亏30% , 试想在实盘中 , 如果亏损了30% , 那么谁还敢坚持使用?而且 , 回测稳定的策略有助于我们判断策略是否失效 , 一个每个月都赚钱的策略 , 突然连续几个月不赚钱了 , 那很有可能就是失效了 , 这个时候就需要我们再次进行研究 , 是策略暂时性的失效 , 还是市场结构本身发生了变化而导致的失效 。参数上的稳定性 , 是指策略的表现不会随着参数的微小变化而大起大落 。一般来说 , 策略都会有与其对应的参数(无参数策略也有 , 但是比较少见) , 当我们针对历史优化出一套参数之后 , 我们希望这套参数是比较可靠的 。一个评价标准就是这套参数邻近的参数表现都比较好 。如果一个参数的微小变化就会导致策略表现大幅下降 , 则说明参数的稳定性不够 , 这套参数是不可靠的 。比如 , 我们得到的最优参数是(2,6,20) , 如果参数(2,5,19)表现突然变差 , 那就说明(2,6,20)不是一组好参数 。换句话说 , 我们实际上是要找到"一块"优秀的参数区域 , 然后再在其中挑选对应的参数 。
□ 心理因素 。心理因素在回测的时候常常会被忽略 。虽然量化交易是比较系统的交易方法 , 但也要把心理因素考虑进来 。比如 , 能接受的胜率、最大回撤分别是多少?实盘中 , 胜率太低 , 或者回撤太大 , 都可能导致投资者自我怀疑 , 从而不得不放弃策略 , 甚至开始手动操作 。
□ 交叉验证 。我们在进行回测的时候 , 为了确保策略的稳定性 , 需要进行交叉验证 。交叉验证一般可以在两种维度上展开 , 一是在不同的品种上进行交叉验证 , 二是在不同的时间周期和时间段上进行交叉验证 。
回测系统概览
本部分将要讨论市面上现有的编程语言以及回测平台 , 包括商业系统和开源系统两个方面的 。
如果想要自己开发回测系统 , 那么第一个问题就是 , 应选择什么样的编程语言?
最常用编程语言有、、R、Java、C#等 。目前国内的情况是 , 使用 的人数最多 , 但使用的人数增长最快 。
如果在最大的开源平台上搜索  , 那么搜索出来的项目中 , 的数量将是最多的 , 并且远远超过第二名R的项目 。