Wednesday 22 November 2017

Backtesting Trading Strategies Using R


Im muito novo para R e tentar backtest uma estratégia Ive programado já em WealthLab. Várias coisas que eu não entendo (e não funciona obviamente :) Eu não entendo os Preços Fechar bem em um vetor. Ou algum tipo de vetor, mas ele começa com a estrutura e eu realmente não entendo o que esta função faz. É por isso que minha série, uma chamada provavelmente não funciona. N lt - nrow (série) não funciona, mas eu preciso que para o Loop Então eu acho que se eu chegar Estas 2 perguntas respondidas minha estratégia deve funcionar. Estou muito grato por qualquer ajuda .. R parece muito complicado, mesmo com a experiência de programação em outras línguas yeah I Tipo de copiado algumas linhas de código a partir deste tutorial e don39t realmente entender esta linha. Quero dizer série, 1 eu pensei que iria aplicar a função f para quotcolumnquot 1 da série. Mas desde que esta série é alguma compley com a estrutura etc. não trabalha. I39m falando sobre este tutorial: r-bloggersbacktesting-a-negociação-estratégia ndash MichiZH Jun 6 13 at 14: 22Backtesting: Interpretando o passado Backtesting é um componente-chave do desenvolvimento do sistema de comércio eficaz. É realizado reconstruindo, com dados históricos, os negócios que teriam ocorrido no passado usando regras definidas por uma determinada estratégia. O resultado oferece estatísticas que podem ser usadas para avaliar a eficácia da estratégia. Usando esses dados, os comerciantes podem otimizar e melhorar suas estratégias, encontrar quaisquer falhas técnicas ou teóricas, e ganhar confiança em sua estratégia antes de aplicá-lo aos mercados reais. A teoria subjacente é que qualquer estratégia que funcionou bem no passado é susceptível de funcionar bem no futuro e, inversamente, qualquer estratégia que teve um desempenho ruim no passado é susceptível de funcionar mal no futuro. Este artigo dá uma olhada no que os aplicativos são usados ​​para backtest, que tipo de dados são obtidos, e como colocá-lo para usar Os dados e as ferramentas Backtesting pode fornecer abundância de estatística valiosa comentários sobre um determinado sistema. Algumas estatísticas de backtesting universal incluem: Lucro líquido ou perda - ganho ou perda percentual líquido. Prazo - Datas passadas em que o teste ocorreu. Universo - Ações que foram incluídas no backtest. Medidas de volatilidade - Percentagem máxima de subida e descida. Médias - Percentagem de ganho médio e perda média, média de barras mantidas. Exposição - Percentual de capital investido (ou exposto ao mercado). Razões - Relação vitórias-perdas. Retorno anualizado - Retorno percentual ao longo de um ano. Retorno ajustado ao risco - Retorno percentual em função do risco. Normalmente, backtesting software terá duas telas que são importantes. A primeira permite que o profissional personalize as configurações para backtesting. Essas personalizações incluem tudo, desde o período de tempo até os custos de comissão. Aqui está um exemplo de tal tela no AmiBroker: A segunda tela é o relatório de resultados de backtesting real. Isto é onde você pode encontrar todas as estatísticas mencionadas acima. Novamente, aqui está um exemplo desta tela no AmiBroker: Em geral, a maioria dos softwares comerciais contém elementos semelhantes. Alguns programas de software high-end também incluem funcionalidades adicionais para realizar o dimensionamento automático da posição, otimização e outros recursos mais avançados. Os 10 mandamentos Há muitos fatores que os comerciantes prestam atenção quando eles estão backtesting estratégias de negociação. Aqui está uma lista das 10 coisas mais importantes a lembrar enquanto backtesting: Tome em conta as tendências do mercado amplo no período em que uma determinada estratégia foi testada. Por exemplo, se uma estratégia só foi testada de 1999 a 2000, pode não estar bem em um mercado de baixa. É muitas vezes uma boa idéia para backtest durante um período de tempo longo que engloba vários tipos diferentes de condições de mercado. Leve em conta o universo no qual o backtesting ocorreu. Por exemplo, se um sistema de mercado amplo é testado com um universo consistindo de ações de tecnologia, pode deixar de fazer bem em diferentes setores. Como regra geral, se uma estratégia é direcionada para um gênero específico de estoque, limitar o universo a esse gênero, mas, em todos os outros casos, manter um grande universo para fins de teste. Medidas de volatilidade são extremamente importantes a considerar no desenvolvimento de um sistema de comércio. Isto é especialmente verdadeiro para as contas alavancadas, que são submetidas a chamadas de margem se a sua equidade desce abaixo de um certo ponto. Os comerciantes devem procurar manter a volatilidade baixa, a fim de reduzir o risco e permitir uma transição mais fácil dentro e fora de um determinado estoque. O número médio de barras mantidas também é muito importante para assistir ao desenvolver um sistema de negociação. Embora a maioria dos backtesting software inclui custos de comissão nos cálculos finais, isso não significa que você deve ignorar esta estatística. Se possível, aumentar o número médio de barras mantidas pode reduzir os custos de comissão e melhorar seu retorno geral. A exposição é uma espada de dois gumes. Exposição aumentada pode conduzir aos lucros mais elevados ou aos perdas mais elevados, quando a exposição diminuída significa lucros mais baixos ou perdas mais baixas. No entanto, em geral, é uma boa idéia para manter a exposição abaixo de 70, a fim de reduzir o risco e permitir uma transição mais fácil dentro e fora de um determinado estoque. A estatística média de perda de ganho, combinada com a relação ganhos-perdas, pode ser útil para determinar o dimensionamento de posição ótimo e a administração de dinheiro usando técnicas como o Critério de Kelly. (Veja Money Management Usando o Critério Kelly.) Os comerciantes podem assumir posições maiores e reduzir os custos de comissão, aumentando seus ganhos médios e aumentando sua relação ganhos-para-perdas. Retorno anualizado é importante porque é usado como uma ferramenta para comparar os retornos de sistemas contra outros locais de investimento. É importante não só olhar para o retorno global anualizado, mas também para ter em conta o risco aumentado ou diminuído. Isso pode ser feito olhando para o retorno ajustado ao risco, que explica vários fatores de risco. Antes de um sistema de negociação ser adotado, ele deve superar todos os outros locais de investimento em igual ou menos risco. Backtesting personalização é extremamente importante. Muitas aplicações de backtesting têm entrada para valores de comissão, tamanhos de lote redondos (ou fracionários), tamanhos de carrapatos, requisitos de margem, taxas de juros, pressupostos de deslizamento, regras de dimensionamento de posição, regras de saída da mesma barra e configurações de parada. Para obter os resultados de backtesting mais precisos, é importante ajustar essas configurações para imitar o corretor que será usado quando o sistema for ativado. Backtesting às vezes pode levar a algo conhecido como super-otimização. Esta é uma condição onde os resultados de desempenho são ajustados tão altamente ao passado que eles não são mais precisos no futuro. Geralmente, é uma boa idéia implementar regras que se apliquem a todas as ações ou a um conjunto selecionado de ações segmentadas e não sejam otimizadas na medida em que as regras não sejam mais compreensíveis pelo criador. Backtesting nem sempre é a maneira mais precisa para avaliar a eficácia de um determinado sistema de comércio. Às vezes, as estratégias que funcionaram bem no passado não conseguem fazer bem no presente. O desempenho passado não é indicativo de resultados futuros. Certifique-se de comércio de papel de um sistema que foi testado com sucesso antes de ir ao vivo para ter certeza de que a estratégia ainda se aplica na prática. Conclusão Backtesting é um dos aspectos mais importantes do desenvolvimento de um sistema comercial. Se criado e interpretado corretamente, pode ajudar comerciantes a aperfeiçoar e melhorar suas estratégias, encontrar todas as falhas técnicas ou teóricas, assim como ganhar a confiança em sua estratégia antes de aplicá-la aos mercados reais. Recursos Tradecision (tradecision) - High-end Desenvolvimento do Sistema de Negociação AmiBroker (amibroker) - Desenvolvimento do Sistema de Negociação de Orçamento. Uma medida da relação entre uma mudança na quantidade demandada de um bem particular e uma mudança em seu preço. Preço. O valor de mercado total do dólar de todas as partes em circulação de uma companhia. A capitalização de mercado é calculada pela multiplicação. Frexit curto para quotFrancês exitquot é um spin-off francês do termo Brexit, que surgiu quando o Reino Unido votou. Uma ordem colocada com um corretor que combina as características de ordem de parada com as de uma ordem de limite. Uma ordem de stop-limite será. Uma rodada de financiamento onde os investidores comprar ações de uma empresa com uma avaliação menor do que a avaliação colocada sobre a. Uma teoria econômica da despesa total na economia e seus efeitos no produto e na inflação. A economia keynesiana foi desenvolvida. Testando uma Estratégia de Negociação de Ações Simples Nota: Esta postagem NÃO é conselho financeiro Esta é apenas uma maneira divertida de explorar alguns dos recursos R tem para importar e manipular dados. Recentemente li um post sobre o ETF Prophet que explorou uma interessante estratégia de negociação de ações no Excel. A estratégia é simples: encontrar o ponto alto do estoque nos últimos 200 dias, e contar o número de dias que decorreram desde aquela alta. Se seu sido mais menos de 100 dias, possui o estoque. Se foi mais de 100 dias, don8217t ele próprio. Esta estratégia é muito simples, mas produz alguns resultados impressionantes. (Observe, no entanto, que este exemplo usa dados que não foram ajustados de divisões ou dividendos e poderiam conter outros erros. Além disso, ignorando os custos de negociação e atrasos de execução, ambos afetam o desempenho da estratégia.) Implementar essa estratégia em R é simples, E oferece inúmeras vantagens sobre o excel, a principal das quais é que puxar 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. Primeiro de tudo, nós baixamos dados para GSPC usando o quantmod. (GSPC significa índice SampP 500). Em seguida, construímos uma função para calcular o número de dias desde o n-dia de alta 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 n-dia alta que você deseja usar, e os números de dias passado que alta você vai 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ê segurar o estoque 300 dias depois que antes de resgatar. Uma vez que esta função é parametrizada, podemos facilmente testar muitas outras versões da nossa estratégia. Nós pad o início da nossa estratégia com zeros por isso será o mesmo comprimento como os nossos dados de entrada. (Se você deseja uma explanação mais detalhada da função daysSinceHigh, consulte a discussão sobre validação cruzada). Multiplicamos nosso vetor posição (0,1) pelos retornos do índice para obter nossos retornos de estratégia8217s. Agora nós construímos uma função para retornar algumas estatísticas sobre uma estratégia de negociação, e comparar a nossa estratégia com o benchmark. Um tanto arbitrariamente, decidi considerar o retorno cumulativo, o retorno anual médio, a taxa de sharpe, a ganância, a volatilidade anual média, o levantamento máximo e a redução de comprimento máximo. Outras estatísticas seriam fáceis de implementar. Como você pode ver, esta estratégia se compara favoravelmente à abordagem padrão 8220buy-and-hold8221. Finalmente, testamos nossa estratégia em três outros índices: FTSE, que representa a Irlanda eo Reino Unido, o Índice Industrial Dow Jones. Que remonta a 1896, eo N225. Que representa o Japão. I8217ve funcionalizou o processo inteiro, assim você pode testar cada nova estratégia com 1 linha de código: Nunca perca uma atualização Inscrever-se para R-blogueiros para receber e-mails com as últimas postagens R. (Você não verá esta mensagem novamente.)

No comments:

Post a Comment