Friday 7 July 2017

Como Limpar Dados De Preço Para Backtesting


Como limpar dados de preço para Backtesting


Limpeza de dados para backtesting não é fácil, mas é muito necessário para obter resultados significativos. Desajustes de preços ajustados podem distorcer os dados de preços e enganar o retardatário inábil em pensar theyre encontrado o Santo Graal quando a estratégia simplesmente acontece para pegar o lado bom de uma lacuna ruim.


Aqui estão os passos para eliminar os dados sujos e produzir um conjunto de dados limpo:


1. Escolha pelo menos 3 fornecedores de dados candidatos.


2. Formate os dados para comparação.


3. Escreva um programa para fazer uma comparação inteligente e executá-lo nos 3 conjuntos de dados candidatos.


4. Analise os mis-compara para ver qual conjunto está em erro. Se 2 de 3 conjuntos concordam, assumir que é o valor correto eo outlier está errado.


5. Envie comentários para os fornecedores de dados para que eles possam corrigir os erros.


6. Selecione o conjunto de dados de preços históricos para usar para backtesting e bloqueá-lo para evitar alterações durante o backtesting.


7. Alimente os dados do preço de ouro para o mecanismo de backtesting.


Este processo levou-me várias semanas de trabalho, mas valeu a pena para obter resultados precisos. Theres pouco ponto de ir para o trabalho de backtesting se os dados subjacentes está cheia de erros.


Leia mais para detalhes se você está indo para tentar isso por conta própria ou se você só quer ver o que os preparativos ir para backtesting sério. Ao negociar ao vivo e pessoalmente olhando gráficos, é fácil o suficiente para manchar dados sujos. Grandes lacunas em um gráfico de preços são atraentes e você pode verificar as notícias em um gráfico recente. Obviamente, algumas diferenças de preços são reais, mas alguns são erros, geralmente um dividendo ou dividendo especial não ajustado corretamente. Um paciente alerta e paciente pode classificar isso caso a caso. Com backtesting computadorizado cobrindo mais de uma década, dados sujos é muito mais prevalente, mais difícil de detectar e mais difícil de corrigir.


Passo 1: Escolha fornecedores de dados candidatos. Os dados que vem com os motores backtesting é uma primeira escolha natural e sim ele precisa ser limpo! Eu tenho acesso a TradeStation e Worden Telechart (a. k.a. Blocks, Backscanner, StockFinder). Isso é dois conjuntos de dados, mas eu queria uma fonte independente, então eu fiz um estudo dos dados de preços históricos 8220, cadeia alimentar 8221 ;. Em resumo, todos os dados são originários das empresas de intercâmbio e de dados que capturam os dados conforme relatado pelas trocas. Os dados capturados são oferecidos para revenda (por acordo com as bolsas). CSI dados me impressionou porque eles fornecem dados para os grandes sites como o Yahoo, MSN, Google e acredito que milhões de olhos nos dados vai ajudar a erradicar os erros. Além disso, CSI dados oferecidos dados delisted, que dá uma visão mais precisa para backtesting. (Os dados da CSI desde então cotizaram os dados excluídos fora do alcance da maioria dos particulares, uma vez que eles perceberam o quanto as instituições iriam pagar por ele. Eu me sinto muito sortudo por ter obtido 14 anos de dados excluídos por apenas quatro números.)


Passo 2: Descarregue os dados. Para obter os dados de preços históricos prontos para comparação, você precisa descartá-lo das ferramentas de software. Telechart torna mais fácil com o recurso Exportar para texto no item de menu Banco de dados. CSI Os dados são extremamente flexíveis sobre como escrever dados também. A TradeStation não tem facilidade para escrever dados. Eu tive que criar um script Easy Language simples que escreve o Close, High, Low, Open e Volume para cada dia em um arquivo de texto para cada símbolo. O símbolo ticker é o nome do arquivo de texto e não está listado dentro dos arquivos. Tome cuidado para corresponder ao formato em todos os três conjuntos de dados. Eu escrevi o meu nesta ordem: Data, C, H, L, O, V. É muito importante usar sempre dados divididos-ajustados. Outra palavra para o sábio: cada fornecedor usa diferentes unidades de medida para o volume que você precisa para ajustar em conformidade.


Passo 3: Escreva um programa para comparar os dados. Com programas como tkdiff disponíveis gratuitamente na web, eu pensei que este passo seria fácil, mas eu pensei errado! Primeiro de tudo, com quase 7500 tickers, demora muito tempo para carregar manualmente os arquivos em tkdiff. Eu precisava automatizar a comparação. Uma vez que eu automatizado, descobri que pequenas diferenças de um centavo ou dois acontecem quase semanalmente. (Isso pode acontecer, por exemplo, se um fornecedor toma o Close como o último preço executado e outro fornecedor usa o meio do último spread entre o lance eo preço de venda como Close). Eu rapidamente decidi que não queria saber sobre Pequenas diferenças nos dados entre os três fornecedores. Isso não vai ter um efeito material sobre os resultados de backtesting. O que importa, no entanto, são as grandes lacunas que surgiram de vez em quando. Para identificar aqueles, eu escrevi um dif difuso programa. Ele compara os dados de dois fornecedores e sinalizadores mis-compara, classificação em erros principais (valores que são mais de US $ 0,04), erros menores (menos de US $ 0,04) e sem erros. Eu corri o diff fuzzy duas vezes: uma vez comparando CSI e TradeStation, e novamente comparando CSI e Worden conjuntos de dados.


Passo 4: Analise os mis-compara. A etapa anterior produziu uma lista de pontos de dados de preços que não comparam entre fornecedores. Eu meticulosamente pesquisados ​​cada um dos principais erros, olhando para as duas tabelas de preços e pesquisando as notícias sobre o ticker em torno do tempo do erro. Na maioria dos casos, ficou claro qual foi o conjunto de dados com defeito.


Passo 5: Feedback para os fornecedores de dados. Eu decidi ser um bom cidadão e relatar a maioria dos erros de dados que eu tinha encontrado. Os dados da CSI tiveram menos erros, responderam prontamente aos meus comentários e geralmente defenderam a correção de seus dados. A TradeStation tem uma equipe dedicada que rapidamente verificou e corrigiu todos os erros que relatei. Worden tinha a maioria dos erros e didnt responder a todos quando eu os apontei. Escusado será dizer, eu sou muito cuidadoso de usar os dados Worden agora.


Etapa 6: Selecione os dados de preço históricos finais. No final, eu vim com uma lista final de tickers de ações. A poucos tickers tinha deslumbrante mis-compara e nenhum culpado óbvio, então eu excluí-los da minha lista. Eu designei o conjunto limpo de dados de CSI (mais os dados não-verificados retirados da lista) como o meu conjunto de dados de preços históricos dourados. Eu mantenho isso trancado em um diretório separado para evitar mudanças inadvertidas. (Os vendedores atualizam os dados pelo menos diariamente e podem corrigir erros. Mesmo uma correção é indesejável, uma vez que backtesting começa cada estratégia precisa executar exatamente os mesmos dados para fazer comparações entre as estratégias.)


Etapa 7: Alimente os dados de preço de ouro para o mecanismo de backtesting. TradeStation, o meu motor de backtesting de escolha, é executado em seus próprios dados por padrão. Para usar um conjunto de dados externo, é necessário usar a guia Procurar por Símbolos - 3ª Parte para apontar para os dados e também configurar arquivos de parâmetros de atributo e ordem de dados para informar ao TradeStation como lê-lo. Consulte os arquivos de ajuda do TradeStation em Dados de terceiros para obter instruções completas.


Este processo árduo ajuda você a obter resultados precisos e de alta qualidade de backtesting.


2 respostas a 8220, como limpar dados de preço para Backtesting8221;


Pat Thorn | 4/02/10


Eu sou um programador novo para o Forex e estava mais interessado em sua avaliação do MACD como um indicador, eu li muito sobre esse indicador na web. Eu encontrei se eu combinar MACD com Fast Stochastic é incrível meus resultados até agora, ainda analisando, havent mordido a bala ainda. Vou começar esta segunda-feira que vem.


Os seus dados de backtesting são o tick ou preço real no momento em que ocorre em oposição ao Open, Close, High e Low por período de tempo? De wat eu li eu acredito que é.


Sendo um programador que sabe um pouco sobre mineração de dados eu posso apreciar a quantidade de tempo e esforço que você gastou. Parabenizo sua tenacidade.


Se o meu startegy como descrito acima funciona, eu tenho que agradecer por isso.


backtester | 4/02/10


Obrigado por seus comentários graciosos. Desejo-lhe bem com a sua negociação, qualquer estratégia que você escolher.


Meus dados de backtesting estão todos no fim do dia, apenas Aberto, Alto, Baixo, Fechar. Principalmente meus backtests estão entrando no mercado aberto, exceto parar as perdas, então é admitidamente grosseiro.


Eu tenho mais informações sobre MACD (como se aplica às ações) em truthaboutmacd Ainda não aplicou MACD para Forex.


Fico feliz em ouvir que você está backtesting e avaliar a situação completamente antes de arriscar dinheiro.

No comments:

Post a Comment