Estratégias de negociação Backtest r
Obter através da App Store Leia esta publicação em nosso aplicativo!
R: Backtesting uma estratégia de negociação. Iniciantes para quantmod e R.
Eu sou muito novo para a R e tentando testar uma estratégia que já programei no WealthLab.
Várias coisas que eu não entendo (e isso não funciona obviamente :)
Eu não consigo os Close Prices muito bem em um vetor. ou algum tipo de vetor, mas ele começa com a estrutura e eu realmente não entendo o que essa função faz. É por isso que a minha série [, 1] provavelmente não funciona.
n & lt; - nrow (series) também não funciona, mas eu preciso disso para o Loop.
Então, acho que se eu receber essas 2 perguntas respondidas, minha estratégia deveria funcionar. Estou muito agradecido por qualquer ajuda ... R parece bastante complicado mesmo com a experiência de programação em outras línguas.
Começando com a segunda pergunta.
Então, se você quiser trabalhar no objeto xts real, você precisa usar get.
Sobre sua primeira pergunta - eu não acho que você realmente precisa puxar os dados como um vetor - o objeto xts é uma matriz indexada por data e é fácil de trabalhar. Se você ainda deseja obter os dados que você pode usar.
Agora, para que você comece com um simples teste de respostas de estratégias, sugerirei trabalhar nas seguintes etapas.
defina sua estratégia. 2. Crie uma matriz ou adicione uma coluna ao seu objeto xts que representará sua posição para cada dia. 1 por muito tempo, 0 para nenhuma posição e -1 para breve (mais tarde você pode jogar com o número de alavancagem). 3. multiplique cada dia retorna com a posição e você obterá seu vetor de retorno de estratégia. 4. examine os resultados - minha recomendação é PerformanceAnalytics.
Estratégia simples - compre quando estiver perto da SMA20, venda abaixo.
Backtesting uma Estratégia de Negociação.
Eu pedi Análise da Série de Tempo e suas Aplicações: Com Exemplos R (Springer Texts in Statistics) para me ajudar na série temporal na curva de aprendizado de R. Até agora, o que eu vi parece bom. O autor tem uma boa página com os problemas em R e séries temporais. O livro deve chegar até o final da semana.
Entretanto, encontrei uma estratégia comercial ao ler um artigo no serviço "Over My Shoulder" de John Mauldin (que eu recomendo). O ponto crucial disso foi que, no mercado-negro que começou com o choque da tecnologia, uma estratégia de apostar na reversão média do S & P500 gerou retornos significativos. Naturalmente, queria testar.
Por favor, note que não estou recomendando nada a seguir. Faça sua lição de casa e fale com um profissional de investimento se tiver dúvidas.
A estratégia é passar o S & P500 quando o mercado se fechar no máximo nos últimos 3 dias. Inverta o comércio e vá muito tempo quando o mercado fecha ao mínimo durante os 3 dias anteriores. Os ETFs tornam essa estratégia relativamente fácil de negociar. SPY será o nosso veículo para ser longo o S & P500 e SH será o nosso veículo para ficar curto.
A SH começou a negociar em 21/06/2006. Concentramos nosso backtesting nesse ponto até agora.
Usando a função importSeries () que criamos anteriormente, obtenha todos os valores para SPY e SH.
Precisamos criar algumas horas adicionais para segurar.
Bandeira longa / curta - nos informa sobre o status atual de nossas explorações. Trade Flag - indica que nós instituímos uma negociação nesta data. Strat. Returns - retorno nominal para o dia com a estratégia. Montante em dólar - um valor em dólar bruto da carteira, assumindo um valor de $ 10.000 em dólares em 21/06/2006 e uma taxa de transação de US $ 2 quando negociamos.
Deve-se notar que esta estratégia NÃO é eficiente em impostos - quaisquer ganhos serão tributados na taxa de ganhos de capital de curto prazo. Havia 411 comércios. Um comércio envolve compra e venda, então 822 vezes você seria cobrado uma taxa de corretagem. Eu assumi 1 dólar por compra / venda - o que é cobrado pela Interactive Brokers. Usar alguém como o TD Ameritrade custaria muito mais. Isso também pressupõe que você pode comprar e vender no preço de fechamento do mercado. Algo que é possível, mas o deslizamento ocorrerá.
Comentários estão fechados.
Pesquisar blogueiros R.
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.
FOSS Trading.
Comércio algorítmico com software livre de código aberto.
Sábado, 26 de março de 2011.
Como testar uma estratégia em R.
A função getSymbols no quantmod facilita este passo se você puder usar dados diários do Yahoo Finance. Há também "métodos" (não no sentido estrito) para extrair dados de outras fontes (FRED, Google, Oanda, R, salvar arquivos, bancos de dados, etc.). Você também pode usá-los como um modelo para escrever uma função personalizada para um fornecedor específico que você usa.
Etapa 2: crie seu indicador.
O pacote TTR contém uma multiplicidade de indicadores. Os indicadores são escritos para facilitar a combinação de formas criativas e não convencionais. Começando com a revisão 106 na R-forge, a TTR possui um indicador DVI.
Passo 3: Construa sua regra de negociação.
Uma vez que esta regra de negociação é simples - ficamos 100% longos se o DVI for inferior a 0,5 e curto de 100% caso contrário - pode ser escrito em uma única linha. Regras mais elaboradas e / ou posicionamentos de posição também podem ser feitas, mas requerem mais código (RSI (2) com o dimensionamento de posição é um exemplo de regras de dimensionamento de posição mais complexas). Observe também que o vetor de sinal está defasado, o que evita o viés de avanço.
Passo 4: A curva de negociação / equidade.
Tal como no exemplo de Damian, o código abaixo é uma abordagem simplificada que é fricção e não explica a derrapagem. O código abaixo leva o retorno percentual de hoje e o multiplica pelo tamanho do sinal / posição de ontem (sempre +/- 100% neste exemplo). Eu também subconjunto o sistema retorna para coincidir com os resultados no arquivo do Excel.
Etapa 5: Avalie o desempenho da estratégia.
Damian mencionou a importância de avaliar sua estratégia. Felizmente, para os usuários de R, o pacote PerformanceAnalytics facilita isso. Com algumas linhas de código, podemos ver os drawdowns, os riscos de downside e um resumo de desempenho.
Isso é tudo o que há para testar uma estratégia simples em R. Não foi tão intimidante, foi? Deixe comentários se você estiver movendo seu backtesting do Excel para R e há algo em que você está desligado ou você tem uma ótima dica que você gostaria de compartilhar.
Repetição de uma estratégia simples de negociação de ações.
Nota: Esta publicação NÃO é um conselho financeiro! Esta é apenas uma maneira divertida de explorar alguns dos recursos que R tem para importar e manipular dados.
Recentemente, li uma publicação no ETF Prophet que explorou uma estratégia de negociação de ações interessante no Excel. A estratégia é simples: encontre o ponto alto do estoque nos últimos 200 dias e conte o número de dias decorridos desde aquela alta. Se tiver sido mais de 100 dias, possui o estoque. Se tiverem decorrido mais de 100 dias, não seja o próprio. Esta estratégia é muito simples, mas produz alguns resultados impressionantes. (Nota, no entanto, que este exemplo usa dados que não foram ajustados de divisões ou dividendos e podem conter outros erros. Além disso, estamos ignorando custos de negociação e atrasos de execução, que afetam o desempenho da estratégia.)
Implementar esta estratégia em R é simples e oferece inúmeras vantagens sobre o Excel, cujo principal é que tirar dados do mercado de ações em R é fácil e podemos testar essa estratégia em uma ampla gama de índices com relativamente pouco esforço.
Em primeiro lugar, baixamos dados para GSPC usando quantmod. (GSPC representa o índice S & amp; P 500). Em seguida, construímos uma função para calcular o número de dias desde a alta de n-dia em uma série de tempo e uma função para implementar nossa estratégia de negociação. A última função leva 2 parâmetros: o máximo de n-dia que você deseja usar, e os números de dias depois dessa altura você segurará o estoque. O exemplo é 200 e 100, mas você poderia facilmente mudar isso para o máximo de 500 dias e ver o que acontece se você armazenar o estoque 300 dias depois antes de sair. Uma vez que esta função está parametrizada, podemos testar facilmente muitas outras versões da nossa estratégia. Assumimos o início da nossa estratégia com zeros, por isso será o mesmo comprimento que os nossos dados de entrada. (Se desejar uma explicação mais detalhada da função daysSinceHigh, veja a discussão sobre validação cruzada).
Multiplicamos nosso vetor de posição (0,1) pelos retornos do índice para obter os retornos da nossa estratégia. Agora, construímos uma função para retornar algumas estatísticas sobre uma estratégia comercial e comparamos nossa estratégia com o benchmark. Um pouco arbitrariamente, eu decidi olhar para o retorno cumulativo, o retorno anual médio, a proporção de sharpe, o% vencedor, a volatilidade anual média, a redução máxima e a redução do comprimento máximo. Outras estatísticas seriam fáceis de implementar.
Como você pode ver, esta estratégia se compara favoravelmente à abordagem padrão "buy and hold".
Finalmente, testamos nossa estratégia em 3 outros índices: FTSE que representa a Irlanda e o Reino Unido, o Dow Jones Industrial Index, que se remonta a 1896, e o N225, que representa o Japão. Eu funcionei todo o processo, então você pode testar cada nova estratégia com 1 linha de código:
Estratégias de negociação Backtest r
Vamos explorar as capacidades de backtesting de R.
Em uma publicação anterior, desenvolvemos algumas oportunidades de entrada simples para o USD / CAD usando um algoritmo de aprendizado de máquinas e técnicas de um subconjunto de mineração de dados chamado aprendizagem de regras de associação. Nesta publicação, vamos explorar como fazer um backtest completo em R; usando nossas regras da postagem anterior e implementando tirar lucros e parar as perdas.
Vamos mergulhar direito: Nota: o backtest é construído com as barras de 4 horas em nosso conjunto de dados e não tem uma visão mais granular.
A CAGR (taxa de crescimento anual composta) é o percentual de perda / lucro anualizado, o que significa que suaviza o crescimento em parcelas iguais a cada ano. Uma vez que o nosso teste acabou, veja se podemos melhorar o desempenho, adicionando uma perda de parada e aproveitamos o lucro.
Com apenas uma parada, o desempenho diminuiu. Parece que estamos sendo retirados de nossos negócios antes que eles possam se recuperar. A fim de bloquear nossos lucros, vamos avançar e implementar um lucro de tirar proveito.
Bloquear nossos ganhos com um lucro obtido melhorou ligeiramente o desempenho, mas não de forma drástica. Vamos incorporar uma perda de parada e um lucro obtido.
Agora, vamos comparar a estratégia Long Short da linha de base, com apenas uma perda de parada, apenas um lucro, e tanto uma perda de parada e aproveitar o lucro.
Agora você sabe como adicionar um lucro e parar a perda, recomendo que você brinque com os dados e teste diferentes valores com base em seus próprios parâmetros de risco pessoais e usando suas próprias regras.
Mesmo com algoritmos poderosos e ferramentas sofisticadas, é difícil construir uma estratégia bem-sucedida. Para cada boa idéia, tendemos a ter muitos mais maus. Armado com as ferramentas e conhecimentos certos, você pode testar suas idéias eficientemente até chegar aos bons. Nós simplificamos esse processo na TRAIDE. Desenvolvemos uma infra-estrutura de teste que permite que você veja onde os padrões estão em seus dados e veja em tempo real como eles teriam realizado sobre seus dados históricos.
Um exemplo de uma estratégia comercial codificada usando o pacote Quantmod em R.
O back-testing de uma estratégia de negociação pode ser implementado em quatro etapas.
Obtendo os dados históricos Formule a estratégia de negociação e especifique as regras Execute a estratégia nos dados históricos Avalie as métricas de desempenho.
Nesta publicação, voltaremos a testar a nossa estratégia de negociação em R. O pacote quantmod tornou muito fácil extrair dados históricos do Yahoo Finance. O código de uma linha abaixo obtém dados NSE (Nifty).
O Quantmod fornece vários recursos para visualizar dados. O comando abaixo cria um gráfico para os dados NSE.
TA = "Nulo" indica não usar nenhum indicador técnico. Veremos logo a aplicação de um indicador técnico em um gráfico. O próximo passo é escolher uma estratégia de negociação. Nós escolheremos MACD (Divergência de Convergência Médica em Movimento) para este exemplo. Em uma estratégia de cruzamento média móvel, duas médias são calculadas, uma média lenta e uma média móvel rápida. A diferença entre a média móvel rápida e a média lenta média é chamada de linha MACD. Uma terceira média chamada linha de sinal; uma média móvel exponencial de 9 dias do sinal MACD, também é calculada. Se a linha MACD cruza acima da linha de sinal, então é um sinal de alta e nós ficamos longos. Se a linha MACD cruza abaixo da linha de sinal, então é um sinal de baixa e ficamos curtos. Escolhemos o preço de fechamento dos dados NSE para calcular as médias. O comando seguinte cumpre esta tarefa.
O comando abaixo calcula o MACD para o preço de fechamento.
Pode-se escolher parâmetros variáveis para médias rápidas, lentas e de sinal, dependendo dos requisitos de negociação. Aqui ficamos com os parâmetros padrão. MACD é a função em quantmod que calcula a divergência de convergência média móvel, os dados são o preço de fechamento para NSE, nFast é a média em movimento rápido, nSlow é a média lenta, maType = SMA indica que escolhemos média móvel simples, percentagem = FALSO implica que estamos calculando a diferença entre média em movimento rápido e média lenta. Defini-lo VERDADEIRO retornaria a diferença percentual entre a média móvel rápida e a média lenta.
O comando a seguir traça o gráfico para o preço de fechamento da NSE, juntamente com os parâmetros do MACD.
Conforme discutido anteriormente, definimos nosso sinal de negociação da seguinte forma:
Se o sinal MACD se cruzou acima da linha de sinal, vamos longamente NSE Se o sinal MACD cruzado abaixo da linha de sinal, ficamos curtos em NSE.
O comando seguinte gera o sinal de negociação de acordo. Utilizamos o operador de desfasamento para eliminar o viés de avanço.
sinal = Lag (ifelse (macd $ macd & lt; macd $ signal, -1, 1))
Vamos aplicar essa estratégia nos dados históricos da NSE de 2007-09-17 a 2015-09-22. O sinal de negociação é aplicado ao preço de fechamento para obter os retornos de nossa estratégia.
A função ROC fornece a diferença percentual entre os dois preços de fechamento. Podemos escolher a duração para a qual queremos ver os retornos. O seguinte comando escolhe os retornos entre 2008-06-02 e 2015-09-22.
Os retornos cumulativos podem ser calculados e plotados usando os seguintes comandos: -
O 4º passo do back-testing é avaliar métricas de desempenho. O pacote de análise de desempenho em R fornece uma plataforma consolidada para observar os parâmetros relacionados ao desempenho. Várias métricas, como retrabalhos, risco de queda podem ser observadas em R.
O comando seguinte fornece um resumo dos parâmetros acima mencionados e muito mais!
Aqui está a versão sucinta do código.
macd = MACD (data, nFast = 12, nSlow = 26, nSig = 9, maType = SMA, percent = FALSE)
sinal = Lag (ifelse (macd $ macd & lt; macd $ signal, -1, 1))
Depois de passar por esse exemplo, você aprendeu conceitos básicos sobre como projetar uma estratégia de negociação de quantos usando R. Agora, você pode começar a aprender sobre como começar com o pacote quantmod em R. Depois de ter aprendido com sucesso estes conceitos básicos você pode testar suas habilidades em nosso curso interativo de 10 horas de duração do caminho de dados do modelo de "modelo de estratégia quantitativa de negociação em R"
Posts Relacionados:
Um pensamento sobre "Um exemplo de uma estratégia comercial codificada usando o pacote Quantmod em R"
20 de dezembro de 2016.
Executei o script R acima e traçam os 3 gráficos, mas como interpretá-los.
Vamos explorar as capacidades de backtesting de R.
Em uma publicação anterior, desenvolvemos algumas oportunidades de entrada simples para o USD / CAD usando um algoritmo de aprendizado de máquinas e técnicas de um subconjunto de mineração de dados chamado aprendizagem de regras de associação. Nesta publicação, vamos explorar como fazer um backtest completo em R; usando nossas regras da postagem anterior e implementando tirar lucros e parar as perdas.
Vamos mergulhar direito: Nota: o backtest é construído com as barras de 4 horas em nosso conjunto de dados e não tem uma visão mais granular.
A CAGR (taxa de crescimento anual composta) é o percentual de perda / lucro anualizado, o que significa que suaviza o crescimento em parcelas iguais a cada ano. Uma vez que o nosso teste acabou, veja se podemos melhorar o desempenho, adicionando uma perda de parada e aproveitamos o lucro.
Com apenas uma parada, o desempenho diminuiu. Parece que estamos sendo retirados de nossos negócios antes que eles possam se recuperar. A fim de bloquear nossos lucros, vamos avançar e implementar um lucro de tirar proveito.
Bloquear nossos ganhos com um lucro obtido melhorou ligeiramente o desempenho, mas não de forma drástica. Vamos incorporar uma perda de parada e um lucro obtido.
Agora, vamos comparar a estratégia Long Short da linha de base, com apenas uma perda de parada, apenas um lucro, e tanto uma perda de parada e aproveitar o lucro.
Agora você sabe como adicionar um lucro e parar a perda, recomendo que você brinque com os dados e teste diferentes valores com base em seus próprios parâmetros de risco pessoais e usando suas próprias regras.
Mesmo com algoritmos poderosos e ferramentas sofisticadas, é difícil construir uma estratégia bem-sucedida. Para cada boa idéia, tendemos a ter muitos mais maus. Armado com as ferramentas e conhecimentos certos, você pode testar suas idéias eficientemente até chegar aos bons. Nós simplificamos esse processo na TRAIDE. Desenvolvemos uma infra-estrutura de teste que permite que você veja onde os padrões estão em seus dados e veja em tempo real como eles teriam realizado sobre seus dados históricos.
Um exemplo de uma estratégia comercial codificada usando o pacote Quantmod em R.
O back-testing de uma estratégia de negociação pode ser implementado em quatro etapas.
Obtendo os dados históricos Formule a estratégia de negociação e especifique as regras Execute a estratégia nos dados históricos Avalie as métricas de desempenho.
Nesta publicação, voltaremos a testar a nossa estratégia de negociação em R. O pacote quantmod tornou muito fácil extrair dados históricos do Yahoo Finance. O código de uma linha abaixo obtém dados NSE (Nifty).
O Quantmod fornece vários recursos para visualizar dados. O comando abaixo cria um gráfico para os dados NSE.
TA = "Nulo" indica não usar nenhum indicador técnico. Veremos logo a aplicação de um indicador técnico em um gráfico. O próximo passo é escolher uma estratégia de negociação. Nós escolheremos MACD (Divergência de Convergência Médica em Movimento) para este exemplo. Em uma estratégia de cruzamento média móvel, duas médias são calculadas, uma média lenta e uma média móvel rápida. A diferença entre a média móvel rápida e a média lenta média é chamada de linha MACD. Uma terceira média chamada linha de sinal; uma média móvel exponencial de 9 dias do sinal MACD, também é calculada. Se a linha MACD cruza acima da linha de sinal, então é um sinal de alta e nós ficamos longos. Se a linha MACD cruza abaixo da linha de sinal, então é um sinal de baixa e ficamos curtos. Escolhemos o preço de fechamento dos dados NSE para calcular as médias. O comando seguinte cumpre esta tarefa.
O comando abaixo calcula o MACD para o preço de fechamento.
Pode-se escolher parâmetros variáveis para médias rápidas, lentas e de sinal, dependendo dos requisitos de negociação. Aqui ficamos com os parâmetros padrão. MACD é a função em quantmod que calcula a divergência de convergência média móvel, os dados são o preço de fechamento para NSE, nFast é a média em movimento rápido, nSlow é a média lenta, maType = SMA indica que escolhemos média móvel simples, percentagem = FALSO implica que estamos calculando a diferença entre média em movimento rápido e média lenta. Defini-lo VERDADEIRO retornaria a diferença percentual entre a média móvel rápida e a média lenta.
O comando a seguir traça o gráfico para o preço de fechamento da NSE, juntamente com os parâmetros do MACD.
Conforme discutido anteriormente, definimos nosso sinal de negociação da seguinte forma:
Se o sinal MACD se cruzou acima da linha de sinal, vamos longamente NSE Se o sinal MACD cruzado abaixo da linha de sinal, ficamos curtos em NSE.
O comando seguinte gera o sinal de negociação de acordo. Utilizamos o operador de desfasamento para eliminar o viés de avanço.
sinal = Lag (ifelse (macd $ macd & lt; macd $ signal, -1, 1))
Vamos aplicar essa estratégia nos dados históricos da NSE de 2007-09-17 a 2015-09-22. O sinal de negociação é aplicado ao preço de fechamento para obter os retornos de nossa estratégia.
A função ROC fornece a diferença percentual entre os dois preços de fechamento. Podemos escolher a duração para a qual queremos ver os retornos. O seguinte comando escolhe os retornos entre 2008-06-02 e 2015-09-22.
Os retornos cumulativos podem ser calculados e plotados usando os seguintes comandos: -
O 4º passo do back-testing é avaliar métricas de desempenho. O pacote de análise de desempenho em R fornece uma plataforma consolidada para observar os parâmetros relacionados ao desempenho. Várias métricas, como retrabalhos, risco de queda podem ser observadas em R.
O comando seguinte fornece um resumo dos parâmetros acima mencionados e muito mais!
Aqui está a versão sucinta do código.
macd = MACD (data, nFast = 12, nSlow = 26, nSig = 9, maType = SMA, percent = FALSE)
sinal = Lag (ifelse (macd $ macd & lt; macd $ signal, -1, 1))
Depois de passar por esse exemplo, você aprendeu conceitos básicos sobre como projetar uma estratégia de negociação de quantos usando R. Agora, você pode começar a aprender sobre como começar com o pacote quantmod em R. Depois de ter aprendido com sucesso estes conceitos básicos você pode testar suas habilidades em nosso curso interativo de 10 horas de duração do caminho de dados do modelo de "modelo de estratégia quantitativa de negociação em R"
Posts Relacionados:
Um pensamento sobre "Um exemplo de uma estratégia comercial codificada usando o pacote Quantmod em R"
20 de dezembro de 2016.
Executei o script R acima e traçam os 3 gráficos, mas como interpretá-los.
No comments:
Post a Comment