Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 13

 
mytarmailS:
Obrigado pelo esclarecimento, entendo perfeitamente agora, os algoritmos genéticos podem ajudar aqui? em vez de RF, tenho algumas idéias interessantes para implementar um alvo, gostaria de experimentá-las...
OK, podemos pensar sobre isso. Imagine, por exemplo, que a cada iteração a rede neural não faz uma propagação de erro padrão de volta com base no desvio do alvo da previsão, mas obtém dados que na versão anterior da escala o comércio real difere do ideal por tantos pontos. E actualiza os pesos com base nesta informação. Ou seja, a informação deve ser um fluxo paralelo à máquina. Talvez, pode ser feito.
 

é possível fazer isto em R?

Um pouco sobre mim: não sou um programador, o R é a minha primeira língua que aprendi durante um mês e meio.

 
mytarmailS:

é possível fazer isto em R?

Um pouco sobre mim: não sou um programador, o R é a minha primeira língua que tenho aprendido durante um mês e meio.

Aqui está um processo aproximado de ensinar os NS com informações sobre os resultados do comércio. Bem, você poderia tentar escrever sua própria função e alimentá-la como uma função de adequação personalizada em algum pacote R. Mas primeiro precisamos de descobrir que pacote R permite isto. Provavelmente alguém teria que escrever o NS em si e fazê-lo nos profissionais em um pacote separado. ( O próprio R é lento.

A questão é que este é um caso muito invulgar. Normalmente as características de fitness não são personalizáveis, com uma excepção que eu conheço. No máximo o que eu fiz foi escrever minha própria função no pacote do carpete, cujo valor máximo é usado para selecionar um conjunto de parâmetros de treinamento durante a validação cruzada. Mas ao mesmo tempo a própria máquina é treinada de uma forma padrão. Isto é, a minha solução não é bem o que eu preciso. Está a ver?

 
Pesquisado no Google... Sim, tens de ser tu a escrevê-lo, mas meu, este alvo padrão é uma abordagem tão limitada, é irritante...
 
mytarmailS:
Pesquisado no Google... Sim, tens de ser tu a escrevê-lo, mas meu, este alvo padrão é uma abordagem tão limitada, é irritante...

Vamos ter de continuar à procura:

http://stackoverflow.com/questions/25510960/how-to-implement-own-error-function-while-using-neuralnet-package-in-r

/go?link=https://stackoverflow.com/questions/36425505/own-error-function-including-weights-for-neuralnet-in-r

Parece que o pacote neuralnet permite que você crie a sua própria função de fitness, que deve ser diferenciável. Vou ter de pensar nisso... O que você acha?

how to implement own error function while using neuralnet package in R?
how to implement own error function while using neuralnet package in R?
  • stackoverflow.com
I am trying to implement a customized error function in package neuralnet in R. Normally ’sse’ and ’ce’ which stand for the sum of squared errors and the cross-entropy are used to calculate...
 

O segundo link diz que você precisa reescrever o código no pacote.

Você pode usar o primeiro link para escrever seu próprio erro, mas precisamos saber os pesos anteriores para implementá-lo no conceito que você sugere, ou estou perdendo algo? Para ser honesto, eu tenho uma idéia muito vaga de como uma rede neural funciona

 

O treinamento de uma rede neural (propagação para trás) geralmente procede da seguinte forma: um exemplo de treinamento é alimentado, um resultado é determinado para ela, verificado em relação ao resultado desejado e um erro é calculado. Então a tarefa é reduzir este erro. Como todos os cálculos na rede neural são apenas ordens de adição e multiplicação de dados de entrada com coeficientes, é possível calcular com precisão até que ponto é necessário alterar os coeficientes a fim de diminuir o erro. Em geral, é possível encontrar coeficientes que reduzem o erro a zero no primeiro passo, mas ninguém o faz, porque reduz o erro de um exemplo concreto, mas aumenta-o conscientemente para todos os outros exemplos.

Esta redução gradual de erros é feita uma a uma usando todos os exemplos de treino, passando-os uma e outra vez. Ou seja, você não pode usar algum Sharpe ratio como um resultado comercial necessário. O erro pode ser calculado separadamente para cada exemplo de treinamento. Você pode usar sua própria função para calcular o erro, mas ele também será calculado separadamente para cada exemplo de treinamento e não para todos os exemplos ao mesmo tempo. Não consigo descobrir como dividir a estimativa comercial inteira em todos os exemplos individuais.

Concordo que o comércio por ziguezague ou preço fechado de barra não é o melhor comércio. Seria muito melhor abrir e fechar negócios considerando também spread, drawdown, período de tempo durante o qual o negócio está aberto. Podemos fazer um Expert Advisor que utiliza médias móveis ou outros indicadores, otimizá-lo para a máxima sharpe ratio e usar esses negócios em dados de treinamento como um resultado necessário. Mas vou fazer algo assim depois de obter resultados estáveis, pelo menos em ziguezague.

 
Dr. Trader:

O treinamento de uma rede neural (propagação para trás) geralmente procede da seguinte forma: um exemplo de treinamento é alimentado, um resultado é determinado para ela, verificado em relação ao resultado desejado e um erro é calculado. Então a tarefa é reduzir este erro. Como todos os cálculos na rede neural são apenas ordens de adição e multiplicação de dados de entrada com coeficientes, é possível calcular com precisão até que ponto é necessário alterar os coeficientes a fim de diminuir o erro. Em geral, é possível encontrar coeficientes que reduzem o erro a zero no primeiro passo, mas ninguém o faz, porque reduz o erro de um exemplo concreto, mas aumenta-o conscientemente para todos os outros exemplos.

Esta redução gradual de erros é feita uma a uma usando todos os exemplos de treino, passando-os uma e outra vez. Ou seja, você não pode usar algum Sharpe ratio como um resultado comercial necessário. O erro pode ser calculado separadamente para cada exemplo de treinamento. Você pode usar sua própria função para calcular o erro, mas ele também será calculado separadamente para cada exemplo de treinamento e não para todos os exemplos ao mesmo tempo. Não consigo descobrir como dividir a estimativa comercial inteira em todos os exemplos individuais.

Concordo que o comércio por ziguezague ou preço fechado de barra não é o melhor comércio. Seria muito melhor abrir e fechar negócios considerando também spread, drawdown, período de tempo durante o qual o negócio está aberto. Podemos fazer um Expert Advisor que utiliza médias móveis ou outros indicadores, otimizá-lo para a máxima sharpe ratio e usar esses negócios em dados de treinamento como um resultado necessário. Mas vou fazer algo assim depois de obter resultados estáveis, pelo menos em ziguezague.

Sim, o NS funciona da forma que descreveu. Para cada amostra de erro é calculado, então, após passar por todo o conjunto, obtemos o valor da função de aptidão: erro quadrático médio, ou erro mediano, ou erro médio absoluto. Com base neste valor, os pesos são atualizados de acordo com o gradiente calculado no algoritmo de propagação de retorno.

Aqui estamos discutindo para colocar a nossa própria função em vez da função de fitness mencionada acima, com base em simulações de troca de sinais de máquinas. Assim, para cada exemplo processado pela NS, você pode criar uma troca virtual (se o sinal de saída quebrar um limite pré-definido). E no final de todos os exemplos, podemos calcular algumas estatísticas integradas, por exemplo, as estatísticas Sharpe. E já a partir dele, os pesos serão processados por distribuição inversa.

 

Obrigado pelo esclarecimento detalhadoDr.Trader!

Você sabe, provavelmente o melhor e mais correto seria ensinar as reversões, mesmo o mesmo ziguezague, ou seja, dar três estados 1) U-turn para cima

2) reversão para baixo

3) não uma inversão de marcha

Mas, seja para ensinar, é bastante difícil captar reversões, mais o enviesamento no número de observações, as aulas "não reversão" serão dezenas ou talvez centenas de vezes mais

E que preditores você usa e quais são os resultados?

Comecei agora a usar a análise espectral, os primeiros testes revelaram-se muito melhores do que com os indicadores, passei-os pelo chocalho, o erro de treino e testes foi de cerca de 6%, mas quando comecei a usar R o erro subiu para 30% se não estou enganado, San San Sanich diz que está a re-treinar, por isso ainda não percebo muito

Além disso, há uma maneira de descobrir quais os períodos que dominam no mercado através da análise espectral e então você pode usar esses períodos nos indicadores, pois eles serão indicadores adaptativos, mas não adaptados ao histórico.

 
mytarmailS:

O segundo link diz que você precisa reescrever o código no pacote.

No primeiro link você pode escrever seu próprio erro, mas ainda precisamos saber os pesos anteriores para implementar o conceito que você sugere, ou eu perdi alguma coisa? Eu honestamente tenho uma idéia muito aproximada de como funciona uma rede neural

Bem, antes de mais nada, não estou a sugerir isso. Estou a traduzir a tua intuição para uma forma que pode ser codificada. Você sugeriu que a máquina deveria ser encarregada de manter a curva de negociação dentro de limites razoáveis. ) Essa é a opção para fazer isso.

Em segundo lugar, o primeiro link mostra a forma de o fazer. A única limitação, que também é mencionada na documentação. Além disso, não precisamos de pesos, precisamos deles especificamente para a pessoa que fez a pergunta. Não se pode ter pesos em função. Para que precisa de pesos? Porque é que os estás a criar em primeiro lugar?

Você pode usar basicamente todas as funções de erro que podem ser diferenciadas.