Baixar movAv. m (veja também movAv2 - uma versão atualizada que permite a ponderação) Descrição O Matlab inclui funções chamadas movavg e tsmovavg (time-series moving average) na Financial Toolbox, movAv foi projetado para replicar a funcionalidade básica destes. O código aqui fornece um bom exemplo de gerenciar índices dentro de loops, o que pode ser confuso para começar. Eu deliberadamente mantive o código curto e simples para manter esse processo claro. MovAv executa uma média móvel simples que pode ser usada para recuperar dados ruidosos em algumas situações. Ele funciona tomando uma média da entrada (y) em uma janela de tempo deslizante, cujo tamanho é especificado por n. Quanto maior for n, maior a quantidade de suavização do efeito de n é relativa ao comprimento do vetor de entrada y. E efetivamente (bem, tipo de) cria um filtro de freqüência de passagem baixa - veja a seção de exemplos e considerações. Como a quantidade de suavização fornecida por cada valor de n é relativa ao comprimento do vetor de entrada, vale a pena testar valores diferentes para ver o que é apropriado. Lembre-se também de que n pontos são perdidos em cada média se n for 100, os primeiros 99 pontos do vetor de entrada não contêm dados suficientes para uma média de 100pt. Isso pode ser evitado um pouco por meio de empilhamento de médias, por exemplo, o código e o gráfico abaixo comparam uma série de médias de largura de comprimento diferentes. Observe o quão suave 1010pt é comparado a uma única média de 20pt. Em ambos os casos, 20 pontos de dados são perdidos no total. Criar xaxis x1: 0.01: 5 Gerar ruído ruído Reps 4 repag ruido (randn (1, ceil (numel (x) noiseReps)), noiseReps, 1) ruim remodelar (ruído, 1, comprimento (ruído) noiseReps) Gerar ydata noise yexp ( X) 10noise (1: comprimento (x)) médias de Perfrom: y2 movAv (y, 10) 10 pt y3 movAv (y2, 10) 1010 pt y4 movAv (y, 20) 20 pt y5 movAv (y, 40) 40 pt Y6 movAv (y, 100) 100 pt Plot figura trama (x, y, y2, y3, y4, y5, y6) lenda (dados brutos, 10pt média móvel, 1010pt, 20pt, 40pt, 100pt) xlabel (x) ylabel ( Y) título (Comparação de médias móveis) movAv. m código execução função saída movAv (y, n) A primeira linha define o nome das funções, entradas e saídas. A entrada x deve ser um vetor de dados para executar a média em, n deve ser o número de pontos para executar a média sobre a saída conterá a média de dados retornada pela função. Prealocar output outputNaN (1, numel (y)) Encontrar ponto médio de n round do midPoint (n2) O trabalho principal da função é feito no loop for, mas antes de iniciar duas coisas são preparadas. Em primeiro lugar, a saída é pré-alocada como NaNs, isso serviu para duas finalidades. Em primeiro lugar, a pré-alocação é geralmente uma boa prática, pois reduz a manipulação de memória que a Matlab tem que fazer, em segundo lugar, torna muito fácil colocar os dados médios em uma saída do mesmo tamanho que o vetor de entrada. Isso significa que o mesmo xaxis pode ser usado mais tarde para ambos, o que é conveniente para plotar, alternativamente o NaNs pode ser removido mais tarde em uma linha de código (saída de saída (O midPoint variável será usado para alinhar os dados no vetor de saída. N 10, 10 pontos serão perdidos porque, para os primeiros 9 pontos do vetor de entrada, não há dados suficientes para ter uma média de 10 pontos. Como a saída será menor que a entrada, ele precisa estar alinhado corretamente. O MidPoint irá Ser usado para que uma quantidade igual de dados seja perdida no início e no final e a entrada é mantida alinhada com a saída dos buffers NaN criados ao pré-alocar a saída. Para um comprimento de 1: comprimento (y) - n Alcance do índice para levar a média Sobre (a: b) proibição Calcule o significado médio (amidPoint) mean (y (a: b)) end No loop for em si, uma média é tomada em cada segmento consecutivo da entrada. O loop será executado para a. Which is Definido como 1 até o comprimento da entrada (y), menos os dados que serão perdidos (n). Se a entrada for 100 pontos, Ng e n é 10, o loop será executado de (a) 1 a 90. Isso significa que a fornece o primeiro índice do segmento a ser calculado como média. O segundo índice (b) é simplesmente um-1. Então, na primeira iteração, a1. N10. Então b 11-1 10. A primeira média é tomada sobre y (a: b). Ou x (1:10). A média deste segmento, que é um valor único, é armazenada na saída no índice amidPoint. Ou 156. Na segunda iteração, a2. B 210-1 11. Então a média é tomada em x (2:11) e armazenada na saída (7). Na última iteração do loop para uma entrada de comprimento 100, a91. B 9010-1 100 para que a média seja tomada sobre x (91: 100) e armazenada na saída (95). Isso deixa a saída com um total de n (10) valores de NaN no índice (1: 5) e (96: 100). Exemplos e considerações As médias móveis são úteis em algumas situações, mas elas nem sempre são a melhor escolha. Aqui estão dois exemplos em que eles não são necessariamente ótimos. Calibração do microfone Este conjunto de dados representa os níveis de cada freqüência produzida por um alto-falante e registrado por um microfone com uma resposta linear conhecida. A saída do alto-falante varia com a freqüência, mas podemos corrigir esta variação com os dados de calibração - a saída pode ser ajustada em nível para explicar as flutuações na calibração. Observe que os dados brutos são ruidosos - isso significa que uma pequena alteração na freqüência parece exigir uma grande, errática, mudança no nível a ser considerada. Isso é realista Ou isso é um produto do ambiente de gravação. É razoável, neste caso, aplicar uma média móvel que suaviza a curva de freqüência de nível para fornecer uma curva de calibração ligeiramente menos errática. Mas por que isso não é ótimo neste exemplo Mais dados seriam melhores - as calibrações múltiplas correm em média, destruirão o ruído no sistema (desde que sejam aleatórias) e proporcionem uma curva com menos detalhes sutis perdidos. A média móvel só pode se aproximar disso e pode remover alguns mergulhos e picos de freqüência mais altos da curva que realmente existem. Ondas sinusoidais A utilização de uma média móvel em ondas senoticas destaca dois pontos: a questão geral de escolher um número razoável de pontos para realizar a média em excesso. É simples, mas existem métodos de análise de sinal mais eficazes do que os sinais oscilantes em média no domínio do tempo. Neste gráfico, a onda senoidal original é plotada em azul. O ruído é adicionado e plotado como a curva laranja. Uma média móvel é realizada em diferentes números de pontos para ver se a onda original pode ser recuperada. 5 e 10 pontos fornecem resultados razoáveis, mas não eliminem completamente o ruído, onde, à medida que um número maior de pontos começa a perder detalhes de amplitude, à medida que a média se estende por diferentes fases (lembre-se de que a onda oscila em torno de zero e significa (-1 1) 0) . Um enfoque alternativo seria construir um filtro de passagem baixa que possa ser aplicado ao sinal no domínio da frequência. Não vou entrar em detalhes, pois vai além do escopo deste artigo, mas como o ruído é uma freqüência consideravelmente maior do que a freqüência fundamental das ondas, seria bastante fácil, neste caso, construir um filtro de passagem baixa do que remover a alta freqüência Noise. Moving Average Filter (MA filter) Loading. O filtro de média móvel é um filtro Low Pass FIR (Finite Impulse Response) simples comumente usado para suavizar uma série de datasigns amostrados. Demora M amostras de entrada por vez e leva a média dessas M-samples e produz um único ponto de saída. É uma estrutura de LPF (Low Pass Filter) muito simples que é útil para cientistas e engenheiros para filtrar o componente ruidoso indesejado dos dados pretendidos. À medida que o comprimento do filtro aumenta (o parâmetro M), a suavidade da saída aumenta, enquanto que as transições afiadas nos dados são tornadas cada vez mais contundentes. Isso implica que este filtro possui uma excelente resposta ao domínio do tempo, mas uma resposta de freqüência fraca. O filtro MA executa três funções importantes: 1) Demora os pontos de entrada M, calcula a média desses pontos M e produz um único ponto de saída 2) Devido aos cálculos de computação envolvidos. O filtro introduz uma quantidade definida de atraso 3) O filtro atua como um filtro de passagem baixa (com resposta de domínio de freqüência fraca e uma resposta de domínio de tempo bom). Código Matlab: O código matlab seguinte simula a resposta do domínio do tempo de um filtro M-point Moving Average e também faz a resposta de freqüência para vários comprimentos de filtro. Resposta de Domínio de Tempo: no primeiro gráfico, temos a entrada que está entrando no filtro de média móvel. A entrada é barulhenta e nosso objetivo é reduzir o ruído. A próxima figura é a resposta de saída de um filtro de média móvel de 3 pontos. Pode deduzir-se da figura que o filtro de 3 pontos de média móvel não fez muito na filtragem do ruído. Aumentamos os toques de filtro para 51 pontos e podemos ver que o ruído na saída reduziu muito, o que é retratado na próxima figura. Aumentamos as torneiras até 101 e 501 e podemos observar que mesmo - embora o ruído seja quase zero, as transições são apagadas drasticamente (observe a inclinação de cada lado do sinal e compare-os com a transição ideal da parede de tijolos em Nossa contribuição). Resposta de frequência: a partir da resposta de freqüência, pode-se afirmar que o roll-off é muito lento ea atenuação da faixa de parada não é boa. Dada esta atenuação da faixa de parada, claramente, o filtro de média móvel não pode separar uma faixa de freqüências de outra. Como sabemos que um bom desempenho no domínio do tempo resulta em desempenho fraco no domínio da freqüência e vice-versa. Em suma, a média móvel é um filtro de suavização excepcionalmente bom (a ação no domínio do tempo), mas um filtro de passagem baixa excepcionalmente ruim (a ação no domínio da freqüência) Links externos: Livros recomendados: Barra lateral primária. (Entrada 038 Sair) I. Estratégia de Negociação Fonte: Kaufman, PJ (2017). Sistemas e Métodos de Negociação. Nova Jersey: John Wiley amp Sons, Inc. Conceito: Tendência na sequência da estratégia de negociação com base nos filtros SMA (Simple Moving Average). Meta de pesquisa: para comparar a média móvel simples (SMA) contra a média móvel de casco (HMA). Especificação: Tabela 1. Resultados: Figura 1-2. Filtro de comércio: Long Trades: FastSMAi 1 gt SlowSMAi 1. Negócios curtos: FastSMAi 1 lt SlowSMAi 1. Índice: i Barra atual. Carteira: 42 mercados de futuros de quatro principais setores de mercado (commodities, moedas, taxas de juros e índices de participação). Dados: 36 anos desde 1980. Plataforma de testes: MATLAB. II. Teste de sensibilidade Todas as tabelas 3-D são seguidas de gráficos de contorno bidimensionais para fator de lucro, Razão de Sharpe, Índice de desempenho de úlcera, CAGR, Drawdown máximo, Negociações lucrativas percentuais e Média. Win Avg. Rácio de perda. A imagem final mostra a sensibilidade da Equity Curve. Variáveis testadas: SlowSMALength, FastSMAIndex (Definições: Tabela 1): Figura 1 Desempenho do portfólio (Entradas: Tabela 1 Amperial do comitê da bomba: 0). V. Classificação: Estratégia de Negociação de Filtro de Símbolo de Movimento Simples (SMA) VI. Resumo (i) A Média de Movimento Simples (SMA) é menos robusta do que a Média de Movimento de Casco (HMA) (ii) Com base nos testes de sensibilidade acima, os parâmetros de SMA preferidos são: 100 SlowSMALength 600 0.2 FastSMAIndex 0.5 (Figura 1-2). ALPHA 20 TM Trading System REGRA CFTC 4.41: RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES. NÃO GOSTO DE UM REGISTO DE DESEMPENHO REAL, RESULTADOS SIMULADOS NÃO REPRESENTAM NEGÓCIO REAL. TAMBÉM, DESDE QUE OS NEGÓCIOS NÃO FORAM EXECUTOS, OS RESULTADOS PODERÃO TER COMPRIMIDO COMPARTILHADO PARA O IMPACTO, SE HAVER, DE CERTOS FATORES DE MERCADO, COMO FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL SÃO TAMBÉM SUJEITOS AO FATO QUE ESTÃO DESIGNADOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VOCE OU POSSIBILIDADE DE ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS. DIVULGAÇÃO DE RISCOS: GOVERNAMENTO DOS ESTADOS UNIDOS EXERCÍCIOS EXCLUSIVOS REGRA CFTC 4.41
No comments:
Post a Comment