Tu primera estrategia ya se ha ejecutado. Ahora comprobarás si las operaciones simuladas proceden de la regla definida y qué significan los resultados mostrados.

Los datos de demostración son una serie de precios artificial. Sirven para comprobar el funcionamiento del programa, no para determinar la rentabilidad esperada de un mercado real.

Empieza por una operación

Ejecuta crossover_strategy.py con longitudes 5 y 20. Espera a que termine y selecciona Trades en el panel inferior. Si está cerrado, ábrelo con la flecha de la derecha.

La tabla contiene los datos de entrada y salida de cada operación. En una operación larga, entrar es comprar y salir es vender.

Columna¿Qué muestra?
TradeNúmero de operación e identificador de entrada
Entry timeMomento de ejecución de la entrada
Entry pricePrecio de ejecución de la entrada
Exit timeMomento de ejecución de la salida
Exit pricePrecio de ejecución de la salida
QtyCantidad de la operación
ProfitResultado monetario de la operación cerrada
Profit %Resultado porcentual de la operación
La tabla Trades está abierta debajo del gráfico de PyneIDE, con horas, precios y resultados de las operaciones.
Trades permite comprobar individualmente las entradas y salidas ejecutadas.

Haz clic en una fila. Puedes localizar su período en el gráfico. Examina el cruce anterior a la entrada y el que activó el cierre.

El programa original no especificaba commission_value ni slippage, por lo que la ejecución base no incluye los costes que añadiremos. Comprueba primero dirección, momento y cantidad en esa ejecución sencilla.

Calcula el resultado de una operación sencilla

Si compras una unidad a 100 y la vendes a 103, la diferencia es 3. Con valor del punto igual a uno y sin costes, ese es también el resultado monetario.

En general, el resultado por variación de precio de una operación larga es:

(precio de salida − precio de entrada) × cantidad × valor del punto

El valor del punto forma parte de los metadatos del mercado. Describe el valor monetario de una variación de precio de una unidad para una posición de una unidad. En los datos DEMO del libro vale 1.

Las comisiones reducen el resultado neto. El slippage modifica el precio de ejecución y ya aparece en la diferencia de precios. No debes volver a descontar el mismo slippage de los precios ajustados.

La vista Performance

Performance muestra la evolución del patrimonio de toda la ejecución. Encontrarás:

  • Cumulative P&L: variación del patrimonio respecto al capital inicial;
  • Max drawdown: mayor caída respecto a un máximo anterior de la curva examinada;
  • Final equity: patrimonio en la última vela procesada;
  • Max run-up: mayor subida respecto a un mínimo anterior.
La vista Performance de PyneIDE muestra Cumulative P&L, Max drawdown, Final equity y la curva de patrimonio.
Performance muestra la curva de patrimonio y los valores resumen de toda la ejecución.

El patrimonio puede incluir el valor cambiante de una posición abierta. Por eso el valor final no tiene por qué ser igual al capital inicial más los beneficios de las operaciones cerradas. Comprueba también si queda una posición abierta al final.

Examina los tramos intermedios además del extremo final de la curva. Distintas caídas y largos períodos de pérdidas pueden acabar en el mismo resultado.

La vista Stats

Stats muestra las estadísticas detalladas al terminar. Total Trades permite comprobar la cantidad de operaciones cerradas y Net Profit su resultado neto conjunto.

Profit Factor es la relación entre los resultados acumulados de las operaciones ganadoras y perdedoras: ganancias totales divididas entre el valor absoluto de las pérdidas totales. Si no hay operaciones perdedoras, el cociente no es un número finito normal para comparar.

La tasa de acierto indica la proporción de operaciones cerradas con beneficio. No determina por sí sola el beneficio total. Pocas pérdidas grandes pueden superar muchas ganancias pequeñas.

Con pocas operaciones es fácil obtener un resumen engañoso. Mantén su cantidad total junto a las demás métricas y examina también operaciones perdedoras individuales.

Costes en Properties

Abre los ajustes con el engranaje Strategy properties del panel inferior y elige Properties. Aquí puedes modificar capital inicial, cantidad y costes.

Las siguientes ejecuciones son un ejercicio comparativo. Los costes indicados forman parte del ejemplo; los de un mercado real deben establecerse aparte.

  1. Comprueba Initial capital en 10000 y Order size en 1 Contracts.
  2. Pon Commission en 0,1 y elige % of order value como unidad. Puedes introducirlo como 0.1.
  3. Ajusta Slippage a 2 ticks.
  4. Guarda con Save, inicia Run Pyne code y espera a que termine.
La pestaña Properties de Settings muestra los campos Commission y Slippage.
Properties utiliza porcentajes para la comisión y ticks para el slippage.

Un 0,1 por ciento no es un 10 por ciento: el campo está en unidades porcentuales. Para una ejecución de valor 100, significa una comisión de 0,1. Tanto la entrada como la salida son ejecuciones y pueden tener costes.

Un tick es el incremento mínimo de precio del mercado. En DEMO vale 0,01, así que dos ticks son 0,02 de movimiento. El slippage desplaza el precio de ejecución de una orden de mercado en sentido desfavorable para la estrategia.

En otro mercado pueden cambiar el tick y el valor del punto. No traslades automáticamente la interpretación de costes de DEMO a otro instrumento.

El modo de ejecución también forma parte del experimento

On bar close, dentro de Fill orders, influye en el momento de las órdenes de mercado. En la estrategia base déjalo desactivado para que la orden generada por la señal se ejecute en la siguiente apertura.

After order is filled puede solicitar recalcular después de una ejecución. Using bar magnifier puede estudiar las ejecuciones dentro de una vela con datos más detallados de menor temporalidad. Son condiciones distintas; déjalas desactivadas al comparar la ejecución base.

Cambiar un solo ajuste ya produce otro resultado de ejecución. Si cambias a la vez longitud, cantidad, costes y modo de ejecución, no podrás saber qué causó la diferencia.

Guarda lo que has comparado

Open trades output CSV, en la barra del gráfico, abre la exportación de operaciones. Open plot output CSV abre la tabla de valores dibujados. Los archivos también están en Output del proyecto.

Antes de volver a ejecutar el mismo programa, copia con otro nombre la exportación que quieras conservar. El nombre del resultado no identifica por sí solo todos los ajustes.

Anota al menos lo siguiente:

EjecuciónDatosLongitud rápida/lentaCantidadComisiónSlippage
BaseDEMO5 / 201 unidad0%0 ticks
Con costesDEMO5 / 201 unidad0,1%2 ticks

Añade los resultados obtenidos. Completa la tabla en tus notas a partir de las ejecuciones reales.

Pruébalo por tu cuenta

Compara la misma operación sin costes y con ellos. Comprueba entrada, salida y beneficio. ¿Qué ha cambiado y qué sigue igual en la regla de señal?

Solución del ejercicio

Las medias y sus cruces no se calculan a partir de la comisión ni del slippage, así que las señales básicas no cambian. Los precios de entrada y cierre de mercado pueden empeorar por el slippage. La comisión reduce aún más el resultado neto.

Las ejecuciones son directamente comparables si coinciden inputs, cantidad, datos y modo de ejecución, y la estrategia puede realizar las órdenes en ambos casos.

Selecciona otros datos

Después de la demostración puedes obtener tus datos de mercado con el descargador de PyneIDE. Pueden cambiar precios, tick, límites de cantidad y operaciones. Examina primero los datos y después compara resultados.

  1. En Pyne, pasa el puntero sobre la cabecera Data. Haz clic en Download Data…, el icono de una flecha descendente desde una nube. Se abre Symbol Browser. También accedes haciendo clic derecho en Data.
  2. Elige un proveedor en Provider. La captura usa ccxt; con él puedes elegir la fuente concreta en Broker.
  3. Escribe el mercado en el filtro. La captura selecciona el mercado al contado BTC/USD de coinbase. Revisa el símbolo completo: filas con prefijos similares pueden ser mercados distintos.
  4. Pon Timeframe en 1D y From en 365 days back. En To, now pide datos hasta el momento de la descarga.
  5. Haz clic en Download y espera.
Symbol Browser de PyneIDE tiene seleccionado ccxt, la fuente coinbase, el mercado al contado BTC/USD y la temporalidad diaria.
La fuente, el mercado, la temporalidad y el período seleccionan juntos los datos en Symbol Browser.

En la información de la derecha, mintick es el tamaño del tick, pointvalue el valor del punto y mincontract la cantidad mínima. Compruébalos también para tus datos. La disponibilidad y el acceso requerido dependen del proveedor; solicitar los datos elegidos aquí no implica utilizar una cuenta de trading.

La descarga aparece en Data. Haz clic en el nombre del mercado de la fila superior del gráfico de estrategia para abrir el selector y elegir los nuevos datos. El gráfico se recalcula; sigue comprobando inputs y propiedades.

El período solicitado no garantiza una cantidad de velas: influyen el historial del proveedor, los días de negociación y los períodos ausentes. Una nueva descarga puede cambiar la serie, así que conserva el archivo de datos y sus metadatos para comparar.

Interpreta la ejecución

Un backtest calcula a partir de una regla, una serie de datos y un modelo de ejecución. Ayuda a comprobar si el código hace lo que describiste y cómo habría funcionado en ese modelo. El resultado no incluye datos futuros.

Si ajustas muchas veces los parámetros sobre los mismos datos, puedes encontrar una regla adaptada a ellos. Examinar otro período que no se usó para ajustar responde a otra pregunta. Por eso en el proyecto final comprobarás por separado el funcionamiento correcto y la comparación de ajustes.