curso superior en programaciÓn de autÓmatas · contenidos teóricos y recomendaciones que se...

18
T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS Con la finalidad de facilitar la asimilación de los contenidos del curso consideramos de su interés facilitarle los iconos propuestos para este fin: Este icono se utilizará para realizar preguntas que ayuden a reflexionar sobre determinadas situaciones o para realizar preguntas que ayuden a introducir conceptos. Este icono se utilizará para resumir aquellos conceptos clave que los participantes deben recordar por su importancia. Este icono pretende alertar de conceptos que frecuentemente no son tenidos en cuenta por la gran masa inversora. Este icono servirá para poner ejemplos que, de un modo más amigable, permitan reflejar casos prácticos.

Upload: others

Post on 13-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

CURSO SUPERIOR EN

PROGRAMACIÓN DE

AUTÓMATAS

Con la finalidad de facilitar la asimilación de los contenidos del curso consideramos de su

interés facilitarle los iconos propuestos para este fin:

Este icono se utilizará para realizar preguntas que ayuden a reflexionar

sobre determinadas situaciones o para realizar preguntas que ayuden a

introducir conceptos.

Este icono se utilizará para resumir aquellos conceptos clave que los

participantes deben recordar por su importancia.

Este icono pretende alertar de conceptos que frecuentemente no son tenidos

en cuenta por la gran masa inversora.

Este icono servirá para poner ejemplos que, de un modo más amigable,

permitan reflejar casos prácticos.

Page 2: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

TEMA 9- ESTRATEGIA CON

INDICADORES

1. Introducción.

2. Descripción detallada de la estrategia a implementar.

3. Implementación de la estrategia mediante NinjaTrader.

4. Optimización de la estrategia:

5. Backtest de la estrategia.

Page 3: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

TEMA 9- ESTRATEGIA CON

INDICADORES

1 Introducción.

Este caso práctico corresponde a una serie prácticas de desarrollo de

estrategias automatizadas que tiene por objeto enseñar al alumno a

implementar sus propias estrategias, sirviéndose de los ejemplos,

contenidos teóricos y recomendaciones que se exponen en esta sección.

Puesto que esta es la primera práctica, y se asume que se parte de cero, se

expondrán, además de los contenidos propios de la práctica, referencias a

otras partes del Master, así como de otros cursos y másteres del Instituto

IBT, que aquí serán resumidos para un mejor seguimiento de esta práctica

y de las posteriores.

La implementación de una estrategia de forma automática consta de las

siguientes etapas:

En primer lugar, describir lo más detalladamente posible una

estrategia, usando para ello reglas sencillas que sean relativamente

fáciles de implementar, debido a que a medida que se disminuye la

capacidad de síntesis de una regla, mayor será su dificultad para

programarla.

Traducir a código, o hacer uso del builder asistente, para realizar la

traducción (Strategy Wizard en el caso de usarse NinjaTrader),

como se vio en el video, dichas reglas, de ahí la necesidad de que

sean reglas concretas.

Realizar tantas optimizaciones, acompañadas de posteriores

backtest, hasta obtener los resultados deseados, o modificar las

reglas, si no se llegan a ellos.

Page 4: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

El builder (Strategy Wizard) aporta una aproximación a la construcción de

estrategias, ofreciendo la posibilidad de que personas que no posean

conocimientos de programación puedan implementar sus estrategias.

Esa es su principal ventaja, sin embargo, a la larga resulta insuficiente

para realizar estrategias complejas, debido a su escaso margen de

maniobra. Por lo que si el alumno se quiere orientar a implementar

estrategias de mayor magnitud a medio plazo, es recomendable que

adquiera las habilidades de la programación en código.

Esta primera práctica se ha realizado tanto mediante el asistente Strategy

Wizard como mediante código, para que al alumno le resulte más fácil e

interpretable asociar de qué forma se trabaja en ambos ámbitos. Las

posteriores, debido a su complejidad se han realizado mediante código,

pues su implementación a través del asistente no es posible.

Una de las razones de que en el Instituto IBT se recomiende el uso de

NinjaTrader, es debido a que, además de las facilidades que ofrece para

realizar backtests y optimizaciones de estrategias, su lenguaje de

programación está basado en C# (C Sharp), uno de los lenguajes de

programación más universales que existe actualmente.

Page 5: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

2 Descripción detallada de la estrategia a

implementar.

Modelo:

En primer lugar hay que describir el modelo que se va a implementar en

NinjaTrader de la forma más detallada posible, reduciéndolo a una serie

de reglas que se van a aplicar al cumplirse una serie de condiciones. En

este caso se trata de un modelo tendencial que se aplicará en casos en que

el precio se mueva de manera sostenida en el tiempo, y para ello se van a

usar los indicadores RSI, CCI y ATR.

Parámetros:

Los parámetros son variables que la aplicación usa para establecer las

condiciones y las acciones que se ejecutan al cumplirse éstas. Las variables

pueden cambiarse y optimizarse de manera posterior de la

implementación, pudiendo modificarse a la hora de realizar un backtest y

una optimización.

En este caso los parámetros son PeriodoCCI y PeriodoRSI, ATRMenor y

ATRMayor.

Filtros:

El filtro es una de las partes más importantes de un sistema, pues una

incorrecta selección de lo valores usados o una mala interpretación del

entorno de mercado en el que se encuentran dichos valores puede hacer

que una estrategia con sólidas bases no obtenga los resultados deseados.

En esta ocasión se han elegido dos filtros, uno por selección de valores y

otro por selección de entornos de mercado, el primero realizado eligiendo

las 50 empresas con mayor capitalización del NASDAQ. El NASDAQ es el

índice en el que cotizan las empresas tecnológicas de EE.UU., y presenta

ciertas características especiales que hacen a las empresas que lo

componen idóneas para estrategias como la que aquí se expone. En este

caso las características a las que se hace referencia son una alta liquidez,

además de una alta volatilidad, a pesar de ser empresas con una alta

Page 6: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

capitalización, debido a ser empresas tecnológicas. Otro factor que

beneficia al uso de esta estrategia es el escaso ruido que estas tienen en

comparación con su alta volatilidad.

Posteriormente se ha realizado un backtest usando todas las empresas del

NASDAQ 100, para poner en comparación la importancia de usar un

correcto filtro de valores.

Con el segundo filtro se ha querido poner de manifiesto la necesidad de

aplicar en cada entorno de mercado una estrategia que esté diseñada para

tal caso. Dado que esta es una estrategia tendencial, se ha de aplicar

únicamente en el caso de que el valor de indicios de que se encuentra en

tal situación, permaneciendo fiera del mercado cuando lo esté. Tras la

implementación de la estrategia se han realizado varios backtest para

comparar los resultados en función de los entornos de mercado.

Reglas de entrada:

Para realizar las entradas se requerirá que se cumplan las siguientes

condiciones:

Largas:

El ATR de 10 velas mayor que la media móvil del ATR de 10 velas de

los últimos 50 registros, el ATR en un periodo corto (ATRMenor) es

mayor que en un periodo largo (ATRMayor), el CCI de un periodo,

definido por el parámetro PeriodoCCI, sea menor de 100 y el RSI de

un periodo, definido por el parámetro PeriodoRSI, es mayor de 60.

Cortas:

El ATR de 10 velas mayor que la media móvil del ATR de 10 velas de

los últimos 50 registros, el ATR en un periodo corto (ATRMenor) es

mayor que en un periodo largo (ATRMayor), el CCI de un periodo,

definido por el parámetro PeriodoCCI, sea mayor de -100 y el RSI de

un periodo, definido por el parámetro PeriodoRSI, es menor de 40.

Page 7: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

Reglas de salida:

Largas:

Se cerrará una operación larga una vez el CCI de un periodo,

definido por el parámetro PeriodoCCI, sea mayor de 100.

Cortas:

Se cerrará una operación larga una vez el CCI de un periodo,

definido por el parámetro PeriodoCCI, sea menor de -100.

Stop loss y target:

Tanto el stop loss (stop de pérdidas) como el target (objetivo de cada

operación) se establecerán en función del porcentaje del precio. Su

valor cambiará en función del backtest posterior.

Una operación se cerrará, bien porque se cumplen las reglas de

salida, o bien porque se ha alcanzado el stop loss o el target, lo que

suceda antes en el tiempo.

El stop loss se ha establecido en el 0,3% del valor del precio y el

traget en el 0,9% de éste.

Page 8: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

3 Implementación de la estrategia mediante

NinjaTrader.

Una vez establecidas las características del modelo a implementar se pasa

a Strategy Wizard para implementarlo.

Este paso se puede realizar de forma asistida, tal y como se muestra en el

video de uso de Strategy Wizard (en el que se expone precisamente esta

estrategia), o mediante la construcción del código, seleccionando “Unlock

code” en la parte inferior de la ventana de Strategy Wizard. A

continuación se muestra el código usado para la implementación.

Todas las estrategias que se generen con Strategy Wizard tienen la

siguiente estructura:

Una primera zona en la que se situan unas declaraciones y

sentencias que la plataforma genera de manera automatica, y en la

que solo se puede modificar el nombre de la estrategia y la

descripcion (opcional) de la misma.

Una segunda zona en la que se encuentran inicializada las variables

que se usan en la estrategia, que pueden ser modificadas y/o

añadidas por el usuario. Tambien se encuentran en esta zona, de

manera optativa, la definicion de caracteristicas que afectan a todo

el programa como el establecimiento de los stop loss y targets por

defecto.

Una tercera zona en la que se encuentra el nucleo de la estrategia en

si, es decir, donde se encuentran las condiciones que se evaluan en

cada vela y las acciones a aplicar si se cumplen dichas condiciones.

Por ultimo una zona en la que se han de declarar las variables a usar,

y que han de coincidir con las variables que se encuentran en la

segunda zona.

El funcionamiento de las estrategias implementadas en NinjaTrader a

traves de Strategy Wizard esta basado en un funcionamiento cíclico de

automata, es decir, las condiciones que se encuentran en la tercera zona se

ejecutan de manera cíclica en cada vela que aparece en la ventana chart.

Por lo que cualquier variable que se defina en esta zona se sobreescribira

Page 9: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

en la siguiente vela. Para que una variable no se sobreescriba y conserve

su valor una vez ha terimando la vela ha de declararse e unicializarse en la

segunda y cuarta zona. En definitiva, ninja trader evalua cada una de las

condiciones en cada vela y ejecuta las acciones que se encuentran en el

interior de cada condicion, como si cada condicion fuese un interruptor

que diese permiso o no a la ejecutarse las acciones que estan en su interior

en cada vela.

En el apartado Help del menu se encuntra toda la informacion relativa a

las funiones que se pueden usar, tales como el ATR, el volumen, los

precios de apretura, cierre, maximo, minimo, etc.

A continuacion se muestra el codigo usado para generar la estrategia que

se expone en esta práctica.

Esta primera parte del codigo la genera NinjaTrader de manera

automatica, y no se debe modificar, a escepcion de la descripcion y el

nombre de la estrategia.

Page 10: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

En la segunda zona se encuentran las inicializaciones de las variables,

en las que se muestran, dependiendo de cada tipo, con el formato que

les otorga NinjaTrader. Si se desea cambiar el valor inicial de alguna

variable, este es el lugar en el que hacerlo.

#region Using declarations

using System;

using System.ComponentModel;

using System.Diagnostics;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Xml.Serialization;

using NinjaTrader.Cbi;

using NinjaTrader.Data;

using NinjaTrader.Indicator;

using NinjaTrader.Gui.Chart;

using NinjaTrader.Strategy;

#endregion

// This namespace holds all strategies and is required. Do not

change it.

namespace NinjaTrader.Strategy

{

/// <summary>

/// Enter the description of your strategy here

/// </summary>

[Description("Tendencial basado en los indicadores RSI, CCI y

ATR sin gestión de la salida")]

public class TendencialIndicadores : Strategy

Page 11: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

En la tercera zona es donde se encuentran las reglas del modelo. Está

establecido de manera que al cumplirse una condición, en este ejemplo

un if()se ejecutará la acción que se encuentra ente corchetes {}.

{

#region Variables

// Wizard generated variables

private double aTRMenor = 0.000;//Default setting for ATRMenor

private double aTRMayor = 0.000;//Default setting for ATRMayor

private double periodoCCI = 0.000; // Default setting for

PeriodoCCI

private double periodoRSI = 0.000; // Default setting for

PeriodoRSI

private int cien = 100; // Default setting for Cien

private int sesenta = 60; // Default setting for Sesenta

private int menosCien = -100; // Default setting for MenosCien

private int cuarenta = 40; // Default setting for Cuarenta

// User defined variables (add user defined variables below)

#endregion

/// <summary>

/// This method is used to configure the strategy and is called

once before any strategy method is called.

/// </summary>

protected override void Initialize()

{

SetProfitTarget("", CalculationMode.Percent, 0.009);

SetStopLoss("", CalculationMode.Percent, 0.003, false);

CalculateOnBarClose = true;

}

/// <summary>

/// Called on each bar update event (incoming tick)

/// </summary>

Page 12: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

Por ultimo aparecen representadas las variables que forman parte del

programa, cualquier variable que se quiera usar es necesario definirla

en esta zona. Las variables tienen que coincidir en tipo y nombre con

las que se encuentran en la zona de inicialización

protected override void OnBarUpdate()

{

// Condición entrada larga

if (VOL()[0] > SMA(VOL(), 10)[0]

&& CCI((int) (PeriodoCCI))[0] < Cien

&& RSI((int) (PeriodoRSI), 3).Avg[0] > Sesenta

&& ATR((int) (ATRMenor))[0] > ATR((int) (ATRMayor))[0]

&& ATR(10)[0] < SMA(ATR(10), 50)[0])

{

EnterLong(100, "");

}

// Condición entrada corta

if (ATR(10)[0] < SMA(ATR(10), 50)[0]

&& VOL()[0] > SMA(VOL(), 10)[0]

&& CCI((int) (PeriodoCCI))[0] > MenosCien

&& RSI((int) (PeriodoRSI), 3).Avg[0] < Cuarenta

&& ATR((int) (ATRMayor))[0] > ATR((int) (ATRMayor))[0])

{

EnterShort(100, "");

}

// Condición salida corta

if (CCI((int) (PeriodoCCI))[0] < MenosCien)

{

ExitShort("Salida Corta CCI", "");

}

// Condición salida larga

if (CCI((int) (PeriodoCCI))[0] > Cien)

{

ExitLong("Salida Larga CCI", "");

}

}

Page 13: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

#region Properties

[Description("")]

[GridCategory("Parameters")]

public double ATRMenor

{

get { return aTRMenor; }

set { aTRMenor = Math.Max(0, value); }

}

[Description("")]

[GridCategory("Parameters")]

public double ATRMayor

{

get { return aTRMayor; }

set { aTRMayor = Math.Max(0, value); }

}

[Description("")]

[GridCategory("Parameters")]

public double PeriodoCCI

{

get { return periodoCCI; }

set { periodoCCI = Math.Max(0, value); }

}

[Description("")]

[GridCategory("Parameters")]

public double PeriodoRSI

{

get { return periodoRSI; }

set { periodoRSI = Math.Max(0, value); }

}

[Description("")]

[GridCategory("Parameters")]

public int Cien

{

get { return cien; }

set { cien = Math.Max(0, value); }

}

[Description("")]

[GridCategory("Parameters")]

public int Sesenta

{

Page 14: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

Una vez definida, implementada y compilada la estrategia, y si no hay

ningún fallo de síntesis, la plataforma dará el visto bueno, estando todo

listo para evaluar la estrategia con el histórico de un instrumento.

[Description("")]

[GridCategory("Parameters")]

public int Sesenta

{

get { return sesenta; }

set { sesenta = Math.Max(0, value); }

}

[Description("")]

[GridCategory("Parameters")]

public int MenosCien

{

get { return menosCien; }

set { menosCien = Math.Max(-200, value); }

}

[Description("")]

[GridCategory("Parameters")]

public int Cuarenta

{

get { return cuarenta; }

set { cuarenta = Math.Max(0, value); }

}

#endregion

}

}

Page 15: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

4 Optimización de la estrategia.

Una vez se ha realizado la implementación se pasa a optimizar la

estrategia. La forma de realizar una optimización correcta es establecerla

sobre una muestra en un periodo de tiempo determinado, llamada

muestra in-sample, y después comprobar los resultados de la estrategia,

con la optimización de parámetros obtenida, sobre la misma muestra,

pero en otro periodo de tiempo distinto, llamada muestra out-sample,

para comprobar si la estrategia obtiene unos resultados solidos al cambiar

de periodo.

Puesto que en esta práctica se han elegido las 50 empresas con mayor

capitalización del NASDAQ, a continuación se muestra la evolución del

NASDAQ desde 2009 hasta la actualidad, para poder expresar mejor el

concepto de entorno de mercado y la necesidad de tenerlo en cuenta a la

hora de aplicar una estrategia.

Evolución del NASDAQ. Fuente: es.finance.yahoo.com.

Se puede aprecia como en 2013 y 2014 el índice se encontraba en una

tendencia alcista, mientras que en 2015 lo hacía en un techo.

La optimización de parámetros se ha realizado sobre 2013.

Obteniéndose los siguientes resultados:

ATRMenor = 11.

ATRMayor = 23.

PeriodoCCI = 40.

PeriodoRSI = 11.

En este caso la muestra in-sample es el el periodo comprendido entre el

1/1/2013 y el 1/1/2014.

Page 16: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

5 Backtest de la estrategia:

Para realizar un backtest se accede a Strategy Analizer, en el Menú New,

como se vio en este módulo. Una vez en la ventana Strategy Analizer se

hace clic con el botón derecho sobre un sobre un elemento o lista de

elemento se selecciona Backtest, se seleccionan las características

deseadas y se hace clic sobre Run backtest.

En esta práctica se han realizado tres backtest para poner de relieve el

necesario uso de un filtro.

En el primer backtest se ha basado sobre el filtro del entorno de mercado.

En primer lugar se ha realizado un backtest sobre el periodo comprendido

entre el 1/1/2014 y el 1/1/2015, que al igual que el periodo usado para la

optimización se encuentra en estado tendencial, obteniéndose los

siguientes resultados, de los que se extrae principalmente: una fiabilidad

del 76 % y un profit factor de 3,56.

Page 17: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

En siguiente backtest se ha realizado sobre el periodo comprendido entre

el 171/2015 y el 1/1/2016, en el que como se ve en la imagen de la

evolución del NASDAQ, el índice se encuentra sobre un techo. En este caso

los resultados no han sido tan buenos como en el anterior backtest,

obteniéndose una fiabilidad del 57 % y un profit factor de 1.05, lo que

expresa claramente la necesidad de aplicar la estrategia únicamente

cuando el mercado se encuentra en la situación para la que ha sido creada.

Para comprobar en qué situación encuentra el mercado se puede

establecer un filtro automático dentro de la propia estrategia, añadiendo

por ejemplo que para realizar la entrada la media móvil mensual de 25

periodos ha de estar por encima de la media móvil mensual de 100 o 200

periodos, en el caso de una estrategia tendencial alcista, o usar otros

indicadores manuales, basados por ejemplo, en indicadores

fundamentales, que indique manualmente cuando activar la estrategia y

cuando mantenerla desactivada.

Page 18: CURSO SUPERIOR EN PROGRAMACIÓN DE AUTÓMATAS · contenidos teóricos y recomendaciones que se exponen en esta sección. Puesto que esta es la primera práctica, y se asume que se

T.+34 902 992 933 [email protected] www.institutoibt.com ©2013 Instituto IBT

El tercer backtest se basa en el filtro de selección de valores. Para ello se va a

realizar sobre el periodo entre 1/1/2014 y 1/1/2015, como en el primer backtest,

con la diferencia de que en esta ocasión se va a usar para ello todas las empresas

del NASDAQ 100. Los resultados que se han obtenido han sido una fiabilidad del

61% y un profit factor de 1,13. Frente al 76% de fiabilidad y el profit factor de

3,56 obtenido en el mismo periodo si se aplica el filtro de selección de valores,

quedando comprobada la necesidad de su uso.