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

 
Andrey Dik:

Aqui, já expliquei exactamente o que estou a fazer:

Em detalhes: na barra atual o sinal de compra, como comprar, conte o menor número de barras para o futuro e verifique se o comércio será rentável, se sim, como fechar, se não - conte para frente mais uma barra e verifique novamente. E assim atingimos o número máximo de barras e fechamo-las finalmente. Isto é um mecanismo de aprendizagem.

O que não está claro? Não é uma fantasia, é exactamente o que eu faço agora. A função alvo é maximizar os lucros com o mínimo de drawdowns. Eu treino usando a minha própria genética.

O que é que estamos a ensinar? É possível simplesmente implementá-lo, não é?
 

SanSanych Fomenko:
1. O que é que ensinamos?

2. Não é possível implementá-lo assim sem mais nem menos?

1.a função alvo é maximizar os lucros com o mínimo de drawdowns. Eu ensino com a ajuda da minha genética.

2. Sim, muito simples.

 
alguém sabe como descobrir em que língua está escrito o pacote R?
 
mytarmailS:
Alguém sabe como descobrir em que língua está escrito o pacote R?

Documentação. Aberto a partir da Ajuda em R:

  • Escrita R Extensões
  • R Estagiários

Além disso, há uma descrição detalhada de como trabalhar com o Cp

 

Cavalheiros, uma nova tarefa da minha parte:

Aqui está um conjunto de dados em formato .R: https://drive.google.com/open?id=0B_Au3ANgcG7CcjZVRU9fbUZyUkE

Há aproximadamente 40.000 filas, 101 colunas no conjunto. A coluna mais à direita é a variável de destino. À esquerda estão 100 entradas.

Eu sugiro que você tente construir um modelo de regressão prevendo o valor da 101ª coluna com base nas 100 colunas restantes, nas primeiras 20.000 observações.

Nas restantes 20.000+ observações, o modelo construído deve mostrar um R^2 de pelo menos 0,5.

Eu então revelo a forma como os dados são gerados e dou a minha solução.

A dica são os dados da série cronológica. A entrada é de 100 amostras, previstas 1 à frente. Não se trata de preços ou cotações ou seus derivados.

Alexey

 
Também posso publicar estes dados em csv. Seria interessante ouvir a opinião dos corifanos sobre o significado dos preditores.

Mais uma vez, os dados são puramente sintéticos e puramente por diversão.
 

Eu tentei encontrar a importância dos preditores através do pacote vtreat. Mas o pacote não é capaz de procurar relações entre preditores, apenas leva em conta as relações diretas entre preditor e alvo, não muito adequadas para esta tarefa.

treatments <- designTreatmentsN(dat_ready[1:20000,], colnames(dat_ready)[1:100], tail(colnames(dat_ready),1))
treatments$scoreFrame #важность  предикторов определяется через колонку "sig"
treatments$scoreFrame[order(treatments$scoreFrame$sig),] #предикторы  отсортированы по важности

A julgar pela importância do vtreat - lag_diff_51 e lag_diff_52 são os mais úteis. Pouco a pouco eu adicionei outros preditores da lista recebida e olhei o crescimento de R^2 nos dados de treinamento para floresta. No final parei nestes preditores - 51, 52, 53, 54, 55, 17, 68, muito provavelmente são usados para calcular o alvo. R^2 em dados de treinamento com eles > 0,9, mas em testes e validações todos ruins. Agora eu preciso tentar diferentes operações matemáticas com estes preditores, para selecionar fórmulas e assim por diante, para que na validação cruzada R^2 também aumente. Eu não vou procurar mais :)

Acabei-o mais tarde:
Experimentou um pouco mais, fez um monte de novos preditores a partir dos já existentes, com diferentes operações matemáticas. Tanto o vtreat como a floresta gostam muito destas duas combinações: soma(51,52) e média(51,52). Mas eu nunca consegui obter uma fórmula para o valor alvo. E os modelos treinados nestes preditores também não conseguem prever nada adequadamente.

 

100 entradas? Isso é forte.

Porque não mil?

Vocês não têm a menor ideia do que é uma rede de nervos.

 
Dr. Trader:

Eu tentei encontrar a importância dos preditores através do pacote vtreat. Mas o pacote não é capaz de procurar relações entre preditores, apenas leva em conta as relações diretas entre preditor e alvo, não muito adequadas para esta tarefa.

A julgar pela importância do vtreat - lag_diff_51 e lag_diff_52 são os mais úteis. Pouco a pouco eu adicionei outros preditores da lista recebida e olhei o crescimento de R^2 nos dados de treinamento para floresta. No final parei nestes preditores - 51, 52, 53, 54, 55, 17, 68, muito provavelmente são usados para calcular o alvo. R^2 em dados de treinamento com eles > 0,9, mas em testes e validações todos ruins. Agora eu preciso tentar diferentes operações matemáticas com estes preditores, para selecionar fórmulas e assim por diante, para que na validação cruzada R^2 também cresça. Eu não vou procurar mais :)

Acabei-o mais tarde:
Experimentou um pouco mais, fez um monte de novos preditores a partir dos já existentes, com diferentes operações matemáticas. Tanto o vtreat como a floresta gostam muito destas duas combinações: soma(51,52) e média(51,52). Mas eu nunca consegui obter uma fórmula para o valor alvo. E os modelos treinados nestes preditores também não conseguem prever nada adequadamente.

Andando perto, mas de passagem. Nem tudo foi apontado. Existem correlações lineares entre as saídas e as entradas. Mas eles não ajudam muito.

Tens a floresta sobre-treinada. É melhor olhar para o CV. Conto-te o segredo dos dados mais tarde. É suposto ser simples. Há muita redundância nos inputs.
 

Além disso, 0,9 é sobretreinamento. R^2 maior que 0,6 em um conjunto de treinamento é um máximo realista.

Mais uma coisa - lembre-se sobre as interações. Conexões únicas podem levar em uma direção falsa.

Eu próprio estou a tentar resolver a minha própria tarefa. Eu apliquei NS de camada única. O teste R^2 não excede 0,148. Não encaixa...