VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 10
声望: 0

self.am = ArrayManager(10)

请教一下,我现在回测一个策略,里面用到rsi指标(用的是vnpy自带的用talib生成的rsi指标)。现在发现:self.am的初始化长度,对回测结果影响很大。

原因我理解是:

  1. talib的rsi指标是路径依赖的,初始化长度,会影响回测期间的rsi指标值(虽然大致会差不多,但在用rsi指标突破阈值作为开平仓的时候还是影响比较明显);
  2. 我的策略里还带了一些浮动止盈的机制。这样初始化时间长度不一样,会导致回测的初始持仓不同。然后浮动止盈机制又会导致后续持仓都不一样。比如都是从2022/1/1开始回测,preload 5天和20天,会生成不同的2022/1/21的持仓(因为preload 5天的情况下,1/21可能已经止盈了,但preload 20天的时候,只是刚刚开始判断是否开仓)。

所以想请教一下,怎么解决这个初始化长度不同产生的回测影响?
(或者说,如果不好解决的话,是不是意味着这种策略的稳定性本身就不行?)

谢谢

Member
avatar
加入于:
帖子: 1909
声望: 142

ArrayManager用更长窗口即可,只要缓存数据足够长talib.RSI的计算结果也能几乎收敛稳定

Member
avatar
加入于:
帖子: 10
声望: 0

MTF wrote:

ArrayManager用更长窗口即可,只要缓存数据足够长talib.RSI的计算结果也能几乎收敛稳定

明白了,谢谢大佬

Member
avatar
加入于:
帖子: 4
声望: 0

你设置太短的时候,可能数据不够用。根据你的参数估算你需要的窗口就好了

Member
avatar
加入于:
帖子: 5615
声望: 340

你提到的初始化长度对回测结果的影响确实是一个常见的问题,尤其是在使用路径依赖的技术指标(如RSI)时。以下是一些解决这个问题的建议:

1. 增加初始化长度

  • 你可以尝试增加ArrayManager的初始化长度,以确保在回测开始时,技术指标(如RSI)已经稳定。通常,建议将初始化长度设置为指标计算所需的最大窗口长度的2-3倍。例如,如果你的RSI窗口长度为14,可以将ArrayManager的长度设置为30或40。

    self.am = ArrayManager(40)  # 假设RSI窗口长度为14
    

2. 使用预热期

  • 在策略开始回测之前,设置一个预热期(warm-up period),在这段时间内不进行交易,只用于计算和稳定技术指标。这样可以确保在回测正式开始前,所有指标都已经基于足够的历史数据进行了计算。

    def on_init(self):
      self.am = ArrayManager(40)  # 初始化长度
      self.warm_up_period = 30    # 预热期长度
      self.load_bar(self.warm_up_period)  # 加载预热期数据
    

3. 忽略初始化阶段的数据

  • 在策略中增加逻辑,忽略初始化阶段的数据,直到ArrayManager中的数据足够稳定。可以通过检查ArrayManagerinited属性来判断是否已经初始化完成。

    def on_bar(self, bar: BarData):
      self.am.update_bar(bar)
      if not self.am.inited:
          return  # 忽略初始化阶段的数据
      # 正常策略逻辑
    

4. 参数敏感性分析

  • 进行参数敏感性分析,评估不同初始化长度对策略绩效的影响。如果策略对初始化长度非常敏感,可能需要重新评估策略的稳定性,或者考虑使用其他不依赖于历史路径的指标。

5. 策略稳定性评估

  • 如果策略对初始化长度非常敏感,可能意味着策略本身存在一定的稳定性问题。在这种情况下,建议重新审视策略逻辑,考虑是否可以通过其他方式(如使用不同的技术指标或调整交易规则)来提高策略的稳定性。

总结

初始化长度对回测结果的影响是可以通过增加初始化长度、设置预热期、忽略初始化阶段数据等方式来缓解的。如果策略对初始化长度非常敏感,可能需要重新评估策略的稳定性,并考虑进行参数敏感性分析。

希望这些建议对你有所帮助!

 
-- 以上回答来自VeighNa AI
 

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】