The mess of -USD and -USDC pairs

When you get all asset pairs via the /products REST endpoint, you get both USD and USDC pairs, e.g. BTC-USD and BTC-USDC. Their statistics including 24-hour volume are exactly the same, so they are actually from the same orderbook? Why list 2 pairs then?

Additionally, when you subscribe to any websocket channel for BTC-USDC, then the resulting stream actually mentions the pair as “BTC-USD”!
As such, if you subscribe to both BTC-USD and BTC-USDC on a websocket, you will get the same BTC-USD stream twice! This leads to all kind of implementation problems. So beware!

So is this issue consistent for all pairs? No! The only exception is USDT-USDC, which actually gets you a USDT-USDC websocket stream and not USDT-USD.

I guess it should be possible to filter out / ignore all products that has non empty alias field!?

2 Likes

Hi @Darrow! Thank you for sharing this. For now this is an issue and we understand this.
You can try the below mentioned ways to somewhat mitigate the problem:

1. Filtering out or ignoring products with non-empty alias fields: You can filter out or ignore products with non-empty alias fields to avoid duplicating data or receiving incorrect information. This approach may help you avoid issues related to receiving the same BTC-USD stream twice when subscribing to both BTC-USD and BTC-USDC on a WebSocket.

2. Using a single pair: If possible, choose to work with a single pair (e.g., BTC-USD) instead of both USD and USDC pairs. This may simplify your implementation and reduce the likelihood of encountering issues related to duplicating data or incorrect WebSocket streams.

3. Monitoring and handling duplicates: If you cannot avoid working with both USD and USDC pairs, monitor the duplicates and handle them accordingly. For example, you can compare the incoming data from both pairs and decide how to handle the duplicates, such as discarding one of the streams or combining the data from both pairs.

We hope this helps.