суббота, 7 апреля 2018 г.

Estratégia de negociação de filtros


Regra de filtro.


DEFINIÇÃO da 'Regra de Filtro'


Uma estratégia de negociação onde os analistas técnicos estabelecem regras para quando comprar e vender investimentos, com base em variações percentuais no preço de mínimos e máximos anteriores. A regra do filtro baseia-se em uma certeza no impulso dos preços, ou a crença de que o aumento dos preços tende a continuar a subir e a queda dos preços tende a continuar a cair. Muitas vezes, é considerado um criador subjetivo, devido ao fato de ser definido pela própria interpretação de um analista sobre o histórico histórico de estoque de um preço.


BREAKING DOWN 'Filter Rule'


Por exemplo, sob uma regra de filtro de 1%, um investidor compraria um estoque quando seu preço aumentasse para 1% acima de um mínimo anterior e vendê-lo quando o preço caiu para 1% abaixo de um nível anterior. Dois estudos de pesquisa de regras de filtro de 0,5 a 20% descobriram que apenas a regra de filtro de 0,5% poderia gerar retornos acima da média, mas devido aos altos custos de transações associados ao comércio freqüente exigido pela regra, o investidor na verdade não iria sair adiante.


3 filtros comerciais simples que podem melhorar sua estratégia.


Estratégias de tendência podem usar um filtro MA de 200 períodos. Estratégias de alcance podem usar o ADX. Todas as outras estratégias podem usar o filtro SSI.


Dentro da série Webinar Forex Fast-Track do DailyFX, nosso 3º webinar atravessa a criação de uma estratégia simples usando um oscilador de força, níveis de suporte / resistência, um risco positivo: taxa de recompensa e uma calculadora de risco. Esta lição normalmente conclui com uma série de perguntas de comerciantes tentando encontrar uma vantagem maior ao combinar mais ferramentas que as fornecidas, o que está bem. É ótimo experimentar e testar diferentes ideias.


O problema que eu vi, no entanto, é que muitos comerciantes tentam usar ferramentas sem saber completamente quais são as forças e fraquezas das ferramentas; muitas vezes agrupando indicadores similares ou perdendo um importante subconjunto de ferramentas que valem a pena considerar. Então, hoje eu quebro 3 ferramentas conhecidas como "filtros" que podem ser usadas em vários tipos de estratégias.


Filtragem de uma Estratégia de Negociação de tendências.


Todos nós ouvimos o ditado, & ldquo; a tendência é sua amiga & rdquo; ou & ldquo; trocar o caminho da menor resistência. & rdquo; Essas frases são usadas por comerciantes que querem negociar na mesma direção que a tendência geral. Mas e se tivermos dificuldade em localizar a tendência? O que fazemos se não tivermos certeza sobre nosso viés de direção?


Uma excelente ferramenta para adicionar a uma estratégia baseada em tendências é a média móvel de 200 períodos. Ao calcular o preço de fechamento nos últimos 200 bar, podemos ver se a ação atual do preço está acima ou abaixo da média.


Aprenda Forex: a média móvel simples de 200 períodos.


(Criado por Rob Pasche)


Sempre que vemos o preço acima da linha média móvel de 200 períodos, devemos procurar oportunidades de compra. Sempre que vemos o preço abaixo da linha média móvel, devemos procurar oportunidades de venda. Isso garante que estamos negociando na mesma direção que a tendência predominante.


Podemos também anotar a força de uma tendência existente em relação ao quão longe o preço se afastou da MA de 200 períodos. Quanto mais o preço estiver longe da média, mais forte a tendência. Isso pode ser visto no gráfico acima. Uma forte tendência de baixa seguida de uma tendência mais tendecida.


Filtragem de uma Estratégia de Negociação de Faixa.


Com a queda atual da volatilidade Forex, muitos comerciantes migraram para o uso de estratégias vinculadas ao alcance. Uma estratégia de alcance tenta comprar baixo e vender alto quando o preço se move principalmente de lado. O único problema é que às vezes a dinâmica do mercado pode mudar, transformando pares de variáveis ​​em pares que podem começar tendências.


Para mitigar a negociação de intervalo durante esses tempos de transição, podemos usar um indicador técnico chamado Índice direcional direto ou ADX. O ADX não é um filtro de direção. É um filtro que nos diz se um par de moedas está atualmente em uma tendência não. Quanto maior o ADX, mais forte é a tendência para cima ou para baixo. Quanto menor o ADX, mais o par de moedas se move de lado.


O gráfico abaixo mostra um período de tempo em que o preço estava em tendência e depois mudou para o alcance. O nível de chave para o ADX é 25. Sempre que o ADX for inferior a 25, devemos nos concentrar nas estratégias vinculadas ao intervalo de negociação. Qualquer leitura acima de 25 não é tão adequada para negociação de gama e, na verdade, pode ser adequada para negociação de tendências se ADX se mover suficientemente alto.


Aprenda Forex: intervalo vinculado quando o ADX tem menos de 25 anos.


Ao eliminar nossos negócios de intervalo quando o ADX é superior a 25, temos uma melhor chance de obter lucro.


Filtração de qualquer outra estratégia.


O filtro final na minha lista é o Índice de Sentimento Especulativo Versátil, ou SSI. O SSI nos conta uma proporção de compradores e vendedores de cada par maior. Queremos usar o SSI procurando oportunidades de negociação opostas à multidão comercial de varejo. Então, quando a maioria das pessoas está comprando, nós deveríamos estar olhando para vender e vice-versa.


Aprenda Forex: Gráfico Exibindo Relação Inversa entre Preço e SSI.


Ajuste fino com filtros.


Esperemos que este artigo tenha dado idéias sobre maneiras de melhorar sua própria estratégia, seja você tendências comerciais, gamas ou algo completamente diferente. Se você quiser testar qualquer desses filtros sem riscos, baixe uma conta gratuita da Demo hoje com gráficos gratuitos e dados de preços em tempo real.


--- Escrito por Rob Pasche.


Interessado nas melhores vistas do nosso analista sobre os principais mercados? Confira nossos guias gratuitos de comércio aqui.


O DailyFX fornece notícias e análises técnicas sobre as tendências que influenciam os mercados monetários globais.


Próximos eventos.


Calendário econômico Forex.


O desempenho passado não é uma indicação de resultados futuros.


DailyFX é o site de notícias e educação do Grupo IG.


QuantStart.


Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.


Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.


Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.


Por Michael Halls-Moore em 21 de setembro de 2016.


Anteriormente, no QuantStart, consideramos os fundamentos matemáticos de State Space Models e Kalman Filters, bem como a aplicação da biblioteca pykalman a um par de ETFs para ajustar dinamicamente uma relação de hedge como base para uma estratégia de negociação de reversão média.


Neste artigo, vamos discutir uma estratégia de negociação originalmente devido a Ernest Chan (2012) [1] e testada por Aidan O'Mahony em Quantopian [2]. Usaremos a estrutura de teste de QSTrader de código aberto baseada em Python para implementar a estratégia. O QSTrader realizará o "levantamento pesado" do rastreamento de posição, o manuseio de portfólio e a ingestão de dados, enquanto nos concentramos exclusivamente no código que gera os sinais de negociação.


A Estratégia de Negociação.


A estratégia de negociação de pares é aplicada a um par de fundos negociados em bolsa (ETF) que acompanham o desempenho de diferentes títulos do Tesouro dos EUA. Eles são:


O objetivo é construir uma estratégia de reversão média desse par de ETFs.


O "spread" sintético entre TLT e IEI é a série de tempo em que realmente estamos interessados ​​em saudade ou curto prazo. O Filtro Kalman é usado para rastrear dinamicamente a relação de cobertura entre os dois, a fim de manter a propagação estacionária (e, portanto, reverter).


Para criar as regras de negociação, é necessário determinar quando o spread se afastou muito do valor esperado. Como determinamos o que é "muito longe"? Poderíamos utilizar um conjunto de valores absolutos fixos, mas estes deveriam ser determinados empiricamente. Isso introduziria outro parâmetro livre no sistema que exigiria otimização (e perigo adicional de superação).


Uma abordagem "sem parâmetros" para criar esses valores é considerar um múltiplo do desvio padrão da propagação e usá-los como limites. Por simplicidade, podemos definir o coeficiente do múltiplo como igual a um.


Portanto, podemos ir "long the spread" se o erro de previsão cair abaixo do desvio padrão negativo da propagação. Respectivamente, podemos ir "curto o spread" se o erro de previsão exceder o desvio padrão positivo da propagação. As regras de saída são simplesmente o oposto das regras de entrada.


A relação de hedge dinâmico é representada por um componente do vetor de estado oculto no tempo $ t $, $ \ theta_t $, o qual denotaremos como $ \ theta ^ 0_t $. Este é o valor de inclinação "beta" que é bem conhecido por regressão linear.


"Longing the spread" aqui significa comprar (anseio) $ N $ unidades de TLT e venda (shorting) $ \ lfloor $, onde $ \ lfloor $ é o "andar" que representa o número inteiro mais alto inferior a $ x $. Este último é necessário, pois devemos transacionar um número inteiro de unidades dos ETFs. "Shorting the spread" é ​​o oposto disso. $ N $ controla o tamanho total da posição.


$ e_t $ representa o erro de previsão ou erro residual da previsão no tempo $ t $, enquanto $ Q_t $ representa a variação dessa previsão no tempo $ t $.


Para completar, as regras são especificadas aqui:


$ e_t \ lt - \ sqrt $ - Longo spread: Vá longo $ N $ partes de TLT e vá curto $ \ lfloor $ unidades de IEI $ e_t \ ge - \ sqrt $ - Sair long: Feche todas as posições longas de TLT e IEI $ e_t \ gt \ sqrt $ - Curta o spread: Vá curto $ N $ partes de TLT e vá longo $ \ lfloor $ unidades de IEI $ e_t \ le \ sqrt $ - Sair curto: feche todas as posições curtas de TLT e IEI .


O papel do filtro Kalman é para nos ajudar a calcular $ \ theta_t $, bem como $ e_t $ e $ Q_t $. $ \ theta_t $ representa o vetor dos valores de intercepção e inclinação na regressão linear entre TLT e IEI no tempo $ t $. É estimado pelo filtro de Kalman. O erro de previsão / residual $ e_t = y_t - \ hat _t $ é a diferença entre o valor previsto do TLT hoje e a estimativa do TLT do filtro de Kalman hoje. $ Q_t $ é a variância das previsões e, portanto, $ \ sqrt $ é o desvio padrão da previsão.


A implementação da estratégia envolve as seguintes etapas:


Receba as barras de OHLCV do mercado diário para TLT e IEI Use o filtro recursivo "on-line" de Kalman para estimar o preço do TLT hoje com base nas observações de ontem do IEI. Tome a diferença entre a estimativa de TLT de TLM e o valor real, muitas vezes chamado de erro de previsão ou erro residual, que é uma medida de quanto a propagação de TLT e IEI se afasta do seu valor esperado Longa propagação quando o movimento está negativamente longe do valor esperado e, consequentemente, abre a propagação quando o movimento está positivamente longe do esperado valor Sair das posições longas e curtas quando a série reverte para o valor esperado.


Para realizar esta estratégia, é necessário ter dados de preços OHLCV para o período coberto por este backtest. Em particular, é necessário fazer o download do seguinte:


TLT - Para o período de 3 de agosto de 2009 a 1º de agosto de 2016 (link aqui) IEI Para o período de 3 de agosto de 2009 a 1º de agosto de 2016 (link aqui).


Esses dados precisarão ser colocados no diretório especificado pelo arquivo de configurações do QSTrader se desejar replicar os resultados.


Python QSTrader Implementation.


Como o QSTrader lida com o rastreamento de posição, gerenciamento de portfólio, ingestão de dados e gerenciamento de pedidos, o único código que precisamos escrever envolve o próprio objeto Estratégia.


A Estratégia se comunica com o PortfolioHandler através da fila de eventos, fazendo uso de objetos SignalEvent para fazê-lo. Além disso, devemos importar a classe de estratégia abstrata base, AbstractStrategy.


Note-se que na versão alpha atual do QSTrader também devemos importar a classe PriceParser. Isso é usado para multiplicar todos os preços na entrada por um grande múltiplo ($ 10 ^ 8 $) e executar aritmética inteira quando rastrear posições. Isso evita questões de arredondamento de ponto flutuante que podem se acumulam durante o longo período de um backtest. Devemos dividir todos os preços por PriceParser. PRICE_MULTIPLIER para obter os valores corretos:


O próximo passo é criar a classe KalmanPairsTradingStrategy. O trabalho desta classe é determinar quando criar objetos SignalEvent com base no BarEvent recebido das barras diárias OHLCV de TLT e IEI da Yahoo Finance.


Existem muitas maneiras diferentes de organizar essa classe. Eu optei por codificar todos os parâmetros da classe para maior clareza da explicação. Notavelmente eu consertei o valor de $ \ delta = 10 ^ $ e $ v_t = 10 ^ $. Eles representam a variação do ruído do sistema e do ruído de medição no modelo do filtro Kalman. Isso também pode ser implementado como um argumento de palavra-chave no __init__ construtor da classe. Tal abordagem permitiria otimização direta de parâmetros.


A primeira tarefa é definir o tempo e os membros investidos iguais a Nenhum, pois serão atualizados à medida que os dados de mercado sejam aceitos e os sinais comerciais produzidos. latest_prices é um dois tipos de preços atuais de TLT e IEI, usados ​​para conveniência através da classe.


O próximo conjunto de parâmetros está relacionado ao Filtro Kalman e é explicado detalhadamente nos dois artigos anteriores aqui e aqui.


O conjunto final de parâmetros inclui dias, usado para acompanhar quantos dias se passaram, bem como qty e cur_hedge_qty, usados ​​para rastrear as quantidades absolutas de ETFs para comprar tanto para o lado longo quanto para o curto. Eu estabeleci isso para ser 2.000 unidades em um patrimônio da conta de 100.000 USD.


O próximo método _set_correct_time_and_price é um método "helper" utilizado para garantir que o Filtro Kalman tenha todas as informações de preços corretas disponíveis no ponto certo. Isso é necessário porque, em um sistema de backtest dirigido a eventos, como a informação do mercado QSTrader chega sequencialmente.


Podemos estar em uma situação no dia $ K $, onde recebemos um preço para o IEI, mas não o TFT. Portanto, devemos esperar até que os eventos de mercado TFT e IEI tenham chegado do loop backtest, através da fila de eventos. Na negociação ao vivo, isso não é um problema, pois chegarão quase instantaneamente em comparação com o período de troca de alguns dias. No entanto, em um backtest dirigido por eventos, devemos aguardar os dois preços para chegar antes de calcular a nova atualização do filtro de Kalman.


O código verifica essencialmente se o evento subsequente é para o dia atual. Se for, então o preço correto é adicionado à lista de preços mais recentes de TLT e IEI. Se é um novo dia, os preços mais recentes são reiniciados e os preços corretos são mais uma vez adicionados.


Este tipo de método de "limpeza doméstica" provavelmente será absorvido na base de código QSTrader no futuro, reduzindo a necessidade de escrever o código "boilerplate", mas, por enquanto, deve fazer parte da própria estratégia.


O núcleo da estratégia é realizado no método calcule_signals. Em primeiro lugar, estabelecemos os horários e os preços corretos (conforme descrito acima). Então, verificamos que temos os preços para TLT e IEI, em que ponto podemos considerar novos sinais comerciais.


$ y $ é ajustado igual ao preço mais recente para IEI, enquanto $ F $ é a matriz de observação que contém o preço mais recente para TLT, bem como um espaço reservado para representar a interceptação na regressão linear. O filtro Kalman é posteriormente atualizado com esses preços mais recentes. Finalmente, calculamos o erro de previsão $ e_t $ e o desvio padrão das previsões, $ \ sqrt $. Vamos passar por esse código passo a passo, já que parece um pouco complicado.


A primeira tarefa é formar o valor escalar y e a matriz de observação F, contendo os preços de IEI e TLT respectivamente. Calculamos a matriz de variação-covariância R ou configurá-la para a matriz zero se ainda não tiver sido inicializada. Posteriormente, calculamos a nova previsão da observação yhat, bem como o erro de previsão e.


Então calculamos a variância das previsões de observação Qt, bem como o desvio padrão sqrt_Qt. Usamos as regras de atualização derivadas aqui para obter a distribuição posterior dos estados theta, que contém a relação hedge / declive entre os dois preços:


Finalmente, geramos os sinais comerciais com base nos valores de $ e_t $ e $ \ sqrt $. Para fazer isso, precisamos verificar qual o status "investido" - quer "longo", "curto" ou "Nenhum". Observe como precisamos ajustar a quantidade de hedge atual cur_hedge_qty quando vamos longos ou curtos, pois a inclinação $ \ theta ^ 0_t $ está constantemente ajustando-se no tempo:


Este é o código necessário para o objeto Estratégia. Também precisamos criar um arquivo de retorno para encapsular toda a nossa lógica de negociação e escolhas de classe. A versão específica é muito semelhante à usada no diretório de exemplos e substitui o patrimônio de 500,000 USD com 100,000 USD.


Ele também muda o FixedPositionSizer para o NaivePositionSizer. O último é usado para aceitar "ingenuamente" as sugestões de quantidades absolutas de unidades ETF para negociar conforme determinado na classe KalmanPairsTradingStrategy. Em um ambiente de produção, seria necessário ajustar isso dependendo dos objetivos de gerenciamento de risco do portfólio.


Aqui está o código completo para o kalman_qstrader_backtest. py:


Enquanto QSTrader estiver instalado corretamente e os dados tiverem sido baixados do Yahoo Finance, o código pode ser executado através do seguinte comando no terminal:


Graças aos esforços de muitos desenvolvedores voluntários, particularmente ryankennedyio e femtotrader, o código está bem otimizado para os dados da barra OHLCV e executa o backtesting rapidamente.


Resultados da Estratégia.


Um dos recursos mais recentes a serem adicionados ao QSTrader é o da "lágrima" desenvolvida principalmente por nwillemse. Este recurso ainda está em estágio inicial de desenvolvimento, mas será demonstrado aqui.


Uma lágrima é usada principalmente em configurações institucionais como uma descrição de "um pager" de uma estratégia de negociação. A classe TearsheetStatistics na base de código QSTrader replica muitas das estatísticas encontradas em um relatório típico de desempenho de estratégia.


Os dois principais gráficos representam a curva de equidade e a porcentagem de redução, respectivamente. Sob este são os painéis de desempenho mensais e anuais. Finalmente, a curva de equidade, estatísticas de nível comercial e tempo são apresentadas:


Clique na imagem para ampliar.


A curva de equidade começa relativamente estável para o primeiro ano da estratégia, mas rapidamente se intensifica durante 2011. Durante o ano de 2012, a estratégia se torna significativamente mais volátil permanecendo "subaquática" até 2015 e atingindo uma porcentagem diária máxima de redução de 15,79%. O desempenho aumenta gradualmente a partir da redução máxima no final de 2013 até 2016.


A estratégia tem um CAGR de 8,73% com uma Ratio Sharpe de 0,75. Ele também tem uma longa duração máxima de remoção de 777 dias - em dois anos! Note-se que esta estratégia é realizada de forma bruta de custos de transação, de modo que a verdadeira performance provavelmente seria pior.


Próximos passos.


Há um grande trabalho de pesquisa necessário para transformar isso em uma estratégia rentável que nós implantaremos em uma configuração ao vivo. As possíveis avenidas de pesquisa incluem:


Otimização de parâmetros - Variando os parâmetros do Filtro de Kalman através de busca de grade de validação cruzada ou alguma forma de otimização de aprendizagem de máquina. No entanto, isso introduz a possibilidade distinta de superação de dados históricos. Seleção de ativos - A escolha de pares de ETFs adicionais ou alternativos ajudaria a agregar diversificação ao portfólio, mas aumenta a complexidade da estratégia, bem como a quantidade de negócios (e, portanto, custos de transação).


Em futuros artigos, consideraremos como realizar esses procedimentos para várias estratégias de negociação.


Referências.


Apenas iniciando o comércio quantitativo?


3 razões para se inscrever para a lista de e-mails QuantStart:


1. Quant Trading Lessons.


Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!


2. Todo o conteúdo mais recente.


Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.


Real, dicas de negociação viáveis, sem tonturas.


RSI Trading Strategy Improvements com o Time Filter e Stop Loss.


Grande análise de dados, negociação algorítmica e sentimento de comerciante de varejo.


O Índice de Força Relativa mostrou historicamente grandes melhorias quando limitamos seus negócios a momentos específicos do dia, mas que tipo de perfil de risco / recompensa podemos usar para tornar o RSI limitado no tempo uma estratégia de negociação viável? Este artigo procura melhorar os resultados anteriores para tentar tornar esta uma estratégia de negociação vencedora.


Índice de força relativa e ndash; Range Trading Strategy of Choice, mas como pode ser melhorado? Desligando a Estratégia RSI durante a maioria dos tempos voláteis do dia.


Como uma recapitulação do nosso artigo anterior, a estratégia RSI bruta foi bastante insatisfatória em um gráfico de 15 minutos EURUSD que remonta a 2001. Usamos um filtro de tempo para limitar sua negociação às horas das 14:00 às 06:00 hora do leste bom efeito no euro / dólar americano. No entanto, nossos backtests mostraram que a estratégia seria melhor se mantivéssemos os negócios existentes abertos mesmo fora de nossa janela de negociação.


Estratégia RSI de referência no gráfico EURUSD de 15 minutos de 2001-2011.


Após o filtro baseado no tempo.


Fonte: FXCM Strategy Trader.


No entanto, tal abordagem nos deixaria vulneráveis ​​a perdas consideráveis ​​sem qualquer forma de sair de negócios através do & ldquo; off hours & rdquo; do filtro de tempo. Já temos algumas paradas e perdas de experiência para a estratégia RSI e temos uma sensação geral de que tipo de risco / recompensa essas estratégias podem oferecer.


Usando as mesmas técnicas, analisaremos o tipo de perfis de risco / recompensa que oferecem os melhores retornos históricos desse sistema.


Gráficos de Otimização na Estratégia de Negociação do Índice de Força Relativa Filtrada no Tempo.


No último artigo RSI, tínhamos analisado a estratégia de negociação RSI padrão e vimos que o desempenho histórico melhorou consideravelmente se limitássemos a negociação a horas específicas do dia. No entanto, nossas regras também mostraram que os backtests funcionavam melhor se deixássemos negócios abertos sem perdas de qualquer tipo em alguns dos momentos mais voláteis do dia.


Tal tática nos deixa expostos a perdas intradias teoricamente ilimitadas, pois nossa estratégia não consegue fechar negócios fora de um período de tempo fixo. Através do passado, analisamos colocar perdas de parada fixas nas estratégias de negociação, mas isso ignora a mudança de dinâmica na volatilidade da moeda ao longo do tempo. Desta vez, iremos dar uma olhada na definição de um objetivo de perda de lucro e lucro com base em um ATR & mdash de médio prazo de um par, uma métrica que nos dará uma sensação de condições de mercado recentes antes de estabelecer o risco de posição máxima.


RSI Estratégia de Negociação com o Filtro de Tempo, usando Stop Loss e metas de lucro.


Usando Strategy Trader, podemos codificar nossa estratégia codificada com as seguintes regras.


Regra de entrada: quando o RSI de 14 períodos cruza acima de 30, compre no mercado ao abrir o próximo bar. Quando o RSI cruza abaixo de 70, venda no mercado ao abrir o próximo bar.


Filtro: A estratégia só pode entrar em negociações entre a hora de início (14:00 ET) e a hora final (06:00 ET). No entanto, não fechará nenhum comércio aberto na hora final e os manterá abertos até que o sinal inverso seja disparado. (Stop Loss e metas de lucro funcionará em todas as horas)


Stop Loss: A perda de parada é definida como uma porcentagem do intervalo médio verdadeiro (ATR) de 90 dias do par e rsquo; s. Se configurado para & ldquo; 0 & rdquo ;, nenhuma perda de parada é usada.


Ganhe lucro: o lucro obtido é definido como uma porcentagem do intervalo médio verdadeiro (ATR) de 90 dias do par. Se Take Profit estiver configurado para & ldquo; 0 & rdquo ;, não tirar proveito é usado.


Regra de Saída: A Estratégia irá sair do comércio e do sentido do flip quando o sinal oposto for acionado.


Encontrando o Desempenho Histórico Top Usando Stops and Limits.


Usando os parâmetros que achamos que funcionam melhor em nosso primeiro artigo, passaremos e tentaremos continuar usando stop loss and profit targets para maximizar o desempenho histórico em nossa estratégia. Nós fazemos isso, é claro, na esperança de que o que funcionou no passado tenha uma chance razoavelmente forte de trabalhar no futuro. É um pouco difícil exibir um gráfico tridimensional dentro de um meio bidimensional, mas o gráfico abaixo deve dar uma visão geral de quais os níveis Stop Loss e Take Profit têm historicamente realizado melhor no par de dólares do Euro / Dólar.


Quando otimizamos, estamos tentando maximizar os retornos ajustados ao risco. Em termos práticos, isso significa que estamos procurando por parâmetros que maximizem o retorno final contra perdas máximas. Em Strategy Trader, o & ldquo; Return on Account & rdquo; a métrica calcula os retornos de dólares finais em relação ao máximo de retirada e mudança; dando-nos um bom proxy para os ratios de recompensa para risco.


Retornos ajustados por risco na Estratégia RSI filtrada no tempo por Stop Loss e Target Level.


Gráfico Fonte: R, pacote RGL.


O eixo Z em nosso gráfico mostra-nos o nosso Retorno da Conta com base no nível StopLoss e ProfitTarget. Vemos um pico bastante pronunciado no desempenho em um nível de StopLoss muito específico, enquanto nosso ganho máximo realmente vem com nenhum TakeProfit fixo usado (a variável é definida como & lsquo; 0 & rsquo;).


Talvez sem surpresa, os retornos ajustados ao risco melhoram visivelmente quando estabelecemos um nível fixo de perda máxima. Nesse caso, o pico de desempenho ocorre quando nosso risco máximo é definido como um intervalo máximo de 90 dias (ATR), nosso multiplicador em 1.0. A partir do momento de redação, o ATR de 90 dias do euro / dólar americano foi de 144 pips e atingiu 275 pips até o final de 2008. Assim, nosso nível de parada máxima é bastante amplo, mas parece ser mais difícil parar as perdas produziram retornos mais baixos ajustados ao risco durante nosso período de amostragem.


Se você gostaria de sugerir idéias para este tópico ou qualquer outra estratégia forex que você gostaria de ver nesta série, sinta-se à vontade para enviar por e-mail o autor David Rodr & iacute; guez at drodriguezdailyfx.


Para ser adicionado à lista de distribuição deste autor, e-mail com linha de assunto & ldquo; lista de distribuição & rdquo;


Escrito por David Rodr & iacute; guez, estrategista quantitativo para DailyFX.


O DailyFX fornece notícias e análises técnicas sobre as tendências que influenciam os mercados monetários globais.


Próximos eventos.


Calendário econômico Forex.


O desempenho passado não é uma indicação de resultados futuros.


DailyFX é o site de notícias e educação do Grupo IG.


R & amp; D Blog.


I. Estratégia de negociação.


Desenvolvedor: Joseph Granville (On-Balance Volume); R. D. Donchian (Breakout Channels). Conceito: estratégia de negociação baseada em breakouts de preços confirmados pelos filtros OBV (Balance On-Balance). Pergunta de pesquisa: os filtros de volume podem melhorar os breakouts de preços? Especificação: Tabela 1. Resultados: Figura 1-2. Configuração de comércio: Configuração de entrada longa: Alto [i] & gt; EntryUpPriceChannel [i-1]. Configuração de Entrada Curta: Low [i] & lt; EntryDnPriceChannel [i - 1]. Índice: i.


Barra atual. Filtro de comércio: Filtro de volume (Tabela 1). Entrada de Comércio: Entrada de Longo Comércio: Uma compra no aberto é colocada após a Configuração de Entrada Longa e o Filtro de Entrada Longa. Entrada de curto comércio: uma venda no aberto é colocada após a Configuração de Entrada Curta e o Filtro de Entrada Curta. Trade Exit: Tabela 1. Carteira: 42 mercados de futuros de quatro principais setores de mercado (commodities, moedas, taxas de juros e índices de participação). Dados: 37 anos desde 1980. Plataforma de teste: MATLAB®.


II. Teste de sensibilidade.


Todos os gráficos 3-D são seguidos por gráficos de contorno bidimensionais para Fator de lucro, Ratio de Sharpe, Índice de Desempenho de Úlcera, CAGR, Drawdown Máximo, Percentagem de Negociações Rentáveis ​​e Média. Win / Avg. Rácio de perda. A imagem final mostra a sensibilidade da Equity Curve.


Variáveis ​​testadas: Entry_Look_Back & amp; Exit_Index (Definições: Tabela 1):


Figura 1 | Desempenho do portfólio (Entradas: Tabela 1, Comissão e Slippage: $ 0).


EntryUpPriceChannel (Entry_Look_Back) é a maior alta ao longo de um período de Entry_Look_Back.


EntryDnPriceChannel (Entry_Look_Back) é o menor baixo ao longo de um período de Entry_Look_Back.


ExitUpPriceChannel (Exit_Look_Back) é a maior alta ao longo de um período de Exit_Look_Back.


ExitDnPriceChannel (Exit_Look_Back) é o menor baixo ao longo de um período de Exit_Look_Back.


Se fechar [i] & gt; Feche [i-1] então OBV [i] = OBV [i-1] + Volume [i];


Se fechar [i] & lt; Feche [i-1] então OBV [i] = OBV [i-1] - Volume [i];


Se Fechar [i] = Fechar [i-1], então OBV [i] = OBV [i-1];


EntryUpOBVChannel (Entry_Look_Back) é o OBV mais alto durante um período de Entry_Look_Back.


EntryDnOBVChannel (Entry_Look_Back) é o OBV mais baixo durante um período de Entry_Look_Back.


ExitUpOBVChannel (Exit_Look_Back) é o OBV mais alto durante um período de Exit_Look_Back.


ExitDnOBVChannel (Exit_Look_Back) é o OBV mais baixo durante um período de Exit_Look_Back.


Exit_Index = [5, 100], Etapa = 5 (% de Entry_Look_Back);


Exit_Look_Back = Entry_Look_Back * Exit_Index ÷ 100;


Configuração de entrada curta: se baixo [i] & lt; EntryDnPriceChannel [i-1];


Configuração de saída longa: se baixo [i] & lt; ExitDnPriceChannel [i - 1];


Configuração de saída curta: se Alto [i] & gt; ExitUpPriceChannel [i-1];


Filtro de Entrada Curta: Se OBV [i] & lt; EntryDnOBVChannel [i-1];


Filtro de saída longo: se OBV [i] & lt; ExitDnOBVChannel [i-1];


Filtro de saída curto: se OBV [i] & gt; ExitUpOBVChannel [i - 1];


Operações curtas: uma venda no aberto é colocada após a Configuração de Entrada Curta (ou seja, Breakout de Preço Curto) e Filtro de Entrada Curta (ou seja, Curto OBV Breakout).


Long Trades: Uma venda no aberto é colocada após a Configuração de Saída Longa e o Filtro de Saída Longa.


Negociações curtas: uma venda no aberto é colocada após a Configuração de Saída Curta e Filtro de Saída Curta.


Stop Loss Sair: ATR (ATR_Length) é o alcance real médio em um período de ATR_Length. ATR_Stop é um múltiplo de ATR (ATR_Length). Long Trades: um stop de venda é colocado em [Entry - ATR (ATR_Length) * ATR_Stop]. Operações curtas: uma parada de compra é colocada em [Entrada + ATR (ATR_Length) * ATR_Stop]. Stop Loss Exit é usado para normalizar o risco através do dimensionamento da posição.


Exit_Index = [5, 100], Etapa = 5 (% de Entry_Look_Back)


Exit_Look_Back = Entry_Look_Back * Exit_Index ÷ 100.


ATR_Stop = 6 (ATR.


Faixa verdadeira média


Tabela 1 | Especificação da Estratégia de Negociação.


III. Teste de sensibilidade com a Comissão & amp; Slippage.


Variáveis ​​testadas: Entry_Look_Back & amp; Exit_Index (Definições: Tabela 1):


Figura 2 | Desempenho do portfólio (Entradas: Tabela 1, Comissão e Slippage: $ 100 Round Turn).


IV. Avaliação comparativa.


Nós avaliamos a estratégia do caso base (ou seja, os filtros OBV foram desligados, a Tabela 2) contra a mesma estratégia usando filtros de volume (ou seja, filtros OBV ativados, Tabela 3):


Caso # 1a: Entry_Look_Back = 200 (barras); Exit_Index = 50 (%); Filtros OBV: Off.


Caso # 2a: Entry_Look_Back = 150 (barras); Exit_Index = 50 (%); Filtros OBV: Off.


Caso # 3a: Entry_Look_Back = 100 (barras); Exit_Index = 50 (%); Filtros OBV: Off.


Caso # 4a: Entry_Look_Back = 50 (barras); Exit_Index = 50 (%); Filtros OBV: Off.


Tabela 2 | Entradas: Tabela 1; Dimensão Fracionada Fixa: 1%; Comissão & amp; Slippage: R $ 100 Turno redondo.


Caso # 1b: Entry_Look_Back = 200 (barras); Exit_Index = 50 (%); Filtros OBV: On.


Caso # 2b: Entry_Look_Back = 150 (barras); Exit_Index = 50 (%); Filtros OBV: On.


Caso # 3b: Entry_Look_Back = 100 (barras); Exit_Index = 50 (%); Filtros OBV: On.


Caso # 4b: Entry_Look_Back = 50 (barras); Exit_Index = 50 (%); Filtros OBV: On.


Tabela 3 | Entradas: Tabela 1; Dimensão Fracionada Fixa: 1%; Comissão & amp; Slippage: R $ 100 Turno redondo.


V. Classificação: Filtros de volume (Parte 2) | Estratégia de negociação.


VI. Resumo.


(a) Os filtros de volume melhoram os retornos ajustados de risco para costas mais curtas; (b) Os filtros de volume não adicionam valor para versões mais longas (Tabela 2 vs. Tabela 3).


REGRA CFTC 4.41: RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES. DESEJO UM REGISTRO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL. TAMBÉM, DESDE QUE OS NEGÓCIOS NÃO FORAM EXECUTADOS, OS RESULTADOS PODERÃO TER COMPRIMIDO COM COMPENSADO PARA O IMPACTO, SE QUALQUER, DE CERTOS FATORES DE MERCADO, COMO FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL SÃO TAMBÉM SUJEITOS AO FATO QUE ESTÃO DESIGNADOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VOCE OU POSSIBILIDADE DE ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS.


DIVULGAÇÃO DE RISCOS: GOVERNO DOS ESTADOS UNIDOS EXERCÍCIOS RENÚNCIA | REGRA CFTC 4.41.


Nós compartilhamos o que aprendemos.


Inscreva-se para receber notícias de pesquisa e ofertas exclusivas.


R & amp; D Blog.


I. Estratégia de negociação.


Desenvolvedor: Larry Williams (& # 8220; Todos em um: Preço, volume e interesse aberto & # 8221;); R. D. Donchian (Breakout Channels). Conceito: estratégia de negociação baseada em breakouts de preços confirmados pelos filtros POIV (preço, interesse aberto e volume). Questão de pesquisa: os filtros combinados podem melhorar os breakouts de preços? Especificação: Tabela 1. Resultados: Figura 1-2. Configuração de comércio: Configuração de entrada longa: Alto [i] & gt; EntryUpPriceChannel [i-1]. Configuração de Entrada Curta: Low [i] & lt; EntryDnPriceChannel [i - 1]. Índice: i.


Barra atual. Filtro de comércio: Filtro POIV (Tabela 1). Entrada de Comércio: Entrada de Longo Comércio: Uma compra no aberto é colocada após a Configuração de Entrada Longa e o Filtro de Entrada Longa. Entrada de curto comércio: uma venda no aberto é colocada após a Configuração de Entrada Curta e o Filtro de Entrada Curta. Trade Exit: Tabela 1. Carteira: 42 mercados de futuros de quatro principais setores de mercado (commodities, moedas, taxas de juros e índices de participação). Dados: 37 anos desde 1980. Plataforma de teste: MATLAB®.


II. Teste de sensibilidade.


Todos os gráficos 3-D são seguidos por gráficos de contorno bidimensionais para Fator de lucro, Ratio de Sharpe, Índice de Desempenho de Úlcera, CAGR, Drawdown Máximo, Percentagem de Negociações Rentáveis ​​e Média. Win / Avg. Rácio de perda. A imagem final mostra a sensibilidade da Equity Curve.


Variáveis ​​testadas: Entry_Look_Back & amp; Exit_Index (Definições: Tabela 1):


Figura 1 | Desempenho do portfólio (Entradas: Tabela 1, Comissão e Slippage: $ 0).


EntryUpPriceChannel (Entry_Look_Back) é a maior alta ao longo de um período de Entry_Look_Back.


EntryDnPriceChannel (Entry_Look_Back) é o menor baixo ao longo de um período de Entry_Look_Back.


ExitUpPriceChannel (Exit_Look_Back) é a maior alta ao longo de um período de Exit_Look_Back.


ExitDnPriceChannel (Exit_Look_Back) é o menor baixo ao longo de um período de Exit_Look_Back.


Se fechar [i] & gt; Feche [i-1] então OBV [i] = OBV [i-1] + Volume [i];


Se fechar [i] & lt; Feche [i-1] então OBV [i] = OBV [i-1] - Volume [i];


Se Fechar [i] = Fechar [i-1], então OBV [i] = OBV [i-1];


Interesse aberto em equilíbrio (OBOI):


TrueHigh [i] = max (High [i], Close [i-1]);


TrueLow [i] = min (Low [i], Close [i - 1]);


Ratio [i] = (Fechar [i] - Fechar [i - 1]) / (TrueHigh [i] - TrueLow [i]);


OBOI [i] = OBOI [i - 1] + OpenInterest [i] * Razão [i];


Preço / Open Interest / Volume (POIV):


POIV [i] = OBV [i] + OBOI [i];


EntryUpPOIVChannel (Entry_Look_Back) é o POIV mais elevado durante um período de Entry_Look_Back.


EntryDnPOIVChannel (Entry_Look_Back) é o POIV mais baixo durante um período de Entry_Look_Back.


ExitUpPOIVChannel (Exit_Look_Back) é o POIV mais alto durante um período de Exit_Look_Back.


ExitDnPOIVChannel (Exit_Look_Back) é o POIV mais baixo durante um período de Exit_Look_Back.


Exit_Index = [5, 100], Etapa = 5 (% de Entry_Look_Back);


Exit_Look_Back = Entry_Look_Back * Exit_Index ÷ 100;


Configuração de entrada curta: se baixo [i] & lt; EntryDnPriceChannel [i-1];


Configuração de saída longa: se baixo [i] & lt; ExitDnPriceChannel [i - 1];


Configuração de saída curta: se Alto [i] & gt; ExitUpPriceChannel [i-1];


Filtro de Entrada Curta: Se POIV [i] & lt; EntryDnPOIVChannel [i-1];


Filtro de saída longo: se POIV [i] & lt; ExitDnPOIVChannel [i - 1];


Filtro de saída curto: se POIV [i] & gt; ExitUpPOIVChannel [i - 1];


Operações curtas: uma venda no aberto é colocada após a Configuração de Entrada Curta (ou seja, Short Breakout de Preço) e Filtro de Entrada Curta (ou seja, Short Breaker POIV).


Long Trades: Uma venda no aberto é colocada após a Configuração de Saída Longa e o Filtro de Saída Longa.


Negociações curtas: uma venda no aberto é colocada após a Configuração de Saída Curta e Filtro de Saída Curta.


Stop Loss Sair: ATR (ATR_Length) é o alcance real médio em um período de ATR_Length. ATR_Stop é um múltiplo de ATR (ATR_Length). Long Trades: um stop de venda é colocado em [Entry - ATR (ATR_Length) * ATR_Stop]. Operações curtas: uma parada de compra é colocada em [Entrada + ATR (ATR_Length) * ATR_Stop]. Stop Loss Exit é usado para normalizar o risco através do dimensionamento da posição.


Exit_Index = [5, 100], Etapa = 5 (% de Entry_Look_Back)


Exit_Look_Back = Entry_Look_Back * Exit_Index ÷ 100.


ATR_Stop = 6 (ATR.


Faixa verdadeira média


Tabela 1 | Especificação da Estratégia de Negociação.


III. Teste de sensibilidade com a Comissão & amp; Slippage.


Variáveis ​​testadas: Entry_Look_Back & amp; Exit_Index (Definições: Tabela 1):


Figura 2 | Desempenho do portfólio (Entradas: Tabela 1, Comissão e Slippage: $ 100 Round Turn).


IV. Avaliação comparativa.


Nós comparamos a estratégia do caso base (isto é, filtros POIV desativados, Tabela 2) contra a mesma estratégia usando filtros POIV (ou seja, filtros POIV ativados, Tabela 3):


Caso # 1a: Entry_Look_Back = 200 (barras); Exit_Index = 50 (%); Filtros POIV: Off.


Caso # 2a: Entry_Look_Back = 150 (barras); Exit_Index = 50 (%); Filtros POIV: Off.


Caso # 3a: Entry_Look_Back = 100 (barras); Exit_Index = 50 (%); Filtros POIV: Off.


Caso # 4a: Entry_Look_Back = 50 (barras); Exit_Index = 50 (%); Filtros POIV: Off.


Tabela 2 | Entradas: Tabela 1; Dimensão Fracionada Fixa: 1%; Comissão & amp; Slippage: R $ 100 Turno redondo.


Caso # 1b: Entry_Look_Back = 200 (barras); Exit_Index = 50 (%); Filtros POIV: On.


Caso # 2b: Entry_Look_Back = 150 (barras); Exit_Index = 50 (%); Filtros POIV: On.


Caso # 3b: Entry_Look_Back = 100 (barras); Exit_Index = 50 (%); Filtros POIV: On.


Caso # 4b: Entry_Look_Back = 50 (barras); Exit_Index = 50 (%); POIV Filters: On.


Table 3 | Entradas: Tabela 1; Dimensão Fracionada Fixa: 1%; Comissão & amp; Slippage: $100 Round Turn.


V. Rating: Volume Filters (Part 3) | Estratégia de negociação.


VI. Resumo.


(a) The POIV (Price, Open Interest, and Volume) filters improve risk adjusted returns for shorter look backs; (b) The POIV filters do not add value for longer look backs (Table 2 vs. Table 3).


ISSUES WITH VOLUME.


[…] there are real problems when we use volume. Problems for stock traders arise when a huge block of stock is swapped from fund to fund; this is not real buying and selling pressure. An even greater problem crept in with the advent of arbitrage programs, whose trades do not necessarily represent supply and demand but minute price differences that are being bought and sold in huge chunks to lock in gains.


Futures traders have different problems with volume in that the largest players, commercial firms that have a business reason for trading the derivative, are usually hedging positions. So, they are not taking on speculative positions that represent buying and selling pressures. These hedges also may become spread buying/selling in the same item or spreads between, say, silver and gold, corn and wheat, or live cattle and feeders.


REGRA CFTC 4.41: RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES. DESEJO UM REGISTRO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL. TAMBÉM, DESDE QUE OS NEGÓCIOS NÃO FORAM EXECUTADOS, OS RESULTADOS PODERÃO TER COMPRIMIDO COM COMPENSADO PARA O IMPACTO, SE QUALQUER, DE CERTOS FATORES DE MERCADO, COMO FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL SÃO TAMBÉM SUJEITOS AO FATO QUE ESTÃO DESIGNADOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VOCE OU POSSIBILIDADE DE ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS.


DIVULGAÇÃO DE RISCOS: GOVERNO DOS ESTADOS UNIDOS EXERCÍCIOS RENÚNCIA | REGRA CFTC 4.41.


Nós compartilhamos o que aprendemos.


Inscreva-se para receber notícias de pesquisa e ofertas exclusivas.

Комментариев нет:

Отправить комментарий