PDF下载 下载

回测

阅读 3745
- 回测投研的业务规则
支持品种
  • 股票(A股和B股)、期货、场内基金、可转债
撮合机制
  • 回测限价撮合,按照委托价格撮合

  • 回测市价撮合模式如下:

  • backtest_match_mode为run()里的市价撮合模式参数
  • 有订阅行情

    1. 多频度行情订阅时,取最小频度行情撮合

    2. backtest_match_mode = 0(默认)撮合规则:
      1) 以tick频度撮合时,取当前时间下一笔tick价格撮合。
      2) 以bar频度(包含日频), 取当前时间下一根bar开盘价撮合。

    3. backtest_match_mode = 1 撮合规则:
      1) 以tick频度撮合时,取当前时间点的tick价格撮合,如当前时间点没有tick, 取下一笔tick价格撮合。
      2) 以bar频度(包含日频), 取当前时间的bar收盘价撮合,如当前时间点没有bar, 取下一根bar收盘价撮合。

  • 不订阅行情
    backtest_match_mode = 0 以下一天的开盘价撮合。
    backtest_match_mode = 1 以当天收盘价撮合。

结算规则
  • 交易结算,根据交易变动结算账户的资金和持仓数据

  • 盘后结算,盘后校验账户全天交易数据

手续费规则
  • 手续费按双边收取,不区分交易品种,只能设置佣金比例
分红配送
  • 不支持分红配送,可设置前复权模式,回测的数据经过复权处理,不需要计算分红配送
委托校验
  • 支持委托校验,开仓验资\平仓验券\标的代码\合法性校验, 不支持价格和成交量校验
资金调整
  • 不支持对账户资金的转入转出
挂单冻结
  • 不支持挂单冻结,下单会立刻成交
条件单
  • 不支持条件单
  • 不支持预埋单

 

- 回测模式市价单以什么价格成交?

有订阅行情

  • 多频度行情订阅时,取最小频度行情撮合。
  • match_mode = 0(默认)撮合规则:
    • 以tick频度撮合时,取当前时间下一笔tick价格撮合;
    • 以bar频度(包含日频), 取当前时间下一根bar开盘价撮合。
  • match_mode = 1 撮合规则:
    • 以tick频度撮合时,取当前时间点的tick价格撮合,如当前时间点没有tick, 取下一笔tick价格撮合;
    • 以bar频度(包含日频), 取当前时间的bar收盘价撮合,如当前时间点没有bar, 取下一根bar收盘价撮合。

不订阅行情

  • match_mode = 0 以下一天的开盘价撮合。
  • match_mode = 1 以当天收盘价撮合。

 

- 回测模式下市价单,是复权还是不复权价格?
  • 按照run中指定的复权方式计算,持仓均价计算亦如此。

 

- 复权回测模式下限价单,委托价格price如何设置合理?
  • 回测限价单撮合是按照委托价格price撮合
  • 建议使用订阅行情数据,tick的price或者bar的close。
  • 没有订阅行情,限价单的委托价格price可以通过history,history_n接口获取时,需要将复权基点时间参数adjust_end_time设置为与run函数回测结束时间参数backtest_end_time一致,否则限价单的成交价为非统一口径复权价格,导致回测结果失真。

 

- 回测中股票今天买入的也能卖?
  • 是的。回测目前不限制今昨仓,今天的买的今天可以卖,卖出需要计算下昨仓(position里的volume总仓减去volume_today今仓), 股票期货均是如此逻辑。仿真和实盘状态下会有限制。

 

- 回测中股票超过涨跌停价格也能成交?
  • 回测对股票成交价格没有限制,策略需要保证下合法的委托价格。

 

- 回测时复权价格是如何计算得来的?
  • 在回测模式下,当run()的backtest_adjust参数设置为 1 时,掘金推送的情行价格采用定点前复权,即以回测结束时间为基点,向前做复权。
  • 假设回测中t时间点的真实价格为P[t], 复权因子为 A[t], 回测结束时间点的复权因子为A[end],那么t时刻复权后价格:P[t]_adj = P[t] * A[t] / A[end]
  • 后复权价格根据复权因子计算公式:P[t]_adj = P[t] * A[t]

 

- 为什么回测时推送的复权价格和行情软件上看到的不一样?
  • 回测时复权的时间基准是回测指定的结束时间(backtest_end_time,参见run),相当于行情软件中的定点复权,通常看行情时用的是前复权不复权,因此有时侯会不一样。

 

- 回测缓存的订阅数据在哪里?
  • 策略文件同一目录下的gmcache文件夹中。

 

- 如何提高回测效率?
  • 使用订阅行情方式, 每次回测会缓存相应的行情数据,方便下次使用相同回测参数,效率会提升。

 

- 回测怎么跳过停盘日期呢?
  • 停牌时是没有数据的,如果是订阅行情,用on_bar或者是on_tick事件的话就相当于跳过停牌日期了。

 

- 为什么回测订阅日线,成交时间是15:15?
  • 国债期货是一直到15:15都可以交易,为了对齐时间,统一15:15成交。

 

- 收盘后可以回测当天的数据吗?还是当天只能实时模式?
  • 收盘后可以回测当天,但是日线数据要5点左右才会更新,其他频率的可以。
0 篇笔记