Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 103
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Também estou me perguntando como o pacote de previsão determina a relação input-output. Talvez lá seja trivial ou talvez não.
Eu acabei de olhar através da linha, deixe-me ser corrigido ou confirmado, mas de acordo com o meu entendimento o pacote baseado em algum algoritmo interno avalia a capacidade de previsão de uma variável aleatória em particular, ou seja, a capacidade de extrapolar seus valores de uma variável aleatória para o futuro. Se for uma trama de tendência, nós recebemos uma, e se for um aumento de preço, nós recebemos 0,83%, o que para mim é bastante óbvio. E tudo tem a ver com o método em si e na prática o contrário é verdade, pois os incrementos são previstos muito melhor - estão muito mais próximos da estacionaridade do que as tendências das séries temporais não estacionárias. Precisamos entender a ferramenta em si e aplicar a ferramenta aos objetos aos quais ela se encaixa.
Em geral, há erros na análise de sistemas.
Erro nº 1.
Aplicando o método certo ao problema errado.
É extremamente comum em estatísticas.
Em geral, acho que a mensagem original está perdida. Para mim, a ideia original era que precisamos de métodos que sejam independentes de modelos para determinar a capacidade de cada um dos preditores usados para prever a variável alvo.
Um exemplo de seleção independente de modelo é o pacote vtreat. De alguma forma, ele analisa os dados e depois os avalia em relação aos valores teóricos.
10 novos preditores com valores aleatórios são criados para a tabela da íris. designTreatmentsN pontuará cada preditor, quanto menor a pontuação, melhor. Neste exemplo, os 4 preditores originais (os últimos do gráfico) destacam-se claramente, têm pontuação quase zero, o que é muito bom. Ao selecionar os preditores, a primeira coisa a ser removida é a que tem os valores mais altos.
Se houver apenas 2 valores alvo (0/1, VERDADEIRO/FALSO, -1/1, fator com 2 níveis, etc...), existe a função DesignTreatmentsC para tal caso.
Este pacote também é usado no y-aware pca. O pacote vtreat escalona os preditores em intervalos de y-aware e os componentes são ainda criados de forma quase normal (apenas sem redimensionamento e centralização). Então, se você quiser, você pode fazer coisas tão interessantes como, por exemplo, "y-aware randomforest" com este pacote.
Leia mais aqui:https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html
Um exemplo de seleção independente de modelo é o pacote vtreat. De alguma forma, analisa os dados e, em seguida, dá-lhe uma pontuação de valor-alvo.
10 novos preditores com valores aleatórios são criados para a tabela da íris. designTreatmentsN pontuará cada preditor, quanto menor a pontuação, melhor. Neste exemplo, os 4 preditores originais (os últimos do gráfico) destacam-se claramente, têm pontuação quase zero, o que é muito bom. Ao selecionar os preditores, a primeira coisa a ser removida é a que tem os valores mais altos.
Se houver apenas 2 valores alvo (0/1, VERDADEIRO/FALSO, -1/1, fator com 2 níveis, etc...), existe a função DesignTreatmentsC para tal caso.
Este pacote também é usado no y-aware pca. O pacote vtreat escalona os preditores em intervalos de y-aware e os componentes são ainda criados de forma quase normal (apenas sem redimensionamento e centralização). Então, se você quiser, você pode fazer coisas tão interessantes como, por exemplo, "y-aware randomforest" com este pacote.
Leia mais aqui:https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html
Bem, lá vamos nós, de volta ao básico.
A seguir.
Usando quaisquer modelos SOMENTE depois de serem processados para eles por estes pacotes. A esperança é que os modelos, quando pré-processados desta forma, NÃO sofram de sobretreinamento.
Aplicando os métodos certos ao problema errado.
Eu não consegui entender a série temporal CaretFA, há muitas fórmulas na descrição. Eu peguei algo sobre a correlação de novos valores com os antigos, e análise do gráfico de freqüência após a transformação de Fourier, análise de como esse gráfico muda nos novos dados. Você precisa entender mais sobre radiofísica lá do que sobre forex :)
Há exemplos na descrição do pacote, onde é aplicado aos índices DAX, SMI, CAC, FTSE, são usados exatamente incrementos em D1, ou seja, tanto o pacote quanto as tarefas estão corretos.
Uma pequena nuance é que no exemplo a série temporal de preços é primeiro processada utilizando logaritmo de função logarítmica() e só depois disso é que os deltas são encontrados. diff(log(EuStockMarkets[c(100:200),]) * 100
Mas eu não notei nenhuma diferença se eu uso ou não uso log(), o resultado da estimativa não mudou, foi feito antes para uma exibição mais conveniente dos dados no gráfico.
Eu não consegui entender a série temporal CaretFA, há muitas fórmulas na descrição. Eu peguei algo sobre a correlação de novos valores com os antigos, e análise do gráfico de freqüência após a transformação de Fourier, análise de como esse gráfico muda nos novos dados. Você precisa entender mais sobre radiofísica lá do que sobre forex :)
Existem exemplos na descrição do pacote onde é aplicado aos índices DAX, SMI, CAC, FTSE, são os incrementos D1 que são utilizados, ou seja, tanto o pacote como os objectivos estão correctos.
Uma pequena nuance é que no exemplo a série temporal de preços é primeiro processada utilizando logaritmo de função logarítmica() e só depois disso é que os deltas são encontrados. diff(log(EuStockMarkets[c(100:200),]) * 100
Mas eu não notei nenhuma diferença se eu usar ou não usar log(), o resultado da estimativa não mudou; foi feito antes para uma conveniente exibição de dados no gráfico.
No que diz respeito a este pacote, a questão para mim é uma questão de princípio:
Com respeito a este pacote, a questão para mim é uma questão de princípio:
Ele não procura uma ligação entre a variável alvo e os preditores. O autor do pacote escreve sobre duas aplicações -.
1) Para avaliar uma série temporal para ver se ela é preditiva (numa escala de 0% = "ruído branco" a 100% = sinusoidal) com Omega(). Se o resultado for 0%, então não é possível tentar prever o comportamento da série temporal, quaisquer que sejam os preditores utilizados.
2) Pegue alguns preditores, avalie-os com a mesma função, crie novos preditores semelhantes ao pca para que os novos preditores tenham um resultado Omega() ainda melhor do que os preditores originais. Se isso ajuda a prever melhor ou não os valores alvo está à sua disposição, o pacote não está interessado no que esses preditores precisam prever. A questão é se o preditor não é ruído - os modelos que o utilizam irão prever mais estabilidade.
Ele não procura ligações entre a variável alvo e os preditores. O autor do pacote escreve sobre duas aplicações -
1) Avaliar se a série temporal é previsível (em uma escala de 0% = "ruído branco" a 100% = sinusoidal) com Omega(). Se o resultado for 0%, então não é possível tentar prever o comportamento da série temporal, quaisquer que sejam os preditores utilizados.
2) Pegue alguns preditores, avalie-os com a mesma função, crie novos preditores semelhantes ao pca para que os novos preditores tenham um resultado Omega() ainda melhor do que os preditores originais. Se isso ajuda a prever melhor ou não os valores alvo está à sua disposição, o pacote não está interessado no que esses preditores precisam prever. A questão é que se o preditor não for ruído - os modelos que o utilizam irão prever mais estabilidade.
Você confirmou substancialmente as minhas suspeitas.
Obrigado.
Acho que o pacote é inútil para a classificação.
Mas para a previsão do tipo de extrapolação pode ser útil.
Por exemplo, pegue o pacote de previsão. Ele decompõe a série em três componentes, em seguida extrapola para frente e soma. Recebe uma previsão um passo ou mais à frente.
Agora a questão é: que par de moedas tomar? Pegamos noCaretFA e usamo-lo para calcular a capacidade preditiva de vários pares de moedas. Suspeito que numa janela limitada, a capacidade de previsão muda à medida que a janela se move. Escolhemos um par de moedas, prevemos (ou outro pacote - há muitos), negociamo-lo, depois de fecharmos todas as posições escolhemos novamente o par de moedas.
Um exemplo de seleção independente de modelo é o pacote vtreat. De alguma forma, ele analisa os dados e depois os avalia em relação aos valores-alvo.
Para a tabela da íris, 10 novos preditores são criados com valores aleatórios. designTreatmentsN avaliará cada preditor, quanto menor a pontuação, melhor. Neste exemplo, os 4 preditores originais (os últimos do gráfico) destacam-se claramente, têm pontuação quase zero, o que é muito bom. Ao selecionar os preditores, a primeira coisa a ser removida é a que tem os valores mais altos.
Se houver apenas 2 valores alvo (0/1, VERDADEIRO/FALSO, -1/1, fator com 2 níveis, etc...), existe a função DesignTreatmentsC para tal caso.
Este pacote também é usado no y-aware pca. O pacote vtreat escalona os preditores em intervalos de y-aware e os componentes são ainda criados de forma quase normal (apenas sem redimensionamento e centralização). Então, se você quiser, você pode fazer coisas tão interessantes como, por exemplo, "y-aware randomforest" com este pacote.
Leia mais aqui:https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html
Eu olho para o seu código com íris e preditores aleatórios e entendo que não posso programar, o que me levou 10 linhas no seu código cabe em três....
E esta seleção de tratamento, ela difere da mesma importancia incorporada na RF?
esta seleção de tratamento é diferente do importantíssimo integrado na RF?
O Vtreat é melhor. Avalia tudo estatisticamente, o quão bom/mau o preditor é, em geral, para prever a variável alvo, sem se ajustar a um modelo de previsão particular. Recomenda-se a utilização de preditores com pontuação máxima de 1/(número de preditores). Por exemplo, se houver 200 preditores, você pode tirar deles apenas aqueles com avaliação inferior a 1/200. É possível estimar os preditores e se todas as estimativas forem superiores ao limiar - em vez de tentar ensinar o modelo e prever novos dados sem sucesso, é melhor começar a procurar outros preditores.
Existem algumas desvantagens - o pacote funciona com preditores um por um, e não leva em conta a interação entre eles. Eu também não gosto disso mesmo com preditores totalmente idênticos, ou altamente correlacionados - o vtreat não remove os repetitivos, às vezes isso é muito irritante.