天山算力
高精策略回测
功夫高精回测的优势
备注
功夫高精回测的优势
全场景覆盖的自研撮合引擎 :优秀的撮合与 tick 级数据使得回测结果能够与实盘结果无限接近,功夫提供自研回测撮合引擎对 集合竞价撮合、换日委托失效、分笔成交、涨跌停过滤等场景均有覆盖,更加精准地模拟策略表现,接近实盘表现。
高质量行情数据 :使用经过深度清洗处理的高质量逐笔行情数据,用户无需再经历繁琐的数据预处理阶段。
高效存储与执行机制 :搭载自研易筋经内存数据库,利用共享内存实现数据高速存取,避免频繁磁盘操作。系统仅需即时读取内存数据,可逼近 IO 极限,显著提升回测效率,缩短回测用时。
无缝对接实盘交易 :回测使用与实盘一致的数据流。回测结束后,策略代码无需调整即可直接应用于实盘环境。免去代码转写的繁琐。
私有化部署与定制扩展能力 :功夫回测支持本地私有化部署,保障策略安全。同时,撮合引擎、数据工具及回测报告等多个模块均支持自定义开发,满足个性化需求。如有合作意向或咨询需求,欢迎 联系我们 。

如何运行回测
【客户端】运行回测
点击左侧边栏“策略”

点击“添加策略”,选择策略代码文件并完成策略添加。如果要回测的策略已添加,请跳到第三步

选中策略。

点击“运行回测”。选择回测数据源、回测起止时间。


回测将把策略所在路径中 所有支持格式的文件打包上传 ,若策略需要引用其他文件,请放置在同一路径下,建议按文件夹管理策略。

回测任务提交成功,回测任务状态为“运行中”,可通过下方回测日志监测回测进度。 等待回测任务状态变为“已完成”即可进入下一步。

回测任务状态变为“已完成”,点击打开回测报告。

查看回测报告



若需要查看委托记录、成交记录及输出的dump文件,请点击“打开文件路径”

【命令行】运行回测
除了通过客户端,还可以通过命令行运行回测。
命令行运行回测包含4个步骤:运行kfc–> 登录账号 –> (查询支持回测的日期) –>提交回测任务
运行kfc
小技巧
Windows与MacOS版本可通过客户端菜单栏 文件->打开功夫安装目录, 直达 {kungfu安装目录}/resources 目录
## 启动kfc命令(根据版本选择命令) ##
Windows: {kungfu安装目录}/resources/kfc/kfc.exe
Linux: {kungfu安装目录}/resources/kfc/kfc
MacOS: {kungfu安装目录}/Contents/Resources/kfc/kfc
--------------------------例--------------------------
#windows电脑:
C:\Users\kf\Downloads\kungfu\resources\kfc\kfc.exe
>回车后,收到以下信息,表示成功进入,可执行下一步登录
Usage: kfc.exe [OPTIONS] COMMAND [ARGS]...
登录
运行回测前必须登录。
## 登录命令 ##
{kfc安装路径} login -A {你的手机号}
例如 :
#windows电脑:
C:\Users\kf\Downloads\kungfu\resources\kfc\kfc.exe login -A 18686868886
> 回车,得到以下回复
Welcome, your phone number is: 18686868886
Please enter a valid sms code: {输入验证码后回车}
> 如果收到以下回复,表示登录成功,可以继续提交回测
Login Success

查看回测可用数据
运行回测前,需要确认您想回测的日期是否能够回测。因此需要了解回测可用数据范围。
提交回测时命令中需要用到{回测起始日期},{回测终止日期}。若填写错误则无法回测。
## 查看回测可用数据命令 ##
{kfc安装路径} backtest datarange
例如 :
# windows电脑:
C:\Users\kf\Downloads\kungfu\resources\kfc\kfc.exe backtest datarange
> 获得以下信息,请根据需要回测的品种(股票/期货/可转债)及交易所(深交所/上交所……)查询支持回测的日期
> L2:快照十档,order/tick:逐笔行情。回测逐笔请查看order/tick对应可选日期
> STK=股票,FUT=期货,ConFI=可转债
Support Daterange for L2_Quote, L2_Order, L2_Tick:
L2
FUT SHFE start 20230103 end 20240229 #说明:期货,上期所,支持20230103-20240229的十档快照数据
FUT INE start 20230103 end 20240229
FUT CFFEX start 20230103 end 20240229
FUT DCE start 20230103 end 20240229
FUT CZCE start 20230103 end 20240229
ConFI SSE start 20230103 end 20240227 #说明:可转债,上交所,支持20230103-20240227的十档快照数据
ConFI SZE start 20230103 end 20240227
STK SSE start 20230103 end 20240227 #说明:股票,上交所,支持20230103-20240227的十档快照数据
STK SZE start 20230103 end 20240227
order
ConFI SSE start 20230103 end 20240227 #说明:可转债,上交所,支持20230103-20240227的逐笔数据
ConFI SZE start 20230103 end 20240227
STK SSE start 20230103 end 20240227 #说明:股票,上交所,支持20230103-20240227的逐笔数据
STK SZE start 20230103 end 20240227
tick
ConFI SSE start 20230103 end 20240227 #说明:可转债,上交所,支持20230103-20240227的逐笔数据
ConFI SZE start 20230103 end 20240227
STK SSE start 20230103 end 20240227 #说明:股票,上交所,支持20230103-20240227的逐笔数据
STK SZE start 20230103 end 20240227

提交回测
确定需要回测的时间、策略路径后,即可运行回测。
## 提交回测命令 ##
{kfc安装路径} backtest submit -f {策略所在路径} -b {回测起始日期} -e {回测终止日期} -l {数据级别}
# 策略所在路径,建议使用绝对路径
# 回测起始/终止日期,格式如: 2023-01-03,
# 数据级别:可填"level1(快照十档)" 或 "level2(快照十档+逐笔)"
例如 :
# windows电脑
C:\Users\kf\Downloads\kungfu\resources\kfc\kfc.exe backtest submit -f C:\Users\zmc\Desktop\Strategy\strategy_demo\MAStrategy.py -b 2023-01-03 -e 2023-01-31 -l level2
指使用MAStrategy.py策略,使用20230103-20230131快照十档+逐笔数据进行回测
> 提交回测后,将收到如下信息
[1]↓表示已为您成功打包
tmp zip file: C:\Users\PC\AppData\Roaming\kungfu\home\strategy_demo\strategyOrderImbalanceStrategy17149806580715.tar.gz
remove tmp zip file: C:\Users\PC\AppData\Roaming\kungfu\home\strategy_demo\strategyOrderImbalanceStrategy17149806580715.tar.gz
[2]↓回测已提交,任务id为
Job sumbitted, id: d26e6134-9ace-4c5e-983e-00c610842b6f
[3]↓回测开始运行,已运行x秒
Status: STARTING, Takes: 3.556906938552856485
[4]↓将为您持续返回日志
LOG……
[5]回测结束,状态为成功(若中途失败,则返回status FAILED)
Extracting tar file
Extracted strategyOrderImbalanceStrategy17149804426189, runtime file is /tmp/tmp6nxbq2tn/strategy_demo/OrderImbalanceStrategy.py
job finished, status SUCCEEDED, reason None
[5]回测结果展示 (statistics: 回测报告数据)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> backtest result <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
{
"attach_factor_cache": null, "attach_orderbooks": null, "group": "504800f2-abc3-4d0f-9f47-0cc2426971ce", "name": "504800f2-abc3-4d0f-9f47-0cc2426971ce",
"pnl": [{"date": 1672675200000, "balance": 1000000, "return": 0.0, "highlevel": 1000000, "drawdown": 0, "ddpercent": 0.0, "principal_ddpercent": 0.0}],
"statistics": {
"start_date": "2023-01-03 00:00:00", "end_date": "2023-01-03 00:00:00", "total_periods": 1, "profit_periods": 0, "loss_periods": 0, "capital": 1000000, "end_balance": 1000000.0, "total_fee": 0, "max_drawdown": 0.0,
"max_ddpercent": "0.00%", "longest_drawdown_duration": 1.0, "total_return": "0.00%", "annual_return": "0.00%", "annual_volatility": "nan%", "period_return": "0.00%", "sharpe_ratio": "0.0", "return_drawdown_ratio": "nan"
}
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> backtest result <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

回测时引入依赖文件
注意
功夫支持策略中依赖其他文件进行回测。因此运行回测时,系统将打包上传策略所在路径下的所有文件,建议 按策略管理文件夹,每个文件夹中仅包含策略以及需要引用的文件
引用csv文件
请确保被引用文件和策略文件在同一父级路径
引用csv文件请参考以下代码
1from kungfu.wingchun.constants import *
2import kungfu.yijinjing.time as kft
3import pandas as pd
4import os
5import csv
6# 柜台
7source = "sim"
8# 账户
9account = "simTest"
10
11# 下单参数
12MAX_POSITION = 2000
13ORDER_VOLUME = 100
14
15# 读取csv文件并载入
16current_directory = os.path.dirname(os.path.abspath(__file__))
17path = rf'{current_directory}/123.csv'
18list1=[]
19fl = open(path,'r')
20re=csv.reader(fl)
21for i in re:
22 list1.append(''.join(i))
23
24……后续代码省略
引用py文件
请确保被引用文件和策略文件在同一父级路径
引用py文件请参考以下代码
1from kungfu.wingchun.constants import *
2import kungfu.yijinjing.time as kft
3import pandas as pd
4
5#从其他py文件导入
6from test import test
7
8#导入名为“test”py文件中的标的列表
9list1 = test.ll()
你可能还想问:
回测中重建订单簿
请参考API文档 重建订单簿代码示例
数据及更新频率
天山算力产品下,我们将为您免费提供经过清洗的高质量数据。
股票数据:A股Level 2 快照(10档)、逐笔数据
期货数据:Level 2 快照(5档) ;大商所、郑商所为250ms切片,上期所、能源中心、中金为500ms切片
可转债数据:Level 2 快照(10档)、逐笔数据