我已经使用 Zipline 一段时间了,并且可以从能够腌制回测中受益匪浅,以便以后能够恢复它。这个想法是保存交易算法的状态并在新数据可用时更新它。我开始挑选一些我能想到的属性,但忘记了其他一些属性,因此想知道是否有人有一个简单的解决方案来做到这一点。最好的,文森特
PS:我尝试用那几行更新投资组合。一切正常,但需要覆盖更多属性。
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