我使用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
我没有使用
zipline
,也没有实现您所要求的解决方案。我能帮你的就是pickling
你的测试状态。在尽管从您提供的信息来看,我只能看到
perf_tracker
是您需要帮助的。看its source酸洗应该不会有任何问题(如果我错了,请纠正我,因为我自己没有做过)。在{您还可以阅读关于^酸洗}的内容。另一个有趣的方法是^{} ,它可以帮助从字符串中重新创建对象。在
相关问题 更多 >
编程相关推荐