Programar criterio de Optimización.

Inicio Foros Análisis, Indicadores y Sistemas Cuestiones de Programación Programar criterio de Optimización.

Este debate contiene 18 respuestas, tiene 0 mensajes y lo actualizó  Johnysurf hace 4 años, 3 meses.

Viendo 15 publicaciones - del 1 al 15 (de un total de 20)
  • Autor
    Publicar
  • #1484

    Johnysurf
    Miembro

    Buenas noches,

    Así como existen códigos aplicables a NT para poder optimizar con criterios distintos a los que ofrece la plataforma de serie, por ejemplo Calmar Ratio, o System Quality Number.(Supongo que la mayoría ya dispone de estos códigos. Para los que no, y por si pueden servir de referencia para programar otros criterios de optimización, los adjunto aquí).

    Para instalarlos, hay que descomprimir y copiar el archivo .cs correspondiente en la carpeta
    Mis Documentos >> NinjaTrader 7 >> Bin >> Custom >> Type.
    Despues abrir el NT y compilar cualquier indicador o sistema, y ya aparecerán en la lista de criterios para optimizar de NT.

    Creo que sería muy interesante poder desarrollar un criterio de optimización basado en el coeficiente R2, que nos da lo que la curva de equity se acerca a una línea de tendencia, indicando así su regularidad en el tiempo.

    Supongo que para eso tendríamos que obtener de NT la serie de operaciones y darles un Nº de orden, pues eso es lo que pide por ejemplo Excel para poder calcular el R2,y después aplicarles la fórmula para obtener el R2.
    A parte habría que multiplicar ese R2, por ejemplo, por la pendiente o estimación lineal, que se obtiene a partir de los mismos datos, para que el resultado sea a la vez que lo más lineal posible, también lo más positiva posible.

    Mis conocimientos de programación son insuficientes para desarrollar este código, pero imagino que para el nivel de los más expertos, no ha de ser demasiado complicado, aunque seguro que debe llevar su trabajo.Creo que sería una criterio muy útil para elaborar sistemas lo más eficaces posible.

    Un saludo, y muchas gracias a quien pueda colaborar…

    #5526

    eabninja
    Miembro

    Muchas gracias !!!
    Carezco del nivel de programación requerido, pero no obstante me pondré a investigar !!!

    Cordial saludo !!

    #5537

    TraderNinja
    Miembro

    Buen inicio de hilo Johnysurf… llevo tiempo queriendo meterle mano a este asunto, por temas de operativa personal, y me has dado una excusa… ahora necesito algo de tiempo, pero el tema es digno de estudio y atención.

    Saludos!

    #5547

    Johnysurf
    Miembro

    Hola,

    Gracias por el comentario.. Realmente creo que seria un muy buen criterio para optimizar sistemas, pues define muy bien lo que se supone que todos buscamos de un sistema, es decir, la mejor relación Riesgo/Rentabilidad y REGULARIDAD, esta última es la que creo que define muy bien el R2, y la que nos permite estar un poco más tranquilos, y además aplicar un Money Management más eficaz, a mi entender.

    Para quien quiera hacer pruebas y “visualizar” como estos coeficientes definen la calidad de un sistema, he hecho un Excel donde se generan aleatoriamente (cada vez que pulsamos F9) dos series de operaciones, que corresponderían a dos sistemas, A y B, y sus resultados en estadísticas y gráficos, así como los resultados y gráficos de lo que sería la “cartera C” resultante de los dos sistemas.

    En estos gráficos aparece la línea de tendencia y su coeficiente R2.Podemos observar que cuanto más alto éste ( a partir de 0.90 son muy buenas curvas de Equity) y multiplicandolo por la Pendiente o Estimación Lineal obtenemos un ratio que de poder utilizar para optimizar nos daría unos resultados muy deseables.

    Espero que sirva de ayuda para animar a los capacitados para programar este código a intentarlo.
    Muchas gracias y un saludo.

    #5566

    TraderNinja
    Miembro

    La semana que viene espero tener más tiempo libre para dedicarle a este tema… mientras, voy dejando cosas que voy encontrando para que lo probéis y nos comentéis en el foro si os son útiles. En teoría esto optimiza en función de la máxima esperanza (primero descomprimir).

    Saludos!

    #5567

    TraderNinja
    Miembro

    Adjunto ahora el R2, el R2 X Net Profit, y el Sharpe Ratio X Net Profit, sacados de este hilo del foro de Big Mike:

    http://www.bigmiketrading.com/ninjatrader/14852-new-optimization-types.html

    Saludos!

    P.D.: Descomprimid el ZIP…

    #5568

    Johnysurf
    Miembro

    Vaya, fantástico, estupendo….!!!

    Voy a probarlos a ver cómo van. Conocía el foro y estoy suscrito, pero casi no lo utilizo, ni se me ocurrió buscar allí. Además hace relativamente poco que lo han colgado.

    Muchísimas gracias por la ayuda.
    Un saludo cordial.

    #5570

    TraderNinja
    Miembro

    Qué tal van las pruebas? Es lo que esperamos?

    Saludos!

    #5572

    Johnysurf
    Miembro

    Hola otra vez…

    Pues he estado haciendo algunas optimizaciones con el R2 y con el R2 x Profit, creo que son interesantes, aunque, en mi opinión, al utilizar el Profit, este adquiere demasiada importancia y a menudo nos da resultados con poco R2, en cambio creo que si se pudiera optimizar con el producto de R2 x Pendiente (o estimación lineal) que tiene valores parecidos a los de R2 en valor absoluto, los resultados serian mucho mejores.

    No sé si me explico: el R2 varía entre 0 y 100, acostumbrando a dar valores entre 60 y 99, y los profits son cifras de miles, por tanto, en la optimización buscará prioritariamente profits altos aunque también R2, pero teniendo más peso el profit, en cambio si se multiplicara por la pendiente, que acostumbra a tener valores entre 20 y 80, el R2 tendría más peso en las Optimizaciones, pero tendría en cuenta también el beneficio.

    Otra opción es optimizar solo con el R2, que no va mal… pero no tiene en cuenta el beneficio, por lo que a veces no ofrece lo que estamos buscando.

    No sé si ha de ser muy difícil modificar el código para que tome la pendiente en lugar del profit, o bien si se podría sugerir esta modificación/mejora en el propio foro de donde se obtuvieron estos, con esta argumentación. En todo caso esto quizás sería mejor que lo haga quien los descargó, y mejor si además tiene un nivel de inglés adecuado.

    En cuanto al Sharpe X Profit, lo he probado poco todavía, pues quería centrarme en el tema del R2.

    Gracias de nuevo por el interés y la colaboración.
    Un saludo.

    #5598

    TraderNinja
    Miembro

    Le echaré un ojo… quizá el R2 combinado con alguna estimación reciente del profit… no sé, le daré unas vueltas a ver qué se me ocurre.

    Le echaré un ojo la código, no creo que sea muy difícil de modificar.

    Saludos!

    #5603

    Johnysurf
    Miembro

    OK. Estupendo..!

    Yo proponía la pendiente (o estimación lineal) por que tiene valores bastante parecidos a los del R2, y haciendo un ratio con estos dos podemos buscar unas curvas de equity muy deseables, como se puede ver haciendo pruebas con el excel que colgué.

    Además se obtiene de los mismos valore X Y que el coeficiente R2, y como estos ya están en el código, supongo que “solo” abria que aplicar la formula de la estimación lineal…

    Un saludo.

    #5629

    daniv
    Miembro

    Hola,

    Creo que el criterio que pretendes optimizar es el que aparece en el libro de kestner “Estrategias de trading cuantitativo” (me parece que es este el libro aunque no estoy seguro del todo).

    El autor lo llama el K-ratio y tiene en cuenta la pendiente, el error tipico y el numero de operaciones. Lo invento el para tratar de paliar los “defectos” del Ratio Sharpe.

    Trabajo fuera de casa y hasta el finde no vuelvo. Intentare el sabado poner la formula con algun ejemplo y seguro que se ve mas claro.

    Saludos

    #5911

    polxx
    Miembro

    Hola a todos, muy buen hilo este.

    Yo uso el SQN, que es casi imposible que falle, si hay 2 curvas de beneficio y A tiene SQN mas alto que B, entonces a simple vista la curva de A es o bien de mas pendiente, o bien mas suave. Casi nunca falla, sin embargo como ya sabéis sharpe, profit factor y similares si que fallan.

    Lo que busco ahora es una formula que partiendo de la ganancia promedio, desviación estándar de resultados, y similares, me diga el capital necesario para que en el futuro tenga 1 posibilidad entre 100 de ruina. Por ejemplo si indica que se necesitan 20.000 euros por 1 contrato y con eso en los próximos años hay 1 posibilidad entre 100 de ruina, puedo dividir el capital ganado por año, entre 20.000 y obtengo la ganancia porcentual por año, cuanto mas alta mejor, y así se pueden comparar estrategias.

    Ademas tiene la utilidad de hacer gestión de capital, indicándote cuantos contratos debes trabajar.

    Y no me sirve hacer montecarlo, ya que supone mucho lio.

    Estoy intentando sacar una fórmula que se aproxime mediante una simulación en excel, a ver que consigo.

    #5933

    TraderNinja
    Miembro

    @polxx wrote:

    Y no me sirve hacer montecarlo, ya que supone mucho lio.

    Venga, explícate un poco no?

    Un abrazo! 😉

    #5941

    polxx
    Miembro

    A la hora de comprobar si un sistema es bueno o no, uso la fórmula SQN, cuanto mas alto sea mejor, nunca falla.

    Pero además uso otra muy básica. Calculo la mayor serie de pérdidas que se han tenido, después la multiplico por 2,5, y después sumo 3000 euros de garantías, y con ello obtengo el capital que aproximadamente se necesita. Puesto que conozco lo que el sistema ha ganado, calculo lo que se gana al año, y por tanto tengo finalmente el % ganado anualmente.

    La fórmula es demasiado básica y quiero mejorarla, ya que la mayor serie de pérdidas del pasado, es algo puntual que sucedió en un momento determinado. Seria mejor una fórmula que tenga en cuenta todo el histórico para calcular cuanto capital se necesita. Pero hablo de una fórmula, no simulación de montecarlo ni cosas demasiado complejas, algo aproximado me vale.

    Entonces tengo una aproximación que puede valer y paso a contar.

    Conocemos estos datos:
    Operaciones totales 299
    tiempo de simulación 8,5 años
    operaciones perdedoras 91
    ganado total 85541 euros
    de las operaciones perdedoras, de promedio se pierde 1034 euros

    y de ahí deducimos:
    operaciones al año 35,18
    operaciones en 10 años son 351,76
    1 operación cada 10 años sucede el 0,2842% del tiempo (1/351,76)
    (lo de los 10 años es arbitrario podemos elegir otro periodo de tiempo)
    o lo que es lo mismo, en probabilidad 0,002842
    las perdedoras son el 30%, osea probabilidad de 0,30

    Probabilidad de un suceso ^ número de repeticiones = probabilidad de que se de ese suceso repetidas veces
    Por ejemplo 0,5 de que salga cara, 3 veces seguidas, entonces 0,5^3= 0,125 = 12,5% de las veces salen 3 caras seguidas
    Conocemos la probabilidad de que salga una operación perdedora, 0,3
    Queremos que ese suceso aparezca 1 vez cada 10 años, osea en proporción 0,002842
    Probabilidad de perdedora ^ x = probabilidad de que se den x perdedoras seguidas en 10 años
    0,3 ^ x = 0,002842
    Es decir, x es las veces seguidas que aparece una operación perdedora en 10 años
    x = log(0,002842) / log(0,3)
    x= 4,9
    Como cuando pierde, pierde 1034, entonces
    peor serie de perdidas esperada en 10 años = 1034 * 4,9 = 5096
    Si queremos que la peor serie de pérdidas represente sólo el 10% de nuestro capital entonces
    capital necesario = 5096 * 10 = 50961
    ganado al año = 85541 / 8,5 = 12220
    % anual = 12220/50961*100 = 23,97

    Este sistema tiene un retorno anual del 23,97%
    y un SQN de 3,95

Viendo 15 publicaciones - del 1 al 15 (de un total de 20)

Debes estar registrado para responder a este debate.