Saltar al contenido

Las 201, excelentes con PineForge; 137 con PyneCore

36× más rápido que PyneCore, en la mediana

ExcelenteFuerteModeradoDébilMínimoSin lista de operaciones
Corpus abiertoCorpus abierto, 100 estrategiasScripts cerradosScripts cerrados de la comunidad, 101, nombres no publicados

Toca o arrastra sobre el gráfico para ver cualquier punto.

Fuente: summary.md, pineforge-engine 6b45f510, comparativa del 2026-09-29.

El gráfico en formato de tabla

Un tramo por estrategia, en el mismo orden en todas las líneas: cada caída es una estrategia calificada por debajo de excelente y, cuanto más profunda es, más baja es su calificación.

CalificaciónPineForgePyneCore
Excelente201137
Fuerte046
Moderado012
Débil04
Mínimo01
Sin lista de operaciones01
Cómo se mide

Fuente: benchmarks/results/summary.md en pineforge-engine, commit 6b45f510: la comparativa del 2026-09-29 con el motor 35db01c8 y PyneCore 6.10.3. El motor v1.10.0 se publicó después y los niveles no se volvieron a medir con esa versión.

Todas las cifras de esta página salen de la comparativa del repositorio de código abierto pineforge-engine: 201 estrategias sobre la misma serie de ETHUSDT de 15 minutos con 53.929 barras, con las operaciones de cada motor evaluadas frente a la lista de operaciones que exportó TradingView. Las 100 estrategias del corpus abierto se reproducen desde un clon limpio con bash benchmarks/run_all.sh y sin claves de API.

Los niveles siguen los criterios canónicos del motor, definidos en scripts/verify_corpus.py. Excelente exige el mismo número de operaciones, precios de entrada y salida con un margen del 0,01 % y P&L con un margen del 1 %, ambos en el percentil 90, y que al menos el 99 % de las operaciones de TradingView estén emparejadas. Sólido admite una diferencia de menos del 6 % en el número de operaciones, entradas con un margen del 0,1 %, salidas del 0,5 % y P&L del 100 %, con al menos un 95 % de operaciones emparejadas. Las estrategias con salidas trail_* usan el perfil de producción: salidas con un margen del 0,05 % y P&L del 100 %. Moderado, débil y mínimo van bajando a partir de ahí. Para el nivel excelente, cuando TradingView muestra dos o más Signals de entrada distintos en el mismo instante exacto, al mismo precio y en la misma dirección, el motor muestra allí el mismo número de entradas distintas (identidad de entradas distintas).

vectorbt: Las 13 estrategias con una adaptación a vectorbt escrita a mano. Excelente 4Fuerte 6Moderado 2Débil 1

Cada marca es una de las 200 estrategias cronometradas en ambos motores, situada según su aceleración exacta en escala logarítmica. Cómo lo medimos: PineForge en el mismo proceso con Google Benchmark y la lupa de barras activada; PyneCore 6.10.3 como subproceso, por lo que su tiempo transcurrido incluye el arranque del intérprete. Una instancia AWS c7a.8xlarge (AMD EPYC 9R14, 32 núcleos, SMT desactivado) bajo Ubuntu 24.04, con cada proceso de medición anclado a núcleos fijos; motor 35db01c8, 2026-09-29, una serie de ETHUSDT de 15 minutos con 53.929 barras. El motor v1.10.0 se publicó después y los tiempos no se volvieron a medir con esa versión. Consulta el benchmark completo.

Dónde difieren las calificaciones

  1. analyzer-parity-percent-of-equity-sizing-01

    tamaño por porcentaje del capital

    PineForge
    excelente (57 / 57)
    PyneCore
    sólido (57 / 57)
  2. mtf-triple-tf-macd-hist-confluence-01

    multitemporalidad (request.security)

    PineForge
    excelente (24 / 24)
    PyneCore
    moderado (22 / 22)
  3. ta-str-match-regex-filter-01

    filtro por expresión regular con str.match

    PineForge
    excelente (1.916 / 1.916)
    PyneCore
    débil (1.514 / 1.917)
Cómo se mide

PyneCore 6.10.3 deja 63 de las 201 estrategias por debajo de excelente y en 1, cuyo código fuente rechaza el compilador de PyneSys, no genera ninguna lista de operaciones. El informe del benchmark identifica las causas. En 32, el fallo está solo en el P&L (16) o solo en el número de operaciones (16), y sus ejecuciones coinciden con las de TradingView: el bróker de PyneCore opera desde la primera barra de la serie, cinco meses antes de que empiece el rango de TradingView, así que, con el tamaño calculado como porcentaje del capital, capitaliza un P&L que TradingView nunca tuvo, y una posición que ya está abierta al inicio del rango añade una operación en ese borde. De los 9 scripts multitemporalidad que una versión anterior de PyneCore solo reproducía en parte, 4 pasan a excelente gracias a las correcciones en request.security; otros 4 siguen reproduciendo entre el 41,6 % y el 91,7 % del historial de TradingView. Además, 3 bots de grid se desvían al liquidar posiciones en orden FIFO, un filtro por expresión regular con str.match se queda en débil y el resto falla en otros umbrales. Tres ejemplos del corpus abierto:

analyzer-parity-percent-of-equity-sizing-01: Las ejecuciones de PyneCore coinciden con las de TradingView: sus precios de entrada y de salida concuerdan en el percentil 90. Su P&L difiere un 2,05 % en el percentil 90 porque su bróker empezó a operar cinco meses antes del rango de TradingView, así que, con el tamaño calculado como porcentaje del capital, ya había capitalizado un P&L que TradingView nunca tuvo.

mtf-triple-tf-macd-hist-confluence-01: TradingView exportó 24 operaciones. PyneCore genera 39 y, en la ventana que cubren ambas listas, coincide en las 22 operaciones de TradingView que hay en ella: reproduce el 91,7 % del historial de TradingView. PineForge obtiene excelente con sus 24 operaciones.

ta-str-match-regex-filter-01: La estrategia filtra las entradas con str.match. PyneCore genera 1.514 operaciones frente a las 1.917 de TradingView en la ventana, una diferencia del 21 % en el número de operaciones, y coincide en el 51,2 % de las operaciones de TradingView; PineForge coincide en las 1.916 de su ventana.

Dónde encaja cada motor

Los tres runtimes son de código abierto. PineForge y PyneCore ejecutan estrategias con órdenes strategy.*, y PineTS incluye un espacio de nombres strategy.* desde la versión 0.9.17, pero la comparativa solo ejecuta indicadores en PineTS: su arnés no tiene un ejecutor de estrategias para PineTS. Solo PineForge compila una estrategia a código nativo. PineForge y PineTS convierten Pine en tu propia máquina; PyneCore lo convierte a través del compilador de PyneSys, un servicio alojado.

PineForge

  • Necesitas las operaciones que te daría TradingView: PineForge obtiene excelente en las 201 estrategias de la comparativa.
  • Ejecutas muchos backtests: en la mediana, PineForge es 36× más rápido que PyneCore por estrategia (PineForge, cronometrado en el mismo proceso; PyneCore, como subproceso y con el arranque del intérprete incluido).
  • Quieres integrar el motor: un runtime en C++17 con licencia Apache-2.0 y una ABI de C estable que solo admite adiciones.
  • Haces backtests desde un agente de IA: un endpoint MCP alojado gratuito o un servidor MCP local en Docker para tus propios datos.

PyneCore

  • Quieres escribir estrategias en Python: PyneCore ejecuta Python al estilo Pine barra a barra, con las bibliotecas de datos y de aprendizaje automático de Python en el mismo código.
  • Necesitas indicadores y valores trazados: PyneCore los calcula. PineForge rechaza los scripts indicator() y no dibuja nada: las llamadas de trazado, las tablas, los setters visuales y las alertas se aceptan, pero no tienen ningún efecto; los objetos line, box, label, linefill y chart.point se conservan como datos que la estrategia puede leer.
  • Quieres un runtime Apache-2.0 y no te importa convertir Pine con el compilador de PyneSys, que es un servicio alojado. El motor de PineForge es Apache-2.0, pero su transpilador es de código fuente disponible (bajo la PineForge Source License 1.2 a partir de codegen 1.3.0), no de código abierto según la OSI.

Cómo reproducir la comparativa

La mitad pública de la comparativa, las 100 estrategias del corpus abierto, se reproduce desde un clon limpio: todos los datos de entrada están versionados en los recursos del benchmark y no hace falta ninguna clave de API. Los 101 scripts cerrados de la comunidad no se redistribuyen (por los términos de TradingView), así que esa mitad no se puede volver a ejecutar fuera de PineForge.

# 1. Clona el motor y los recursos públicos del benchmark
git clone https://github.com/pineforge-4pass/pineforge-engine.git
cd pineforge-engine
git submodule update --init benchmarks/assets

# 2. Instala las herramientas de Python y Node de los otros motores y compila
(cd benchmarks && uv sync --python 3.12 && npm install)
cmake -B build -S . -DPINEFORGE_BUILD_TESTS=ON -DPINEFORGE_BUILD_BENCH_STRATEGIES=ON -DPINEFORGE_BUILD_SPEED_BENCH=ON
cmake --build build --target pineforge bench_strategies pineforge_bench -j

# 3. Evalúa cada motor frente a TradingView
SKIP_BUILD=1 SKIP_SPEED=1 JOBS=8 bash benchmarks/run_all.sh

# 4. Lee los resultados: las 100 filas del corpus abierto en las que se basan los recuentos de esta página
cat benchmarks/results/summary.md