Benchmarks de rendimiento

Resultados medidos, no afirmaciones de marketing. Los benchmarks detallados se publicarán junto con el lanzamiento v1.0.

StratForge vs backtesting Python

Comparación directa en operaciones centrales de backtest.

MétricaPythonStratForgeMejora
Indicador individual (por barra)Por definirPor definirPor definir
Paso de estrategiaPor definirPor definirPor definir
Backtest completo (1M barras)Por definirPor definirPor definir
ThroughputPor definirPor definirPor definir
Huella de memoriaPor definirPor definirPor definir

Camino de optimización

Cómo StratForge acumula optimizaciones a lo largo del pipeline de backtest.

Fase 1: Almacenamiento columnar de barrasPor definir

Las barras se almacenan en buffers columnares amigables con la caché. Los cálculos de indicadores fluyen a través de memoria contigua en lugar de perseguir punteros.

Fase 2: Indicadores incrementalesPor definir

Cada indicador mantiene estado interno y se actualiza en O(1) por barra. Sin recálculo de ventana deslizante.

Fase 3: Rutas de decisión sin ramasPor definir

La lógica de entrada/salida de estrategia se reescribe como aritmética sin ramas cuando es posible para evitar paradas del pipeline en código condicional de precios.

Fase 4: Especialización en tiempo de compilaciónPor definir

Los parámetros de indicadores conocidos en tiempo de compilación se vuelven consteval. Las plantillas especializadas eliminan el despacho en tiempo de ejecución.

Prueba de cero asignaciones

Ejecutando un pase de backtest en la ruta crítica.

OperaciónBacktester PythonStratForge
Asignaciones en heapMuchas (objetos Python por barra)0
Almacenamiento de barrasCopias de DataFrame de pandasVistas std::span en buffer columnar
Estado de indicadorAsignación de array por llamadaEstado rotativo preasignado
Huella de memoriaDinámico, dirigido por GCEstático, preasignado
DeterminismoDeriva de punto flotante entre ejecucionesReproducible bit a bit

Comparación de técnicas

Decisiones de diseño que se acumulan para un backtesting determinístico y de baja latencia.

TécnicaBacktester PythonStratForge
Disposición de memoriaOrientado a filas (DataFrame)Columnar (amigable con caché)
Actualizaciones de indicadoresRecalcular ventana cada llamadaIncremental O(1) por barra
Despacho de bucleBucle Python interpretadoBucle de plantilla C++ en línea
Determinismo numéricoDependiente de versión NumPy / pandasReproducible bit a bit entre ejecuciones
Composición de estrategiaJerarquía de clases + despacho dinámicoConcepts + polimorfismo estático
Manejo de erroresExcepcionesstd::expected (sin throw)

Influencias arquitectónicas

Bibliotecas y frameworks líderes en la industria estudiados durante el diseño de StratForge.

BibliotecaLo que aprendimosLo que construimosResultado
TA-LibDefiniciones canónicas de indicadores y manejo de casos límiteBiblioteca de indicadores solo header en C++23138 indicadores
vectorbtAPI de backtest vectorizado y barridos de parámetrosExpansión de parámetros por plantilla en tiempo de compilaciónPor definir
backtraderCiclo de vida de estrategia y hooks de eventosInterfaz de estrategia basada en conceptsCiclo de vida con tipos seguros
QuantLibArquitectura modular de precios y analíticaMódulos de analítica conectablesPor definir
EigenPlantillas de expresión para matemáticas sin overheadComposición perezosa de indicadoresSin buffers temporales
ArrowEstándares de disposición de memoria columnarAlmacenamiento nativo columnar de barrasAmigable con línea de caché
FollyPrimitivos sin bloqueo y small_vectorDiarios de operaciones preasignadosPor definir
HighwayAbstracción SIMD portableBucles internos de indicadores compatibles con SIMDPor definir
fmtCadenas de formato en tiempo de compilaciónFormateo de informes sin costoPor definir
Boost.PMRBuffer monótono para asignación de arenaPool std::pmr::monotonic_buffer_resourceCero asignaciones en heap
Catch2Tests unitarios de indicadores estilo BDDSuite de regresión bit a bitCI reproducible

¿Listo para probar StratForge?

Tres comandos para clonar y empezar a hacer backtest.

git clone https://github.com/StratCraftsAI/StratForge.git cd StratForge ./start.sh build