Saturday, 20 January 2018

Backtesting trading strategies in r


Eu sou muito novo para a R e tentando testar uma estratégia que eu já programei no WealthLab. Várias coisas que eu não entendo (e isso não funciona obviamente). Eu não entendo os Close Prices muito bem num vetor. Ou algum tipo de vetor, mas começa com a estrutura e eu realmente não entendo o que essa função faz. É por isso que minha série, 1 chamada provavelmente não funciona. N ltnrow (série) 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, sim, eu copiei algumas linhas de código deste tutorial e realmente não entendo essa linha. Eu significo séries, 1 eu pensei que aplicaria a função f na quotcolumnquot 1 da série. Mas, uma vez que esta série é alguma completa com estrutura, etc., ela não funciona. Estou falando sobre este tutorial: r-bloggersbacktesting-a-trading-strategy ndash MichiZH 6 de junho 13 às 14: 22 Esta é a terceira publicação no Backtesting em séries de Excel e R e mostrará como backtest uma estratégia simples em R. It Seguirá os 4 passos que Damian delineou em sua postagem sobre como testar uma estratégia simples no Excel. Etapa 1: Obter os dados A função getSymbols no quantmod facilita este passo se você puder usar dados diários do Yahoo Finance. Existem 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. Execute o comando abaixo se o quantmod já estiver instalado use o pacote quantmod (carrega TTR, xts e zoológico) extraia dados do SPX do Yahoo (getSymbols retorna um objeto xts) Etapa 2: Crie seu indicador O pacote TTR contém uma infinidade 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. Calcule o indicador DVI dvi lt - DVI (Cl (GSPC)) Cl () extrai a coluna de preço de fechamento Etapa 3: Construa sua regra de negociação Uma vez que esta regra de negociação é simples - foram longos 100 se o DVI for inferior a 0,5 e curto 100 caso contrário - - pode ser escrito em uma única linha. Podem ser feitas regras mais elaboradas e as colocações de posição, 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. Criar sinal: (longo (curto) se o DVI estiver abaixo (acima) 0,5) lag, então o sinal de ontem é aplicado aos retornos de hoje sig lt - Lag (ifelse (dvidvi lt 0,5, 1, -1)) Etapa 4: curva de ruleseqüência de negociação Como no exemplo de Damians, o código abaixo é uma abordagem simplificada que é friccional e não explica a derrapagem. O código abaixo leva o retorno de porcentagem de hoje e o multiplica pelo tamanho da posição do sinal de ontem (sempre - 100 neste exemplo). Eu também subconjunto o sistema retorna para combinar os resultados no arquivo do Excel. Calcule os retornos baseados no sinal ret lt-ROC (Cl (GSPC)) sig subconforme retorna para corresponder os dados no arquivo Excel ret lt-ret2009-06-022018-09-07 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 as reduções, os riscos de queda e um resumo de desempenho. Use o pacote PerformanceAnalytics criar tabela mostrando estatísticas de retirada crie tabela de estimativas de risco de queda gráfico curva de equidade, desempenho diário e drawdowns Isso é tudo para testar uma estratégia simples em R. Não foi tão intimidante, foi por favor, deixe um comentário se você estiver mudando 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. Heres uma versão sucinta do código na postagem acima se você quiser copiar colar tudo em um bloco: Backtesting de uma estratégia de negociação de estoque simples Nota: Esta postagem não é um conselho financeiro Esta é apenas uma maneira divertida de explorar alguns dos O recurso 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 isso acontecesse há mais de 100 dias, don8217t é o próprio. Esta estratégia é muito simples, mas produz resultados impressionantes. (Note, 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, nós ignoramos custos de negociação e atrasos de execução, o que afeta o desempenho da estratégia.) Implementar esta estratégia em R é simples, E oferece inúmeras vantagens em relação ao 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, nós baixamos dados para GSPC usando quantmod. (GSPC significa índice SampP 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 temporal 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 é de 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). Nós multiplicamos nosso vetor de posição (0,1) pelos retornos do índice para obter nossos retornos de estratégia8217s. 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, I8217ve decidiu analisar o retorno cumulativo, o retorno anual médio, a proporção de sharpe, o vencedor, a volatilidade média anual, 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 8220buy-and-hold8221 padrão. Finalmente, testamos nossa estratégia em 3 outros índices: FTSE que representa a Irlanda e o Reino Unido, o Dow Jones Industrial Index. Que remonta a 1896, e a N225. Que representa o Japão. I8217ve funcionalizado todo o processo, para que você possa testar cada nova estratégia com 1 linha de código: Nunca perca uma atualização Assine os R-bloggers para receber e-mails com as últimas postagens R. (Você não verá esta mensagem novamente).

No comments:

Post a Comment