¿Alguna vez te has preguntado por qué algunos sistemas de trading procesan millones de operaciones sin despeinarse mientras otros colapsan con unos miles?
La respuesta a menudo está en una decisión fundamental: Events vs Streams.
Events (Eventos)
Los eventos son ocurrencias discretas e individuales:
[Order Placed] → [Order Filled] → [Position Updated]
↓ ↓ ↓
Timestamp Timestamp Timestamp
Ventajas:
• Fácil debugging - cada evento es rastreable
• Perfecto para auditoría y compliance
• Ideal para procesos con estado definido
• Menor complejidad inicial
Desventajas:
• Mayor latencia en sistemas de alto volumen
• Overhead por cada evento individual
• Puede generar "event storms"
Streams (Flujos)
Los streams son flujos continuos de datos:
[Market Data Stream]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━>
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
Tick Tick Tick Tick Tick Tick Tick
Ventajas:
• Ultra-baja latencia
• Procesamiento en batch eficiente
• Ideal para datos de mercado en tiempo real
• Backpressure handling nativo(Mecanismo para evitar que un sistema se sobrecargue cuando la producción de datos supera
la capacidad de consumo)
Desventajas:
• Debugging más complejo
• Requiere manejo sofisticado de errores
• Mayor curva de aprendizaje
En el mundo real del HFT:
Usamos EVENTS para:
• 📝 Órdenes individuales
• ✅ Confirmaciones de trades
• 🔔 Alertas de riesgo
• 📊 Cambios de posición
Usamos STREAMS para:
• 📈 Market data (Level 1, Level 2, Level 3)
• 📉 Price feeds continuos
• 🌡️ Métricas de rendimiento en tiempo real
• 📡 Telemetría del sistema
💡 El patrón híbrido ganador:
// Stream para datos de mercado
marketDataStream
.window(Duration.ofMillis(100))
.aggregate(VWAPCalculator::new)
.filter(signal -> signal.strength > threshold)
// Convertir a evento cuando hay señal
.map(signal -> new TradingEvent(signal))
.publish(eventBus);
// Events para ejecución
eventBus.on(TradingEvent.class)
.subscribe(orderExecutor::execute);
🔗 Si te interesa ver estas arquitecturas en acción, estamos implementando ambos patrones en OpenHFT Lab: github.com/ctj01/OpenHFT-Lab-High-Frequency-Trading-Laboratory
¡Contributions welcome! 🙌
Top comments (0)