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

 
Bem. Comecei na semana antes da abertura do mercado, testando ativamente a versão 14. Eu gostaria de dizer o seguinte. Quanto mais tempo se treina, mais entradas estão envolvidas no TS. Mais predicados. Eu tinha até 8-9 entradas no máximo. No entanto, a capacidade de generalização geralmente não é elevada. E tais TSs dificilmente funcionam. Ou seja, eles mal conseguem alcançar a marca de 3. Mas as previsões com 4-6 entradas funcionam satisfatoriamente no geral. Eu aumentei o número de entradas de 50 para 150. Está agora na sua terceira hora de treino. Mas acho que o número de entradas desta vez também não será insignificante. Então, vejamos 8 de Janeiro de 2008.
 
Bem, já reparei nisto outra vez. O problema é que eu tenho um conjunto de dados, perco 12 e depois vou com o mesmo atraso, atraso1 e atraso2. Anteriormente, as entradas estavam na sua maioria no início do conjunto, ou seja, havia poucos atrasos e depois não mais do que o atraso1, raramente o atraso2. Posso entender que a amostra está sobrecarregada de dados, mas o fato é que antes da generalização, o lag1 e o lag2 eram mais frequentes. Mas é um facto que antes da generalização estava principalmente nas colunas iniciais, agora está nas colunas finais.... praticamente, então vamos tirar algumas conclusões....
 
Mihail Marchukajtes:
Bem, já reparei nisto outra vez. O problema é que eu tenho um conjunto de dados, perco 12 e depois vêm os seus atrasos, atraso1 e atraso2. Anteriormente, os inputs estavam na sua maioria no início do conjunto, ou seja, os atrasos eram poucos e depois não mais do que o atraso1, raramente o atraso2. Posso entender que a amostra está sobrecarregada de dados, mas o fato é que antes da generalização, o lag1 e o lag2 eram mais frequentes. Mas é um facto que antes da generalização estava principalmente nas colunas iniciais, agora está nas colunas finais.... quase, então infer....

Portanto, você precisa voltar para as versões anteriores.

O meu voo está óptimo. Talvez porque não há desfasamentos na amostra?

 
Dr. Trader:

Parece bom em geral, o que será que vai acontecer no final?

Sobre o comitê - postei alguns exemplos, mas há modelos que usam regressão com arredondamento para classificar, e não é tão claro lá. Eu tentei duas formas diferentes de combinar votos:

1) Arredondar tudo para as classes, tomar a classe para a qual haverá mais votos.
Ou seja, ter uma previsão de 4 bar a partir de três modelos
c(0.1, 0.5, 0.4, 0.4) c(0.6, 0.5, 0.7, 0.1) c(0.1, 0.2, 0.5, 0.7) Eu o arredondaria ainda mais para as classes
c(0, 1, 0, 0) c(1,1,1,0) c(0,0,1,1) , e o vetor final com previsões seria c(0, 1, 1, 0) por número de votos.

2) a outra opção é encontrar o resultado médio imediatamente, e só depois arredondá-lo para as classes
o resultado seria c((0.1+0.6+0.1)/3, (0.5+0.5+0.2)/3, (0.4+0.7+0.5)/3, (0.4+0.1+0.7)/3)
ou (0,2666667, 0,4000000, 0,5333333, 0,4000000), ou
c(0, 0, 1, 0)

Você pode ver que o resultado é diferente, e depende do passo a dar. Eu não sei qual é mais padrão, mas acho que a segunda maneira funciona melhor com novos dados.

Pacote de funções tsDyn SETAR

Acontece que o valor do limiar (pode haver dois limiares como no RSI) é variável. Dá resultados incríveis.

Também não esqueçamos os algoritmos de calibração na classificação. A questão é que a previsão de classe na realidade não é um valor nominal, o algoritmo calcula a probabilidade de classe, que é um número real. Então esta probabilidade é dividida pela metade, por exemplo, e você recebe duas classes. E se a probabilidade for 0,49 e 051, isso são duas classes? Que tal 0,48 e 052? Isto é uma divisão em classes? Aqui é onde SETAR se dividiria em duas classes, entre as quais estaria Reshetovskie "on the fence".

 
Dr.Trader:

Parece bom em geral, o que será que vai acontecer no final?

Sobre o comitê - postei alguns exemplos, mas há modelos que usam regressão com arredondamento para classificar, e não é tão claro lá. Eu tentei duas formas diferentes de combinar votos:

1) reunir tudo em torno das aulas, fazer a aula que conseguir mais votos.
Ou seja, tendo uma previsão de 4 bar a partir de três modelos
c(0.1, 0.5, 0.4, 0.4) c(0.6, 0.5, 0.7, 0.1) c(0.1, 0.2, 0.5, 0.7) Eu arredondaria isso para as classes
c(0, 1, 0, 0) c(1,1,1,0) c(0,0,1,1) , e o vetor final com previsões seria c(0, 1, 1, 0) por número de votos.

2) a outra opção é encontrar o resultado médio imediatamente, e só então arredondá-lo para as classes
o resultado seria c((0.1+0.6+0.1)/3, (0.5+0.5+0.2)/3, (0.4+0.7+0.5)/3, (0.4+0.1+0.7)/3)
ou (0.2666667, 0.533333, c(0, 0, 0, 1) ou
)

Como você pode ver, o resultado é diferente, dependendo do passo a ser dado. Não sei qual dos dois é mais padrão, mas acredito que o segundo método funciona melhor com novos dados.
Este é o par gbpusd. O que significa que o modelo está à espera de ser testado pelo Brexit. Ainda nem sequer processei os dados do ano passado.... Pode ser uma ameixa...

Dependendo do resultado do teste final, vou definir o tom do artigo. É sempre um pouco surpreendente ver que o modelo funciona e a norma é ver que ele drena.

Vou reunir o comité da seguinte forma:

Construo n vectores de previsão de tipo numérico sobre o número de modelos nos dados de formação (regressão do incremento de preço).

Eu obtive a média da resposta sobre os modelos selecionados.

Eu conto quantis 0,05 e 0,95.

Na validação, repito os passos 1 e 2.

Eu seleciono apenas aqueles exemplos em que a média está fora dos limites de quantil.

Multiplico a resposta pelo sinal de previsão e subtraio a propagação.

No vetor obtido construo m subamostras com inclusão aleatória à taxa de 1-4 negociações por dia, dependendo do horizonte de previsão.

O comitê já mostrou um aumento de MO triplicado em relação aos modelos individuais. Porque os modelos são diversos...

 
Как из данных вычленить некие группы данных по условию
Как из данных вычленить некие группы данных по условию
  • ru.stackoverflow.com
нужно найти такие строчки которые повторяются не менее 10 раз в всей выборке и в каждой из найденных одинаковых групок которые повторялись, количество "1" в target.label должно превышать 70% по отношению к "0" вот найденные одинаковые строчки единичек больше чем нулей...
 

Eu respondo aqui então.

#пара строк из той таблицы, не буду я всё текстом копировать, потом первая строка повторена ещё дважды
dat <- data.frame(cluster1=c(24,2,13,23,6), cluster2=c(5,15,13,28,12), cluster3=c(18,12,16,22,20), cluster4=c(21,7,29,10,25), cluster5=c(16,22,24,4,11), target.label=c(1,1,0,1,0))
dat <- rbind(dat, dat[1,], dat[1,])
#результат последней строки поменян на 0 для эксперимента
dat[7,"target.label"]=0

library(sqldf)
#для sqldf точек в названиях колонок быть не должно
colnames(dat)[6] <- "target"

dat1 <- sqldf( "select cluster1, cluster2, cluster3, cluster4, cluster5, avg(target) as target_avg, count(target) as target_count from dat group by cluster1, cluster2, cluster3, cluster4, cluster5" )
dat1
dat1[ dat1$target_count>=10 & dat1$target_avg>0.63 , ]
dat1[ dat1$target_count>=10 & ( dat1$target_avg<0.37 | dat1$target_avg>0.63 ), ] #на случай если оба "0" или "1" встречаются чаще 70%
 
SanSanych Fomenko:

O pacote tsDyn é uma função SETAR

SETAR refere-se especificamente à calibração do comitê, ou este é um tópico separado para a criação de modelos financeiros?

Eu folheei o manual do pacote, não vi o que eu precisava... Há uma situação. Tenho uma tabela de treino com 10.000 exemplos. E há 100 modelos treinados com estes exemplos. Para testar os modelos você pode usá-los para prever os mesmos dados de entrada e obter 100 vetores cada um com 10000 predições. SETAR poderia ser usado para de alguma forma fundir todos estes 100 vetores em um só?
E então para uma previsão com novos dados haveria 100 previsões novamente e precisaríamos fundi-las em uma (não haveria 100 vetores, mas 100 previsões únicas). SETAR será capaz de fazer isso também, usando os parâmetros do comitê obtidos a partir dos dados do treinamento?

 
Dr. Trader:

SETAR refere-se especificamente à calibração do comitê, ou este é um tópico separado para a criação de modelos financeiros?

Eu folheei o manual do pacote, não vejo o que preciso... Eis a situação: tenho uma tabela de treino com 10.000 exemplos. Eu tenho 100 modelos treinados nesses exemplos. Para testar os modelos, você pode usá-los para prever os mesmos dados de entrada e obter 100 vetores cada um com 10000 previsões. SETAR poderia ser usado para de alguma forma fundir todos estes 100 vetores em um só?
E então para uma previsão com novos dados haveria 100 previsões novamente e precisaríamos fundi-las em uma (não haveria 100 vetores, mas 100 previsões únicas). SETAR será capaz de fazer isso também, usando parâmetros de comitê derivados dos dados de treinamento?

Pelo que entendi, não tem nada a ver com comissões.
 
Yury Reshetov:

Portanto, você precisa voltar para as versões anteriores.

Eu estou a correr bem. Talvez porque não há desfasamentos na amostra?

Bem, sim, eu estava fazendo desfasamentos porque nas versões anteriores eles aumentavam a capacidade de enumeração, agora com algoritmo de pré-busca melhorado não é necessário, então eu estou tentando treinar sem eles. Estou a tentar treinar sem eles. Mais tarde, vou relatar os resultados do exercício de hoje...