It seems, though, that I'm doing something wrong: I'm getting negative volumes in my depth data after a while.
Actually the negative values are cancelled orders.
Another point I'm unclear on: How can I possibly ensure that the timepoint of my request of the initial depth table and the starting timepoint of the websocket depth change messages match?
I'm also wondering the same thing. I think you can't unless the API send the complete data first.
I'm trying to do a realtime order book but it's currently very hard due to dark pool and sync issues.