Tabla de contenidos
Introducción
Esta publicación se la dedico a Ivan Scherman, un referente para mi y alguien a quien admiro mucho, durante una de sus conferencias comparte esta estrategia, y considero que se puede aprender mucho sobre su forma de entender los mercados, en este ejemplo de estrategia menciona como comprar el SP500, durante una tendencia alcista, pero estamos hablando de una estrategia algorítmica, es decir debemos saber definir objetivamente una tendencia alcista, y un retroceso para poder programar el “robot” que nos permita backtestear esta hipótesis, manos a la obra.
Antes de empezar
-Esta estrategia fue compartida de forma pública por Ivan Scherman
-No sabemos si es una estrategia utilizada por el dentro de su portfolio, ni nos importa ( aprendemos igual )
-No se recomienda en lo absoluto la implementación en real de esta estrategia
-Los resultados pasados de una estrategia no son garantía de resultados futuros.
-El propósito de esta publicación es netamente educativo.
-Especulacion Estadistica no guarda ninguna relacion con Ivan Scherman
Explicacion básica
Explicación avanzada
Descarga Estrategia
SchermanBuy
Estrategia de codigo abierto para Ninjatrader 8
Análisis de resultados
Analizar los resultados de una estrategia implica un proceso organizado y estructurado que se sale del enfoque de esta publicación gratuita, cabe recalcar que el entendimiento generalizado de la hipótesis, en su estado más puro es el primer paso siempre, es decir tratar de testear de la forma más general la idea, y entender su comportamiento histórico.
Es lo que haremos a continuación, empezaremos analizando los primeros resultados de esta estrategia.
Codigo abierto
Es importante mencionar que el código de la estrategia se ha realizado agregando una serie de datos de 1 minuto, para tener una buena resolución histórica. Es verdad que la SMA que utilizamos ( 200 & 5 ) se calculan en velas diarias, sin embargo, eso no nos limita a ejecutar en velas diarias. Este es un truco que te estoy obsequiando, créeme.
A través del código, podrás identificar que, la media móvil rápida, y lenta trabajaran sobre el DATA SERIES PRINCIPAL en el que agregas la estrategia, la realidad es que como Scherman habla de “días” se sugiere utilizar como DATA SERIES PRINCIPAL, velas diarias.
Pero si te fijas en el State Configure, agregamos un DATA SERIES SECUNDARIO de 1 minuto, que nos permite ejecutar y gestionar utilizando velas de 1 minuto, en vez de diarias.
Si te ha agradado este truco déjame un comentario 😊
else if (State == State.Configure)
{
//Agregamos un Data Series secundario - BarsInProgress 1
AddDataSeries(BarsPeriodType.Minute, 1);
}
else if ( State == State.DataLoaded)
{
//Instanciamos las variables ema
smaSlow = SMA(200);
smaFast = SMA(5);
smaFast.Plots[0].Brush = Brushes.Goldenrod;
smaSlow.Plots[0].Brush = Brushes.Goldenrod;
smaFast.Plots[0].Width = 3;
smaSlow.Plots[0].Width = 6;
AddChartIndicator(smaFast);
AddChartIndicator(smaSlow);
}
}
protected override void OnBarUpdate()
{
//Close de vela diaria ( Data Series principal )
if (BarsInProgress == 0)
{
//Si hay menos de 3 velas
if (CurrentBar < 3)
{
return;
}
if (Close[1] < Open[1])
{
consecutiveNegative++;
}
else
consecutiveNegative = 0;
PrintTo = PrintTo.OutputTab2;
Print(
Time[1].ToShortDateString()+";"+
Open[1]+";"+
High[1]+";"+
Low[1]+";"+
Close[1]+";"+
smaSlow[1]+";"+
smaFast[1]+";"+
consecutiveNegative
);
PrintTo = PrintTo.OutputTab1;
}
//Ejecutamos en barras de 1 minuto para mayor precision
if(BarsInProgress == 1)
{
if (CurrentBars[0] < 3)
return;
if (Bars.IsFirstBarOfSessionByIndex(CurrentBar))
executed = false;
if (IsRising(smaSlow))
{
if (Closes[0][0] < Opens[0][0]
&&
Closes[0][1] < Opens[0][1]
&&
Closes[0][2] < Opens[0][2]
)
{
BackBrushesAll[0] = Brushes.DarkCyan;
if (!executed && Position.MarketPosition == MarketPosition.Flat)
{
EnterLong("EntrySignal");
executed = true;
}
}
}
//Si estamos en una posicion
if(Position.MarketPosition != MarketPosition.Flat)
{
if (Closes[0][0] >= smaFast[0])
{
ExitLong("ExitCloseAbove","EntrySignal");
}
}
}
}
#region Variables
SMA smaSlow;
SMA smaFast;
bool executed;
double consecutiveNegative;
#endregion
}
Análisis de datos
Ahora vamos al trading cuantitativo puro duro, recuerda que todo lo relacionado al análisis de datos será cuantitativo, en esta ocasión nos enfocaremos en una frase que menciona Scherman durante su seminario, luego de mencionar que buscaremos comprar el SP500 durante una tendencia alcista, cuando tengamos 3 días en consecutivo cerrando en negativo, dice que “tenemos 80% de probabilidades de cerrar por encima de la media de 5 periodos”.
Vaya que es un dato interesante, sobre todo por ese elevado porcentaje, aunque no profundiza mucho en esto, se que cuando un trader cuantitativo te dice algo de este tipo, habla porque hay un análisis de datos que lo respalda.
He incorporado a la estrategia la capacidad de exportar datos, pasártelos a Excel y hacer este cálculo, entendiendo que hacer, y como se pueden hacer cosas maravillosas.
He obtenido que, en efecto, si un día cierra en positivo tenemos 81% de probabilidades de cerrar por encima de la media de 5 periodos.
Esto se vuelve interesante, si vemos cual es la probabilidad de tener un cuarto día en consecutivo de forma negativa (cuando Iván sugiere buscar la compra)
Aprende mas
Ok, si has llegado hasta aqui es que eres especial, creeme.
Te gustan los datos, y el trading bien hecho asi que creo que mi curso y mis paquetes formativos te pueden servir, revisalo y empieza a aprender trading cuantitativo.
1 thought on “La estrategia de Ivan Scherman”
fantástico gracias!