NanoMatch
NanoMatch es un libro de órdenes limitadas y motor de cruce en C++20 moderno. Simula las operaciones centrales de una bolsa, cruzando órdenes de compra y venta por prioridad de precio y tiempo a millones de operaciones por segundo.
01 / Resumen
- 01C++20
- 02CMake 3.20+
- 03Google Test 1.17
- 04GitHub Actions CI/CD
- 05AddressSanitizer
- 06UBSan
Problema
Las bolsas necesitan cruzar órdenes con latencias muy bajas. Entender el motor a nivel de sistemas requiere construirlo desde cero con restricciones reales de rendimiento.
Resumen de la solución
- Cruce por prioridad de precio y tiempo FIFO, con órdenes Limit, Market, IOC y FOK.
- Cancelación y modificación O(1) mediante índices de tabla hash.
- Asignador de pool que elimina asignaciones de heap en la ruta crítica.
- Soporte de varios instrumentos con libros independientes por símbolo.
02 / Evidencia
Pruebas y verificación
- Rendimiento: 1M+ órdenes/segundo, benchmark sintético de un solo hilo.
- Suite completa con benchmarks de latencia p50/p99.
- 60+ pruebas unitarias en 18 suites, todas superadas.
- ASan, UBSan, cppcheck y clang-format en CI con cada push.
03 / Métodos
Construcción
Tecnologías
- C++20
- CMake 3.20+
- Google Test 1.17
- GitHub Actions CI/CD
- AddressSanitizer
- UBSan
- Cruce por prioridad de precio y tiempo FIFO.
- 4 tipos: Limit, Market, IOC y Fill-or-Kill.
- Cancelación y modificación O(1) mediante tabla hash.
- Asignador de pool propio que elimina la sobrecarga de heap.
Seguro
- AddressSanitizer y UndefinedBehaviorSanitizer en CI.
- 60+ pruebas unitarias en 18 suites.
- Análisis estático cppcheck con cada push.
- Sin dependencias externas en ejecución.