El mercado no suele moverse más de una desviación estándar la mayor parte del tiempo. Pero a veces se sacude con fuerza y se mueve incluso 2 desviaciones estándar o más. Al revisar los días en los que el mercado se ha movido más de 2 desviaciones vemos que suelen conducir a tendencias; es decir, son días muy significativos que conviene vigilar.
No hay muchos días en los que el mercado se mueva tanto. Estamos a finales de marzo y en todo 2019 solo hay una barra significativa de 2.45 desviaciones estándar. En el gráfico se puede ver que a primeros de diciembre hubo una barra roja que condujo a una caída larga. A finales del mismo mes hubo una barra muy grande (3.27 desv) que condujo a una subida que en el momento mostrado aún se mantiene.
El código siguiente colorea la barra en rojo si excede las dos desviaciones estándar y también indica en pantalla el número exacto de desviaciones. Contiene el dimensionamiento por VAR según el modelo de Carver, aunque en esta ocasión no se usa para el indicador, pero será útil si se quiere insertar un sistema de trading o simplemente saber el número de contratos que produciría la volatilidad objetivo, en este caso indicada como VAR (Value At Risk).
El código también contiene un bucle que muestra en pantalla (arriba a la derecha) el porcentaje de las barras que tienen movimientos mayores de 2 desviaciones estándar. Si fuera una distribución normal sería alrededor de un 4.6% pero en la práctica suele haber más, como un 6%.
CÓDIGO DEL INDICADOR:
//-------------------------------------------------------
// INDICADOR OPCIONES
// OSCAR G. CAGIGAS
// 19 AGOSTO 2018
//-------------------------------------------------------
//Varios
SetOption("WarningLevel", 1 );
//RELLENAR PARAMETROS DE MONEY MANAGEMENT
//*****************************************************
Eq_euros = 100000; //saldo (actualizar a mano)
VAR = 0.375; //en porcentaje
num_pos = 6; //numero de posiciones
//*****************************************************
//PARAMETROS DEL FRAMEWORK DE CARVER
idm = Min(2.5,sqrt(num_pos)); //instrument diversification multiplier
iw = 1/num_pos; //PESO EN LA CARTERA DE CADA POSICIÓN
//DIMENSIONAMIENTO//
#include <vencimientos.afl>
decim = 1 + dec/10; //decimales correctos
//DESVIACION STANDARD EXPONENCIAL
desv_carver = sqrt( EMA( ( C-Ref(C,-1) )^2, 36 ) ) ;
//----NÚMERO DE OPCIONES EN BASE AL FORECAST ANTERIOR, VOLATILIDAD Y EQUITY----
eurodolar = Foreign("@EU#C","C");
tavol = 0.01 * VAR * 16 / 2.33; //target volatility en ttp1 (VAR 99% son 2.33 desv)
Eq = Eq_euros*eurodolar; //Capital en dólares
dvt = Eq * tavol / 16; //daily volatility target
ivv = desv_carver * PointValue; //instrument value volatility
vs = Nz(dvt / ivv); //volatility scalar
pos = vs * iw * idm; //forecast de 10 siempre. POs es posición en FUTUROS
//***************************************************************************************************
//BARRAS DE ALTA VOLATILIDAD
AVbar = abs( C - Ref(C,-1) ) > 2*Ref(desv_carver,-1);
color = IIf(AVbar, colorRed, colorBlack);
//CHART//
SetChartOptions(0,chartShowDates);
Plot(C,"PRICE",color,styleBar|styleThick,Null,Null,0,0,2);
Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) )
+"\n"+ FullName()+"\n"+EncodeColor(colorBlue)+"OPCIONES"
+"\n"+EncodeColor(colorGrey40)+"STDEV = "+WriteVal(desv_carver,decim)+" Pts ; x" + WriteVal(PointValue,1.0) + " ; (" + TickSize +")"
+"\n"+EncodeColor(colorRed)+"VOLAT = $"+WriteVal(ivv,1.2);
//EXPORTAMOS VOLATILIDAD
Filter = Status( "lastbarinrange" );
AddTextColumn(WriteIf(AVbar,"1",""),"AVbar");
AddColumn(ivv,"ivv",1.0);
//NÚMERO DE DESVIACIONES ESTÁNDAR SI ES MAYOR DE 2//
dist = ATR(10);
numdesv = abs (C - Ref(C,-1)) / Ref(desv_carver,-1);
cuenta = 0;
cuentadesv = 0;
for( i = 0; i < BarCount; i++ )
{
if( AvBar[i] )
{
PlotText( NumToStr(numdesv[i],1.2) + " std", i, H[ i ]+dist[i], colorRed );
cuenta++;
cuentadesv = cuentadesv + numdesv[i];
}
}
Plot(100*cuenta/BarCount,">2desv%",colorRed,styleLine|styleLeftAxisScale|styleNoDraw);
Plot(cuenta,"cuenta",colorRed,styleLine|styleLeftAxisScale|styleNoDraw);
Plot(BarCount,"barcount",colorRed,styleLine|styleLeftAxisScale|styleNoDraw);
Plot(cuentadesv,"cuentadesv",colorRed,styleLine|styleLeftAxisScale|styleNoDraw);
Eres un friki de la programación de algoritmos, sistemas de trading y demás cosas raras? Encuentra aquí el código y herramientas útiles para probar sistemas y gestión de capital. Amibroker Python, Excel...
Suscribirse a:
Enviar comentarios (Atom)
ENTRADAS POPULARES
-
El sistema "Agorero" opera el SP500 abriendo posiciones cortas cuando hay las siguientes señales bajistas: Baja volatilidad Nuevos...
-
Este sistema se mostró en el webinario del pasado 12 de febrero. Sus reglas son las siguientes: • Setup : La volatilidad histórica (HV, co...
-
Supongamos una acción muy volátil, del mercado americano, cuyo precio es de 20 dólares y cuya desviación estándar anual es de 30 dólares. ...
-
Un calendar Spread es comprar y abrir cortos en el mismo mercado pero distintos vencimientos. En la imagen más abajo vemos un calendar spre...
-
Vamos a ver un sistema de trading clásico cuya lógica es bien simple. Se trata del sistema de Connors que utiliza un RSI de 2 sesiones para ...
No hay comentarios:
Publicar un comentario