历史文档

【历史文档】算子-回测与交易

由polll创建,最终由small_q 被浏览 1818 用户

{{use_style}}

更新

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

新版量化开发IDE(AIStudio):

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

新版模版策略:

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

新版数据平台:

https://bigquant.com/data/home

https://bigquant.com/wiki/doc/dai-PLSbc1SbZX

新版表达式算子:

https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS

新版因子平台:

https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5

\

回测与交易

极速回测(高频)

快速回测引擎,支持高频数据快速回测。不支持模拟交易和实盘。

输入: - input_data:输入数据,包含 date, price(价格), 和 position(仓位)

输出: - data: DataSource,完整交易和绩效数据,可以使用 data.read_df() 读取和查看详细数据。

表名: fastbacktest.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 数据 input_data 通用 数据,必须包含price和position字段 None
输入参数 报表数据显示频率 report_freq str 报表数据显示频率,s=秒,h=小时,d=天,12h表示报表按12小时做resample。用越小的周期数据越多,可能无法完全显示 1h
费率 commission_rate float 费率:小于0.1时表示按金额比例收取,大于等于0.1时表示按手数收取 0.0001
无风险利率 risk_free_rate float 无风险利率 0.0
显示回测结果图表 plot_charts bool 显示回测结果图表 True
轨迹图显示笔数 tick_plot_num int 轨迹图显示笔数 20
持仓动态图显示时间数 time_tick_plot_num int 持仓动态图显示时间数 200
输出端 回测详细数据 data 通用 回测详细数据

多策略回测

多策略组合收益分析。思想是如果策略之间相关性不是很强,将多个策略的回测结果按策略各自分配的权重进行组合。组合的目的是为了平滑资金曲线。

表名:multi_strategy_analysis.v2

类别 显示名称 名称 类型 描述 必填/默认
输入端 策略收益原始数据第1个 (一般自来于 raw_perf_1 通用 策略收益原始数据第1个 (一般自来于 :doc:module_trade 的输出的raw_perf字段) None
策略收益原始数据第2个 (一般自来于 raw_perf_2 通用 策略收益原始数据第2个 (一般自来于 :doc:module_trade 的输出的raw_perf字段) None
策略收益原始数据第3个 (一般自来于 raw_perf_3 通用 策略收益原始数据第3个 (一般自来于 :doc:module_trade 的输出的raw_perf字段) None
输入参数 策略收益原始数据列表 (一般自来于 raw_perfs code 策略收益原始数据列表 (一般自来于 :doc:module_trade 的输出的raw_perf字段) [默认代码](javascript:void(0);)
每个回测结果的权重 weights str 每个回测结果的权重
再平衡周期 rebalance_period int 再平衡周期 0
开始日期 start_date str 开始日期,默认是raw_perfs里的最小日期 None
结束日期 end_date str 结束日期,默认是raw_perfs里的最大日期 None
基准指数 benchmark str 基准指数 000300.SHA
回调函数 prepare code 回调函数,准备数据 [默认代码](javascript:void(0);)
回调函数 initialize code 回调函数,初始化函数 [默认代码](javascript:void(0);)
回调函数 before_trading_start code 回调函数 ,策略交易单位周期开始前执行, I.code_python [默认代码](javascript:void(0);)
初始资金 capital_base float 初始资金 1000000.0
自动取消无法成交订单 auto_cancel_non_tradable_orders bool 自动取消无法成交订单:是否自动取消因为停牌等原因不能成交的订单 True
回测数据频率 data_frequency choice 回测数据频率:日线 (daily),分钟线 (minute) daily
回测价格类型 price_type choice 回测价格类型:真实价格(original),后复权(backward_adjusted) 后复权
回测产品类型 product_type choice 回测产品类型:股票(stock), 期货(future) 股票
显示回测结果图表 plot_charts bool 显示回测结果图表 True
成交率限制 volume_limit float 成交率限制:执行下单时控制成交量参数,默认值2.5%,若设置为0时,不进行成交量检查 0.025
买入点 order_price_field_buy choice 买入点:open=开盘买入,close=收盘买入 open
卖出点 order_price_field_sell choice 卖出点:open=开盘卖出,close=收盘卖出 close
回调函数 handle_data code 回调函数,策略主体逻辑函数 [默认代码](javascript:void(0);)
用户自定义数据 options code 用户自定义数据,在回调函数中要用到的变量,需要从这里传入,并通过 context.options 使用 [默认代码](javascript:void(0);)
输出端 回测结果原始数据 raw_perf 通用 回测结果原始数据

Trade (回测/模拟)

量化交易引擎。支持回测和模拟实盘交易

表名:trade.v4

类别 显示名称 名称 类型 描述 必填/默认
输入端 代码列表 instruments 通用 代码列表,如果提供了 prepare 函数,可以在 prepare 中覆盖此参数提供的值 None
其他输入数据 options_data 通用 其他输入数据:回测中用到的其他数据,比如预测数据、训练模型等。如果设定,在回测中通过 context.options['data'] 使用 None
回测历史数据 history_ds 通用 回测历史数据 None
基准数据 benchmark_ds 通用 基准数据,不影响回测结果 None
交易日历 trading_calendar 通用 交易日历 None
输入参数 开始日期 start_date str 开始日期,设定值只在回测模式有效,在模拟实盘模式下为当前日期,示例:2017-06-01。一般不需要指定,使用 代码列表 里的开始日期
结束日期 end_date str 结束日期,设定值只在回测模式有效,在模拟实盘模式下为当前日期,示例:2017-06-01。一般不需要指定,使用 代码列表 里的结束日期
初始化函数 initialize code 初始化函数,[回调函数] 初始化函数,整个回测中只在最开始时调用一次,用于初始化一些账户状态信息和策略基本参数,context也可以理解为一个全局变量,在回测中存放当前账户信息和策略基本参数便于会话。 [默认代码](javascript:void(0);)
主函数 handle_data code 主函数,[回调函数] 必须实现的函数,该函数每个单位时间会调用一次, 如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次,由于我们现在数据只有日K,所以是按天回调。在回测中,可以通过对象data获取单只股票或多只股票的时间窗口价格数据。如果算法中没有schedule_function函数,那么该函数为必选函数。一般策略的交易逻辑和订单生成体现在该函数中。 [默认代码](javascript:void(0);)
数据准备函数 prepare code 数据准备函数,[回调函数] 准备数据函数,运行过程中只调用一次,在 initialize 前调用,准备交易中需要用到数据。目前支持设置交易中用到的股票列表,设置到 context.instruments。更多 [默认代码](javascript:void(0);)
盘前处理函数 before_trading_start code 盘前处理函数,[回调函数] 每个单位时间开始前调用一次,即每日开盘前调用一次,该函数是可选函数。你的算法可以在该函数中进行一些数据处理计算,比如确定当天有交易信号的股票池。 [默认代码](javascript:void(0);)
成交率限制 volume_limit float 成交率限制:执行下单时控制成交量参数,默认值2.5%,若设置为0时,不进行成交量检查 0.025
买入点 order_price_field_buy choice 买入点:open=开盘买入,close=收盘买入 open
卖出点 order_price_field_sell choice 卖出点:open=开盘卖出,close=收盘卖出 close
初始资金 capital_base float 初始资金 1000000.0
自动取消无法成交订单 auto_cancel_non_tradable_orders bool 自动取消无法成交订单:是否自动取消因为停牌等原因不能成交的订单 True
回测数据频率 data_frequency choice 回测数据频率:日线 (daily),分钟线 (minute) daily
回测价格类型 price_type choice 回测价格类型:前复权(forward_adjusted),真实价格(original),后复权(backward_adjusted) 真实价格
回测产品类型 product_type choice 回测产品类型:股票(stock), 期货(future), 期权(option), 数字货币(dcc) 股票
显示回测结果图表 plot_charts bool 显示回测结果图表 True
只在回测模式下运行 backtest_only bool 只在回测模式下运行:默认情况下,Trade会在回测和实盘模拟模式下都运行。如果策略中有多个M.trade,在实盘模拟模式下,只能有一个设置为运行,其他的需要设置为 backtest_only=True,否则将会有未定义的行为错误 False
用户自定义数据 options doc 用户自定义数据,在回调函数中要用到的变量,需要从这里传入,并通过 context.options 使用 None
基准代码 benchmark str 基准代码,不影响回测结果
输出端 回测详细数据 raw_perf 通用 回测详细数据

TradeX(模块化回测交易)

支持函数模块化的量化交易引擎。无缝支持回测和模拟实盘交易

表名: tradex.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 代码列表 instruments 通用 代码列表,如果提供了 prepare 函数,可以在 prepare 中覆盖此参数提供的值 None
回测历史数据 history_ds 通用 回测历史数据,如果不指定,将根据instruments从系统中读取 None
基准数据 benchmark 通用 基准数据,如果不指定,将使用默认的基准数据。 None
交易日历 trading_calendar 通用 交易日历,如果不指定,将使用默认交易日历 None
initialize处理函数 initialize_functions 通用 initialize处理函数 None
handle_bar处理函数 handle_bar_functions 通用 handle_bar处理函数 None
输入数据 options_data 通用 输入数据:一般用来传入策略中要用到的数据。我们建议策略用到的数据在外面批量计算完成,并通过此参数传入使用,例如模型预测数据等。如果设定,在回测中通过 context.options['data'] 使用 None
输入参数 开始日期 start_date str 开始日期,设定值只在回测模式有效,在模拟实盘模式下为当前日期,示例:2017-06-01。一般不需要指定,使用 证券代码列表 里的开始日期
结束日期 end_date str 结束日期,设定值只在回测模式有效,在模拟实盘模式下为当前日期,示例:2017-06-01。一般不需要指定,使用 证券代码列表 里的结束日期
主函数 handle_data code 主函数,[回调函数] 必须实现的函数,该函数每个单位时间会调用一次, 如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次,由于我们现在数据只有日K,所以是按天回调。在回测中,可以通过对象data获取单只股票或多只股票的时间窗口价格数据。如果算法中没有schedule_function函数,那么该函数为必选函数。一般策略的交易逻辑和订单生成体现在该函数中。 [默认代码](javascript:void(0);)
数据准备函数 prepare code 数据准备函数,[回调函数] 准备数据函数,运行过程中只调用一次,在 initialize 前调用,准备交易中需要用到数据。目前支持设置交易中用到的股票列表,设置到 context.instruments。更多 [默认代码](javascript:void(0);)
初始化函数 initialize code 初始化函数,[回调函数] 初始化函数,整个回测中只在最开始时调用一次,用于初始化一些账户状态信息和策略基本参数,context也可以理解为一个全局变量,在回测中存放当前账户信息和策略基本参数便于会话。 [默认代码](javascript:void(0);)
盘前处理函数 before_trading_start code 盘前处理函数,[回调函数] 每个单位时间开始前调用一次,即每日开盘前调用一次,该函数是可选函数。你的算法可以在该函数中进行一些数据处理计算,比如确定当天有交易信号的股票池。 [默认代码](javascript:void(0);)
成交率限制 volume_limit float 成交率限制:执行下单时控制成交量参数,默认值2.5% 0.025
买入点 order_price_field_buy choice 买入点:open=开盘买入,close=收盘买入 open
卖出点 order_price_field_sell choice 卖出点:open=开盘卖出,close=收盘卖出 close
初始资金 capital_base float 初始资金 1000000.0
自动取消无法成交订单 auto_cancel_non_tradable_orders bool 自动取消无法成交订单:是否自动取消因为停牌等原因不能成交的订单 True
回测数据频率 data_frequency choice 回测数据频率:日线 (daily),分钟线 (minute) daily
回测价格类型 price_type choice 回测价格类型:前复权(forward_adjusted),真实价格(original),后复权(backward_adjusted) 真实价格
回测产品类型 product_type choice 回测产品类型:股票(stock), 期货(future), 期权(option), 数字货币(dcc) 股票
显示回测结果图表 plot_charts bool 显示回测结果图表 True
只在回测模式下运行 backtest_only bool 只在回测模式下运行:默认情况下,Trade会在回测和实盘模拟模式下都运行。如果策略中有多个M.trade,在实盘模拟模式下,只能有一个设置为运行,其他的需要设置为 backtest_only=True,否则将会有未定义的行为错误 False
用户自定义数据 options doc 用户自定义数据,在回调函数中要用到的变量,需要从这里传入,并通过 context.options 使用 None
输出端 回测详细数据 raw_perf 通用 回测详细数据

初始化函数

设置手续费

设置手续费,如果不设置,则使用默认的

表名:trade_func_set_commission.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 前置处理函数 input_functions 通用 前置处理函数 None
输入参数 收费模式 mode choice 收费模式 订单/PerOrder
买入成本 buy_cost float 买入成本,成交额的比例,PerOrder/PerTrade/PerShare都要使用此参数 0.0003
卖出成本 sell_cost float 卖出成本,成交额的比例 0.0013
最小成本 min_cost float 最小成本,绝对值 5
输出端 函数 functions 通用 函数

设置最大杠杆限制

设置资金使用的最大杠杠限制,e.g. 设置最大杠杆限制为2,实际资金是100w,将可以买入200w的股票。一般用于期货或者股票+对冲等策略。需注意正确使用

表名: trade_func_set_max_leverage.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 前置处理函数 input_functions 通用 前置处理函数 None
输入参数 最大杠杆限制 max_leverage float 最大杠杆限制,e.g. 设置最大杠杆限制为2,实际资金是100w,将可以买入200w的股票。一般用于期货或者股票+对冲等策略。需注意正确使用 1
输出端 函数 functions 通用 函数

\

标签

回测交易
评论
  • 有可视化案例吗,是接在特征抽取和回测交易之间吗
{link}