Im muy nuevo a R y tratando de backtest una estrategia Ive programado ya en WealthLab. Varias cosas que no entiendo (y no funciona obviamente :) No consigo los precios cercanos muy bien en un vector. O algún tipo de vector, pero comienza con la estructura y no entiendo realmente lo que hace esta función. Es por eso que mi serie, una llamada probablemente no funciona. N lt - nrow (serie) tampoco funciona, pero lo necesito para el Loop Así que supongo que si consigo Estas 2 preguntas respondidas mi estrategia debería funcionar. Im muy agradecido por cualquier ayuda .. R parece bastante complicado, incluso con la experiencia de programación en otros idiomas sí I Tipo de copiado algunas líneas de código de este tutorial y don39t realmente entender esta línea. Me refiero a series, 1 pensé que se aplicaría la función f a quotcolumnquot 1 de la serie. Pero ya que esta serie es un cierto compley con la estructura etc. él doesn39t trabajo. (FINC 621) es una clase de nivel de posgrado que se ofrece actualmente en la Universidad de Loyola en Chicago (Chicago, Illinois, Estados Unidos). Durante el trimestre de invierno. FINC 621 explora temas de finanzas cuantitativas, matemáticas y programación. La clase es de naturaleza práctica y está compuesta por una conferencia y un componente de laboratorio. Los laboratorios utilizan el lenguaje de programación R y los estudiantes deben presentar sus asignaciones individuales al final de cada clase. El objetivo final de FINC 621 es proveer a los estudiantes con herramientas prácticas que pueden usar para crear, modelar y analizar estrategias comerciales simples. Algunos enlaces R útiles Acerca del Instructor Harry G. es un comerciante cuantitativo senior para una empresa comercial de HFT en Chicago. Él tiene un master8217s grado en Ingeniería Eléctrica y un master8217s grado en Matemáticas Financieras de la Universidad de Chicago. En su tiempo libre, Harry enseña un curso de posgrado en Finanzas Cuantitativas en la Universidad Loyola de Chicago. Él es también el autor de la negociación cuantitativa con R. Archive para la categoría de las estrategias de negociación Al probar estrategias que negocian un acercamiento común es dividir el conjunto inicial de datos en datos de la muestra: la parte de los datos diseñados para calibrar el modelo y fuera de la muestra Datos: la parte de los datos utilizados para validar la calibración y garantizar que el rendimiento creado en la muestra se reflejará en el mundo real. Como regla general, alrededor de 70 de los datos iniciales se pueden utilizar para la calibración (es decir, en la muestra) y 30 para la validación (es decir, fuera de la muestra). A continuación, una comparación de los datos de entrada y salida de la muestra ayuda a decidir si el modelo es lo suficientemente robusto. Este post tiene como objetivo dar un paso más y proporciona un método estadístico para decidir si los datos de la muestra están en línea con lo que se creó en la muestra. En el gráfico de abajo, el área azul representa el rendimiento de la muestra de una de mis estrategias. Una inspección visual simple revela un buen ajuste entre el dentro y fuera del rendimiento de la muestra, pero ¿qué grado de confianza que tengo en esto En esta etapa no mucho y este es el problema. Lo que realmente se necesita es una medida de similitud entre los conjuntos de datos de entrada y salida de la muestra. En términos estadísticos, esto podría traducirse como la probabilidad de que las cifras de rendimiento dentro y fuera de la muestra provengan de la misma distribución. Existe una prueba estadística no paramétrica que hace exactamente esto: la Prueba de Kruskall-Wallis. Una buena definición de esta prueba se puede encontrar en R-Tutor 8220A colección de muestras de datos son independientes si provienen de poblaciones no relacionadas y las muestras no se afectan mutuamente. Uso de la prueba de Kruskal-Wallis. Podemos decidir si las distribuciones de la población son idénticas sin suponer que sigan la distribución normal.8221 El beneficio adicional de esta prueba no está suponiendo una distribución normal. Existen otras pruebas de la misma naturaleza que podrían encajar en ese marco. La prueba de Mann-Whitney-Wilcoxon o las pruebas de Kolmogorov-Smirnov se adaptarían perfectamente al marco describe aquí sin embargo esto está más allá del alcance de este artículo para discutir los pros y los contras de cada una de estas pruebas. Una buena descripción junto con ejemplos R se puede encontrar aquí. Aquí el código utilizado para generar el gráfico anterior y el análisis: En el ejemplo anterior, el período de muestra es más largo que el período fuera de la muestra, por lo tanto, creé aleatoriamente 1000 subconjuntos de los datos de la muestra cada uno de ellos con la misma longitud que la salida De los datos de la muestra. Entonces probé cada uno en el subconjunto de la muestra contra el fuera de los datos de la muestra y registré los valores de p. Este proceso no crea un solo valor p para la prueba de Kruskall-Wallis sino una distribución que hace que el análisis sea más robusto. En este ejemplo, la media de los valores de p está muy por encima de cero (0.478), lo que indica que la hipótesis nula debe ser aceptada: existen fuertes evidencias de que los datos de entrada y salida provienen de la misma distribución. Como de costumbre, lo que se presenta en este post es un ejemplo de juguete que sólo rasca la superficie del problema y debe adaptarse a las necesidades individuales. Sin embargo, creo que propone un marco estadístico interesante y racional para evaluar los resultados de la muestra. Esta publicación está inspirada en los dos siguientes trabajos: Vigier Alexandre, Chmil Swann (2007), Efectos de diversas funciones de optimización en el rendimiento fuera de muestra de las estrategias de negociación genéticamente evolucionadas, Previsión de mercados financieros Conferencia Vigier Alexandre, Chmil Swann (2010), An Proceso de optimización para mejorar la coherencia de la muestra, un caso de Bolsa, JP Morgan Cazenove Equity Cuantitativa de la Conferencia, Londres Octubre 2010 fidlr es un complemento RStudio diseñado para simplificar el proceso de descarga de datos financieros de varios proveedores. Esta versión inicial es un envoltorio alrededor de la función getSymbols en el paquete quantmod y solo se admiten Yahoo, Google, FRED y Oanda. Probablemente añadir funcionalidades con el tiempo. Como de costumbre con esas cosas sólo un amable recordatorio: 8220 EL SOFTWARE SE PROPORCIONA 8220AS IS8221, SIN GARANTÍA DE CUALQUIERA KIND82308221 Cómo instalar y utilizar fidlr Puede obtener el addin / package desde su repositorio Github aquí (lo registraré en CRAN más adelante) Instale el complemento. Hay un excelente tutorial para instalar RStudio Addins aquí. Una vez que el complemento se instala debe aparecer en el menú Addin. Sólo elija fidlr en el menú y una ventana como se muestra a continuación debe aparecer. Elija un proveedor de datos en el menú desplegable Fuente. Seleccione un intervalo de fechas en el menú Fecha Introduzca el símbolo que desea descargar en el cuadro de texto del instrumento. Para descargar varios símbolos simplemente ingrese los símbolos separados por comas. Utilice los botones de radio para elegir si desea descargar el instrumento en un archivo csv o en el entorno global. El archivo csv se guardará en el directorio de trabajo y habrá un archivo csv por cada instrumento. Pulse Ejecutar para obtener los datos o Cerrar para cerrar el complemento Los mensajes de error y las advertencias son manejados por los paquetes subyacentes (quantmod y Shiny) y se pueden leer desde la consola Esta es una primera versión del proyecto, así que no espere la perfección pero Esperemos que va a mejorar con el tiempo. Por favor, informe cualquier comentario, sugerencia, error etc8230 a: thertradergmail Hacer la investigación cuantitativa implica una gran cantidad de datos crujidos y uno necesita datos limpios y confiables para lograr esto. Lo que realmente se necesita son los datos limpios que son fácilmente accesibles (incluso sin conexión a Internet). La manera más eficiente de hacer esto para mí ha sido mantener un conjunto de archivos csv. Obviamente este proceso se puede manejar de muchas maneras, pero he encontrado tiempo extra muy eficiente y simple para mantener un directorio donde almacenar y actualizar los archivos csv. Tengo un archivo de csv por el instrumento y cada archivo se nombra después del instrumento que contiene. La razón por la que lo hago es doble: En primer lugar, no quiero descargar (precio) los datos de Yahoo, Google etc8230 cada vez que quiero probar una nueva idea, pero lo más importante una vez que identifiqué y arregló un problema, don8217t quiero tener que Hacerlo de nuevo la próxima vez que necesite el mismo instrumento. Sencillo pero muy eficiente hasta ahora. El proceso se resume en el siguiente cuadro. En todo lo que sigue, supongo que los datos provienen de Yahoo. El código tendrá que ser modificado para los datos de Google, Quandl etc8230 Además, presento el proceso de actualización de los datos de precios diarios. La configuración será diferente para los datos de mayor frecuencia y otro tipo de conjunto de datos (es decir, diferente de los precios). 1 8211 Descarga inicial de datos (listOfInstruments. R amp historicalData. R) El archivo listOfInstruments. R es un archivo que contiene sólo la lista de todos los instrumentos. Si un instrumento no forma parte de mi lista (es decir, ningún archivo csv en mi carpeta de datos) o si lo hace por primera vez tiene que descargar el conjunto de datos históricos iniciales. El ejemplo a continuación descarga un conjunto de precios diarios de ETFs de Yahoo Finance a enero de 2000 y almacena los datos en un archivo csv. 2 8211 Actualizar los datos existentes (updateData. R) El código a continuación se inicia a partir de los archivos existentes en la carpeta dedicada y los actualiza uno tras otro. Por lo general, ejecuto este proceso todos los días, excepto cuando I8217m de vacaciones. Para agregar un nuevo instrumento, simplemente ejecute el paso 1 anterior para este instrumento solo. 3 8211 Crear un archivo por lotes (updateDailyPrices. bat) Otra parte importante del trabajo es la creación de un archivo por lotes que automatiza el proceso de actualización anterior (I8217m un usuario de Windows). Esto evita abrir R / RStudio y ejecutar el código desde allí. El código siguiente se coloca en un archivo. bat (la ruta tiene que ser modificada con la configuración de reader8217s). Tenga en cuenta que he añadido un archivo de salida (updateLog. txt) para rastrear la ejecución. El proceso anterior es extremadamente simple porque sólo describe cómo actualizar los datos de precios diarios. He estado usando esto por un tiempo y ha estado trabajando muy bien para mí hasta ahora. Para obtener datos más avanzados y / o frecuencias más altas, las cosas pueden ser mucho más complicadas. Como de costumbre cualquier comentario bienvenido Cuando se trata de gestionar una cartera de acciones frente a un benchmark el problema es muy diferente de definir una estrategia de retorno absoluto. En el primero se tiene que mantener más acciones que en el posterior, donde no se puede mantener ninguna acción si no hay una oportunidad lo suficientemente buena. La razón de ello es el error de seguimiento. Esto se define como la desviación estándar del rendimiento de la cartera menos el rendimiento de referencia. Cuanto menos acciones se mantenga frente a un punto de referencia, mayor será el error de seguimiento (por ejemplo, mayor riesgo). El análisis que sigue se inspira en gran medida en el libro 8220Active Portfolio Management8221 de Grinold amp Kahn. Ésta es la biblia para cualquier persona interesada en funcionar una lista contra un punto de referencia. Recomiendo encarecidamente a cualquiera que tenga interés en el tema que lea el libro desde el principio hasta el final. Está muy bien escrito y establece los fundamentos de la gestión sistemática de la cartera activa (no tengo ninguna afiliación al editor oa los autores). 1 8211 Análisis Factorial Aquí estamos tratando de clasificar con la mayor exactitud posible las existencias en el universo de inversión en una base de retorno hacia adelante. Muchas personas han inventado muchas herramientas y se han desarrollado innumerables variantes de esas herramientas para lograrlo. En este post me centraré en dos métricas simples y ampliamente utilizadas: Coeficiente de información (IC) y Quantiles Return (QR). 1.1 8211 Coeficiente de información El horizonte de la rentabilidad futura tiene que ser definido por el analista y es una función de la rotación de la estrategia y de la desintegración alfa (esto ha sido objeto de una extensa investigación). Obviamente, los CI deben ser lo más altos posible en términos absolutos. Para el lector entusiasta, en el libro de Grinold amp Kahn se da una fórmula que une la relación de información (IR) y la IC: con anchura el número de apuestas independientes (oficios). Esta fórmula se conoce como la ley fundamental de la gestión activa. El problema es que a menudo, definir amplitud con precisión no es tan fácil como suena. Para obtener una estimación más precisa de la potencia predictiva de los factores, es necesario ir un paso más allá y agrupar las existencias por cuantil de los valores de los factores, luego analizar la rentabilidad media (o cualquier otra métrica de tendencia central) de cada uno de ellos Cuantiles. La utilidad de esta herramienta es sencilla. Un factor puede tener un buen CI, pero su poder predictivo podría limitarse a un pequeño número de acciones. Esto no es bueno, ya que un gestor de cartera tendrá que recoger acciones dentro del universo entero para cumplir con su limitación de error de seguimiento. Los buenos cuantiles de retorno se caracterizan por una relación monótona entre los cuantiles individuales y los retornos forward. Todas las acciones en el índice SampP500 (en el momento de la escritura). Obviamente hay un sesgo de supervivencia de buques: la lista de acciones en el índice ha cambiado significativamente entre el inicio y el final del período de muestreo, sin embargo es bastante buena sólo con fines ilustrativos. El código de abajo descarga los precios de las acciones individuales en el SampP500 entre enero de 2005 y hoy (toma un tiempo) y convierte los precios en bruto en los últimos 12 meses y el último mes. El primero es nuestro factor, este último será utilizado como la medida de retorno hacia adelante. A continuación se muestra el código para calcular el Coeficiente de Información y el Retorno de Quantiles. Tenga en cuenta que he utilizado quintiles en este ejemplo, pero cualquier otro método de agrupación (terciles, deciles etc8230) se puede utilizar. Realmente depende del tamaño de la muestra, lo que desea capturar y si desea tener una amplia visión general o centrarse en las colas de distribución. Para estimar los rendimientos dentro de cada quintil, la mediana se ha utilizado como estimador de tendencia central. Esta medida es mucho menos sensible a los valores atípicos que la media aritmética. Y finalmente el código para producir el Cuadro de Retorno de Quantiles. 3 8211 Cómo explotar la información anterior En el gráfico anterior, Q1 es el más bajo en los últimos 12 meses y el Q5 más alto. Hay un aumento casi monotónico en el retorno de los cuantiles entre Q1 y Q5, lo que indica claramente que las existencias que caen en Q5 superan a las que caen en Q1 en aproximadamente 1 por mes. Esto es muy significativo y poderoso para un factor tan simple (no es realmente una sorpresa, aunque 8230). Por lo tanto, hay mayores posibilidades de superar el índice por sobreponderar las acciones caen en Q5 y subponderar a los que caen en Q1 en relación con el punto de referencia. Un IC de 0,0206 podría no significar mucho en sí mismo, pero es significativamente diferente de 0 y indica un buen poder predictivo de los últimos 12 meses de retorno en general. Las pruebas de significación formal pueden ser evaluadas, pero esto está más allá del alcance de este artículo. 4 8211 Limitaciones prácticas El marco anterior es excelente para evaluar la calidad de los factores de inversión. Sin embargo, existen varias limitaciones prácticas que deben ser abordadas para la implementación de la vida real: Reequilibrio. En la descripción anterior, se suponía que al final de cada mes la cartera estaba totalmente reequilibrada. Esto significa que todas las acciones que caen en el primer trimestre están infraponderadas y todas las acciones que caen en el Q5 están sobreponderadas en relación con el índice de referencia. Esto no siempre es posible por razones prácticas: algunas poblaciones podrían ser excluidas del universo de inversión, hay restricciones en el peso de la industria o del sector, existen restricciones en el volumen de ventas, etc. Esto no ha sido tomado en cuenta en el análisis anterior y esto es un freno serio para la implementación de la vida real. Consideraciones de volumen de negocios se aplican generalmente en la vida real en una forma de pena sobre la calidad del factor. Coeficiente de transferencia. Esta es una extensión de la ley fundamental de la gestión activa y se relaja la asunción del modelo Grinold 8217s que los directivos no enfrentan restricciones que les impiden traducir sus inversiones directamente en apuestas de cartera. Y, por último, me sorprende lo que se puede lograr en menos de 80 líneas de código con R8230 Como de costumbre los comentarios bienvenidos me encuentro con un montón de estrategias en la blogosfera algunos son interesantes algunos son una pérdida de tiempo, pero la mayoría comparten una característica común : Las personas que desarrollan esas estrategias hacen su tarea en términos de analizar el retorno, pero se presta mucha menos atención al lado del riesgo de su naturaleza aleatoria. I8217ve visto comentar como 8220a 25 bajada en 2011 pero excelente rendimiento overall8221. Bueno, mi apuesta es que nadie en la tierra le permitirá experimentar una pérdida de 25 con su dinero (a menos que los acuerdos especiales están en su lugar). En el mundo de fondos de cobertura la gente tiene tolerancia muy baja para la reducción. Generalmente, como un nuevo operador en un fondo de cobertura, asumiendo que usted no tiene reputación, tiene muy poco tiempo para probarse a sí mismo. Usted debe ganar dinero desde el primer día y seguir haciéndolo durante unos meses antes de ganar un poco de credibilidad. Primero, digamos que usted tiene un mal comienzo y que pierde dinero al principio. Con una reducción de 10 you8217re sin duda fuera, pero incluso con una reducción de 5 las posibilidades de ver su asignación reducida son muy altos. Esto tiene implicaciones significativas en sus estrategias. Let8217s asumen que si pierdes 5 tu asignación se divide por 2 y vuelves a tu asignación inicial sólo cuando pasas de nuevo la marca de agua alta (por ejemplo, la reducción vuelve a 0). En el cuadro de abajo, he simulado el experimento con una de mis estrategias. Usted comienza a operar en 1 de junio de 2003 y todo va bien hasta el 23 de julio de 2003, donde su curva de reducción alcanza el umbral -5 (1). Su asignación es cortada por 50 y usted don8217t cruzar el nivel de la marca de agua hasta 05 de diciembre 2003 (3). Si usted ha mantenido la asignación sin cambios, el nivel de la marea alta se habría cruzado el 28 de octubre de 2003 (2) y para el final del año usted habría hecho más dinero. Sin embargo, el razonamiento va un poco más allá. Aún en la tabla de arriba, asuma que usted consigue realmente mala suerte y comienza a operar hacia mediados de junio de 2003. Usted golpeó el límite de la retirada 10 para el principio de agosto y you8217re más probable fuera del juego. Usted habría comenzado a principios de agosto su asignación no se han cortado en absoluto y que terminan haciendo un buen año en sólo 4 meses completos de comercio. En esos dos ejemplos nada ha cambiado, pero su fecha de inicio8230. El éxito comercial de cualquier individuo tiene alguna forma de dependencia camino y no hay mucho que puede hacer al respecto. Sin embargo, usted puede controlar el tamaño de un drawdown estrategia y esto debe ser tratado con mucho cuidado. Una cartera debe diversificarse en todas las dimensiones posibles: clases de activos, estrategias de inversión, frecuencias de negociación, etc.8230. Desde esa perspectiva, el riesgo es su variable de supervivencia 8222. Si se gestiona adecuadamente, tiene la oportunidad de permanecer en el juego el tiempo suficiente para darse cuenta del potencial de su estrategia. De lo contrario, no estarás allí el próximo mes para ver qué pasa. Como de costumbre los comentarios bienvenidos Esto es un seguimiento de mi anterior post 8220A Simple Shiny App para la supervisión de estrategias de comercio 8220. He añadido algunas mejoras que hacen que la aplicación un poco mejor (al menos para mí). A continuación se muestra la lista de nuevas características: Un archivo. csv de ejemplo (el que contiene los datos sin procesar) Un cuadro desplegable 8220EndDate8221 que permite especificar el final del período. Una página 8220Risk8221 que contiene un análisis de VaR y un gráfico de peor rendimiento en varios horizontes Una página 8220How To8221 explicando cómo usar y adaptar la aplicación a las necesidades individuales También hice la aplicación totalmente autocontenida. Ahora está disponible como un producto independiente y no hay necesidad de tener R / RStudio instalado en su computadora para ejecutarlo. Puede descargarse de la cuenta de unidad de Google R Trader. Esta versión de la aplicación se ejecuta utilizando portátil R y Chrome portátil. Para el lector interesado, este enlace explica en detalles completos cómo empaquetar una aplicación brillante en una aplicación de escritorio (sólo Windows ahora). 1 8211 Cómo instalar el amplificador ejecute la aplicación en su computadora Cree una carpeta específica Descomprima el contenedor del archivo. zip en esa nueva carpeta. Cambie las rutas en el archivo runShinyApp para que coincida con sus configuraciones Para ejecutar la aplicación, sólo tiene que ejecutar el archivo run. vbs. También incluí un icono (RTraderTradingApp. ico) si desea crear un acceso directo en su escritorio. La aplicación utiliza como entrada varios archivos csv (uno para cada estrategia). Cada archivo tiene dos columnas: fecha y devolución diaria. Hay un ejemplo de dicho archivo en el repositorio de Github. El código se compone esencialmente de 3 archivos. Ui. R: controla el diseño y la apariencia de la aplicación server. R: contiene las instrucciones necesarias para crear la aplicación. Puede cargar tantas estrategias como desee, siempre y cuando el archivo csv correspondiente tenga el formato correcto (consulte a continuación). ShinyStrategyGeneral. R: carga los paquetes requeridos y lanza la aplicación poner ui. R y server. R archivo en un directorio separado En el archivo server. R cambie los parámetros inputPath, inputFile y keepColumns para que coincidan con su configuración. Los dos primeros se explican por sí mismos, el tercero es una lista de nombres de columnas dentro del archivo csv. Mantenga sólo la fecha y el retorno diario. 3 8211 Cómo agregar una estrategia de negociación Crear el archivo. csv correspondiente en el directorio derecho Crear una nueva entrada en la función de datos reactivos (dentro del archivo server. R) Agregar un elemento extra al parámetro choice en el primer selectInput en el sidebarPanel (Dentro del archivo ui. R). El nombre de element8217s debe coincidir con el nombre de la nueva entrada anterior. 4 8211 Cómo quitar una estrategia comercial Quite la entrada en la función de datos reactivos correspondiente a la estrategia que desea eliminar (dentro del archivo server. R) Quite el elemento en el parámetro choice en el primer selectInput en el sidebarPanel correspondiente a la estrategia Que desea eliminar (dentro del archivo ui. R). Por favor, no dude en ponerse en contacto si tiene alguna sugerencia. En un post anterior mostré cómo usar R, Knitr y LaTeX para construir un informe de estrategia de plantilla. Este post va un paso más allá, haciendo el análisis interactivo. Además de la interactividad, la aplicación Shiny también resuelve dos problemas: ahora puedo acceder a todas mis estrategias de negociación desde un único punto independientemente del instrumento que se negocia. Junto con la interactividad Shiny, permite una comparación más fácil. Puedo enfocarme en un período de tiempo específico. El código utilizado en este post está disponible en un repositorio Gist / Github. Hay esencialmente 3 archivos. Ui. R. Controla el diseño y la apariencia de la aplicación. Server. R. Contiene las instrucciones necesarias para crear la aplicación. Carga los datos y los formatea. Hay un archivo csv por estrategia que contiene al menos dos columnas: date y return con el siguiente formato: (82202010-12-228243,82210.048221). Puedes cargar tantas estrategias como quieras, siempre y cuando tengan el formato correcto. ShinyStrategyG eneral. R. Carga los paquetes requeridos y lanza la aplicación. Esta aplicación es, probablemente, lejos de ser perfecto y sin duda lo mejorará en el futuro. Siéntase libre de ponerse en contacto si tiene alguna sugerencia. Un gran agradecimiento al equipo de RStudio / Shiny por una herramienta tan grande. La pregunta que uno siempre debe hacerse cuando utiliza indicadores técnicos es lo que sería un criterio objetivo para seleccionar los parámetros de indicadores (por ejemplo, por qué usar un RSI de 14 días en vez de 15 o 20 días). Algoritmos genéticos (GA) son herramientas adecuadas para responder a esa pregunta. En este post le mostraré cómo configurar el problema en R. Antes de proceder el recordatorio habitual: Lo que presento en este post es sólo un ejemplo de juguete y no una invitación a invertir. No es una estrategia terminada, sino una idea de investigación que necesita ser investigada, desarrollada y adaptada a las necesidades individuales. ¿Qué son los algoritmos genéticos? La mejor descripción de GA que encontré viene de Cybernatic Trading un libro de Murray A. Ruggiero. 8220 Algoritmos genéticos fueron inventados por John Holland a mediados de 1970 para resolver problemas de optimización dura. Este método utiliza la selección natural, la supervivencia del más apto8221. El proceso general sigue los pasos a continuación: Codificar el problema en cromosomas Usando la codificación, desarrollar una función de aptitud para el uso en la evaluación de cada cromosoma 8217s valor en la solución de un problema dado Inicializar una población de cromosomas Evaluar cada cromosoma en la población Crear nuevos cromosomas por el apareamiento de dos Cromosomas Esto se hace silenciando y recombinando a dos padres para formar dos hijos (los padres son seleccionados aleatoriamente pero sesgada por su condición física) Evaluar el nuevo cromosoma Elimine un miembro de la población que es menos apta que el nuevo cromosoma e inserte el nuevo cromosoma en la población . Si se alcanza el criterio de detención (el número máximo de generaciones, los criterios de aptitud son suficientes8230), entonces regrese el mejor cromosoma o vaya al paso 4 Desde una perspectiva comercial GA son muy útiles porque son buenos para tratar con problemas altamente no lineales. Sin embargo, exhiben algunas características desagradables que merecen la pena mencionar: Over fitting: Este es el principal problema y es hasta el analista para configurar el problema de una manera que minimice este riesgo. Tiempo de computación. Si el problema no está correctamente definido, puede ser extremadamente largo llegar a una solución decente y la complejidad aumenta exponencialmente con el número de variables. De ahí la necesidad de seleccionar cuidadosamente los parámetros. Hay varios paquetes de R que tratan con GA, elegí utilizar el más común: rgenoud Los precios de cierre diarios para la mayoría de los ETFs líquidos de las finanzas de Yahoo se remonta a enero de 2000. El período de muestra va de enero de 2000 a diciembre de 2010. The Out of Período de muestra comienza en enero de 2011. La lógica es la siguiente: la función de aptitud se optimiza durante el período de la muestra para obtener un conjunto de parámetros óptimos para los indicadores técnicos seleccionados. El desempeño de esos indicadores se evalúa luego en el período fuera de la muestra. Pero antes hay que seleccionar los indicadores técnicos. El mercado de renta variable exhibe dos características principales que son familiares a cualquier persona con una cierta experiencia que negocia. Momento a largo plazo y reversión a corto plazo. Esas características se pueden traducir en términos de indicadores técnicos mediante: el promedio móvil de cruce y el RSI. Esto representa un conjunto de 4 parámetros: Períodos de retroceso para medias móviles a largo y corto plazo, período de retroceso para RSI y umbral RSI. Los conjuntos de parámetros son los cromosomas. El otro elemento clave es la función de fitness. Es posible que desee utilizar algo como: rendimiento máximo o Sharpe ratio o Drawdown promedio mínimo. En lo que sigue, elegí maximizar la proporción de Sharpe. La implementación R es un conjunto de 3 funciones: fitnessFunction. Define la función de aptitud (por ejemplo, la máxima relación de Sharpe) que se utilizará dentro del GA tradingStatistics del motor. Resumen de estadísticas de comercio para la entrada y salida de períodos de muestra para propósitos de comparación. El motor GA del paquete rgenoud La función genoud es bastante compleja, pero no voy a explicar lo que significa cada parámetro, ya que quiero mantener este post corto (y la documentación es realmente buena). En la tabla a continuación presento para cada instrumento los parámetros óptimos (periodo de retroceso RSI, umbral RSI, Media móvil a corto plazo y Media móvil a largo plazo) junto con las estadísticas de comercio de entrada y salida. Antes de comentar los resultados anteriores, quiero explicar algunos puntos importantes. Para emparejar la lógica definida arriba, limité los parámetros para cerciorarse de que el período del look-back para la media móvil a largo plazo sea siempre más largo que la media móvil más corta. También obligé al optimizador a elegir sólo las soluciones con más de 50 operaciones en el período de la muestra (por ejemplo, la significación estadística). En general, los resultados de la muestra no son muy impresionantes. Los rendimientos son bajos, incluso si el número de operaciones es pequeño para hacer el resultado realmente significativo. Sin embargo, hay una pérdida significativa de eficiencia entre el período de entrada y salida del período de muestreo para Japón (EWJ), lo que muy probablemente significa un ajuste excesivo. Este post tiene como objetivo dar al lector las herramientas para usar adecuadamente GA en un marco de negociación cuantitativa. Una vez más, It8217s sólo un ejemplo que necesita ser más refinado. Unas pocas mejoras potenciales a explorar serían: función de la aptitud. Maximizar la relación de Sharpe es muy simplista. Una función 8220smarter8221 ciertamente mejorará el patrón de estadísticas de comercio de muestra. Tratamos de capturar un patrón muy directo. Una investigación más en profundidad de patrón es definitivamente necesario. Optimización. Hay muchas maneras de mejorar la forma en que se lleva a cabo la optimización. Esto mejoraría tanto la velocidad de cálculo como la racionalidad de los resultados. El código utilizado en esta publicación está disponible en un repositorio de Gist. Como de costumbre todos los comentarios bienvenidos Hay un enorme cuerpo de literatura académica y empírica sobre la predicción del mercado. La mayoría de las veces mezcla dos características del mercado: Magnitud y Dirección. En este artículo quiero centrarse en la identificación de la dirección del mercado solamente. El objetivo que me propuse, es identificar las condiciones del mercado cuando las probabilidades están significativamente sesgadas hacia un mercado ascendente o descendente. Este post da un ejemplo de cómo CART (Clasificación y árboles de regresión) se puede utilizar en este contexto. Antes de proceder el recordatorio habitual: Lo que presento en este post es sólo un ejemplo de juguete y no una invitación a invertir. No es una estrategia terminada, sino una idea de investigación que necesita ser investigada, desarrollada y adaptada a las necesidades individuales. 1 8211 ¿Qué es CART y por qué usarlo? De las estadísticas, CART es un conjunto de técnicas de clasificación y predicción. La técnica está dirigida a producir reglas que predicen el valor de una variable de resultado (objetivo) a partir de valores conocidos de variables predictoras (explicativas). Hay muchas implementaciones diferentes, pero todos comparten una característica general y eso es lo que me interesa. De Wikipedia, los algoritmos para construir árboles de decisión normalmente trabajan de arriba hacia abajo, eligiendo una variable en cada paso que mejor divide el conjunto de elementos. Diferentes algoritmos utilizan diferentes métricas para medir 8220best8221. Estos generalmente miden la homogeneidad de la variable objetivo dentro de los subconjuntos. Estas métricas se aplican a cada subconjunto candidato, y los valores resultantes se combinan (por ejemplo, un promedio) para proporcionar una medida de la calidad de la división. La metodología CART presenta algunas características que son muy adecuadas para el análisis de mercado: No paramétrico. CART puede manejar cualquier tipo de distribución estadística No lineal. CART puede manejar un amplio espectro de dependencia entre las variables (por ejemplo, no se limita a las relaciones lineales) Robusto a outliers Hay varios paquetes R que tratan de particiones recursivas, yo uso aquí para la estimación de árboles y rpart. plot para árboles de dibujo. 2 8211 Data amp Experiment Design Precios diarios de OHLC para la mayoría de ETFs líquidos de enero de 2000 a diciembre de 2013 extraídos de Google Finance. El período de la muestra va de enero de 2000 a diciembre de 2010, el resto del conjunto de datos es el período fuera de la muestra. Antes de ejecutar cualquier tipo de análisis, el conjunto de datos debe prepararse para la tarea. La variable objetivo es el retorno semanal semanal de ETF definido como dos estados del resultado mundial (UP o DOWN). Si el retorno semanal hacia adelante gt 0 entonces el mercado en el estado UP, DOWN en caso contrario Las variables explicativas son un conjunto de indicadores técnicos derivados del conjunto de datos OHLC inicial diaria. Cada indicador representa un comportamiento del mercado bien documentado. Para reducir el ruido en los datos e intentar identificar relaciones robustas, se considera que cada variable independiente tiene un resultado binario. Volatilidad (VAR1). La alta volatilidad se asocia generalmente con un mercado hacia abajo y baja volatilidad con un mercado ascendente. La volatilidad se define como los 20 días de ATR crudo (Promedio de rango verdadero) se extendió a su promedio móvil (MA). Si ATR bruto gt MA entonces VAR1 1, sino VAR1 -1. Momento a corto plazo (VAR2). El mercado de renta variable exhibe un comportamiento momentáneo a corto plazo captado aquí por un promedio móvil de 5 días (SMA). Si Precio gt SMA entonces VAR2 1 VAR2 -1 Dinámica a largo plazo (VAR3). El mercado de acciones muestra un comportamiento de impulso a largo plazo capturado aquí por un promedio móvil de 50 días (LMA). Si Precio gt LMA entonces VAR3 1 más VAR3 -1 Inversión a corto plazo (VAR4). Esto es capturado por el CRTDR que significa Close Relative To Daily Range y se calcula como sigue:. Si CRTDR gt 0,5, entonces VAR4 1 más VAR4 -1 Régimen de Autocorrelación (VAR5). El mercado accionario tiende a pasar por períodos de regímenes negativos y positivos de autocorrelación. Si devuelve la autocorrelación en los últimos 5 días gt 0, entonces VAR5 1 VAR5 -1 otra Puesto debajo de un árbol de ejemplo con algunas explicaciones En el árbol de arriba, la ruta para llegar al nodo 4 es: VAR3 gt0 (Long Term Momentum gt 0) y VAR4 Gt _ {0} (CRTDR gt _ {0}). El rectángulo rojo indica que se trata de una hoja DOWN (por ejemplo, un nodo terminal) con una probabilidad de 58 (1 8211 0,42). En términos de mercado, esto significa que si Momentum a largo plazo es Up y CRTDR es gt 0.5, entonces la probabilidad de un retorno positivo la próxima semana es 42 basada en los datos de la muestra en muestra. 18 indica la proporción del conjunto de datos que cae en ese nodo terminal (por ejemplo, hoja). Hay muchas maneras de utilizar el enfoque anterior, elegí estimar y combinar todos los árboles posibles. A partir de los datos de la muestra, recojo todas las hojas de todos los árboles posibles y las recojo en una matriz. Esta es la matriz de reglas 8222 que da la probabilidad de que la próxima semana suba o baje. Puedo aplicar las reglas de la matriz anterior a la fuera de los datos de la muestra (enero 2011 8211 Dec 2013) y comparar los resultados con el resultado real. El problema con este enfoque es que un solo punto (semana) puede caer en varias reglas e incluso pertenecer a las reglas UP y DOWN simultáneamente. Por lo tanto, aplico un esquema de votación. Para una semana dada sume todas las reglas que se aplican a esa semana dando un 1 para una regla UP y -1 para una regla DOWN. Si la suma es mayor que 0, la semana se clasifica como UP, si la suma es negativa 8282s una semana DOWN y si la suma es igual a 0 no habrá posición tomada esa semana (retorno 0) La metodología anterior se aplica a una Conjunto de ETFs muy líquidos. Trazo debajo de la salida de las curvas de equidad de la muestra junto con la estrategia de comprar y mantener durante el mismo período. Los resultados iniciales parecen alentadores aunque la calidad del resultado varíe mucho según el instrumento. Sin embargo, hay una habitación enorme para mejorar. Puse debajo de algunas direcciones para el análisis adicional Optimalidad de la trayectoria. El algoritmo utilizado aquí para definir los árboles es óptimo en cada división, pero no garantiza la optimalidad de la trayectoria. La adición de una métrica para medir la optimalidad de la trayectoria ciertamente mejoraría los resultados anteriores. Otras variables. Elegí las variables explicativas basadas exclusivamente en la experiencia. Es muy probable que esta elección no sea ni buena ni óptima. Metodología de Backtest. Utilicé una metodología simple de entrada y salida de la muestra. En un backtest más formal preferiría utilizar una ventana de balanceo o de ampliación de sub-períodos de la muestra de entrada y de salida (por ejemplo, análisis de avance) Como de costumbre, los comentarios bienvenidos Algunas características obvias aparecen claramente Para los mercados de renta variable estadounidense (SPY, QQQ, IWM ), Emerging Equity Markets (EEM), Metales (GLD, GDX, SLV) y Grados de Inversión (LQD), la mayor parte del rendimiento se realiza de la noche a la mañana. Los rendimientos intradiarios tienden a deteriorar el rendimiento global (retorno intradía lt 0). Lo contrario es cierto para los mercados de renta variable europeos (EFA, EWG, EWU, EWL), los bonos estadounidenses (SHY, IEF, TLT) y Oil (USO). Las devoluciones durante la noche están perjudicando significativamente el rendimiento general. No he logrado llegar a una explicación decente de por qué esto está sucediendo, pero estoy ansioso por aprender si alguien está dispuesto a compartir I8217m no está muy seguro en esta etapa cómo se puede utilizar esta información, pero tiene que ser tenido en cuenta de alguna manera. A continuación se muestra el código para generar el análisis anterior. Como de costumbre todos los comentarios bienvenidos Mensajes recientes Archivos Categorías Blogroll 74 consultas. 0,870 segundos.
No comments:
Post a Comment