One limit to call out: a WebSocket connection does not guarantee a gap-free tick archive. Reconnects can lose updates, and sorting by timestamp cannot restore missing ticks. I would retain provider sequence IDs when available, log disconnect windows, and mark each reconstructed candle with a completeness flag. That lets a backtest exclude or inspect the affected interval instead of treating the cleaned stream as complete.