Anyway, to answer your question, you would make an algo with several equivalent ETFs in a list, and use Pipeline to calculate some sort of adjustment factor for each to normalize their prices (since they may split/pay dividends at different times, and this can be a significant complication). Alternatively, you could assume that their opening prices were all correct, then track their relative returns-since-open, and place the spread trades based on deviations in those returns.
But, to be honest, you'll be trying to calculate all this from unknowably-sparse trade data, unknowably-aggregated into one-minute bars, and you won't be able to adjust your orders except every minute, so to capture a hypothetical deviation reliably, you'll need to use market orders or you'll only get executed on one leg at the worst time, and then you'll pay four slippages per round trip of a deviation that is, best case, 10bp, so you'll need your execution costs to be under 2bp, and everything else is going to drown out that edge.
There might still be an opportunity to do this sort of thing in less liquid ETFs, but even that I wouldn't dare attempt on Quantopian, I'd want at least Level 1 quote data and co-located machine to execute.