Documentación

Última actualización el 25. 6. 2015 por Mark Fric

Añadir nueva columna Monte Carlo

Un ejemplo de cómo añadir un nuevo valor en el método Monte Carlo.

¿En qué consiste la tarea?

Por defecto, cuando ejecute la simulación Monte Carlo obtendrá resultados de simulación para niveles de confianza dados.
La simulación MC computa resultados como Beneficio Neto, Beneficio Neto %, Retorno / DD etc. para un nivel de confianza dado.

El usuario del foro solicitó calcular un nuevo valor personalizado: el número de operaciones perdedoras consecutivas.

Como muchas otras cosas, los valores (columnas ) del informe Monte Carlo se calculan utilizando fragmentos, por lo que es posible ampliarlo y añadir los suyos propios.

En este artículo mostraremos cómo añadir un nuevo valor MC que calcula el número de operaciones perdedoras consecutivas para todos los niveles de confianza de Monte Carlo.

Paso 1 - Crear un nuevo fragmento de valor de Monte Carlo

Como todos los demás snippets, los snippets Monte Carlo son editables en QuantEditor, así que vamos a iniciarlo:

Ahora crearemos un nuevo fragmento que calculará nuestras órdenes perdedoras consecutivas:

Esto creará un esqueleto de un snippet que podemos extender para hacer lo que queramos. Vamos a ir a través de las funciones en el fragmento uno por uno.

En el constructor tenemos que establecer el nombre de la columna y la ordenación. Si los mejores valores son los más altos entonces debemos establecerlo en MAXIMIZAR.
En nuestro caso, los mejores valores son los más bajos (el menor número posible de operaciones perdedoras consecutivas), por lo que estableceremos la orden en MINIMIZAR.

Esto es importante para que el programa sepa cómo ordenar los resultados cuando vaya a calcular los resultados para cada nivel de confianza.

public ConsecutiveLosingOrders() {
   super("ConsecutiveLosingOrders", FitnessFunction.MINIMIZE);

 


setColumnName(L.t("Órdenes perdedoras consecutivas"));
setColumnWidth(100);
setTooltip(L.t("Órdenes perdedoras consecutivas"));
}
método calcular() es el corazón de nuestro fragmento, contiene el código que realiza el cálculo real de las órdenes perdedoras consecutivas máximas.
El algoritmo para calcular esto es bastante simple, simplemente recorre el conjunto de órdenes y recuerda la mayor racha de órdenes perdedoras.

protected double compute(MonteCarloStatValues statValues, double initialCapital, double[] orders, double avgTradesPerMonth) throws Exception {
   int maxConsecLosingOrders = 0;
   int consecLosingOrders = 0;

for(int i=0; i<longitud.pedidos; i++) {
if(pedidos[i] > 0) {
// es orden ganadora, reinicia el contador
consecLosingOrders = 0;
} else {
// está perdiendo el orden
consecLosingOrders++;

if(consecLosingOrders > maxConsecLosingOrders) {
maxConsecLosingOrders = consecLosingOrders;
}
}
}

return maxConsecLosingOrders;
}

Y la última función es para formar el valor calculado

public String formatValue(double valor) {
   return String.valueOf((int) valor);
}

Esto es todo, podemos golpear el Compile y nuestro nuevo fragmento debería compilarse sin ningún error.

Paso 2 - añadir nuestro nuevo valor a la vista

Si miramos la tabla Monte Carlo en Quant Analyzer veremos que nuestra nueva columna todavía no es visible allí. Esto se debe a que las columnas visibles se gestionan en Vistas.

Tenemos que hacer clic en Configurar vista en la esquina superior derecha de la tabla para añadir una nueva columna a la vista:

Aquí tenemos que añadir la columna Órdenes Perdedoras Consecutivas a la lista de columnas mostradas a la derecha.

Una vez hecho esto, podemos ver que nuestra tabla de resultados de Monte Carlo contiene ahora también la columna de órdenes perdedoras consecutivas con valores calculados:

Esto es todo lo que se necesitaba para añadir un nuevo valor a los resultados de Monte Carlo.

Ya ves que era sencillo, el único reto real es implementar correctamente el calcular() de forma que calcule lo que quieres.

¿Le ha resultado útil este artículo? El artículo era útil El artículo no era útil

Suscríbase a
Notificar a
0 Comentarios
Feedbacks de Inline
Ver todos los comentarios