You’re right, the error message is ultimately calendar-related. Pipeline is calculated each day, and if the NYSE calendar thinks it’s a trading day but all the values are nan that day because it was actually a holiday on ASX (or other non-NYSE exchange), the pipeline will choke with this error. To be precise, this could happen due to any gap in the data, not just due to holidays.
There are a couple solutions.
First, I think nan values should be forward-filled during ingestion. Nan volume should be filled with 0, and nan open/high/low/close should be forward-filled with the last available close. This solution will work for any data gaps regardless of whether they’re calendar-related. We’re about to release an update with this behavior.
Second, it would be good for zipline to support more calendars, as having a correct calendar is still preferable to forward filling. We plan to add more calendars in the future, but you could implement one sooner by looking at the existing calendar implementations and making a pull request to our fork of Zipline (or to Zipline itself but we’ll probably merge it faster than they will). Zipline has a page documenting custom calendar creation.
Regarding the nans during ingestion, I confirmed that this is usually harmless and expected, and is unrelated to the backtest/pipeline error. Zipline warns about any missing days for any symbols in your data. So anytime the data for a symbol doesn’t go back as far as the calendar, you’ll get these warnings.