Estou procurando algumas técnicas robustas para remover discrepâncias e erros (seja qual for a causa) dos dados financeiros das séries temporais (por exemplo, tickdata).
Os dados das séries temporais financeiras de tick-by-tick são muito confusos. Ele contém grandes lacunas (de tempo) quando a bolsa é fechada e faz grandes saltos quando a bolsa é aberta novamente. Quando a troca é aberta, todos os tipos de fatores introduzem negociações nos níveis de preços incorretos (eles não ocorreram) e / ou não são representativos do mercado (um aumento por causa de uma oferta incorreta ou preço de venda incorreto, por exemplo). Este artigo de tickdata.com (PDF) faz um bom trabalho ao descrever o problema, mas oferece poucas soluções concretas.
A maioria dos artigos que posso encontrar on-line que mencionam esse problema o ignoram (os dados dos ticks são assumidos como filtrados) ou incluem a filtragem como parte de um grande modelo comercial que oculta qualquer etapa útil da filtragem.
Alguém está ciente de um trabalho mais aprofundado nesta área?
Atualização: essas perguntas parecem semelhantes na superfície, mas:
- As séries temporais financeiras são (pelo menos no nível do tick) não periódicas.
- O efeito de abertura é um grande problema, porque você não pode simplesmente usar os dados do último dia como inicialização, mesmo que realmente queira (porque, caso contrário, não terá nada). Eventos externos podem fazer com que a abertura do novo dia seja drasticamente diferente no nível absoluto e na volatilidade do dia anterior.
- Frequência extremamente irregular de dados recebidos. Perto da abertura e do fechamento do dia, a quantidade de pontos de dados / segundo pode ser 10 vezes maior que a média durante o dia. A outra pergunta lida com dados amostrados regularmente.
- Os "discrepantes" nos dados financeiros exibem alguns padrões específicos que podem ser detectados com técnicas específicas não aplicáveis em outros domínios e estou procurando, em parte, essas técnicas específicas.
- Em casos mais extremos (por exemplo, falha do flash), os valores discrepantes podem atingir mais de 75% dos dados em intervalos mais longos (> 10 minutos). Além disso, a (alta) frequência de dados recebidos contém algumas informações sobre o aspecto externo da situação.
fonte
Respostas:
O problema é definitivamente difícil .
Regras mecânicos como os +/- N1 vezes desvios padrão, ou + / N2 vezes MAD, ou +/- N3 IQR ou ... vai falhar porque há sempre algumas séries que são diferentes, como por exemplo:
Estive lá, fiz isso, ... em um trabalho anterior. Você pode tentar agrupar cada série usando navios de relações de arbitragem ( por exemplo, supondo que USD / EUR e EUR / JPY sejam presumidamente bons, você pode calcular faixas em torno do que USD / JPY deve ser; da mesma forma para derivativos de um subjacente etc pp.
Os fornecedores de dados comerciais expandem algum esforço nisso, e aqueles que são clientes deles sabem ... isso ainda não exclui erros.
fonte
Vou adicionar algumas referências em papel quando voltar ao computador, mas aqui estão algumas sugestões simples:
Definitivamente comece trabalhando com retornos. Isso é fundamental para lidar com o espaçamento irregular, onde você pode obter grandes diferenças de preço (principalmente nos fins de semana). Em seguida, você pode aplicar um filtro simples para remover retornos bem fora da norma (por exemplo, vs um número alto de desvios padrão). Os retornos serão ajustados para o novo nível absoluto, de modo que grandes mudanças reais resultarão na perda de apenas um tick. Sugiro o uso de um filtro de duas passagens com retornos obtidos de 1 e n etapas para lidar com grupos de outliers.
Edit 1: Quanto ao uso de preços em vez de retornos: os preços dos ativos tendem a não ser estacionários; portanto, a IMO pode apresentar alguns desafios adicionais. Para explicar os efeitos da lei da irregularidade e da energia, aconselhamos algum tipo de ajuste se você quiser incluí-los em seu filtro. Você pode dimensionar as alterações de preço pelo intervalo de tempo ou pela volatilidade. Você pode consultar a literatura de "volatilidade realizada" para alguma discussão sobre isso. Também discutido em Dacorogna et. al.
Para explicar as mudanças na volatilidade, você pode tentar basear seu cálculo de volatilidade na mesma hora do dia na semana passada (usando a sazonalidade).
fonte
Alterei (com algum atraso) minha resposta para refletir sua preocupação com a falta de 'adaptabilidade' da louca / mediana incondicional.
Você pode encontrar mais informações (e um link para um pacote R) neste documento :
fonte