我对Zipline交易日历有不稳定/奇怪的结果。在一台使用Python 3.4.2x64和Zipline 0.7.42的机器上,我可以运行以下代码:
trading.environment = TradingEnvironment(bm_symbol='^FTSE', exchange_tz='Europe/London')
Holidays = list(set(tradingcalendar_lse.non_trading_days)-set(data.index))
trading.environment.trading_days = pd.date_range(start=trading.environment.trading_days[0],
end=trading.environment.trading_days[-1],
freq=pd.tseries.offsets.CDay(holidays=Holidays))
freq = trading.environment.trading_days.freq
trading.environment.trading_days = trading.environment.trading_days + data.index
trading.environment.trading_days.freq = freq
trading.environment.open_and_closes = pd.DataFrame(index=trading.environment.trading_days +
data.index,columns=["market_open","market_close"])
trading.environment.open_and_closes.market_open = (trading.environment.open_and_closes.index +
pd.to_timedelta(60*7,unit="T")).to_pydatetime()
trading.environment.open_and_closes.market_close = (trading.environment.open_and_closes.index +
pd.to_timedelta(60*15+30,unit="T")).to_pydatetime()
它源于:zipline backtesting using non-US (European) intraday data
这可能有点多余,但是我可以拥有所有数据日期的历史记录(在一台机器上)。
我正在尝试在应该具有相同配置的另一台计算机上运行相同的代码并获取错误:
AttributeError: can't set attribute
1)是否有人知道导致此错误的我的配置会有什么不同?
2)是否有人有更强大的解决方案来调整日历,以便我的所有日期都在历史记录中?
非常感谢
答案 0 :(得分:0)
我花了一点时间在这上面。 trading.environment.trading_days实际上是一个DatetimeIndex,它应该是不可变的,所以尝试设置freq不是一个好方法。 DatetimeIndex有更适合做我想要的方法。话虽这么说,我不能用方法......
重现我的初始输出