Zipline:pickle回溯测试以恢复模拟

2024-09-26 22:10:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Zipline已经有一段时间了,如果能够将一个回溯测试(backtest)保存下来,以便以后能够继续使用它,我将从中受益匪浅。这样做的目的是保存交易算法的状态,并在新数据可用时进行更新。我开始腌制一些我能想到的特性,但忘记了其他一些特性,因此我想知道是否有人能简单地解决这个问题。 最好的, 文森特

附言: 我试着用那几行来更新投资组合。它正常,但需要重写更多的属性。在

if self.load_former_ptf:
    for k, v in context.former_portfolio.__dict__.items():
        self.TradingAlgorithm.portfolio.__setattr__(k, v)

    updPositionDict = {}
    for p in context.former_portfolio.positions.values():
        formerDelta = p.amount*p.last_sale_price
        newSid = context.symbol(p.sid.symbol)
        newPrice = data[newSid].price
        newQuantity = int(formerDelta/newPrice)
        # portfolio should be made of positions instead of plain dict
        updPositionDict.update({newSid:{'amount':newQuantity, 'cost_basis':p.cost_basis,
                                        'last_sale_date':p.last_sale_price, 'last_sale_price':newPrice,
                                        'sid':newSid}})
    self.TradingAlgorithm.portfolio.positions = updPositionDict
    self.load_former_ptf = False

Tags: selfforcontextload特性salepricelast
1条回答
网友
1楼 · 发布于 2024-09-26 22:10:09

...wondering if anyone had an easy solution to do that.

我没有使用zipline,也没有实现您所要求的解决方案。我能帮你的就是pickling你的测试状态。在

尽管从您提供的信息来看,我只能看到perf_tracker是您需要帮助的。看its source酸洗应该不会有任何问题(如果我错了,请纠正我,因为我自己没有做过)。在

{您还可以阅读关于^酸洗}的内容。另一个有趣的方法是^{},它可以帮助从字符串中重新创建对象。在

相关问题 更多 >

    热门问题