回测模块

回测模块是金融领域中至关重要的分析工具,通过对历史数据进行模拟交易,量化策略在不同市场环境下的表现。它能够评估投资策略的盈利能力、风险水平及稳定性,帮助投资者优化策略,提高未来实际交易的成功率和风险控制能力。回测模块通过严格的算法和数据分析,为金融决策提供有力支持,是金融专业人士不可或缺的决策辅助工具。

交易引擎

交易引擎简介

1.1 交易引擎的作用

交易引擎回测模块的功能是实现用户的交易逻辑

  • 当用户将策略编写好之后,我们需要在一段时间当中,用策略逻辑,模拟一下在金融市场中的买卖,通过收益情况判断策略的好坏
  • 如果想测试策略在某段历史时期上的表现,只需在本地运行回测模块即可
  • 如果想测试策略从今天开始一直到未来的表现,需要将含有回测模块的策略提交到模拟交易
  • 在交易引擎中,用户可以自定义一些买卖逻辑,也叫交易逻辑,它和策略逻辑还是有一定区别的

策略逻辑与交易逻辑的对比:

策略逻辑 交易逻辑
使用什么样的数据\n使用什么

更新时间:2024-06-07 10:55

高频回测模块择时策略

8月19日Meetup策略模板:

https://bigquant.com/codesharev2/44350f73-6992-4f03-ab1e-59a62936fbdd

\

更新时间:2024-06-07 10:55

高频回测模块择时策略

问题

高频回测模块择时策略

\

视频

https://www.bilibili.com/video/BV1S44y1y7dc?p=2&share_source=copy_web

策略源码

8月19日Meetup策略模板:

[https://bigquant.com/experimentshare/a6bae485ffcc47819510b788ddfad338](https://bigquant.com/experime

更新时间:2024-06-07 10:55

创业板和科创板股票过滤

问题

Q3:过滤创业板和科创板的股票,是否要在训练集和预测集都进行过滤?另外,想在trade回测模块中通过编写代码实现过滤,该如何编写?

视频

https://www.bilibili.com/video/BV1aq4y1A7xK?share_source=copy_web

策略源码

如果我们不想考虑创业板和科创板的股票,那么需要在数据的训练和预测阶段都过滤。不然创业板和科创板的股票数据会影响AI模型,降低模型的准确率。

[ht

更新时间:2024-06-07 10:55

大盘风控和个股风控

【旧版提示】此文档不可用,详见新文档:

https://bigquant.com/wiki/doc/114-YCE9b0Z1h3#h-%E7%AD%96%E7%95%A5%E4%BB%8B%E7%BB%8D

一般的大盘风控和个股风控在回测模块的主函数里面处理就可以了。因为回测的主函数可以理解是每日收盘后运行,所以可以获取到当天大盘信息和个股价格信息进行风控,再综合策略的逻辑进行下单。

下面介绍另外一种风控的方法,在盘

更新时间:2024-05-22 09:12

高频回测模块择时策略

8月19日Meetup策略模板:

https://bigquant.com/experimentshare/a6bae485ffcc47819510b788ddfad338

\

更新时间:2024-05-21 06:30

早盘买卖

在BigTrader回测模块设置买卖点:


代码

https://bigquant.com/codesharev2/3e4819da-11ae-404c-9df6-dfe74a98b98f

\

更新时间:2024-05-20 06:15

【历史文档】策略示例-AI模板策略交易逻辑解读

更新

本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明

新版量化开发IDE(AIStudio):

https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW

新版模版策略:

https://bigquant.com/wiki/doc/demos-ecdRvuM1TU

新版数据平

更新时间:2024-05-16 01:59

回测报表数据

定义

raw_perf

得到回测报表详细数据,数据类型为DataSource

示例代码

通过回测模块.raw_perf.read_df()查看回测报表详细数据

{w:100}{w:100}

m4.raw_perf.read_df()

\

更新时间:2024-05-15 02:10

有没有关于context、T、label等的详细介绍

问题

不是很清楚这几个自带的变量都是什么,都有什么?

\

解答

context是用来调用回测模块中对象的,具体可以调用哪些可以参考以下两个文档:

  1. https://bigquant.com/wiki/doc/-spI0guZnrT → HFTrade模块
  2. https://bigquant.com/wiki/doc/fangfa-context-lOnbF8oISJ → Trade模块

T 是平台内部封装的一些方法,常用的是T.plot, T.parallel_map, T.norm这种;

label没太明白是什么

更新时间:2023-06-01 14:26

策略如何在实盘里实现,而不是在回测模块

问题

{w:100}{w:100}

解答

模拟盘也好 实盘也好,和回测运行的是同一个notebook,但仍然会有一些细小的区别:

  1. 模拟盘实盘是每个交易周期都会触发运行初始化函数,而回测只会运行一次初始化函数;
  2. 模拟盘和实盘里,前一日赋值的变量无法保留到下一个交易期,比如在方法里自定义的context.a = 123这种变量,回测里是可以定义一次后在所有交易期均可以调用;而模拟盘和实盘里则不行,只会当天定义的变量当

更新时间:2023-06-01 02:13

怎么在回测模块的主函数中,获取当日的最大策略收益指标?

问题

在回测模块的主函数中,我想要获取截止到当日的策略累计收益,如下语句,怎么报错啊?莫非不是这个参数?

context.perf_tracker.cumulative_risk_metrics.algorithm_period_return (报错)

而取下面的最大回撤指标就没有问题,正确的方式是怎样的?

context.perf_tracker.cumulative_risk_metrics.max_drawdown (正常)

下面取日收益也没有问题,咋累计收益就不行呢?

context.perf_tracker.cumulative_risk_metrics.algo

更新时间:2023-06-01 02:13

请教一个问题!,关于ranker_prediction

问题

大家好,我看很多关于AI的策略里面都有以下两句代码

ranker_prediction 和 context.benckmark_risk.ix[today_date].values[0]。我想请问这个内嵌的逻辑是什么…

  • context.ranker_prediction就是传给回测模块的预测结果数据,通过context.options[‘data’].read_df()读出来。 ranker_prediction就获取到回测当天的预测结果数据

![{w:100}{w:100}{w:100}{w:100}{w:100}](/wiki/api

更新时间:2023-06-01 02:13

请帮忙看下,设置了每日调仓,怎么回测7日才调仓,模拟也不会调仓

问题

请帮忙看下,设置了每日调仓,怎么回测7日才调仓,模拟也不会调仓

策略

https://bigquant.com/experimentshare/ad6ecb9d63cf4b3b8ae7d397f7fd205a

把回测模块的主函数这个地方注释即可。这个代码表示持仓5天才判断交易逻辑

![{w:100}{w:100}](/wiki/api/attachments.redirect?id=b7f8ae9d-aa05-4ebb-

更新时间:2023-06-01 02:13

回测模块中如何导入库

问题

请问如何在回测模块中导入一个自定义的库呢?写在盘前函数里好像无效。

更新时间:2023-06-01 02:13

回测中如何避免买入停牌股票或一字涨停的股票?

问题

回测中如何避免买入停牌股票或一字涨停的股票?

解答

这是一个好问题。BigQuant平台回测模块专门对这个问题进行了相应处理。当遇到次日停牌或者一字涨停\跌停的情形,平台会自动取消该订单,于是是不能成交。

更新时间:2023-06-01 02:13

'Outputs' object has no attribute 'm_lazy_run'

问题

'Outputs' object has no attribute 'm_lazy_run'

这个报错没搞懂,用了高频特征就这样了

「分享出去没有回测模块」

回测模块在知识库里看到没有 克隆到开发环境之后 是有的

策略

https://bigquant.com/experimentshare/00d5181ea03a4301ab73caf36256dd86

\

更新时间:2023-06-01 02:13

index 0 is out of bounds for axis 0 with size 0

问题

[2021-11-22 16:30:01.137076] ERROR: moduleinvoker: module name: backtest, module version: v8, trackeback: IndexError: index 0 is out of bounds for axis 0 with size 0
[2021-11-22 16:30:01.148826] ERROR: moduleinvoker: module name: trade, module version: v4, trackeback: IndexError: in

更新时间:2023-06-01 02:13

回测模块报错问题

将回测模块中的数据准备函数中的上证指数,更换为平台文档中的其他指数后报错,请问如何解决?

https://bigquant.com/experimentshare/0d697ebd19e148ea8d2607b0f29e7cb9

\

更新时间:2023-06-01 02:13

盘前数据处理未来函数问题

在回测模块中,例如生成订单日期是1号,实际下单日期是2号。2号的时候是可以调用盘前处理的。盘前处理的时候如果使用data.histroy是可以在盘前就获取当天的开盘和收盘信息的。这个属于未来函数,不过如果下午交易,用上午开盘价是否低开做cancel order判断是ok的。但是问题来了。回测这样操作是可以的,可是如果模拟交易和实盘都是在前一天就生成信号,所以就想问一下这个盘前数据处理是否会在模拟交易和实盘中运行,如果运行取的是哪一天的数据。。。因为回测中2号盘前运行可以取到2号全天数据,这个在现实中明显取不到,当天开盘都是取不到的。。。 所以问题是 那么如果回测模块中布置了盘前数据处理, 1\

更新时间:2023-04-03 15:26

盘前数据处理未来函数问题

在回测模块中,例如生成订单日期是1号,实际下单日期是2号。2号的时候是可以调用盘前处理的。盘前处理的时候如果使用data.histroy是可以在盘前就获取当天的开盘和收盘信息的。这个属于未来函数,不过如果下午交易,用上午开盘价是否低开做cancel order判断是ok的。但是问题来了。回测这样操作是可以的,可是如果模拟交易和实盘都是在前一天就生成信号,所以就想问一下这个盘前数据处理是否会在模拟交易和实盘中运行,如果运行取的是哪一天的数据。。。因为回测中2号盘前运行可以取到2号全天数据,这个在现实中明显取不到,当天开盘都是取不到的。。。 所以问题是 那么如果回测模块中布置了盘前数据处理, 1\

更新时间:2023-01-13 16:24

关于模拟交易,以及写策略代码上的一些疑惑

问题

话说大佬们如果是我自己写的策略该怎么让他在交易模拟上面,以整百持股买入卖出呀,回测的时候都是整百持股买入卖出,一上模拟就不是整百持股了. 回测模块上有下面这段代码,回测的时候的确是整百持股,为何一到模拟交易就不行了呢?

代码

    if cash > 0:
        current_price = data.current(context.symbol(instrument), 'price')
        amount = math.floor(cash / current_price / 100) * 100
        context.

更新时间:2022-12-20 14:20

回测模块报错

问题

{w:100}data1, data2分别有什么格式要求吗?

报错。。。如上。。。

提示 : UnpicklingError: invalid load key, 'H'

解答

可以贴一下m2的输出不呢?如果m2是日线行情数据,m2连接回测回测模块第三个 借口 回测历史数据,不连第一个。

更新时间:2022-12-20 14:20

data.history报错

问题

在回测模块中是这么写的,data.history(context.symbol(instrument), 'volume', bar_count=6, frequency='1d'),今天之前都是正常能回测的,今天突然间就报错了,data.history的使用方法应该是正确的。

回测开始时间改成2022-01-01之后能正常运行,若回测开始时间在2022年之前,就会出现以下2种错误,麻烦平台的各位老师看一下,谢谢

![{w:100}{w:100}](/wiki/api/attachments.redirect?id=ba55a6f0-bbed-4ed3-ac3f-4bb9f

更新时间:2022-12-20 14:20

在实盘/模拟时,如何在训练模型给出预测信号后,对预测信号中的买入股票按条件进行过滤?

问题

以默认模板为例,要过滤掉预测信号中return_5 低于1.05 的买入股票,要如何在回测模块中实现?

要对原策略信号进行过滤,如果原信号给出是3个股票,过滤掉不符合条件的1个,只剩下2个股票。

\

解答

{w:100}

具体来说,以上图为例。预测信号出来后使用1.连接数据将策略信号与return_5进行连接。 2.数据过滤,筛掉不满足你条件的票。3.排序:将数据按照之前的顺序排列(按score排序,降序)最后进入回

更新时间:2022-12-20 14:20

分页第1页第2页第3页
{link}