如何高效、优雅地进行高频策略回测?

本文介绍了如何构建一个秒级别的高频策略回测框架,包括数据处理、策略逻辑、交易清算和绩效报告四个模块。在大数据量下,重点强调了避免循环以提高效率,如使用rolling函数计算滚动平均。策略逻辑中,以MA5和MA20的交叉作为买卖信号。交易清算部分详细阐述了买入和卖出交易的盈亏计算,包括手续费的处理。最后,通过绩效报告展示了策略的亏损情况,强调了一个高效严谨的回测系统对于策略研发的重要性。
摘要由CSDN通过智能技术生成

目录

数据处理

策略逻辑

 交易清算

绩效报告

回测性能


今天与大家探讨高频策略的回测框架。高频策略的研发,有两个显著的特点:

一是数据量大,与日频相比,分钟频率就是百倍的数据量, 到秒级别更达到上千倍的差异。

二是对交易细节敏感,回测系统要尽可能去模拟真实交易的情形,甚至要比真实交易更严格,这样研发出来的高频策略才有实盘的价值。所以高频策略要考虑的细节很多,决策时间点,成交价,手续费,流动性等。细节考虑的不到位,策略回测和实盘交易就会差异很大,降低策略研发的价值和效率。

如何在大数据量前提下,尽可能的将细节考虑到位,就是高频策略回测系统的挑战,也就是严谨和高效的权衡。

下面和大家一起构建一个秒级别的策略回测框架。

一般来说,回测框架会包含以下几个模块:

数据处理, 策略逻辑,交易清算,绩效报告

数据处理

数据模块是最基础和重要的环节,直接决定了回测框架的结构和效率,我们展开来看。

1) 加载原始数据

这里我们从parquet文件中加载原始的tick数据。

2) 将tick数据转换成10s级别的K线数据。

tick数据的结构以及通过resample转换成K线数据我们在上篇文章《》已经介绍过了,这里增加2个字段:

把10s内的买卖委托价格的均值作为该K线的买卖委托价,这个价格我们用来做成交价格的模拟

3)准备策略决策数据

     策略决策有可能用的K线已有的字段,也有可能需要基于已有字段衍生新字段。本例中我们基于Close衍生MA5和MA20两个字段

 对于高频数据处理,我们一定要尽可能地避免使用循环,用循环的地方多了,效率就很难提起来。我们使用rolling函数实现滚动计算指定长度的均值,这个内置的滚动机制要比

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值