Vamos dizer que eu tenho uma amostra de dados (aqui é apenas 10 números, em real eu tenho cerca de 10000 resultados de medição). Então, quero verificar se os dados estão parados ou não usando o método de média simples. Por exemplo, meu conjunto de dados de tamanho N 10: calculei médias (janela 3): com esta fórmula: e coloquei-as na tabela SAM acima. Então, calculei as diferenças entre as minhas médias, SAMi1 SAMi. e eu tenho uma tabela de diferenças: 1 1 1 1 1 1 1 da qual vejo que a diferença entre médias (médias) é constante (é sempre 1). Posso supor que com este teste simples meus dados X são estacionários perguntou 16 dez 13 às 18:01 Se suas primeiras diferenças são constantes, então seus dados não são estacionários, como a média está aumentando ao longo do tempo. Suas primeiras diferenças são de fato estacionárias, com média de 1 variância 0. Com dados de séries temporais, uma das questões mais críticas é como tornar os dados estacionários (pode-se argumentar que esse é o ponto principal da análise de séries temporais). Na prática, isso inclui identificar tendência, sazonalidade / ciclicidade, desvio estocástico e autocorrelação. Isso exigirá mais do que a média móvel pode fornecer por conta própria. No entanto, você provavelmente pode usar a média móvel de forma lucrativa se quiser obter uma confirmação aproximada de que não há tendência ou periodicidade. Nesse caso, você está usando a média móvel como um dispositivo de suavização. Você pode simplesmente regredir seus dados em relação ao tempo e ver se a linha de melhor ajuste tem um grande declive, se não, então você não tem uma forte tendência linear. Além disso, se você não notar qualquer aumento na spead sobre a linha ou qualquer periodcity (oscilando valores ou aglomerados de dados seguidos por nuvens dispersas de dados), então você confirmou que a tendência de primeira / segunda ordem e periodicidade não estão presentes para um grande grau. Você precisará de ferramentas mais sofisticadas para obter mais informações quantitativas. Esta é essencialmente uma análise de séries temporais, que é um campo inteiro de estatísticas. Uma grande parte desse campo é dedicada a estabelecer e testar a estacionariedade, portanto, eu não posso fazer justiça neste curto espaço de tempo suficiente para dizer que a questão yoru tem sido fortemente estudada por pesquisadores em análise de séries temporais. Veja isto para algum fundo básico. Respondeu 16 dez 13 at 18:41 Obrigado pela resposta. Eu acho que eu entendi errado Eu não vou dar uma olhada nas diferenças, mas apenas nos meios calculados eles não são constantes, como você notou, eles estão aumentando assim meus dados não são estacionários, certo Não tem nada a ver com as diferenças ndash nullpointer Dezembro 16 13 às 18:45 nullpointer correto ndash user31668 16 de dezembro às 18:46 Só mais uma pergunta se você não se importar. Então, para meus dados ficarem parados, minha tabela SAM deve ficar assim: SAM (ou algo parecido) - o ponto é, os valores da média móvel devem ser constantes, não suas diferenças (E eu deveria verificar o mesmo para a variância ou apenas meios são suficientes ndash nullpointer Dec 16 13 at 18: 48Abaixo você pode ver o meu método C para calcular Bollinger Bands para cada ponto (média móvel, banda alta, banda descendente). Como você pode ver, este método usa 2 loops para calcular o desvio padrão móvel usando a média móvel. Ele costumava conter um loop adicional para calcular a média móvel nos últimos n períodos. Esse eu poderia remover adicionando o novo valor de ponto para totalaverage no início do loop e removendo o valor do ponto i - n no final do loop. Minha pergunta agora é basicamente: Posso remover o loop interno restante de uma maneira semelhante, eu consegui com a média móvel perguntou Jan 31 13 às 21:45 A resposta é sim, você pode. Em meados dos anos 80, desenvolvi exatamente esse algoritmo (provavelmente não original) em FORTRAN para um aplicativo de monitoramento e controle de processo. Infelizmente, isso foi há mais de 25 anos e eu não me lembro das fórmulas exatas, mas a técnica era uma extensão daquela para médias móveis, com cálculos de segunda ordem ao invés de apenas lineares. Depois de olhar para o seu código, acho que posso descobrir como fiz isso na época. Observe como o loop interno está fazendo uma Soma dos Quadrados: da mesma forma que sua média deve originalmente ter uma Soma de Valores. As únicas duas diferenças são a ordem (seu poder 2 em vez de 1) e você está subtraindo a média. cada valor antes de você quadrá-lo. Agora, isso pode parecer inseparável, mas na verdade eles podem ser separados: Agora, o primeiro termo é apenas uma Soma dos Quadrados, você lida com isso da mesma maneira que faz a soma dos Valores para a média. O último termo (k2n) é apenas a média ao quadrado vezes o período. Como você divide o resultado pelo período de qualquer maneira, você pode simplesmente adicionar a nova média ao quadrado sem o loop extra. Finalmente, no segundo termo (SUM (-2vi) k), uma vez que SUM (vi) total de kn, você pode alterá-lo para isto: ou apenas -2k2n. que é -2 vezes a média ao quadrado, uma vez que o período (n) é dividido novamente. Portanto, a fórmula combinada final é: (não se esqueça de verificar a validade disso, já que estou tirando isso da minha cabeça). E incorporar em seu código deve ser algo assim: Obrigado por isso. Eu usei como base de uma implementação em C para o CLR. Eu descobri que, na prática, você pode atualizar tal que newVar é um número negativo muito pequeno, e o sqrt falha. Eu introduzi um if para limitar o valor a zero para este caso. Não é ideia, mas estável. Isso ocorreu quando todos os valores na minha janela tinham o mesmo valor (usei um tamanho de janela de 20 e o valor em questão era 0.5, caso alguém queira tentar reproduzir isso). Ndash Drew Noakes Jul 26 13 at 15:25 Ive usado commons-math (e contribuiu para essa biblioteca) para algo muito semelhante a isto. Seu código-fonte aberto, portando para C deve ser fácil como torta comprada em loja (você tentou fazer uma torta do zero). Confira: commons. apache. org/math/api-3.1.1/index. html. Eles têm uma classe StandardDeviation. Go to town respondida Jan 31 13 at 21:48 Você é bem-vindo Desculpe eu não tive a resposta que você está procurando. Eu definitivamente não quis sugerir portar a biblioteca inteira. Apenas o código mínimo necessário, que deve ter algumas centenas de linhas ou mais. Note que não tenho idéia de quais restrições legais / de direitos autorais o apache tem sobre esse código, para que você tenha que verificar isso. Caso você busque, aqui está o link. De modo que Variance FastMath ndash Jason 31 de janeiro de 2013 às 22:36 A informação mais importante já foi dada acima --- mas talvez isso ainda seja de interesse geral. Uma minúscula biblioteca Java para calcular a média móvel e o desvio padrão está disponível aqui: github / tools4j / meanvar A implementação é baseada em uma variante do método de Welfords mencionado acima. Foram removidos métodos para remover e substituir valores que podem ser usados para movimentar janelas de valor. Explorando a média móvel ponderada exponencialmente A volatilidade é a medida mais comum de risco, mas ela vem em vários tipos. Em um artigo anterior, mostramos como calcular a volatilidade histórica simples. (Para ler este artigo, consulte Uso da volatilidade para avaliar o risco futuro.) Usamos os dados reais do preço das ações do Google para calcular a volatilidade diária com base em 30 dias de dados de estoque. Neste artigo, vamos melhorar a volatilidade simples e discutir a média móvel exponencialmente ponderada (EWMA). Vs Histórico. Volatilidade Implícita Primeiro, vamos colocar essa métrica em um pouco de perspectiva. Existem duas abordagens amplas: volatilidade histórica e implícita (ou implícita). A abordagem histórica pressupõe que o passado é um prólogo que medimos a história na esperança de que seja preditiva. A volatilidade implícita, por outro lado, ignora a história e resolve a volatilidade implícita nos preços de mercado. Espera que o mercado saiba melhor e que o preço de mercado contenha, mesmo que implicitamente, uma estimativa consensual de volatilidade. (Para leitura relacionada, veja Os usos e limites da volatilidade.) Se nos concentrarmos apenas nas três abordagens históricas (à esquerda acima), elas têm duas etapas em comum: calcular a série de retornos periódicos Aplicar um esquema de ponderação Primeiro, nós calcular o retorno periódico. Isso é tipicamente uma série de retornos diários em que cada retorno é expresso em termos continuamente compostos. Para cada dia, pegamos o logaritmo natural da razão entre os preços das ações (ou seja, o preço hoje dividido pelo preço de ontem e assim por diante). Isso produz uma série de retornos diários, de u i a u i-m. dependendo de quantos dias (m dias) estamos medindo. Isso nos leva ao segundo passo: é aqui que as três abordagens diferem. No artigo anterior (Usando Volatilidade Para Medir o Risco Futuro), mostramos que, sob algumas simplificações aceitáveis, a variância simples é a média dos retornos ao quadrado: Observe que isso soma cada um dos retornos periódicos, então divide o total pelo retorno. número de dias ou observações (m). Então, é realmente apenas uma média dos retornos periódicos ao quadrado. Em outras palavras, cada retorno ao quadrado recebe um peso igual. Então, se alpha (a) é um fator de ponderação (especificamente, 1 / m), então uma variação simples se parece com algo assim: O EWMA Melhora na Variação Simples A fraqueza dessa abordagem é que todos os retornos ganham o mesmo peso. O retorno de ontem (muito recente) não tem mais influência na variância do que no retorno do último mês. Esse problema é corrigido usando a média móvel ponderada exponencialmente (EWMA), na qual retornos mais recentes têm maior peso na variância. A média móvel exponencialmente ponderada (EWMA) introduz lambda. que é chamado de parâmetro de suavização. Lambda deve ser menor que um. Sob essa condição, em vez de pesos iguais, o retorno de cada quadrado é ponderado por um multiplicador da seguinte forma: Por exemplo, RiskMetrics TM, uma empresa de gerenciamento de risco financeiro, tende a usar um lambda de 0,94 ou 94. Nesse caso, o primeiro ( mais recente) o retorno periódico ao quadrado é ponderado por (1-0.94) (. 94) 0 6. O próximo retorno ao quadrado é simplesmente um múltiplo lambda do peso anterior neste caso 6 multiplicado por 94 5.64. E o terceiro dia anterior é igual a (1-0,94) (0,94) 2 5,30. Esse é o significado de exponencial em EWMA: cada peso é um multiplicador constante (ou seja, lambda, que deve ser menor que um) do peso do dia anterior. Isso garante uma variação ponderada ou tendenciosa em relação aos dados mais recentes. (Para saber mais, confira a Planilha do Excel para a Volatilidade do Google.) A diferença entre apenas a volatilidade e o EWMA para o Google é mostrada abaixo. A volatilidade simples pesa efetivamente cada retorno periódico em 0,196, como mostrado na coluna O (tivemos dois anos de dados diários de preços de ações. Isso é 509 retornos diários e 1/509 0,196). Mas observe que a coluna P atribui um peso de 6, depois de 5,64, depois de 5,3 e assim por diante. Essa é a única diferença entre a variância simples e o EWMA. Lembre-se: depois que somarmos a série inteira (na Coluna Q), temos a variância, que é o quadrado do desvio padrão. Se quisermos a volatilidade, precisamos lembrar de tomar a raiz quadrada dessa variação. Qual é a diferença na volatilidade diária entre a variância e EWMA no caso Googles Sua significância: A variância simples nos deu uma volatilidade diária de 2,4, mas o EWMA deu uma volatilidade diária de apenas 1,4 (veja a planilha para mais detalhes). Aparentemente, a volatilidade do Google se estabilizou mais recentemente, portanto, uma variação simples poderia ser artificialmente alta. A variância de hoje é uma função da variação dos dias Pior Você perceberá que precisávamos calcular uma série longa de pesos decrescentes exponencialmente. Não faremos as contas aqui, mas uma das melhores características do EWMA é que a série inteira reduz convenientemente a uma fórmula recursiva: Recursiva significa que as referências de variação de hoje (ou seja, é uma função da variância dos dias anteriores). Você pode encontrar essa fórmula na planilha também, e ela produz o mesmo resultado exato do cálculo de longo prazo. Diz: Variância de hoje (abaixo de EWMA) igual à variação de ontem (ponderada por lambda) mais retorno ao ontem ao quadrado (ponderada por um menos lambda). Observe como estamos apenas adicionando dois termos juntos: variância ponderada de ontem e retorno ponderada, quadrada de ontem. Mesmo assim, lambda é o nosso parâmetro de suavização. Um lambda maior (por exemplo, como RiskMetrics 94) indica decaimento mais lento na série - em termos relativos, teremos mais pontos de dados na série e eles cairão mais lentamente. Por outro lado, se reduzirmos o lambda, indicamos maior decaimento: os pesos caem mais rapidamente e, como resultado direto do rápido decaimento, são utilizados menos pontos de dados. (Na planilha, lambda é uma entrada, então você pode experimentar sua sensibilidade). Resumo A volatilidade é o desvio padrão instantâneo de uma ação e a métrica de risco mais comum. É também a raiz quadrada da variância. Podemos medir a variação historicamente ou implicitamente (volatilidade implícita). Ao medir historicamente, o método mais fácil é a variação simples. Mas a fraqueza com a variação simples é que todos os retornos recebem o mesmo peso. Então, enfrentamos um trade-off clássico: sempre queremos mais dados, mas quanto mais dados temos, mais nosso cálculo é diluído por dados distantes (menos relevantes). A média móvel exponencialmente ponderada (EWMA) melhora a variação simples, atribuindo pesos aos retornos periódicos. Ao fazer isso, podemos usar um tamanho de amostra grande, mas também dar maior peso aos retornos mais recentes. (Para ver um tutorial sobre este tópico, visite a Tartaruga Biônica.)
No comments:
Post a Comment