Optimización de la cartera Horas en tiempo real Pre-Market Noticias Resumen de cotizaciones Resumen Cotizaciones interactivas Configuración predeterminada Tenga en cuenta que una vez que haga su selección, se aplicará a todas las futuras visitas a NASDAQ. Si, en cualquier momento, está interesado en volver a nuestra configuración predeterminada, seleccione Ajuste predeterminado anterior. Si tiene alguna pregunta o algún problema al cambiar la configuración predeterminada, envíe un correo electrónico a isfeedbacknasdaq. Confirme su selección: Ha seleccionado cambiar su configuración predeterminada para la Búsqueda de cotizaciones. Ahora será su página de destino predeterminada a menos que cambie de nuevo la configuración o elimine las cookies. ¿Está seguro de que desea cambiar su configuración? Tenemos un favor que pedir. Por favor, deshabilite su bloqueador de anuncios (o actualice sus configuraciones para asegurarse de que se habilitan javascript y cookies), para que podamos seguir proporcionándole las noticias de primera clase del mercado. Y los datos que ha llegado a esperar de nosotros. Institucional de clase de gestión de datos / backtesting / solución de implementación de estrategia: - las acciones, opciones, futuros, monedas, cestas y los instrumentos sintéticos personalizados son compatibles - múltiples de baja latencia de datos alimentados soportados (velocidades de procesamiento en millones de Mensajes por segundo en terabytes de datos) - C y. Net basada en la estrategia de backtesting y optimización - múltiples corredores de ejecución soportados, señales comerciales convertidas en órdenes FIX QuantFACTORY - Institucional de clase de gestión de datos / backtesting / solución de implementación de estrategia: - QuantDEVELOPER - Para el desarrollo de estrategias de negociación, depuración, backtesting y optimización, disponible como plug-in de Visual Studio - QuantDATACENTER - permite gestionar un almacén de datos históricos y capturar datos de mercado en tiempo real o de ultra baja latencia de proveedores e intercambios - QuantENGINE - Y ejecutar estrategias precompiladas - múltiples activos, multi-período de baja latencia de datos, múltiples corredores de apoyo de clase institucional de gestión de datos / backtesting / solución de implementación de estrategia: - OpenQuant - C y VisualBasic. NET sistema de nivel de backtesting y comercio, - QuantTrader - entorno de comercio de producción - QuantBase - gestión de datos centralizada - QuantRouter - enrutamiento de datos y de pedidos Gestión de datos de clase institucional / backtesting / solución de implementación de estrategia: - multi-asset , Múltiples soportes de datos soportados, la base de datos soporta cualquier tipo de RDBMS que proporciona una interfaz JDBC, por ejemplo Oracle, Microsoft SQL Server, Sybase, MySQL, etc - los clientes pueden utilizar IDE para secuenciar su estrategia en Java, Ruby o Python, o pueden utilizar su propia estrategia IDE - Gestión de datos de clase / backtesting / estrategia de solución de implementación: - multi-asset solución (forex, opciones, futuros, acciones, ETFs, commodities, instrumentos sintéticos y derivados personalizados derivados) , Backtesting y optimización - múltiples corredores de ejecución soportados, señales comerciales convertidas en órdenes FIX (IB, JPMorgan, FXCM, etc.) Plataforma de software dedicada integrada con datos de Tradestations para backtesting y auto-trading: - datos diarios intradía (Análisis técnico), compatibilidad con el lenguaje de programación EasyLanguage - soporte de ETFs, futuros, índices estadounidenses, valores alemanes, índices alemanes, sin divisas para clientes de corretaje de Tradestation - 249,95 mensuales por no (Sólo plataforma de software Tradestation, sin corretaje) - 299.95 mensuales para profesionales (plataforma de software Tradestation solamente, sin corretaje) Plataforma de software dedicada para backtesting y auto-trading: - apoyo a estrategias diarias / intradía, pruebas y optimización de nivel de cartera, (Análisis técnico) - enlace directo a eSignal, Interactive Brokers, IQFeed, myTrack, FastTrack, QP2, TC2000, cualquier DDE compatible Feed, MS, txtfiles y más (Yahoo Finance. ) - una tarifa de tiempo 279 para la edición estándar o 339 para la edición profesional Plataforma de software dedicado para backtesting y auto-trading: - backtesting del sistema de nivel de cartera y trading, multi-activo, pruebas de nivel intradía, optimización, Auto-trading en lenguaje de scripting Perl con todas las funciones subyacentes escritas en C nativo, preparado para la colocación de servidores - soporte nativo de FXCM y Interactive Brokers - soporte FXCM gratuito, 100 por mes para la plataforma IB, contacte con Salesseertrading para otras opciones. Backtesting y auto-trading: - apoyo a estrategias diarias / intradía, pruebas de nivel de cartera y optimización - mejor para backtesting basado en precios de señales (análisis técnico), C scripting - extensiones de software soportadas - manejo de feeds de datos, 150 anualmente después de la plataforma de software dedicado para backtesting, optimización, atribución de rendimiento y análisis: - Axioma o datos de terceros - Análisis de factores, modelos de riesgo, análisis del ciclo de mercado Plataforma de software dedicado para backtesting y auto-trading: (Análisis técnico), apoyo a las estrategias diarias / intradía, pruebas de nivel de cartera y optimización - Turtle Edition - motor de backtesting, gráficos, informes, pruebas de EoD - Professional Edition - editor de sistema más, análisis de avance, estrategias intradía, - Edición Pro Plus - más gráficos de superficie 3D, scripting, etc. - Edición Builder - IB API, depurador, etc. - Turtle Edition 990 - Edición Profesional 1.990 - Edición Pro Plus 2.990 - Edición Builder 3.990 Plataforma de software dedicada para backtesting y auto - - Apoyo a las estrategias diarias / intradía, pruebas de nivel de cartera y optimización, gráficos, visualización, informes personalizados, etc - mejor para backtesting basado en precios de señales (análisis técnico) - enlace directo a Interactive Brokers, MB Trading, TD Ameritrade, FXCM y otros De los archivos de texto, eSignal, Google Finance, Yahoo finanzas, IQFeed y otros - funcionalidad básica (funcionalidad EoD) - libre - funcionalidad avanzada - arrendamiento de 50 / mes o 995 licencia de por vida Plataforma de software dedicado para backtesting y auto-trading: Backtesting basado en el precio de las señales (análisis técnico), apoyo a las estrategias diarias / intradía, la cartera de pruebas de nivel y optimización, gráficos, visualización, informes personalizados - apoya C y Visual Basic. NET - enlace directo a Interactive Brokers, IQFeed, txtfiles y más . ) - licencia perpetua - 499 - contrato de arrendamiento 50 por mes Plataforma de software dedicada para backtesting y auto-trading: - apoyo a estrategias diarias / intradía, pruebas y optimización de carteras, gráficos, - Soporte a las pruebas diarias / intradía, pruebas de nivel de cartera y optimización - Mejor para backtesting Precios basados en precios (análisis técnico) - incorporar datos para acciones, futuros y divisas (acciones diarias de los Estados Unidos a partir de 1990, futuros diarios a 31 años, divisas a partir de 1983, etc.) - precios de 45 / mes a 295 / mes Disponibilidad de datos) Plataforma de software dedicada para backtesting y auto-trading: - utiliza el lenguaje MQL4, usado principalmente para operar en el mercado de divisas - soporta múltiples brokers forex y feeds de datos - soporta la gestión de múltiples cuentas Plataforma de software dedicada para backtesting y auto trading: (Análisis técnico), soporte para el lenguaje de programación EasyLanguage - soporta múltiples fuentes de datos (Bloomberg, Thomson Reuters, CSI, CQG, eSignal, etc.), soporte directo para Multicharts Pro 9,900 (feed de datos de Bloomberg Thomson Reuters, etc.) Herramienta de backtesting basada en web para probar estrategias de selección de acciones: - ETFs de acciones de Estados Unidos (diariamente) En tiempo de los datos fundamentales desde 1999 - las estrategias largas / cortas, los precios / fundamentales dirigido señales - Diseñador - 139 / mes - Administrador - 199 / mes - funcionalidad completa Backtesting Web herramienta para probar las estrategias de selección de valores: Datos fundamentales desde 1988 - datos básicos / datos fundamentales - Estrategista - 995 / año (datos desde 2000, 10 carteras guardadas) - Administrador - 1.995 / año - (funcionalidad completa, datos desde 1988, 50 carteras guardadas) Web (Diario / intradía), desde 1998, los datos de QuantQuote - los datos de la divisa de FXCM - el apoyo Trader Interactive Brokers para el comercio en vivo Web basado en la herramienta de backtesting: - las acciones de EE. UU. y los precios de ETFs (diario / intradía) Desde 2002 - datos fundamentales de Morningstar (más de 600 métricas) - Apoyo a Interactive Brokers para el comercio en vivo Herramientas de backtesting basadas en la web: - simple de usar, estrategias de asignación de activos, datos desde 1992 - impulso de series de tiempo y estrategias de media móvil en ETFs - Simple Momentum and Estrategias de selección de acciones de Value Simple Herramienta de backtesting basada en Web: - hasta 25 años de datos para 49 existencias de Futures y SP500 - caja de herramientas en Python y Matlab - Quantiacs organiza concursos de negociación algorítmica con inversiones que van desde 500k a 1 millón. - FX (Forex / Currency) datos de los principales pares, que se remontan a 2007 - Segundos / Minutos / por hora / bares diarios - comercio en vivo compatible con cualquier corredor que utiliza Metatrader 4 como su backend Web backtesting / 000 datos de hasta 20 años de historia - criterios técnicos fundamentales - funcionalidad limitada (1 año de datos, sin backtests guardados, etc.) - 50 por mes - funcionalidad completa Herramienta de backtesting basada en web para probar la selección de factores de equidad y la asignación de activos - múltiples factores de patrimonio con probados índices de referencia alfa sobre los límites del mercado, múltiples universos de inversión, filtros de gestión de riesgos - estrategias de asignación de activos, backtests, mezcla de asignación de activos y selección de factores en una sola cartera - MATLAB - Lenguaje de alto nivel y entorno interactivo para la informática estadística y gráfica: - computación paralela y GPU, backtesting y optimización, amplias posibilidades de integración, etc. Aquí el entorno de software libre para la informática estadística y gráficos, una gran cantidad de quants prefieren utilizarlo por su excepcional arquitectura abierta y la flexibilidad: - Facilidad de almacenamiento y almacenamiento de datos, instalaciones gráficas para análisis de datos, fácilmente extendido a través de paquetes - Extensiones recomendadas - Quantstrat, Lenguaje de programación libre de código abierto, arquitectura abierta, flexible, fácilmente extendido a través de paquetes: - extensiones recomendadas - pandas (Python Data Analysis Library), pyalgotrade (Python Algorithmic BacktestingXL Pro es un complemento para construir y probar sus estrategias comerciales en Microsoft Excel 2010 y 2013: - los usuarios pueden usar VBA para construir estrategias para BacktestingXL Pro, el conocimiento de VBA es opcional, los usuarios pueden construir Reglas de negociación en una hoja de cálculo utilizando los códigos de backtesting pre-hechos estándar - apoya pyramiding, limitación de la posición corta / larga, cálculo de la comisión, seguimiento de la equidad, control de fuera de dinero, personalización del precio de compra / venta - múltiples reportes de rendimiento / riesgo - 74.95 para BacktestingXL Pro herramienta de backtesting basada en Web: - fácil de usar, la herramienta de backtesting basada en la web de nivel de entrada para probar la fuerza relativa y estrategias de media móvil en ETFs - varios tipos de estrategias para la funcionalidad de backtesting completa gratuita 34,99 mensual FactorWave es fácil de usar web - permite al usuario mezclar múltiples ETF / opciones / futuros / factores de equidad con pruebas de alfa superiores a las de mercado - libre - ETF / Stock Screener con 5 Factores - 149 / mo - opciones gratuitas opciones screener, Estrategias de futuros, estrategias de vix Herramienta basada en Web - Free Stock Ratings, Análisis estacional, Gráficos Fundamentos - Free Freemium modelo Free backtesting herramienta basada en la web para probar las estrategias de selección de valores: - EE. UU. acciones, datos de ValueLine de 1986-2014 - precio y datos fundamentales , 1700 stocks, test de granularidad mensualMetaTrader 4 - Ejemplos Portfolio trading en MetaTrader 4 Magnus ab integro saeclorum nascitur ordo Publio Vergilius Maro, Eclogues Introducción El principio de cartera es conocido desde hace mucho tiempo. Al diversificar los fondos en varias direcciones, los inversores crean sus carteras reduciendo el riesgo general de pérdidas y haciendo que el crecimiento de los ingresos sea más suave. La teoría de la cartera ha ganado impulso en 1950 cuando el primer modelo matemático de la cartera ha sido propuesto por Harry Markowitz. En 1980, un equipo de investigación de Morgan Stanley ha desarrollado la primera estrategia de negociación extendida allanando el camino para el grupo de estrategias neutral del mercado. La teoría actual de la cartera es diversa y compleja, lo que hace casi imposible describir todas las estrategias de cartera en un solo artículo. Por lo tanto, sólo una pequeña gama de estrategias especulativas junto con su posible implementación en la plataforma MetaTrader 4 se considerará aquí. Algunas definiciones aplicadas en este artículo son las siguientes: Cartera (canasta, instrumento sintético) conjunto de posiciones en múltiples instrumentos de negociación con volúmenes óptimos calculados. Las posiciones permanecen abiertas durante algún tiempo, se rastrean como una sola y se cierran con un resultado financiero común. Ajuste de cartera (canasta, instrumento sintético) cambiando el conjunto de instrumentos de cartera y / o sus volúmenes para minimizar las pérdidas o fijar los resultados intermedios. Número de volumen sintético de posiciones sintéticas (número de veces que la cartera fue comprada o vendida). Ganancia / pérdida virtual resultado financiero que se puede obtener al mantener una posición dentro de un cierto intervalo de tiempo. Clásicos carteras de inversión se aplican generalmente en los mercados de valores. Sin embargo, este enfoque no le conviene mucho a la divisa ya que la mayoría de las carteras son especulativas aquí. Se crean y se negocian de forma ligeramente diferente. En cuanto a Forex se refiere, el comercio de la cartera es en realidad un comercio de divisas múltiples, sin embargo, no todas las estrategias de divisas múltiples son de cartera. Si los símbolos se negocian de forma independiente y no se controla la dinámica de los resultados totales, se trata de un comercio multi-símbolo. Si varios sistemas independientes operan en una sola cuenta comercial, se trata de una cartera de estrategias. Aquí vamos a considerar una cartera de comercio en el sentido estricto cuando una posición sintética se forma a partir de varios símbolos y se gestiona después. Principios El desarrollo de la cartera consiste en dos etapas: seleccionar símbolos y calcular los lotes y las direcciones para ellos. Aquí vamos a discutir sólo unos pocos métodos de desarrollo de cartera simple junto con muestras de algoritmos. En particular, proponemos el método de mínimos cuadrados ordinarios (MCO) y el análisis de componentes principales (PCA) como base. Más información se puede encontrar aquí: Al desarrollar una cartera, es generalmente necesario definir el comportamiento deseado del gráfico de la lista. El gráfico de cartera representa los cambios en el beneficio total de todas las posiciones incluidas en la cartera dentro de un cierto intervalo de tiempo. La optimización de la cartera es una búsqueda de una combinación de lotes e indicaciones que mejor se adapten al comportamiento deseado de la cartera. Por ejemplo, dependiendo de nuestra tarea, puede ser necesario que una cartera tenga una recurrencia al valor medio o atributos de una tendencia claramente marcada o su gráfico debe ser similar al gráfico de una función. Tres tipos de cartera (tendencia, plano, función): Una cartera puede ser representada por la siguiente ecuación: A, B, C. son series temporales correspondientes a los símbolos de cartera k1, k2, k3. Son lotes de símbolos (compra positiva, venta negativa) F función de destino (establecida por valores en puntos de serie de tiempo) Esta es una ecuación de regresión lineal multivariante con un término constante cero. Sus raíces se pueden encontrar fácilmente usando OLS. En primer lugar, las series temporales deben hacerse comparables, lo que significa que los puntos de precio deben llevarse a una moneda de depósito. En este caso, cada elemento de cada serie de tiempo representará un valor de beneficio virtual de un solo lote del símbolo apropiado en un momento determinado. La logaritmia preliminar de precios o el uso de diferencias de precio se recomiendan generalmente en tareas de aplicación estadística. Sin embargo, esto puede ser innecesario e incluso perjudicial en nuestro caso ya que los datos críticos de dinámica de símbolos globales serían destruidos a lo largo del camino. La función de destino define el tipo de gráfico de la cartera. Los valores de la función objetivo deben calcularse preliminarmente en cada punto en consecuencia. Por ejemplo, al desarrollar una cartera de crecimiento simple (cartera de tendencias), la cartera objetivo tendrá los valores 0, 1S, 2S, 3S, etc. donde S es un incremento del valor monetario, al cual se debe incrementar la cartera en cada barra En un intervalo predeterminado. El algoritmo OLS añade A, B, C. series de tiempo de modo que su suma total está buscando repetir el gráfico de funciones de destino. Para lograr esto, el algoritmo OLS minimiza la suma de las desviaciones cuadradas entre la suma de la serie y la función objetivo. Esta es una tarea estadística estándar. No se requiere una comprensión detallada de la operación del algoritmo, ya que puede utilizar una biblioteca ya hecha. También puede suceder que la función objetivo contenga sólo valores cero (cartera plana). En este caso, se debe añadir un límite de suma de relación adicional (por ejemplo: k1 k2 k3.1) para evitar la resolución de una ecuación de regresión con raíces cero. La alternativa es mover un término de ecuación hacia la derecha, convirtiéndolo en una función objetivo que recibe la relación de -1, mientras que los términos restantes se optimizan como de costumbre. En este caso, equiparamos la canasta de instrumentos a un instrumento seleccionado, creando así una cartera de spread. Por último, el algoritmo PCA más avanzado puede utilizarse para desarrollar dichas carteras. Aplica la matriz de covarianza del instrumento para calcular el vector de coeficientes correspondiente al hiperplano de la sección transversal de la nube de puntos con la varianza residual mínima de las carteras. Una vez más, no es necesario comprender el algoritmo en detalles aquí, ya que puede utilizar una biblioteca ya hecha. Algoritmos Ahora, es el momento de implementar todas las ideas descritas anteriormente usando el lenguaje MQL. Utilizaremos una conocida biblioteca de matemáticas ALGLIB adaptada para MT4. A veces, los problemas pueden surgir durante su instalación, por lo que me quedaré más en ella. Si hay varios terminales instalados en un PC, es muy importante encontrar la carpeta de datos correcta, ya que el compilador no ve la biblioteca si se encuentra en otra carpeta de datos de terminales. Instalar la librería ALGLIB: descargar la librería (mql5 / es / code / 11077), descomprimir el archivo zip abrir la carpeta include y encontrar el directorio Math dentro de lanzar la plataforma etarader 4, a la que se debe añadir la biblioteca. Abra MQL4 e Incluya subcarpeta Copie la carpeta de Matemáticas para incluir la carpeta del terminal compruebe los resultados: los archivos. mhq deben estar dentro de MQL4IncludeMathAlglib. La primera etapa clave: conversión de series temporales de puntos de precio en moneda de depósito. Para lograr esto, necesitamos escribir una función especial para calcular un precio de contrato en un momento dado. La función MarketInfo convencional no es adecuada para esto, ya que proporciona un precio de punto correcto sólo para la última barra de gráficos. El problema es que las desviaciones aparecen inevitablemente en la historia como los precios de punto de algunos símbolos cambian constantemente. Por lo tanto, es crítico convertir con precisión series de datos para evitar desequilibrios significativos en la cartera. La función de muestra que calcula el precio del contrato se muestra a continuación: Esta función siempre se utilizará en el futuro. Trabaja con pares de divisas, índices, futuros y CFDs. Además, también considera prefijos de símbolos y postfixes (FXprefix, FXpostfix) aplicados por algunos intermediarios. El resultado se convierte en una moneda de destino (ChartCurrency). Si multiplicamos el valor de la función devuelta por el precio del símbolo actual, obtenemos el precio de los símbolos un lote. Después de sumar todos los precios del contrato en la cartera considerando lotes, obtenemos el precio de toda la cartera. Si multiplicamos el valor de la función por una diferencia de precio en el tiempo, recibimos ganancias o pérdidas generadas durante ese cambio de precio. El siguiente paso es calcular el beneficio virtual para todos los contratos de lotes individuales. El cálculo se implementa como una matriz bidimensional donde la primera dimensión es un índice de puntos en el intervalo calculado, mientras que la segunda dimensión es un índice de símbolos (el segundo tamaño de dimensión puede ser limitado por un cierto número sabiendo que la cantidad de símbolos en La cartera obviamente no lo superará): Primero, debemos almacenar los precios iniciales para todos los símbolos (en el límite izquierdo del intervalo calculado). A continuación, se calcula la diferencia entre el precio inicial y el precio final en cada punto del intervalo calculado y se multiplica por el precio del contrato. Cada vez, cambiamos a la derecha por un intervalo de tiempo en el bucle: En el fragmento de código anterior, el tiempo de tiempo de cero de los intervalos calculados límite izquierdo, el tiempo límite de los intervalos calculados límite derecho, el tiempo número de minutos en una barra del trabajo Timeframe, señala el número total de puntos detectados en el intervalo calculado. La regla de cumplimiento estricto de etiqueta de tiempo se usa en el ejemplo anterior. Si una barra para una etiqueta de tiempo determinado está ausente incluso en un símbolo, se omite una posición y se realiza un cambio a la siguiente. Gestionar las etiquetas de tiempo es muy importante para la preparación preliminar de datos, ya que la desalineación de datos en diferentes símbolos puede causar serias distorsiones en la cartera. Los datos de la cartera de muestra para tres símbolos y una función independiente (parábola de raíz cuadrada): Ahora que hemos preparado los datos, es el momento de enviarlos al modelo de optimización. La optimización debe realizarse utilizando las funciones LRBuildZ, LSFitLinearC y PCABuildBasis de la biblioteca ALGLIB. Estas funciones se describen brevemente dentro de la propia biblioteca, así como el sitio web oficial del proyecto: alglib. net/dataanalysis/linearregression. php y aquí: alglib. net/dataanalysis/principalcomponentsanalysis. php. En primer lugar, asegúrese de incluir la biblioteca: A continuación, el fragmento de código teniendo en cuenta las características del modelo debe establecerse para cada modelo de optimización. En primer lugar, vamos a examinar el modelo de tendencia de la muestra: Al principio, esto puede parecer complicado, pero básicamente todo es simple. Al principio, la función de tendencia lineal se calcula y sus valores se colocan en la matriz MODEL. El parámetro ModelGrowth establece el valor de crecimiento para todo el intervalo de cálculo (el valor por el cual la cartera debe crecer en la moneda de depósito). Los parámetros ModelAbsolute y ModelPhase son opcionales y no tienen importancia en la etapa actual. La matriz se crea para los cálculos (MATRIX). Los datos sobre el beneficio virtual de todos los contratos de la matriz EQUITY, así como los valores de las funciones de destino de la matriz MODEL, se descargan en la última fila de la matriz. El número de variables de ecuación de regresión independientes se almacena en variables. La función LRBuildZ se llama después para realizar el cálculo. Después de eso, las raíces de la ecuación de regresión se escriben en matriz ROOTS usando la función LRUnpack. Todas las matemáticas complejas se encuentran dentro de la biblioteca, mientras que usted puede utilizar las funciones listas. La dificultad principal es de naturaleza técnica y está relacionada con el establecimiento correcto de todas las llamadas y la conservación de los datos durante los preparativos. El mismo fragmento de código se puede utilizar para cualquier función. Simplemente reemplace el contenido de la matriz MODEL con la función de destino. A continuación se muestra un ejemplo de una función más compleja que representa la suma de una tendencia lineal y oscilaciones armónicas: En el ejemplo anterior, es posible gestionar un tamaño de tendencia (usando el parámetro ModelGrowth) y la oscilación Amplitud (usando el parámetro ModelAmplitude). El número de ciclos de oscilación es establecido por ModelCycles, mientras que el cambio de fase de oscilación se realiza usando ModelPhase. Además, el cambio vertical debe realizarse para que la función sea igual a cero en un punto cero para asegurar que los cálculos son correctos: Estos ejemplos facilitan el desarrollo de una función personalizada. Puede crear cualquier tipo de función dependiendo de su tarea y la configuración de comercio. Cuanto más complejo es el tipo de función, más difícil es seleccionar la mejor solución, ya que el mercado no está obligado a seguir la función. Aquí, la función es sólo una aproximación. No necesita una función de destino para crear propagación y devolver carteras planas. Por ejemplo, si desea crear un diferencial entre dos cestas de símbolos, la cesta optimizada se descarga en la parte principal de la matriz, mientras que la cesta de referencia se utiliza como función de destino y se descarga en la última columna de la matriz como un total Cantidad: A continuación se muestra un ejemplo de cálculo de la cartera plana donde la función LSFitLinearC hace la cartera lo más simétrica posible alrededor de cero dentro del intervalo calculado: A continuación se muestra otro ejemplo importante de cálculo de una cartera plana con la varianza mínima utilizando el método PCA. Aquí, la función PCABuildBasis calcula las relaciones para que el gráfico de la cartera permanezca tan comprimido dentro del intervalo de cálculo como sea posible: Si te sientes abrumado por todos estos conceptos matemáticos, no te preocupes. Como ya he dicho, usted no necesita entender todos los detalles matemáticos para desarrollar y usar carteras. Por lo general, la secuencia de etapas se muestra de la siguiente manera: Calculando el beneficio virtual para símbolos de cartera con solares individuales Cálculo de gráfico y comercio utilizando la cartera Ahora que hemos obtenido ROOTS matriz de relaciones óptimas utilizando una serie de procedimientos, es hora de convertir los coeficientes en un montón. Para ello, necesitamos la normalización: escalamiento y redondeo. Establecer una escala requerida facilita el comercio. El redondeo es necesario para adaptar la capacidad de los lotes a los requerimientos de los corredores. A veces, se recomienda realizar la normalización por margen total de la cartera, pero este método tiene graves inconvenientes (ya que el margen de los símbolos individuales varía y puede cambiar). Por lo tanto, es mucho más razonable realizar la normalización por un precio de cartera o su volatilidad. A continuación se muestra un ejemplo simple del algoritmo de normalización por el precio de la cartera: Aquí, el precio de la cartera se compara con el requerido a través de las proporciones. PortfolioValue requiere precio de cartera, totalvalue precio total de la cartera con las proporciones por defecto, scalevolume escala ratio, LotsDigits capacidad de lote, LOTS matriz de los valores de lote adecuado para el comercio. Los valores de lote forman la estructura final de la cartera. Los lotes positivos corresponden a una posición larga, mientras que los lotes negativos a una posición corta. Conociendo la estructura de la cartera, podemos trazar su gráfico y realizar operaciones comerciales con la cartera. A continuación se muestra una estructura de portafolio de muestra después de la normalización: El gráfico de la cartera está representado sólo por los precios de cierre y se muestra en una subventana de indicador independiente. Para construir el gráfico de la cartera, necesitamos calcular cada barra del gráfico de la misma manera que los beneficios virtuales para los símbolos separados se han calculado previamente. Sin embargo, ahora se resumen considerando lotes asignados: En este fragmento de código, podemos ver que el gráfico está representado entre las barras inicial y final: drawbegin y drawend. El valor de la cartera es igual a la suma de las ganancias / pérdidas a todos los símbolos calculada como una diferencia de precio multiplicada por un precio del contrato y un lote previamente calculado. He omitido los aspectos técnicos relacionados con indicadores de búfer, formato y similares. En la siguiente sección se describe el indicador de la cartera de muestras preparadas. Aquí se puede examinar la construcción de la gráfica de la cartera de muestra (subvector inferior del indicador) con el gráfico de función de destino adjunto: Aquí, la parábola de la raíz cuadrada hecha simétrica con respecto al punto de referencia (ModelAbsolutetrue) se utiliza como función de destino. Los límites de intervalos calculados se muestran como líneas rojas punteadas, mientras que el gráfico de la cartera tiende a moverse a lo largo de la línea de función objetivo dentro y fuera del intervalo calculado. Puede realizar análisis técnicos de gráficos de cartera similares a los gráficos de precios de símbolos comunes, incluyendo la aplicación de promedios móviles, líneas de tendencia y niveles. Esto amplía las capacidades analíticas y comerciales permitiéndole seleccionar la estructura de la cartera para formar una estructura de negociación determinada en un gráfico de cartera, por ejemplo corrección tras un impulso de tendencia, debilitamiento de tendencia, saliendo de un plano, sobrecompra, sobrevendido, convergencia divergencia, ruptura, nivel Consolidación y otras configuraciones. La calidad de la configuración comercial se ve afectada por la composición de la cartera, el método de optimización, la función de destino y el segmento de historial seleccionado. Es necesario conocer la volatilidad de las carteras para seleccionar un volumen de negociación adecuado. Dado que el gráfico de la cartera se basa inicialmente en una moneda de depósito, puede evaluar el rango de fluctuación de la cartera y la profundidad de reducción potencial directamente en esa moneda utilizando el modo de cursor de retícula y la extracción. Un sistema de comercio debe basarse en propiedades de comportamiento de la cartera y estadísticas de configuración. Hasta ahora, no hemos mencionado el hecho de que el comportamiento de la cartera puede cambiar dramáticamente fuera del intervalo de optimización. Un piso puede convertirse en una tendencia, mientras que una tendencia puede convertirse en una inversión. Un sistema de comercio también debe considerar que las propiedades de la cartera son propensos a cambiar con el tiempo. Este tema se discutirá a continuación. Las operaciones de negociación con una cartera comprenden una sola vez comprando / vendiendo todos los símbolos de cartera con volúmenes calculados. Para mayor comodidad, sería razonable contar con un asesor experto especial para realizar todo el trabajo de rutina, incluyendo la obtención de datos de estructura de cartera, la preparación de posiciones sintéticas, el seguimiento de los niveles de entrada, la fijación de beneficios y la limitación de pérdidas. Aplicaremos los siguientes términos relativos a la operación de EA: posición de cartera sintética larga y posición de cartera sintética corta (donde las posiciones largas son reemplazadas por posiciones cortas y viceversa). La EA debe ser capaz de acumular posiciones, rastrear los volúmenes sintéticos, así como realizar compensación y transformación de la cartera. La EA de la muestra se considera en la siguiente sección, aunque su estructura no se explica debido a las restricciones de volumen del artículo. A continuación se muestra el ejemplo de interfaz minimalista para una cartera EA: A veces, es necesario construir no una, sino varias carteras. En el caso más simple, se necesita para comparar dos carteras. Algunas tareas requieren que toda una serie de carteras se construya en un solo segmento de historial, dando como resultado un conjunto de carteras que contienen ciertos patrones. Para implementar tales tareas, se requiere el algoritmo que genera carteras de acuerdo con una determinada plantilla. El ejemplo de implementación de este indicador se puede encontrar en la siguiente sección. Here, we are going to describe only its most critical operation features. We need to arrange a structure array to store the data of multiple portfolios, for example: In this code fragment, DIMSIZE sets the maximum size for storing portfolios. The structure is organized the following way: symbol portfolio symbol array, lot lot array for portfolio symbols, formula text string with the portfolio equation, direction portfolio direction (long or short), filter filter attribute (included/excluded). Applying the structure array is more convenient and reasonable than using separate arrays. The structure array can also be created for storing portfolio graph buffer arrays: Portfolios within the set vary by their symbol combinations. These combinations may be defined in advance or generated according to certain rules. Working with a set of portfolios may include several stages depending on a task. Lets consider the following sequence of stages here: Calculating charts of separate portfolios First, separate portfolios within a set are calculated according to previously described principles. Combining portfolios at a zero point is needed for ease of analysis. To do this, a point, at which all portfolios are equal to zero, is selected. Reversing portfolios relative to a zero level can also be useful to simplify analysis. Falling portfolios become growing ones after lots are inverted. Filtering portfolios within a set means selecting the best portfolios by some criterion, for example a growth speed, deviation from zero, position within a set relative to other portfolios. So, the the best portfolios selected and combed into a basket of portfolios, or a superportfolio (superposition of portfolios). The image below illustrates these steps: A vertical shift is used to combine portfolios. Portfolio is reversed when multiplied by -1. Finally, a filter is applied by sorting and sampling by values. No detailed description of these algorithms is provided here to avoid a huge bulk of routine code. Below is a sample set of portfolios constructed following the mentioned principles: The graph shows a set of portfolios calculated by PCA model with a short period. The calculated interval boundaries are shown as the red dashed lines. Here we can see the expansion of the portfolio set on either side of the optimization interval. The zero point is selected at the left optimization interval boundary, while the moments of reversal relative to zero and the filter application are marked by the purple dotted lines. The thick line outlines the superportfolio consisting of the most active portfolios and thereby having a decent run from the zero point. Combining portfolios provides additional possibilities for analysis and developing trading strategies, for example diversification between portfolios, spreads between portfolios, convergence-divergence of the set of portfolios, waiting for twisting of a portfolio set, moving from one portfolio to another and other approaches. Implementation examples The methods described in the current article have been implemented as a portfolio indicator and a semi-automated EA. Here you can find the instructions, download the source code and adapt it to your needs: Portfolio Modeller portfolio developer and optimizer. It features several optimization model types with configurable parameters. Besides, you can add your own models and target functions. There are also basic tools for the technical analysis of portfolios, as well as various chart formatting options. Portfolio Multigraph generator of portfolio sets with the same models and parameters and additional options for portfolio transformation and filtration as well as creating a superportfolio. Portfolio Manager EA for working with portfolios and superportfolios. It operates in conjunction with the portfolio indicator and allows opening and managing synthetic positions as well as has portfolio correction functionality and auto trading mode based on graphical lines of virtual orders. Trading strategies There are many trading strategies based on applying synthetic instruments. Lets consider a few basic ideas that can be useful when creating a portfolio trading strategy. At the same time, lets not forget about risks and limitations. The classical approach to generating a portfolio is to identify undervalued assets having a growth potential and include them to the portfolio with the expectation of their rise. The portfolio volatility is always lower than the sum of volatilities of the instruments included. This approach is good for the stock market but it is of limited use on Forex since currencies usually do not demonstrate sustained growth, unlike stocks. Below is Warren Buffetts long-term portfolio: When working with standard investment portfolios, it is necessary to carefully evaluate the current asset status to buy it during the price downward movement. The first and easiest option for the speculative portfolio trading is a pair trading creating a spread of two correlating symbols. At Forex, this approach is significantly limited since even highly correlating currency pairs have no cointegration and therefore, can considerably diverge over time. In this case, we deal with a broken spread. Besides, such pair trading turns into trading a synthetic cross rate since pairs with a common currency are usually included into a spread. This kind of pair trading is a very bad idea. After opening opposite positions by spread, we sometimes have to wait a very long time before the curves converge again. Below is an example of highly correlating pairs and their gradual and inevitable divergence: The development of this approach is a multilateral spread trading when three and more currency pairs are included into spread. This is already better than pair trading since it is easier to create a more even spread with greater number of combination options. However, the same risks remain: a spread can diverge and not converge again. It is much easier to achieve good spread return on a quiet market, but strong fundamental news cause a rapid and irreversible divergence after a while. Interestingly, if we increase the number of instruments in a spread, the divergence probability is increased as well, since the more currencies are involved, the greater the probability that something happens during some news release. Waiting for the spread to converge again would be an extremely detrimental strategy, since this works only on a quiet flat market. Below is a sample multi-lateral spread behavior during a news release: Spread trading has more opportunities on stock or exchange market in case there is a fundamental connection between assets. However, there are still no guarantees against spread gaps on the dividend date or during futures contracts expiration. Spreads can also be composed of market indices and futures but this requires consideration of exchange trading features. A dead-end branch of the spread trading is represented by a multi-lock when cyclically related currency pairs (for example, EURUSD-GBPUSD-EURGBP) are selected and used to form a balanced spread. In this case, we have a perfect spread which is impossible to trade since total spreads and commissions are too high. If we try to unbalance lots a bit, the graph becomes more trend-like which contradicts spread trading, while the costs remain high enough making this approach meaningless. Below is an example of a balanced multi-lock. The total spread is shown as two red lines: Spread trading drawbacks make us switch to trend models. At first glance, everything seems to be harmonious enough here: identify trend, enter during a correction and exit with profit at higher levels. Below is an example of a good trend model: However, trend models may turn out to be not so simple and handy at times. Sometimes, a portfolio refuses to grow further and sometimes it turns down sharply. In this case, we deal with a broken trend. This occurs quite often on short and medium-term models. The trading efficiency depends heavily on the market phase here. When the market is trendy, the system works well. If the market is flat or especially volatile, numerous losses may occur. Below you can see a sharp trend completion: These drawbacks make us reconsider traditional approaches. Now, lets have a look at spread breakout and trend reversal trading methods. The common supposition is that since we cannot avoid portfolio instability, we should learn how to use it. In order to develop a spread breakout setup, we need to create a very compact short-period spread with the minimum volatility in anticipation of a strong movement. The more we compress the portfolio volatility, the stronger it bursts out. For accelerated spread breakout, it is possible to form a setup before beginning trade sessions and before the news selecting certain intervals of a quiet market. PCA optimization method is best suited for volatility compression. In this setup, we do not know in advance, in which direction the breakout is to occur, therefore, the entry is already defined when moving from the spread boundaries. Below is a sample exit from the short-period spread channel with the spread channel boundaries highlighted: The method advantages: short-period spreads are frequent on charts and the volatility after the breakout often exceeds the spread corridor width. The drawbacks: spreads are expanded during news releases and a saw may form when the price moves up and down a few times. The conservative entry can be proposed as an alternative after exiting a spread corridor during the correction to the corridor boundary if possible. In order to create a trend reversal setup, a trend model is created, as well as turning movements and portfolio price levels are tracked. The movement direction is clearly defined but we do not know in advance when the trend reverses. An internal trend line crossing, reverse correction and roll-back are tracked for a conservative entry. Touching an external trend line and a roll-back are tracked for an aggressive entry. Below is an example of a trend portfolio with the external and internal lines displayed: The method advantages: good entry price, convenience, extreme price instability works in favor of the setup. Disadvantages: portfolio price may go up the trend due to fundamental reasons. In order to improve the situation, we may enter in fractional volumes from multiple levels. A similar setup can be implemented using square root parabolic function model. The setup is based on a well-known property: when the price reaches a theoretical limit of a market distribution range, its further movement is hindered. Like in other cases, the target optimization function is adjusted for the current market distribution. If the markets had featured normal Gaussian distribution, the time-based square root law would have always worked perfectly but since the market distribution is fractal and non-stationary in its nature, the situational adjustment is required. You can find more about market distributions in the following books by Edgar Peters: Chaos and Order in the Capital Markets Fractal Market Analysis Below is an example of a portfolio moving away from the parabolic function: This setup is perfect for adapting to mid-term volatility. However, just like in case of a trend setup, a portfolio price may move upwards due to fundamental factors. The market is not obliged to follow any target function behavior, but neither it is obliged to deviate from it as well. Some degree of freedom and duality remain at all times. All trade setups are not market-neutral in the absolute sense but are based on some form of technical analysis. The dual nature of trend and flat can be seen below. A trend model looks similar to an uneven flat on a bigger scale: Apart from symbol combination and model type, location of estimated interval boundaries is of great importance when developing a portfolio. When configuring the portfolio, it might be useful to move the boundaries and compare the results. Good choice of boundaries allows finding portfolios that are more suitable in terms of a trading setup. If a portfolio position enters a drawdown, it is possible to correct the portfolio without closing existing positions. Shifting the boundaries changes the portfolio curve adapting it to a changing situation. Positions should be corrected accordingly after re-arranging the portfolio. This does not mean that the drawdown will decrease in a moment, but the corrected portfolio might become more efficient. Next, lets consider some properties of portfolio sets and their possible applications in trading systems. The first property of portfolio sets to catch the eye is a set expansion, or divergence of portfolios with distance from the zero point. It would be only natural and reasonable to use this property for trading: buying rising portfolios and selling falling ones. Below is a sample expanding set of portfolios: The second property portfolio set compression (convergence) is opposite to the previous one. It happens after an expansion. Expansion and compression cycles suggest that this behavior can be used to open synthetic positions in anticipation of returning to the center of the set after reaching an alleged highest degree of expansion. However, the expansion highest degree always vary, and it is impossible to predict the final boundaries of the set curves expansion. Below is a sample compressing set of portfolios: Applying various target functions, filtration parameters, reversals and combinations provides good opportunities for experimenting and searching for efficient trading setups. Generally, all setups can be divided into two classes: trading breakouts and trading roll-backs. Below is an example of the first type trading setup with a reversal and shift of a portfolio set: A sample roll-back trading setup based on the multi-trend model is provided below: Another recurring portfolio property is a set twist (self-crossing). Typically, this corresponds to a change of a market trend. If we trade in anticipation of an expansion of portfolios, a twist is a negative effect requiring the set re-arrangement. For other strategies, crossing of some portfolio curves can be used to identify promising and played-out portfolios. Besides, it is necessary to consider a distance traveled, levels, position in a set and position relative to the target function. Below is an example of a set twisting multiple times: We have not focused out attention on the volume management issue up until now, though this is a critical part of any trading system. Generally, we can describe the following approaches: trading a single synthetic position (the simplest case) dividing the volumes (extended entry by levels) adding to a rising portfolio (pyramiding by trend) adding to a portfolio in a drawdown (position averaging) adding to a portfolio after a correction (finishing method) adding to a portfolio after a reversal (expansive strategy) adding to new portfolios (portfolio consolidation) combined approach (combining several approaches) Specific volume management method should be selected considering trading system features. When planning a profit and a drawdown, your calculations should be based on a portfolio volatility. In the simplest case, the portfolio volatility can be evaluated as the movement range of its graph within a certain segment. It is much better to evaluate volatility not only within the optimization interval but on the previous history as well. Knowing the portfolio volatility, it is possible to calculate a theoretical value of the maximum total drawdown at a series of positions. Traditionally, we caution against too frequent aggressive volume adding. The total funds allocated for a portfolio coverage on a trading account should be able to withstand unfavorable movement considering all additional positions. Multi-portfolio trading means systematic portfolio selection and consolidation. If one portfolio is bought and another one is added to it, this may have a positive diversification effect if the portfolios have noticeable differences. But if portfolios are correlating, this may have a negative effect, since they both may find themselves in a drawdown in case of an unfavorable movement. Normally, you should avoid adding correlating portfolios. At first glance, trading spread between two correlating portfolios may seem to be very promising but closer examination shows that such spreads are no different from usual spreads since they are not stationary. Various exit strategies can be applied in multi-portfolio trading, including: closing by total result of all portfolios closing a group of portfolios by the groups total result closing by certain portfolios targets and limits. For some strategies, the entry point is of critical importance. For example, if a strategy applies extreme prices before a trend reversal or correction, a period suitable for entry is very short. Other strategies are more reliant on the optimal calculation of a position adding system and portfolio selection principle. In this case, individual portfolios may enter a drawdown, but other (more efficient) portfolios within the consolidated series adjust the overall result. Conclusion Portfolio trading advantages: optimization allows you to create a portfolio curve according to your preferences, as well as form a desired trading setup and trade it similar to trading symbols on a price chart. However, unlike trading portfolios, buying and selling conventional assets leave traders in passive position (since they are only able to accept the current price chart or avoid using it). Besides, as the situation evolves, traders can adjust their portfolios to new market conditions. Portfolio trading drawbacks: standard pending orders are not applicable, more stringent minimum volume requirements, bigger spreads on 30 and lower charts, hindered intraday scalping, no OHLC data, not all indicators can be applied to portfolios. Generally, this is a rather specific approach in trading. Here we have only made an introductory overview of the portfolio properties and working methods. If you want to perform deeper studies of portfolio trading systems, I recommend using the MetaTrader 5 platform for that, while market distribution properties should be studied in specialized statistical packages. Warning: All rights to these materials are reserved by MQL5 Ltd. Copying or reprinting of these materials in whole or in part is prohibited.
No comments:
Post a Comment