Different sids for same asset in securities master

While comparing my backtest performance vs. live results, I came across a few assets that appeared in my zipline pipeline (generated from the usstock-minute bundle) but could not be streamed from IBKR due to missing 'ibkr_ConId'.

Digging further, I found that most of these assets actually do have a ConId but are listed in securities master under a different sid. Here's a list of such occurrences (not exhaustive, just the ones I came across). For each pair of sids with the same symbol, one has info for the 'usstock_' fields, and the other has info for the 'ibkr_' and 'alpaca_' fields.

Is there an easy way to fix this?

The docs explain why you cannot expect perfect alignment between data providers: Usage Guide

I understand why these discrepancies btw vendors may exist. What I was hoping for was a way to correct the ibkr_ConId (or alpaca_AssetId) field of the securities master (case by case, if necessary), so that when these assets come out of the zipline live pipeline, their real-time prices can be streamed.

Maybe clearer with an example:

  • When the live strategy runs the zipline pipeline, ODP (Office Depot) will come out as sid FIBBG000CNZC55 (reference the screenshot above).
  • When I send this sid to collect_market_data(), it won't work because this record in the securities master doesn't have an ibkr_ConId.
  • The needed ConId is actually under sid FIBBG00R24W7X2, which the zipline strategy will not recognize, because it's not in the usstock bundle

As it stands, there is no way for me to manually correct these discrepancies even when I've identified them.