Thursday 12 April 2018

Estratégia de negociação quantstrat


Estratégia de Negociação de Ciclo FOMC em Quantstrat.
Outra reunião do FOMC, que se antecipa com expectativa, começa a próxima semana, então pensei que seria oportuno destacar um documento de trabalho menos conhecido, e # 8220; Retorno de estoque no Ciclo FOMC & # 8221 ;, de Cieslak, Morse e Vissing-Jorgensen ( atual rascunho de junho de 2017). O resultado principal é:
Ao longo dos últimos 20 anos, o excesso médio de retorno das ações sobre as contas do Tesouraria segue um padrão bi-semanal no ciclo de reunião do Comitê Federal de Mercado Aberto. O prêmio de equivalência patrimonial ao longo deste período de 20 anos foi obtido inteiramente nas semanas 0, 2, 4 e 6 no tempo de ciclo do FOMC, com a semana 0 começando no dia anterior ao dia do anúncio do FOMC agendado.
Nesta publicação, vamos procurar recriar seu padrão de ciclo e, em seguida, testar uma estratégia comercial para testar a reivindicação de importância econômica. Outro objetivo é avaliar o pacote R Quantstrat & # 8220; para construir sistemas de negociação e simulação. & # 8221;
Embora os autores usassem 20 anos de dados de excesso de retorno de 1994 a 2018, em vez disso, usaremos os dados S & P500 ETF (SPY) de 1994 a março de 2018 e as datas FOMC (da minha publicação anterior aqui returnandrisk / 2018/01 /fomc-dates-full-history-web-scrape. html).
Como não há muitos dados fora da amostra desde a publicação do documento em 2017, usaremos todos os dados para detectar o padrão e, em seguida, procedemos a verificar o impacto dos custos de transação sobre o significado econômico de uma possível estratégia de negociação do ciclo FOMC.
Padrão do ciclo FOMC.
O gráfico e a tabela abaixo mostram claramente o padrão bi-semanal sobre o Ciclo FOMC de Cieslak et al em retornos SPY de 5 dias. Isso é baseado em dias úteis do calendário (ou seja, a contagem do dia inclui feriados), com a semana 0 começando um dia antes do dia de anúncio agendado do FOMC (ou seja, no dia -1). Os retornos em semanas pares (semanas 0, 2, 4, 6) são positivos, enquanto aqueles em semanas ímpares (semanas -1, 1, 3, 5) são menores e principalmente ligeiramente negativos.
Tabela de Devoluções pela FOMC Week, Days & amp; Estágio.
Importância econômica: Estratégia de negociação de ciclo FOMC usando o Quantstrat.
Nesta seção, iremos criar uma estratégia comercial usando o pacote R Quantstrat para testar a reivindicação de significado econômico do padrão. Note, Quantstrat é & ​​# 8220; ainda em desenvolvimento pesado & # 8221; e, como tal, não está disponível no CRAN, mas precisa ser baixado do site de desenvolvimento. No entanto, tem sido por algum tempo e deve ser até a tarefa backtesting & # 8230;
Com base no resultado principal do papel e na nossa tabela acima, confirmar que a fase alta é mais lucrativa, nós tentaremos uma estratégia longa e única que compra o SPY em semanas pares (semanas 0, 2, 4, 6) e é válido por apenas 5 dias de calendário e compare-o com uma estratégia de compra e retenção. Além disso, analisaremos o efeito dos custos de transação sobre os retornos globais.
Algumas coisas a observar:
Nós usaremos um tamanho de aposta de 100% do patrimônio para todas as negociações. Isso pode não ser otimizado no desenvolvimento de sistemas de negociação, mas permitirá uma comparação fácil com a estratégia passiva de compra e retenção, que é 100% alocada. Assuma 5 pontos base (0,05%) em custos de execução (incluindo comissão e derrapagem) e patrimônio inicial de $ 100,000 A execução ocorre no final do mesmo dia em que o sinal de compra / venda acontece. Infelizmente, o Quantstrat não permite isso fora da caixa, então precisamos fazer um hack - uma função de indicador personalizado que desloca os sinais para a frente no tempo (veja a função "get. fomc. cycle & # 8221" acima )
As seguintes são as métricas de desempenho resultantes da estratégia de negociação, utilizando 5 pontos base para custos de transação e comparações com a estratégia de compra e retenção passiva (antes e depois dos custos de transação).
Desempenho resumido para a estratégia de negociação.
Estatísticas comerciais.
Retornos mensais.
Desempenho resumido para estratégia de compra e retenção de benchmark.
Comparação da Estratégia de Negociação com Compra e Detenção (ANTES dos custos de transação)
Comparação da Estratégia de Negociação com Buy and Hold (APÓS custos de transação)
Conclusão.
Padrão do ciclo FOMC.
Pudimos ver claramente o padrão bi-semanal no ciclo FOMC usando dados SPY, a la Cieslak, Morse e Vissing-Jorgensen.
Importância econômica: Estratégia de negociação de ciclo FOMC.
Antes dos custos de transação, conseguimos reproduzir resultados semelhantes ao documento, com a longa e única estratégia de comprar o SPY em semanas pares e segurando por 5 dias. No nosso caso, essa estratégia somou cerca de 2% da p. a. para comprar e manter retornos, volatilidade reduzida em 30% e aumentou o índice de Sharpe em 70% para 0,82 (de 0,47).
No entanto, após ter permitido um custo razoável de 5 pontos base (0,05%), os retornos anualizados ficam abaixo da estratégia de compra e retenção (9,15%) para 8,55%. À medida que a volatilidade permanece menor, isso significa que o desempenho ajustado ao risco é melhor em apenas 30% (taxa Sharpe de 0,62). Consulte a tabela abaixo para obter detalhes.
Os custos de execução (corretagem e deslizamento) podem ter um impacto material no desempenho do sistema comercial. Portanto, o takeaway chave deve ser explícito em contabilizar os mesmos quando reivindicam significância econômica. Há muitos backtests por aí que don & # 8217; t & # 8230;
Quantstrat.
Há um pouco de uma curva de aprendizado com o pacote Quantstrat, mas uma vez que você se acostuma, é uma plataforma de backtesting sólida. Além disso, possui outros recursos, como otimização e testes avançados.
O principal problema que tenho é que não permite nativamente que você execute no fechamento diário quando você receber um sinal naquele dia - está perto - você precisa fazer um hack. Isso coloca isso como uma desvantagem para outros softwares como TradeStation, MultiCharts, NinjaTrader e Amibroker (presumivelmente MatLab também). Esperemos que os desenvolvedores reconsiderem isso, para ajudar a impulsionar a adoção mais alta do pacote gReat & # 8230;
10 comentários:
É um recurso, não um erro que quantstrat requer um "hack" para permitir que você execute no mesmo timestamp como um sinal. É potencialmente muito perigoso assumir que você poderá inserir uma ordem ao mesmo tempo em que gerar um sinal.
Obrigado pelo comentário. Eu acho que o cerne da questão é se você tem entradas / saídas baseadas em preço versus tempo. Concordo com você sobre o potencial de surpresas negativas se você assumir que você pode executar no fechamento de um sinal fechado baseado em preço & # 8211; embora isso possa ser mitigado na produção calculando os indicadores em tempo real (assumindo que a estratégia passa todos os backtests de desenvolvimento).
Como você gera o sinal não altera o fato de que é impossível executar no mesmo timestamp usado para gerar o sinal. Não importa se você calcular indicadores em tempo real na produção. Ainda existe um tempo de cálculo não-zero. Mesmo que leve apenas alguns microssegundos, ainda não é o mesmo timestamp.
É bom ouvir que a opção existe, mas não entendi documentar se é (observou que o Quantstrat ainda está em desenvolvimento intenso e que deseja desencorajar esse uso).
Meu ponto ainda é válido. Você deve inserir sua ordem MOC antes do fim da sessão em que deseja que ela seja executada. Um ambiente de simulação realista deve refletir isso.
Para ser claro, para esta estratégia, é definitivamente razoável (nem é um processo ruim ou perigoso) como os sinais são conhecidos com antecedência (dias) antes de qualquer negociação ocorrer. Eu concordo que este pode não ser o caso em geral, daí meu comentário anterior que é preciso fazer o próprio dever de casa em conformidade.
Este será o meu último comentário. Sinta-se livre para ter a última palavra.
Obrigado por seus comentários. Muito apreciado.
Este comentário foi removido pelo autor.
Apenas olhando para o gráfico, eu queria saber se os retornos do fomc poderiam ser usados ​​como um indicador avançado da saúde do mercado. Parece que quando a curva de fomc começa a superar os retornos regulares do SPY, o mercado é tanking. Eu simplesmente não posso dizer do gráfico de baixa resolução se isso precede ou segue o mau comportamento do mercado. Então eu pensei que eu o proponho como uma possibilidade.

Quangestrat trading strategy
Obter através da App Store Leia esta publicação em nosso aplicativo!
R Backtesters: Quantstrat vs SIT.
Estou aprendendo R e quero começar a usar um backtester. Passei cerca de um dia lendo tudo o que posso sobre R backtesters, e parece que existem 2 contendores principais:
Para quem tem experiência com qualquer um desses, você pode me dizer se eles fizeram tudo o que você esperava.
[Editar] Para esclarecer: Estou escrevendo um código R que precisa usar um backtester, e da minha pesquisa quantstrat e SIT são os 2 contendores principais.
Não estou à procura de um debate religioso a la Python / R :), mas sim, se existe um consenso geral sobre o que é mais amplamente utilizado, o que é mais rico em termos de característica, ou se ambos são concorrentes dignos.
Embora eu nunca usei SIT, usei Quantstrat um pouco e posso atestar sua força. Tem uma sólida comunidade de desenvolvedores que o apoia (7 colaboradores no Github), é parte do projeto TradeAnalytics no R-Forge e, embora ainda seja tecnicamente em versão beta, ele deve fornecer muitas funcionalidades. Existe, reconhecidamente, uma curva de aprendizado bastante íngreme quando você está aprendendo primeiro a usar isso, mas uma vez que você aprende como configurar as coisas, ele gerenciará pastas e lida com a contabilidade com bastante graça. Tem boa documentação em torno dele com alguns exemplos sólidos para ajudá-lo a ir (veja o blog QuantStrat TradeR). Se a velocidade for uma prioridade, o quantstrat também pode usar a funcionalidade de processamento paralelo, embora sua milhagem possa variar de acordo com o sistema operacional.
Examinando SIT, parece que é principalmente uma ferramenta construída em torno das necessidades / preferências de um desenvolvedor específico, e pode ser um pouco menos madura nesta fase. A documentação parece ser limitada ao blog SIT, e o autor parece ser o único colaborador do projeto no Github. Não tendo usado isso na prática, não posso falar diretamente em seus pontos fortes / fracos, mas recebo a impressão subjetiva de que o quantstrat pode ser atualmente a opção mais robusta dos dois.
Nunca usei QuantStrat, mas usei SIT por cerca de dois anos. O blog de Michael fornece uma ótima maneira de aprender R, entender SIT e aprender sobre as estratégias de backtesting. Nunca encontrei um erro em seu código, e é assim que ganhei a vida por mais de 20 anos. É preciso alguma persistência real para entender como usá-lo em profundidade, mas você pode facilmente configurar testes simplesmente copiando e modificando um dos próprios talões de backtest de Michael. Michael parece ter diminuído o blog recentemente, assim como David Varadi, cujas estratégias Michael muitas vezes testou. Ainda assim, eu recomendo isso como uma ferramenta completa que aceita a seleção de universo, a seleção superior, vários esquemas de ponderação, comissões, vários períodos de reequilíbrio, alavancagem, etc., todos customizáveis ​​e extensíveis.

QuantStart.
O portal QuantCademy QuantStademy da QuantStart fornece recursos educacionais detalhados para aprender comércio sistemático e uma forte comunidade de comerciantes algorítmicos de sucesso para ajudá-lo.
Artigos Mais Recentes.
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.

Estratégia de Negociação de Ciclo FOMC em Quantstrat.
Outra reunião do FOMC, muito esperada, começa a próxima semana, então pensei que seria oportuno destacar um documento de trabalho menos conhecido, "Retorno de estoque no ciclo do FOMC", de Cieslak, Morse e Vissing-Jorgensen (atual rascunho de junho de 2017) . O resultado principal é:
Ao longo dos últimos 20 anos, o excesso médio de retorno das ações sobre as contas do Tesouraria segue um padrão bi-semanal no ciclo de reunião do Comitê Federal de Mercado Aberto. O prêmio de equivalência patrimonial ao longo deste período de 20 anos foi obtido inteiramente nas semanas 0, 2, 4 e 6 no tempo de ciclo do FOMC, com a semana 0 começando no dia anterior ao dia do anúncio do FOMC agendado.
Nesta publicação, procuraremos recriar seu padrão de ciclo e, em seguida, testar uma estratégia comercial para testar a reivindicação de significância econômica. Outro objetivo é avaliar o pacote R Quantstrat "para construir sistemas de negociação e simulação".
Embora os autores tenham usado 20 anos de dados de excesso de retorno de 1994 a 2018, em vez disso, usaremos os dados S & P500 ETF (SPY) de 1994 a março de 2018 e as datas FOMC (da minha publicação anterior aqui returnandrisk / 2018/01 / fomc-dates - full-history-web-scrape. html).
Como não há muitos dados fora da amostra desde o lançamento do documento em 2017, usaremos todos os dados para detectar o padrão e, em seguida, procederemos a verificar o impacto dos custos de transação sobre o significado econômico de um possível estratégia de negociação do ciclo FOMC.
Padrão do ciclo FOMC.
O gráfico e a tabela abaixo mostram claramente o padrão bi-semanal sobre o Ciclo FOMC de Cieslak et al em retornos SPY de 5 dias. Isso é baseado em dias úteis do calendário (ou seja, a contagem do dia inclui feriados), com a semana 0 começando um dia antes do dia de anúncio agendado do FOMC (ou seja, no dia -1). Os retornos em semanas pares (semanas 0, 2, 4, 6) são positivos, enquanto aqueles em semanas ímpares (semanas -1, 1, 3, 5) são menores e principalmente ligeiramente negativos.
Tabela de Devoluções pela FOMC Week, Days & Phase.
Importância econômica: Estratégia de negociação de ciclo FOMC usando o Quantstrat.
Nesta seção, criaremos uma estratégia comercial usando o pacote R Quantstrat para testar a reivindicação de significância econômica do padrão. Nota, o Quantstrat está "ainda em desenvolvimento pesado" e, como tal, não está disponível no CRAN, mas precisa ser baixado do site de desenvolvimento. No entanto, tem sido durante algum tempo e deve ser até a tarefa backtesting ...
Com base no resultado principal do documento e na nossa tabela acima, confirmar que a fase inicial é mais lucrativa, devolveremos uma estratégia longa e única que compra o SPY em semanas pares (semanas 0, 2, 4, 6) e é válido por 5 dias de calendário apenas, e compará-lo com uma estratégia de compra e retenção. Além disso, analisaremos o efeito dos custos de transação sobre os retornos globais.
Algumas coisas a observar:
Usaremos um tamanho de aposta de 100% do capital próprio para todas as negociações. Isso pode não ser otimizado no desenvolvimento de sistemas de negociação, mas permitirá uma comparação fácil com a estratégia passiva de compra e retenção, que é 100% alocada. Assuma 5 pontos base (0,05%) em custos de execução (incluindo comissão e derrapagem) e patrimônio inicial de $ 100,000 A execução ocorre no final do mesmo dia em que o sinal de compra / venda acontece. Infelizmente, o Quantstrat não permite isso fora da caixa, então precisamos fazer um hack - uma função de indicador personalizada que desloca os sinais para a frente no tempo (veja a função "get. fomc. cycle" acima)
As seguintes são as métricas de desempenho resultantes da estratégia de negociação, utilizando 5 pontos base para custos de transação e comparações com a estratégia de compra e retenção passiva (antes e depois dos custos de transação).
Desempenho resumido para a estratégia de negociação.
Estatísticas comerciais.
Retornos mensais.
Desempenho resumido para estratégia de compra e retenção de benchmark.
Comparação da Estratégia de Negociação com Compra e Detenção (ANTES dos custos de transação)
Comparação da Estratégia de Negociação com Buy and Hold (APÓS custos de transação)
Conclusão.
Padrão do ciclo FOMC.
Pudimos ver claramente o padrão bi-semanal no ciclo FOMC usando dados SPY, a la Cieslak, Morse e Vissing-Jorgensen.
Importância econômica: Estratégia de negociação de ciclo FOMC.
Antes dos custos de transação, conseguimos reproduzir resultados semelhantes ao documento, com a longa e única estratégia de comprar o SPY em semanas pares e segurando por 5 dias. No nosso caso, essa estratégia somou cerca de 2% da p. a. para comprar e manter retornos, volatilidade reduzida em 30% e aumentou o índice de Sharpe em 70% para 0,82 (de 0,47).
No entanto, após ter permitido um custo razoável de 5 pontos base (0,05%), os retornos anualizados ficam abaixo da estratégia de compra e retenção (9,15%) para 8,55%. À medida que a volatilidade permanece menor, isso significa que o desempenho ajustado ao risco é melhor em apenas 30% (taxa Sharpe de 0,62). Consulte a tabela abaixo para obter detalhes.
Os custos de execução (corretagem e deslizamento) podem ter um impacto material no desempenho do sistema comercial. Portanto, o takeaway chave deve ser explícito em contabilizar os mesmos quando reivindicam significância econômica. Há muitos backtests por aí que não ...
Quantstrat.
Há um pouco de uma curva de aprendizado com o pacote Quantstrat, mas uma vez que você se acostuma, é uma plataforma de backtesting sólida. Além disso, possui outros recursos, como otimização e testes avançados.
O principal problema que tenho é que nativamente não permite que você execute no fechamento diário quando você receber um sinal nesse fim do dia - você precisa fazer um hack. Isso coloca isso como uma desvantagem para outros softwares como TradeStation, MultiCharts, NinjaTrader e Amibroker (presumivelmente MatLab também). Esperemos que os desenvolvedores reconsidere isso, para ajudar a impulsionar a adoção do pacote gReat ...
Comentários estão fechados.
Posts populares recentes.
Artigos mais visitados da semana.
Empregos para usuários R.
É alimentado pelo WordPress usando um design bavotasan.
Direitos autorais e cópia; 2017 R-bloggers. Todos os direitos reservados. Termos e Condições para este site.

Estratégia de Negociação Quantitativa Usando o Pacote Quantstrat em R: Um Guia Passo a Passo.
Nesta publicação, estaremos construindo uma estratégia comercial usando R. Antes de morar nos jargões comerciais usando R, vamos passar algum tempo entendendo o que R é. R é uma fonte aberta. Existem mais de 4000 pacotes complementares, mais 18000 membros do grupo do LinkedIn e perto de 80 R grupos Meetup atualmente existentes. É uma ferramenta perfeita para análise estatística, especialmente para análise de dados. A configuração concisa da Rede de Arquivo Abrangente R sabe que o CRAN fornece a lista de pacotes junto com a instalação básica necessária. Há muitos pacotes disponíveis dependendo da análise precisa ser feita. Para implementar a estratégia de negociação, usaremos o pacote chamado quantstrat.
Processo em Quatro Passos de qualquer Estratégia de Negociação Básica.
Formação de hipóteses Testando a produção de refinação.
Nossa hipótese é formulada como "o mercado é reversão". A reversão média é uma teoria que sugere que os preços eventualmente retornem ao seu valor médio. O segundo passo consiste em testar a hipótese para a qual formulamos uma estratégia em nossa hipótese e computamos indicadores, sinais e métricas de desempenho. A fase de teste pode ser dividida em três etapas, obter os dados, escrever a estratégia e analisar a saída. Neste exemplo, consideramos NIFTY-Bees. É um fundo negociado em bolsa administrado pela Goldman Sachs. A NSE tem um enorme volume para o instrumento, portanto, consideramos isso. A imagem abaixo mostra o preço Open-High-Low-Close do mesmo.
Nós estabelecemos um nível limiar para comparar as flutuações no preço. Se o preço aumentar / diminuir, atualizamos a coluna do limite. O preço de fechamento é comparado com a banda superior e com a banda inferior. Quando a banda superior é cruzada, é um sinal para venda. Da mesma forma, quando a banda baixa é cruzada, é um sinal de compra.
A seção de codificação pode ser resumida da seguinte forma,
Uma visão de helicóptero para a saída da estratégia é dada no diagrama abaixo.
Assim, nossa hipótese de que o mercado é um retorno significativo é suportada. Uma vez que este é o teste de volta, temos espaço para refinar os parâmetros de negociação que melhorariam nossos retornos médios e os lucros realizados. Isso pode ser feito configurando níveis de limiar diferentes, regras de entrada mais rígidas, perda de parada, etc. Pode-se escolher mais dados para back-testing, usar a abordagem bayseiana para configuração de limite, ter em conta a volatilidade.
Uma vez que você está confiante sobre a estratégia de negociação apoiada pelos resultados dos back-testing, você pode entrar em negociação ao vivo. O ambiente de produção é um grande tópico em si e está fora do escopo no contexto do artigo. Para explicar em breve, isso envolveria escrever a estratégia em uma plataforma de negociação.
Como mencionado anteriormente, estaríamos construindo o modelo usando o pacote quantstrat. O Quantstrat fornece uma infra-estrutura genérica para modelo e estratégias quantitativas baseadas em sinal de backtest. É uma camada de abstração de alto nível (construída em xts, FinancialInstrument, blotter, etc.) que permite que você crie e teste estratégias em poucas linhas de código.
As principais características do quantstrat são,
Suporta estratégias que incluem indicadores, sinais e regras Permite que estratégias sejam aplicadas a carteiras de ativos múltiplos Suporta tipos de ordem de mercado, limite, stoplimit e stoptrailing Suporta dimensionamento de ordem e otimização de parâmetros.
Nesta publicação, construímos uma estratégia que inclui indicadores, sinais e regras.
Para um modelo baseado em sinal genérico, os seguintes objetos devem ser considerados,
Instrumentos - Contém dados de mercado Indicadores - Valores quantitativos derivados de dados de mercado Sinais - Resultado da interação entre dados de mercado e indicadores Regras - Gerar ordens usando dados de mercado, indicadores e sinais.
Sem muito tempo, vamos discutir a parte de codificação. Preferimos o estúdio R para codificação e insistimos em usar o mesmo. Você precisa ter determinados pacotes instalados antes de programar a estratégia.
O seguinte conjunto de comandos instala os pacotes necessários.
Depois de instalar os pacotes, você os importa para uso posterior.
Leia os dados do arquivo csv e converta-o em objeto xts.
Inicializamos o portfólio com o estoque, moeda, capital inicial e o tipo de estratégia.
Adicione o limite de posição se desejar negociar mais de uma vez no mesmo lado.
Crie o objeto de estratégia.
Construímos uma função que calcula os limiares que queremos negociar. Se o preço se move por thresh1, atualizamos o limite para o novo preço. Novas bandas para negociação são Threshold +/- Thresh2. A saída é um objeto xts, embora usemos a função reclass para garantir.
Adicione o indicador, o sinal e a regra de negociação.
Execute a estratégia e veja o caderno de pedidos.
Atualize o portfólio e veja as estatísticas comerciais.
Aqui está o código completo.
Uma vez que você esteja familiarizado com esses conceitos básicos, você pode dar uma olhada em como começar a usar o pacote quantimod em R. Ou no caso de você ser bom em C ++, veja uma estratégia de exemplo codificada em C ++.
Se você é um comerciante de varejo ou um profissional de tecnologia que procura iniciar sua própria mesa de negociação automatizada, comece a aprender algo trading hoje! Comece com conceitos básicos como arquitetura de negociação automatizada, microestrutura de mercado, sistema de backtesting de estratégia e sistema de gerenciamento de pedidos.

No comments:

Post a Comment