我们设计策略时为了评估其表现总是需要进行回测。完美的回测当然是越逼近真实交易越好,比如根据逐笔的价格和成交量数据来进行回测。但这个Tick级别的回测需要比较长的时间,用户为了节约时间也会选择进行“每日”或“分钟”级别的回测。

为了帮助用户理解回测与实盘的区别,客观地评估策略在不同回测时间频率下的回测表现,我们在此简单介绍真格量化回测引擎的撮合机制。

每日级别:

回测频率选择“每日”时,系统根据委托价格与当日价格最低及最高点进行比较来判定是否成交(即“K棒拟合”算法)。

以买入委托为例,如果发出限价委托,当委托买价高于当日最低价时,则判定发生成交。

成交价格根据委托价格是否高于K线均价分为两种情况:

当委托价格小于K线均价时,成交价即为委托价。当委托价格高于K线均价时,成交价判定为(委托价+K线均价)/2.

成交数量根据当天成交量的三角分布模型判定。

如果发出市价买入委托,对成交价的判定为(当日K线最高价+当日K线均价)/2。成交数量依然根据当天成交量的三角分布模型判定。

当日线出现全天单边市场状况时(即全天只有一个涨停价或跌停价),对于涨停情况,系统判定买入委托,无论限价还是市价,都不能成交。对于跌停情况,系统判定卖出委托,无论限价还是市价,都不能成交。

在日级别回测时,系统并不进行开盘集合竞价,每个交易日只进行一次成交判定,未成交的委托将被自动撤单(相当于FAK)。

在“每日”级别回测时,系统只会在每日的15:00发送一次行情,如果有成交,系统则以这个时间15:00来显示成交时间。

分钟级别:

在分钟级别回测时,判定成交的方法与日级相同,但成交价格的估算与日线有所区别。以买入委托为例,如果发出限价买入委托,系统判定发生成交时,成交价即为委托价:

成交数量根据所在K线的三角分布模型判定。

但与日级别不同的是,在一个交易日内,如果一笔委托在一个分钟K线中并未完全成交,其可继续与下一根K线比较,进行成交判定,直到可成交的委托数量完全成交或该交易日结束。当交易日结束而委托仍未完全成交时,该委托将被自动撤单。如果发出市价委托,以买入委托为例,成交价依然判定为(该分钟最高价+该分钟均价)/2。未成交的委托继续与下一个分钟K线价格进行成交判定。如果该分钟K线本身只有一个价(涨跌停的情况),则在当前K线为涨停时,如果是市价买入,则系统判定无法成交,如果是市价卖出则可全部成交。在当前K线为跌停时,如果是市价买入则可完全成交,市价卖出则系统判定无法成交。未成交的委托量与下一根K线继续进行成交判定(“后续撮合”过程)。

与日级别回测类似,分钟级别回测的成交数量也是通过各个分钟k线的成交量的三角分布模型判定,且同样不进行开盘集合竞价。

用户还应当注意,系统进行撮合时是基于完整的分钟K线,以下图为例,如果我们以最新的一根K线,比如14:47的K线,作为发出交易指令的依据,系统会以这根完整K线包含的信息进行撮合。这与真实的交易存在差异。比如在真实的交易中,我们在14:46:01和14:47:00所知道的信息(比如K线均价)并不一致,而回测中系统是假定我们已经有了这根K线的完整信息,然后据此进行成交判定。在回测中,用户可以通过取倒数第二根K线作为发出交易委托的依据来规避可能的“未来数据”问题。

在分钟级别回测,系统每分钟发送一次行情,如果判定发生成交则以该分钟对应时间显示成交时间。

Tick级别:

在Tick级别回测时,系统使用“盘口拟合”算法进行成交判定。其与“K棒拟合”算法不同的是系统会根据“首次成交”和“非首次成交”的区别来判定成交数量:

对于限价委托:

以限价买入委托为例,如果委托价格高于卖盘第一档价格,即判定成交,发生“首次撮合”(即针对第一个Tick进行逐档位撮合的过程),“首次撮合”时发生的第一笔成交为“首次成交”。如果首次撮合之后仍有委托未成交,则其继续与下一个Tick进行“后续撮合”。

我们以下图的限价买入委托情况为例。

对于“首次成交”情况,如果买入委托价格高于卖盘对应档位价格(603>602),则判定该档位委托量(20)能够全部成交,成交价为该档位对手价(602)。未成交的委托数量(80)继续与下一个档位的对手盘价格比较,如果委托价仍高于或等于对手盘价格,则继续可与该档位委托量(66)全部成交。对于仍有剩余的委托量(14),如果在当前一个Tick内无法成交,则进入下一个Tick进行“后续撮合”,如果委托价高于或等于下一个Tick对应档位的对手价格,则继续在该档位委托量完全成交(14).

对于“首次撮合”委托价与对手盘价格相同的情况,如下图:

当委托价与对手盘第一档价格相同时,系统判定只有一半委托量可以成交(30的一半15)。如果首次撮合之后,仍有剩余委托量,其在后续撮合中,如果委托价仍等于对手盘价格,此时系统会判定其与对手盘委托量完全成交。这是对非首次成交的处理,体现了“时间优先、价格优先”的原则。

对于市价委托:

系统会将市价委托转为以涨跌停价为委托价格的限价委托,然后用和限价委托相同的逻辑进行成交判定。成交价即为和对手各档位进行撮合成交的加权均价。

在Tick级别回测,系统也不进行集合竞价,但会提供一个集合竞价产生的价格数据。

在回测记录的交易流水中,系统会以发生成交的那一秒对应的时间来显示成交时间,这与真实的交易撮合过程也最为接近。

— — — — — — E N D — — — — — —

往期文章:

Numpy处理tick级别数据技巧

真正赚钱的期权策略曲线是这样的

多品种历史波动率计算

如何实现全市场自动盯盘

AI是怎样看懂研报的

真格量化策略debug秘籍

真格量化对接实盘交易

常见高频交易策略简介

如何用撤单函数改进套利成交

Deque提高处理队列效率

策略编程选Python还是C++

如何用Python继承机制节约代码量

十大机器学习算法

如何调用策略附件数据

如何使用智能单

如何扫描全市场跨月价差

如何筛选策略最适合的品种

真格量化可访问:

https://quant.pobo.net.cn

真格量化微信公众号,长按关注:

遇到了技术问题?欢迎加入真格量化Python技术交流QQ群  726895887

真格量化的回测交易撮合机制简介相关推荐

  1. 量化回测平台|有现成的不用吗?如何利用聚宽平台回测交易策略

    导览 本文为掘金小册课程加推篇!小册还在持续加推中,敬请期待!!!目前已经加推了20节!!! 超值的43节课程!从目录就能看出来! 1-贯穿小册:Python金融数据分析实战型项目 2-前置基础:量化 ...

  2. 如何将真格量化回测数据展示到客户端

    简介 通过本功能,可以将量化交易系统上(用户)日志内记录的特殊信号数据展示在客户端的技术分析图表上.其实质是在客户端的指标模块上增加一个插件,提供解析特定格式的日志文件并得到序列数据的函数.用户可以在 ...

  3. 量化投资回测教学之掌握矢量化回测

    量化投资回测教学之掌握矢量化回测 1. 什么是回测? 回测用于模拟交易策略的过去表现. 回测的核心概念是通过回溯时间来模拟给定的交易策略,并像过去一样执行交易.产生的利润通常通过一些指标(例如最大回撤 ...

  4. python外汇交易回测系统_StarQuant - 综合量化交易回测系统/平台

    Welcome to StarQuant StarQuant(中文名:易数交易系统)是一个轻量的.面向个人( 普通)用户的综合量化交易回测系统,目前主要用于期货期权程序化交易(CTP接口,在实盘测试中 ...

  5. 【邢不行|量化小讲堂系列56-实战篇】量化策略回测表现好,但实盘却很差?可能是底层数据就错啦!

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章] [邢不行 ...

  6. 成功的量化交易 PART 2-交易系统(3)

    接上一篇文章: Alpha Zone:成功的量化交易 PART 2-交易系统(2)6 赞同 · 0 评论文章正在上传-重新上传取消​ PART 2.Trading Systems 选择编程语言 现在我 ...

  7. 想跑次高频策略?快来看看Numpy处理真格量化tick数据的技巧

    使用澎博真格量化时,很多用户希望用numpy处理tick数据,包括tick数据的留存和运算. 这里有一些技巧. 因为tick数据量比较大,为了降低系统的运算负担,我们不应该在内存里保存大量tick数据 ...

  8. Pyalgotrade量化交易回测框架

    现在就开始干活了.先要测试一下pyalgotrade回测数据对不对.我找了个参照标准:在聚宽上开通了个账号,按入门教程写了个策略:2016-2018年每个交易日买入100股平安银行(000001),回 ...

  9. 1、股票交易及量化投资回测分析系统的数据库设计-5

    在阅读文章前,请读者朋友认真阅读免责声明: 免责声明:本人所发表的所有文章.资源.知识等内容(包括免费.付费等)旨在向广大读者介绍我的职业生涯中积累的一些经验.知识等内容,受个人水平所限这些知识.经验 ...

  10. python 量化策略回测_在python中创建和回测对交易策略

    python 量化策略回测 Pairs trading is one of the many mean-reversion strategies. It is considered non-direc ...

最新文章

  1. paip.无线路由器的无线接入WAN方式WDS设置大法
  2. XCTF-高手进阶区:NaNNaNNaNNaN-Batman
  3. create table as select性能测试
  4. 二次元风格Kratos-pjax主题 WordPress主题
  5. NeurIPS2019无人驾驶研究成果大总结(含大量论文及项目数据)
  6. HTTP 权威指南 第二章 URL 与资源
  7. iOS 获取通讯录权限和权限提示弹框
  8. 楚留香服务器维护时间,【9月28日维护公告】
  9. 关于交流半波与全波整流输出的电压(或电流)有效值和平均值的讨论
  10. 圆 最小外包矩形_基于迭代最小外包矩形的城区建筑物轮廓规则化方法
  11. 免费开源统计软件介绍——jamovi
  12. matlab pie 空隙,编码解决饼图(Pie)的标签重叠问题
  13. vue和 element ui下载到本地后引入
  14. mtk编译android,[Android6.0][MTK6737] MTK 编译环境搭建
  15. html年龄0-120岁正则,正则表达式
  16. 百度可观测系列 | 如何构建亿级指标的高可用 TSDB 存储集群?
  17. 10没有基于策略的qos_电力通信 | 基于智能光网络系统的配用电业务承载方案研究...
  18. HardNet详细解释
  19. 轻松判断放大电路的负反馈类型(电压反馈,电流反馈等有实例)
  20. PTA7-1 厘米换算英尺英寸

热门文章

  1. IPS与IDS部署场景
  2. 科普:前端是做什么的?工作内容有哪些?
  3. spurious wakeup 虚假唤醒
  4. NLP-文本挖掘-综述
  5. ubuntu16.04安装1060显卡驱动
  6. 怎么提取pdf文件中的图片
  7. 深度解析输入偏置电流和输入失调电流的定义来源以及对电路的影响
  8. Tomcat设置开机启动 - CentOS(结尾附视频)
  9. 离散分配方式——基本页式存储管理方式
  10. android post请求时报415错误,post请求传递JSON数据类型(415错误解决)