Resultados medidos, no afirmaciones de marketing. Los benchmarks detallados se publicarán junto con el lanzamiento v1.0.
Comparación directa en operaciones centrales de backtest.
| Métrica | Python | StratForge | Mejora |
|---|---|---|---|
| Indicador individual (por barra) | Por definir | Por definir | Por definir |
| Paso de estrategia | Por definir | Por definir | Por definir |
| Backtest completo (1M barras) | Por definir | Por definir | Por definir |
| Throughput | Por definir | Por definir | Por definir |
| Huella de memoria | Por definir | Por definir | Por definir |
Cómo StratForge acumula optimizaciones a lo largo del pipeline de backtest.
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.
Cada indicador mantiene estado interno y se actualiza en O(1) por barra. Sin recálculo de ventana deslizante.
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.
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.
Ejecutando un pase de backtest en la ruta crítica.
| Operación | Backtester Python | StratForge |
|---|---|---|
| Asignaciones en heap | Muchas (objetos Python por barra) | 0 |
| Almacenamiento de barras | Copias de DataFrame de pandas | Vistas std::span en buffer columnar |
| Estado de indicador | Asignación de array por llamada | Estado rotativo preasignado |
| Huella de memoria | Dinámico, dirigido por GC | Estático, preasignado |
| Determinismo | Deriva de punto flotante entre ejecuciones | Reproducible bit a bit |
Decisiones de diseño que se acumulan para un backtesting determinístico y de baja latencia.
| Técnica | Backtester Python | StratForge |
|---|---|---|
| Disposición de memoria | Orientado a filas (DataFrame) | Columnar (amigable con caché) |
| Actualizaciones de indicadores | Recalcular ventana cada llamada | Incremental O(1) por barra |
| Despacho de bucle | Bucle Python interpretado | Bucle de plantilla C++ en línea |
| Determinismo numérico | Dependiente de versión NumPy / pandas | Reproducible bit a bit entre ejecuciones |
| Composición de estrategia | Jerarquía de clases + despacho dinámico | Concepts + polimorfismo estático |
| Manejo de errores | Excepciones | std::expected (sin throw) |
Bibliotecas y frameworks líderes en la industria estudiados durante el diseño de StratForge.
| Biblioteca | Lo que aprendimos | Lo que construimos | Resultado |
|---|---|---|---|
| TA-Lib | Definiciones canónicas de indicadores y manejo de casos límite | Biblioteca de indicadores solo header en C++23 | 138 indicadores |
| vectorbt | API de backtest vectorizado y barridos de parámetros | Expansión de parámetros por plantilla en tiempo de compilación | Por definir |
| backtrader | Ciclo de vida de estrategia y hooks de eventos | Interfaz de estrategia basada en concepts | Ciclo de vida con tipos seguros |
| QuantLib | Arquitectura modular de precios y analítica | Módulos de analítica conectables | Por definir |
| Eigen | Plantillas de expresión para matemáticas sin overhead | Composición perezosa de indicadores | Sin buffers temporales |
| Arrow | Estándares de disposición de memoria columnar | Almacenamiento nativo columnar de barras | Amigable con línea de caché |
| Folly | Primitivos sin bloqueo y small_vector | Diarios de operaciones preasignados | Por definir |
| Highway | Abstracción SIMD portable | Bucles internos de indicadores compatibles con SIMD | Por definir |
| fmt | Cadenas de formato en tiempo de compilación | Formateo de informes sin costo | Por definir |
| Boost.PMR | Buffer monótono para asignación de arena | Pool std::pmr::monotonic_buffer_resource | Cero asignaciones en heap |
| Catch2 | Tests unitarios de indicadores estilo BDD | Suite de regresión bit a bit | CI reproducible |
Tres comandos para clonar y empezar a hacer backtest.
git clone https://github.com/StratCraftsAI/StratForge.git
cd StratForge
./start.sh build