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
-
Hoy traigo una aplicación en Amibroker que es a la vez sencilla y práctica. Es una plataforma que sirve para operar acciones y que aprovecha...
-
El primer vídeo que se subió en 2019 al canal YouTube de Onda4 muestra un sistema de trading completo, con su backtesting y con su algoritmo...
-
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 ...
-
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. ...
-
El sistema "Agorero" opera el SP500 abriendo posiciones cortas cuando hay las siguientes señales bajistas: Baja volatilidad Nuevos...
No hay comentarios:
Publicar un comentario