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

 
Vladimir Perervenko:


PS. E fazer o paralelo do cálculo lm(). Esta é a altura certa para o fazer.

Obrigado.

Eu vi como paralelizar uma operação em laço através de uma %dopar%. Eu não sei como ligá-lo a um laço escondido no DT. Não sei se pode ser mais rápido ou não.

 
Alexey Burnakov:

Obrigado.

Eu vi como paralelizar uma operação em laço através de uma %dopar%. Eu não sei como ligá-lo a um laço escondido no DT. E eu não sei se seria mais rápido.

O que eu queria dizer era esta parte do código.

lm_models <-    x[,
{
        lapply(c(1:20), function(x) summary(lm(data = .SD[, c(1:x, 21), with = F],    formula = V21 ~ . -1))$'fstatistic'[[1]])
}
, by = sampling
]

Foreach() em vez de lapply

 

Há algo errado com os gráficos que levam várias dezenas de segundos para serem construídos.

Confira este pacote ("nhstplot"). É rápido a desenhar e eu acho que é muito bom.

> plotftest(f = 4, dfnum = 3, dfdenom = 5, title = "Fisher's F test")

 
Vladimir Perervenko:

Há algo errado com os gráficos que levam várias dezenas de segundos para serem construídos.

Confira este pacote ("nhstplot"). É rápido a desenhar e eu acho que é muito bom.

> plotftest(f = 4, dfnum = 3, dfdenom = 5, title = "Fisher's F test")

Eu vou dar uma olhada. Mas onde está a semi-transparência aqui, onde estão as centenas de objectos sobrepostos? Teste-o em condições pesadas e então entenderemos se é mais rápido ou não.
 
Vladimir Perervenko:

Ahh. Vou tentar, obrigado. Acontece que o laço de lapela será substituído por um laço paralelo. E está tudo a girar num laço DT com 1000 iterações.

Ou há outra forma de saltar estas 1000 iterações pela frente.

 
Alexey Burnakov:
Eu vou dar uma olhada, é claro. Mas onde está a semi-transparência aqui, onde estão as centenas de objectos sobrepostos? Teste em condições pesadas e então entenderemos se é mais rápido ou não.

O desenho rápido semi-transparente pode ser alcançado com uma placa gráfica OpenGL. Em R há uma biblioteca rgl para isso, é mais para 3d, mas se você pode fazer projeção ortogonal, e desenhar linhas, será exatamente o que você precisa. Não consegui perceber logo, tens de ler a documentação.

Já está:

É muito fácil desenhar linhas semi-transparentes, basta uma mesa com coordenadas X e Y. Você também poderia adicionar uma terceira coluna Z para tridimensionalidade.

library(rgl)
for(i in 1:1000){
    lines3d(cbind(1:1000, cumsum(rnorm(1000))), col="blue", alpha=0.1)
}

Mas acabou por ser lento na mesma. A julgar pelo procesexplorer - o vídeo é usado por apenas 5%, enquanto um processador lógico é 100%. Eu acho que R é muito lento na alimentação de dados em OpenGL, muito mais lento do que ele pode receber. De alguma forma saiu por ali.

Só para se desorganizar :) faça-o, maximize a janela para tela cheia, e gire "figura" com o botão esquerdo do mouse.

library(rgl)
for(i in 1:100){
    lines3d(cbind(cumsum(rnorm(100)), cumsum(rnorm(100)), cumsum(rnorm(100))), alpha=0.2)
}
 
Tu podias fazer isto. Tira uma centena de linhas ao acaso. E as distribuições estariam cheias. Seria muito mais rápido.
 

Eu finalmente fiz a primeira tentativa da idéia do cluster que anunciei antes, é um teste, só para ver o que está acontecendo, os preditores são simples

série móvel de 5 valores OHLC + volume + volátil 6 preditores de 5 valores cada

história da aprendizagem 100 000 bares

cada preditor foi normalizado, é claro ) e depois agrupado em 100 grupos, lamentando o absurdo

O alvo foi criado do nada (no momento em que acabei de me sentar), eu simplesmente peguei a inversão nesta forma: O alvo é um extremo mais alto que as 4 velas anteriores e mais alto que as 10 velas seguintes depois dele.

Comecei a procurar por padrões repetitivos...

O melhor que encontrei, sem tais preditores, é o seguinte padrão

open high low close volum volat target_avg target_count
91      30  41    91    100   0.4        9

em(aberto alto volume baixo volume fechado) são os números de clusters que caracterizam este padrão

target_avg - esta é a probabilidade da minha reversão ser disparada neste padrão. Não fui capaz de encontrar nenhum padrão com 80-90% de probabilidade de disparar de acordo com estes preditores

target_count - onúmero de vezes que o padrão foi apanhado na história, não encontrei nenhum padrão significativo, que foram apanhados 30-50 vezes usando estes preditores

O melhor que encontrei com estes preditores é um padrão, no qual a inversão (alvo) é desencadeada 40% do tempo e há apenas 9 observações (número de padrões)

Portanto, talvez seja a única informação útil, a "NO BLOW" necessária, que pode ser extraída do conjunto de preditores e explica apenas uma razão para a inversão e mesmo que seja 40% dela e diferentes razões para diferentes inversões e definitivamente não há 10 ou 30 delas imho.

E agora pense em como o algoritmo MO pode explicar todos os movimentos do mercado com tais preditores, é impossível, porque os preditores podem explicar apenas 2% e o resto é ruído...

Além disso, não há controle de recorrência estatística, ou seja, o RI pode tomar uma decisão baseada em uma ou duas observações, e isso é verdade na grande maioria dos casos em menos de 95% dos casos

De qualquer forma, eu divago... vamos continuar com um padrão, tendo estimado a qualidade dos insumos em uma nova amostra, eu vou dizer isso, até agora não é o Mercedes, mas se é um Zaporozhets morto, então esta abordagem um nove apenas de uma fábrica

A qualidade das entradas é muito melhor, mais clara, menos erros...

e a outra coisa é, o padrão completo é...

open high low close volum volat
91   6    30  41    91    100

quando corri o reconhecimento nos novos dados de 50 000 castiçais o algoritmo não conseguiu encontrar nenhum desses padrões, simplesmente não apareceu ))

Tive de reduzir o padrão e deixei apenas os preços

open high low close volum volat
91   6    30  41    91    100

Eu já encontrei cerca de 20 desses padrões

aqui estão as entradas no padrão, eu não escolhi nada "ala melhores entradas" apenas tirei fotos como na sequência em que os negócios foram feitos, não todos os negócios, claro, apenas os primeiros, para que você possa avaliar

й

o eqiti é bom, embora o risco seja maior do que o previsto

к

Lembre-se, isto é apenas um padrão, e apenas calções...

Se alguém precisar do código, eu o postarei, embora eu duvide, já está muito claro
 

214 páginas é muito para estudar/aprender. Cada um deles é sobre algo diferente e nem sempre fácil de entender).

É possível resumir todas estas páginas em um único post, mesmo que não seja muito curto? Tipo: estabelecer meta, métodos de solução, resultados, conclusões.

Deixe-me dizer desde já que o meu modelo de mercado é um processo aleatório (movimento browniano), ou melhor, a soma de vários (podem ser muitos) desses movimentos com feedbacks. E prever qualquer coisa ou procurar outros padrões além dos estatísticos é um exercício absolutamente fútil. Ou seja, quaisquer preditores significativos simplesmente não existem, pelo menos para fins especulativos.

 
Código, claro. É interessante.