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-bloggers / backtesting-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, 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 as aplicações são usadas para backtest, que tipo de dados é obtido, 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 - Estoques que foram incluídos no backtest. Medidas de volatilidade - Percentagem máxima de subida e descida. Médias - Percentual de ganho médio e perda média, média de barras mantidas. Exposição - Percentual de capital investido (ou exposto ao mercado). Ratios - 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. O primeiro permite que o profissional personalize as configurações para backtesting. Essas personalizações incluem tudo, desde o período 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. Mais uma vez, 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 dimensionamento automático da posição, otimização e outros recursos mais avançados. Os 10 mandamentos Há muitos fatores comerciantes atenção para quando eles estão backtesting estratégias de negociação. Aqui está uma lista das 10 coisas mais importantes para 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 o retorno geral. A exposição é uma espada de dois gumes. Aumento da exposição pode levar a maiores lucros ou maiores perdas, enquanto diminuição da exposição significa lucros mais baixos ou menos perdas. 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 de ganhos / perdas médios, combinada com a relação ganhos-perdas, pode ser útil para determinar o dimensionamento de posição otimizado e o gerenciamento de dinheiro usando técnicas como o Critério 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 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, configurações de parada e muito mais. 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 aplicam a todas as ações ou um conjunto selecionado de ações segmentadas e não são otimizadas na medida em que as regras não são 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) - desenvolvimento de sistema de comércio de gama alta AmiBroker (amibroker) - desenvolvimento de sistema de negociação de orçamento. Testamento de uma estratégia de negociação I8217ve requisitado Análise de série de tempo e suas aplicações: Com R exemplos (Springer Texts em estatísticas) para me ajudar o tempo Série em R aprendizagem curva. Até agora, o que eu vi, parece bom. O autor tem uma boa página com as questões em R e séries de tempo. O livro deve chegar até o final da semana. Enquanto isso, me deparei com uma estratégia de negociação durante a leitura de um artigo fornecer sobre John Mauldin8217s 8220Over My Shoulder8221 serviço (que eu recomendo). O ponto crucial foi que no mercado de urso que começou com o crash da bolha tecnológica, uma estratégia de apostas na reversão média do SampP500 gerou retornos significativos. Naturalmente eu queria testar. Por favor note, eu não estou recomendando nada que segue. Faça sua lição de casa e fale com um profissional de investimento se você tiver dúvidas. A estratégia é ir por muito tempo o SampP500 quando o mercado fecha em um máximo sobre os 3 dias precedentes. Inverter o comércio e ir muito tempo quando o mercado fecha no mínimo nos últimos 3 dias. ETFs tornar esta estratégia relativamente fácil de comércio. SPY será nosso veículo para ser longo o SampP500 e SH será nosso veículo para ir curto. O SH começou a operar em 21/06/2006. Nós focamos nosso backtesting desse ponto até agora. Usando a função importSeries () que criamos anteriormente, obter todos os valores para SPY e SH. Spy importSeries (8220spy8221, toto, fromfrom) sh importSeries (8220sh8221, toto, fromfrom) série mesclar (espião, sh), c (8220spy. Open8221. 8220spy. Close8221 8220spy. Return8221 8220sh. Open8221 8220sh. Close8221 8220sh. Return8221) Precisamos criar algum timeSeries adicional para manter Long / Short Flag 8212 nos permite saber o status atual de nossas explorações. Trade Flag 8212 sinaliza que nós instituímos um comércio nesta data. Strat. Returns 8212 retorno nominal para o dia com a estratégia. Dólar Valor 8212 um valor bruto do dólar da carteira assumindo um valor de 10.000 dólares em 21/06/2006, e uma taxa de 2 transações quando negociamos. Depois de calcular a estratégia, também criaremos uma série de retorno bruto a partir da série de Montante do Dólar. F função (x) 0 x ls fapply (série 1, FUNf) Portanto, parece haver algo para essa estratégia. O retorno anual e tabelas CAPM estão perto do total. Alguns anos são melhores do que outros. Vou deixá-lo para você criá-los e estudá-los (principalmente para economizar espaço aqui). Há coisas para pensar: Deve-se notar que esta estratégia NÃO é eficiente de impostos 8212 quaisquer ganhos serão tributados na taxa de ganhos de capital de curto prazo. Havia 411 negócios. Um comércio envolve a compra e venda, então 822 vezes você seria cobrado uma taxa de corretagem. Eu assumi 1 dólar por compra / venda 8212 o que é cobrado por Interactive Brokers. Usar alguém como TD Ameritrade custaria mais. Isso também pressupõe que você pode comprar e vender ao preço de fechamento do mercado. Algo que é possível, mas o deslizamento ocorrerá. Nunca perca uma atualização Subscreva os R-blogueiros para receber e-mails com as últimas postagens R. (Você não verá esta mensagem novamente.)

Comments

Popular Posts