策略回测
为了精准测试和验证策略在实盘交易中的效果,本平台支持了回测功能,用户可自定义策略函数、进行策略配置与创建、执行回测并获取回测结果。
我的策略
页面包括当前用户的私有策略以及回测预设。
策略回测
页面展示了用户私有的策略列表,包括名称,策略类型,行情类型,数据类型,备注,标签,创建人,创建时间和更新时间。用户可在此新建、编辑、公开、导出、删除策略。

创建:用户在此创建新的策略。创建时须指定策略名称、策略类型(股票、期货、期权、通用、数字货币、上交所债券、cfets x_Bond 行情债券、融资融券)、行情类型(快照、分钟频率、日频)和消息类型(TABLE、DICT)。还可以设置标签和备注,便于区分和解释该策略。点击确定,进入策略编辑页面。

导入:可将本地以 JSON 格式保存的策略文件导入到平台,并将其命名为指定名称。

编辑:点击策略的名称,进入该策略的编辑页面。用户可在此编写策略初始化函数、策略盘前交易函数、逐笔行情通知函数(高频)、快照行情通知函数、委托回报通知函数、成交回报通知函数、策略每日盘后回调函数、策略结束的回调函数的具体实现。每个函数的相关介绍可点击右侧辅助文档按钮查看。

- 代码历史记录:记录着最近五次保存的历史代码,且这些代码和当前代码任意二者之间可相互比较。
- 编辑描述信息:修改策略的名称、策略类型、行情类型、标签、备注信息。
- 运行:基于当前策略进行回测。进入运行页面。
- 保存:将当前代码编辑区中的代码保存。
- 若选择历史回测,需完成设置参数、设置数据源、自定义参数、设置可视化模板、绩效归因等步骤;
- 若选择实时回测,需完成设置参数、设置数据源等步骤;
导出:将该策略以 JSON 格式文件导出到本地。
公开:将策略公开到部门,允许部门内其他用户使用。

- 运行记录:选择运行记录,供审批人参考。
- 审批人:选择要公开到的部门以及该部门审批人。若为二次公开(即之前已公开过该策略,本次是对修改后的策略进行公开),则首次公开时的部门默认为必选。
- 对使用者加密源码:加密后,其他用户对该公开策略仅可调用,无法查看策略源码。
- 对审批人加密源码:加密后,审批人在审批时无法查看策略源码。
- 备注:备注可填写关于此策略的使用说明供其他用户参考。
删除:删除当前策略。
批量删除:选择多个策略进行批量删除。
回测预设
对相同的策略类型和行情类型,用户在运行时经常需要填写相同或大体相同的参数。回测预设功能可帮助用户快速填充参数。并且在预设时,用户可以添加多套参数以实现参数寻优的功能。
回测预设页面展示了当前用户已有的预设,包括名称、预设类型、标签、行情类型、策略类型、备注、创建人、创建时间、更新时间等。

创建:创建新的预设。需要填写此预设对应的策略类型、行情类型和回测类型,以确定需要使用的参数。

点击确定后进入预设编辑界面。
导入:可将本地以 JSON 格式保存的预设文件的导入到平台,并将其命名为指定名称。
编辑:编辑具体预设信息。
- 基础信息:由策略类型决定的基础参数,包括回测时间、初始资金、手续费等。历史回测允许添加多组参数,实时回测只能添加一组参数。
- 数据源:由策略类型决定的基础数据源、行情类型决定的行情数据源以及基础数据源。具体的方式有两种:一种是已有库表,另一种是自定义计算。基础数据源、行情数据源和基准数据源对数据源的结构有明确要求,即列名和对应数据结构是固定的。因此在使用已有库表时,要确定库表字段的映射关系;在采用自定义计算时,结果表的列名和数据结构应满足要求。具体要求可参考已有库表下的目标列名和类型。注: 在回测配置的每个 Tab 页中,需要分别点击【保存】按钮以保存当前页面的配置。否则,仅会保存最后点击【保存】按钮的页面配置。
- 对于基础数据源,可以直接从现有库表中提取数据,自定义计算可以帮助用户更灵活的提取数据源,或者做一些模拟/前置操作。但需要用户将计算结果赋为相对应的表格名称。在此代码框里,可以使用在公共脚本库中定义的函数。
图 8. 图 3-8 基础数据源
- 对于行情数据,大多数情况可以直接在库表中提取,因此只需要选择对应的库表以及列名的映射关系。若行情数据源选择自定义计算,则计算结果需要赋值为变量
result。
图 9. 图 3-9 行情数据源
- 对于基准数据源:若是历史回测,可选择已有库表和自定义计算两种方式;若是实时回测,则需要指定一个流表。
图 10. 图 3-10 基准数据源
- 对于基础数据源,可以直接从现有库表中提取数据,自定义计算可以帮助用户更灵活的提取数据源,或者做一些模拟/前置操作。但需要用户将计算结果赋为相对应的表格名称。在此代码框里,可以使用在公共脚本库中定义的函数。
- 自定义参数:用户可以任意定义在函数接口中所使用到的自定义参数。例如,用户在
initialize
接口函数中使用到 shortWindowN 这个参数,并且赋予其多个值以达到参数寻优的功能,多个值之间可通过逗号分隔。图 11. 图 3-11 自定义参数
- 可视化模板:用户可以选择已设定好的可视化模板,如若不选,则使用默认模板进行渲染。
图 12. 图 3-12 可视化模板
- 绩效归因:用户可以选择是否要对回测进行绩效归因。如果是,则可以选择已有的绩效归因模板,填写对应的参数以及可视化模板。对于控件类型为策略运行记录选择器的参数,可以选择当前运行以实现对此次运行结果的绩效归因。
导出:将该预设以 JSON 格式文件导出到本地。
删除:删除当前预设。
批量删除:选择多个预设后批量删除。
绩效归因模板
用户可以自定义绩效归因模板对策略结果进行评价。拥有策略权限的用户公用本页面,即模板代码公开。平台内置了 Campisi 和 Brinson 内置模板。

创建:创建新的绩效归因模板。

编辑:创建新的绩效归因模板或点击模板名称可进入模板编辑页面。

- 用户可以在编辑页面添加模板参数,并且选择对应的控件类型及默认值。因为模板入参为一个字典,每当添加一个新的参数之后,模板代码处会自动生成参数的使用代码。
- 函数的返回结果只能为一个字典。
- 点击“查看运行结果”,即可对现在的代码及参数入参进行一次“测试”。默认结果为数据看板,包含了所有的返回结果。也可以切换至 JSON 模式查看结果数据的 JSON 格式。
- 编辑好所有参数及代码内容后,点击保存按钮即可保存所有信息。
运行:点击运行按钮,在参数选择页面指定参数的值,可根据需要选择可视化模板。点击确认即运行该绩效归因任务。

删除:删除当前绩效归因模板。