Thursday 3 August 2017

Algoritmo De Média Ponderada Em Movimento


Médias móveis ponderadas: o básico Ao longo dos anos, os técnicos encontraram dois problemas com a média móvel simples. O primeiro problema reside no prazo da média móvel (MA). A maioria dos analistas técnicos acredita que a ação de preço. O preço das ações de abertura ou fechamento, não é suficiente para depender para prever corretamente comprar ou vender sinais da ação de cruzamento de MAs. Para resolver este problema, os analistas agora atribuem mais peso aos dados de preços mais recentes usando a média móvel suavemente exponencial (EMA). (Saiba mais em Explorando a Média de Movimento Exponencialmente Pesada). Exemplo Por exemplo, usando um MA de 10 dias, um analista tomaria o preço de fechamento do 10º dia e multiplicaria esse número por 10, o nono dia por nove, o oitavo Dia por oito e assim por diante para o primeiro do MA. Uma vez que o total foi determinado, o analista dividiria o número pela adição dos multiplicadores. Se você adicionar os multiplicadores do exemplo MA de 10 dias, o número é 55. Esse indicador é conhecido como a média móvel ponderada linearmente. (Para leitura relacionada, verifique as Médias móveis simples, faça as tendências se destacarem.) Muitos técnicos são crentes firmes na média móvel suavemente exponencial (EMA). Este indicador foi explicado de muitas maneiras diferentes que confunde estudantes e investidores. Talvez a melhor explicação venha de John J. Murphys Análise Técnica dos Mercados Financeiros (publicado pelo New York Institute of Finance, 1999): a média móvel suavemente exponencial aborda os dois problemas associados à média móvel simples. Primeiro, a média exponencialmente suavizada atribui um peso maior aos dados mais recentes. Portanto, é uma média móvel ponderada. Mas, enquanto atribui menor importância aos dados do preço passado, ele inclui no cálculo de todos os dados da vida útil do instrumento. Além disso, o usuário pode ajustar a ponderação para dar maior ou menor peso ao preço dos dias mais recentes, que é adicionado a uma porcentagem do valor dos dias anteriores. A soma de ambos os valores percentuais é de até 100. Por exemplo, o preço dos últimos dias pode ser atribuído a um peso de 10 (.10), que é adicionado aos dias anteriores com peso de 90 (.90). Isso dá o último dia 10 da ponderação total. Este seria o equivalente a uma média de 20 dias, ao dar ao preço dos últimos dias um valor menor de 5 (0,05). Figura 1: Média de Movimento Suavemente Exagerada O gráfico acima mostra o Índice Composto Nasdaq desde a primeira semana em agosto de 2000 até 1º de junho de 2001. Como você pode ver claramente, o EMA, que neste caso está usando os dados de preço de fechamento ao longo de um Período de nove dias, tem sinais de venda definitivos no 8 de setembro (marcado por uma seta para baixo preta). Este foi o dia em que o índice caiu abaixo do nível de 4.000. A segunda seta preta mostra outra perna para baixo que os técnicos estavam realmente esperando. A Nasdaq não conseguiu gerar volume e interesse suficientes dos investidores de varejo para quebrar a marca de 3.000. Ele então mergulhou de novo para baixo em 1619.58 em 4 de abril. A tendência de alta de 12 de abril é marcada por uma seta. Aqui, o índice fechou em 1.961,46, e os técnicos começaram a ver os gerentes de fundos institucionais começar a retirar algumas pechinchas como a Cisco, a Microsoft e algumas das questões relacionadas à energia. (Leia nossos artigos relacionados: Envelopes médios móveis: Refinando uma ferramenta de comércio popular e um salto médio médio). Um psicólogo de riqueza é um profissional de saúde mental especializado em questões relacionadas especificamente com indivíduos ricos. O branqueamento de capitais é o processo de criar a aparência de grandes quantias de dinheiro obtidas de crimes graves, tais como. Métodos de contabilidade que se concentram em impostos, em vez de aparência de demonstrações financeiras públicas. A contabilidade tributária é regida. O efeito boomer refere-se à influência que o cluster geracional nascido entre 1946 e 1964 tem na maioria dos mercados. Um aumento no preço das ações que muitas vezes ocorre na semana entre o Natal e o Ano Novo039s Day. Existem inúmeras explicações. Um termo usado por John Maynard Keynes usado em um de seus livros econômicos. Em sua publicação de 1936, a Teoria Geral do Emprego. Quero implementar um algoritmo iterativo, que calcula a média ponderada. A lei do peso específico não importa, mas deve ser perto de 1 para os valores mais recentes e perto de 0 para os mais antigos. O algoritmo deve ser iterativo. Isto é, não deve lembrar todos os valores anteriores. Deve saber apenas um valor mais recente e qualquer informação agregada sobre o passado, como valores anteriores da média, somas, contagens, etc. Por exemplo, o seguinte algoritmo pode ser: Ele dará um peso exponencial decrescente, o que pode não ser bom. É possível ter um peso decrescente ou algo diferente. Os requisitos para a legislação de pesagem são os seguintes: 1) O peso diminui para o passado 2) Eu tenho alguma duração média ou característica, de modo que os valores mais antigos, essa duração são muito menores do que os mais recentes. 3) Eu Deve ser capaz de definir esta duração, eu preciso do seguinte. Suponha que vi são valores, onde v1 é o primeiro. Suponha também que sejam pesos. Mas w0 é o último. Então, depois que o primeiro valor veio, eu tenho a primeira média. Depois do segundo valor v2, eu deveria ter média. Com o próximo valor, eu deveria ter Nota, esse perfil de peso está se movendo comigo, enquanto eu estou me movendo ao longo da seqüência de valores. Isto é, Cada valor não tem seu próprio peso o tempo todo. Meu objetivo é ter esse peso mais baixo enquanto vai para o passado. Gt Mas minha tarefa é ter uma média recalculada cada vez que chega um novo valor com valores antigos refletidos. OP Sua tarefa é quase sempre impossível, mesmo com esquemas de ponderação excepcionalmente simples. Você está pedindo, com memória O (1), médias de rendimento com um esquema de ponderação em mudança. Por exemplo, à medida que novos valores estão sendo transmitidos, para algumas seqüências de pesos que mudam arbitrariamente. Isso é impossível devido à injetividade. Uma vez que você combina os números juntos, você perde uma enorme quantidade de informações. Por exemplo, mesmo se você tivesse o vetor de peso. Você não conseguiu recuperar o vetor do valor original, ou vice-versa. Existem apenas dois casos em que posso pensar onde você poderia fugir com isso: pesos constantes como 2,2,2. 2: isso é equivalente a um algoritmo de média on-line, que você não quer porque os valores antigos não estão sendo considerados novamente. Os pesos relativos das respostas anteriores não mudam. Por exemplo, você poderia fazer pesos de 8,4,2,1. E adicione um novo elemento com peso arbitrário, como. 1. mas você deve aumentar todo o anterior pelo mesmo fator multiplicativo, como 16,8,4,21. Assim, em cada etapa, você está adicionando um novo peso arbitrário e um novo redimensionamento arbitrário do passado, de modo que você tenha 2 graus de liberdade (apenas 1 se precisar manter seu produto ponto normalizado). Os vetores de peso que você obtém pareciam: Assim, qualquer esquema de ponderação que você possa fazer parecer assim funcionará (a menos que você precise manter a coisa normalizada pela soma dos pesos, caso em que você deve dividir a nova média pelo novo Soma, que você pode calcular, mantendo apenas a memória O (1)). Simplesmente multiplique a média anterior pelo novo s (que irá distribuir de forma implícita sobre o ponto-produto nos pesos), e abordar o novo wnewValue. Respondeu 29 de março às 21:27 Aqui estou supondo que você deseja que os pesos somem para 1. Enquanto você pode gerar um peso relativo sem que ele mude no futuro, você pode acabar com uma solução que imita esse comportamento. Ou seja, suponha que você definiu seus pesos como uma seqüência e definiu a entrada como seqüência. Considere a forma: soma (s0i0 s1i1 s2i2. Snin) soma (s0 s1 s2. Sn). Observe que é trivialmente possível calcular isso de forma incremental com alguns contadores de agregação: Claro, calculeWeightFromCounter () neste caso não deve gerar pesos que somam a um - o truque aqui é que nós média dividindo pela soma dos pesos De modo que no final, os pesos praticamente parecem somar a um. O verdadeiro truque é como você calculaWeightFromCounter (). Você poderia simplesmente devolver o contador em si, por exemplo, no entanto, note que o último número ponderado não estaria perto da soma dos contadores necessariamente, então você não pode acabar com as propriedades exatas que deseja. (É difícil dizer que, como mencionado, você deixou um problema bastante aberto.) Respondeu 28 de março às 21:45 O problema é que os pesos estão mudando com cada novo valor. No seu caso, eles não são. Ndash Suzan Cioc 29 de março 12 às 14:43 Os pesos reais utilizados estão mudando com cada novo valor - as quotweightsquot estão sendo divididas por um número sucessivamente maior, reforçando assim que os pesos reais utilizados sempre somem para 1. ndash Kaganar 29 de março 12 Às 14:45 Isso é muito longo para postar em um comentário, mas pode ser útil saber. Suponha que você tenha: w0vn. Wnv0 (bem, chame isso w0..nvn..0 para breve) Então o próximo passo é: w0vn1. Wn1v0 (e isso é w0..n1vn1..0 para curto) Isso significa que precisamos de uma maneira de calcular w1..n1vn..0 de w0..nvn..0. É certamente possível que vn..0 seja 0. 0, z, 0. 0 onde z esteja em algum local x. Se não tivermos nenhum armazenamento extra, então f (zw (x)) zw (x 1) onde w (x) é o peso para a localização x. Reorganizando a equação, w (x 1) f (zw (x)) z. Bem, w (x 1) melhor ser constante para uma constante x, então f (zw (x)) z melhor ser constante. Portanto, f deve permitir que z se propague - isto é, f (zw (x)) zf (w (x)). Mas aqui novamente temos um problema. Note que se z (que poderia ser qualquer número) pode propagar através de f. Então w (x) certamente pode. Então f (zw (x)) w (x) f (z). Assim f (w (x)) w (x) f (z). Mas para uma constante x. W (x) é constante e, portanto, f (w (x)) melhor ser constante, também. W (x) é constante, então f (z) melhor ser constante de modo que w (x) f (z) seja constante. Assim, f (w (x)) w (x) c onde c é uma constante. Então, f (x) cx onde c é uma constante quando x é um valor de peso. Ou seja, cada peso é um múltiplo do anterior. Assim, os pesos assumem a forma w (x) mbx. Observe que isso pressupõe que a única informação que f tem é o último valor agregado. Observe que, em algum momento, você será reduzido a este caso, a menos que você esteja disposto a armazenar uma quantidade de dados não constantes que represente sua entrada. Você não pode representar um vetor de comprimento infinito de números reais com um número real, mas você pode aproximá-los de alguma forma em uma quantidade constante e finita de armazenamento. Mas isso seria apenas uma aproximação. Embora eu não tenha provado com rigor, é minha conclusão que o que você quer é impossível fazer com um alto grau de precisão, mas você pode usar o espaço de log (n) (o que também pode ser O (1) para muitos Aplicações práticas) para gerar uma aproximação de qualidade. Você pode usar ainda menos. Respondeu 29 de março às 23:01 Eu tentei praticamente codificar algo (em Java). Como já foi dito, seu objetivo não é possível. Você só pode contar a média de alguns dos últimos valores lembrados. Se você não precisa ser exato, você pode aproximar os valores mais antigos. Eu tentei fazê-lo lembrando os últimos 5 valores exatamente e os valores mais antigos somente SUMmed por 5 valores, lembrando as últimas 5 SUMs. Então, a complexidade é O (2n) para lembrar os últimos valores nnn. Esta é uma aproximação muito áspera. Você pode modificar os tamanhos de matriz lastValues ​​e lasAggregatedSums conforme desejado. Veja esta imagem de ascii-art tentando exibir um gráfico de últimos valores, mostrando que as primeiras colunas (dados mais antigos) são lembradas como valor agregado (não individualmente), e apenas os primeiros 5 valores são lembrados individualmente. Desafio 1. O meu exemplo não conta com pesos, mas acho que não deveria ser um problema para você adicionar pesos para o últimoAggregatedSums de forma apropriada - o único problema é que, se você quiser pesos mais baixos para valores mais antigos, seria mais difícil porque a matriz gira, então Não é direto saber qual peso para qual membro da matriz. Talvez você possa modificar o algoritmo para mudar sempre os valores na matriz em vez de girar. Em seguida, adicionar pesos não deve ser um problema. Desafio 2. As matrizes são inicializadas com 0 valores, e esses valores estão contando a média desde o início, mesmo quando não recebemos valores suficientes. Se você estiver executando o algoritmo por um longo período de tempo, você provavelmente não incomodará que esteja aprendendo por algum tempo no início. Se você fizer isso, você pode postar uma modificação -) respondeu 21 de janeiro às 15:59 Sua resposta 2016 Stack Exchange, Inc

No comments:

Post a Comment