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

 

Maxim Dmitrievsky:

3 semanas para a minha meta com os NS :))) ou o graal ou o inferno com eles. Faça as suas apostas :)))

Seria bom ouvir as probabilidades de ganhar no início. Ninguém aqui só recebe ordens ;)

 

Eu precisava urgentemente encontrar o mínimo de uma função suave, então eu decidi primeiro comparar diferentes pacotes para ver qual é mais rápido. Para o teste eu fiz a função Rastrigin (a função mais difícil de otimizar de acordo com alguns professores).

Rastrigin <- function(x){
  return(sum(x^2 - 10 * cos(2 * pi * x)) + 10 * length(x))
}


Para o teste eu o fiz com 4 parâmetros:

~ w^2 - 10 * cos(2 * pi * w)  +  x^2 - 10 * cos(2 * pi * x)  +  y^2 - 10 * cos(2 * pi * y)  +  z^2 - 10 * cos(2 * pi * z)   +  10 * 4


Derivados:

2 * w + 10 * (sin(2 * pi * w) * 2 * pi
2 * x + 10 * (sin(2 * pi * x) * 2 * pi
2 * y + 10 * (sin(2 * pi * y) * 2 * pi
2 * z + 10 * (sin(2 * pi * z) * 2 * pi


Eu comparei GenSA, lbfgs, lbfgsb3, n1qn1 e vários métodos na função optim() padrão.

Resultados:
pacote, número de chamadas de funções de fitness (e gradiente), parâmetros encontrados e o resultado final onde a busca pára.

n1qn1 fitness function calls: 448 ; parameters = 3.90227 e-18 3.90227 e-18 3.90227 e-18 3.90227 e-18 ; result = 0 
lbfgs fitness function calls: 14 ; parameters = -1.891749 e-10 -1.891749 e-10 -1.891749 e-10 -1.891749 e-10 ; result = 0 
lbfgsb3 fitness function calls: 12 ; parameters = -7.542216 e-15 -7.542216 e-15 -7.542216 e-15 -7.542216 e-15 ; result = 0 
GenSA fitness function calls: 66582 ; parameters = 1.517382 e-11 -5.657816 e-12 -2.292922 e-11 -3.257902 e-12 ; result = 0 
optim Nelder-Mead fitness function calls: 253 ; parameters = -2.981633 3.988813 0.9902444 -2.980489 ; result = 34.8497 
optim BFGS fitness function calls: 49 ; parameters = 8.731115 e-16 8.731115 e-16 8.731166 e-16 8.731157 e-16 ; result = 0 
optim CG fitness function calls: 918 ; parameters = 0.9949586 0.9949586 0.9949586 0.9949586 ; result = 3.979836 
optim L-BFGS-B fitness function calls: 81 ; parameters = 8.526118 e-13 8.526118 e-13 8.526118 e-13 8.526118 e-13 ; result = 0 
optim SANN fitness function calls: 10000 ; parameters = 750.3075 745.0596 743.626 753.8133 ; result = 2239327 

As três primeiras funções (n1qn1, lbfgs, lbfgsb3) utilizam um gradiente de achado analítico.

O resultado = 0 é ideal, quanto mais longe de zero, pior.

Podemos ver que o conhecimento das derivadas é muito bom, lbfgsb3 alcançou o resultado perfeito em 12 chamadas das funções de fitness.
O melhor dos que definiram o gradiente numericamente foi a função padrão otimizada com o método BFGS, 49 chamadas da função fitness.

A conclusão é que os derivados são muito bons. O ideal seria, por exemplo, encontrar derivados para todos os pesos e colocá-los em lbfgsb3, em vez de retropropulsores.
Mas todo este resultado do teste aplica-se apenas a funções suaves para as quais podem ser encontradas derivadas para todos os parâmetros. Se você tiver parâmetros de funções que mudam aleatoriamente o resultado mesmo com a mínima alteração - genética, GenSA e outros algoritmos estocásticos são melhores lá.

Anexei um arquivo com código, você pode testá-lo em suas funções.

Arquivos anexados:
n1qn1.txt  4 kb
 

Pergunto-me se tal série pode ser prevista por alguma arima, ou se é suficiente para trabalhar para um retorno à média... conseguiu alcançar resultados impressionantemente estáveis (diagrama de cointegração), trabalhando retorna mais de 2 spreads


 

Um retorno à média pode até ser negociado com um swing. Mas como podemos determinar onde está o preço médio se a média muda de acordo com a tendência? (A questão é retórica - não se pode).

 
Dr. Trader:

Um retorno à média pode até ser negociado com um swing. Mas como podemos determinar onde está o preço médio se a média muda de acordo com a tendência? (A questão é retórica - não se pode).

A média aqui é 0, é uma estratégia neutra.

devemos usar estatísticas) o que é deslocado lá é impossível de entender na caixa preta

Em suma, quase terminou a 2ª estratégia das 3 planeadas (os resultados da primeira já foram escritos, não vkatilo).

se este não funcionar - o último será deixado )

e este será o fim do MO

 
Maxim Dmitrievsky:

Pergunto-me se tal série pode ser prevista por alguma arima, ou se é suficiente para trabalhar para voltar à média... conseguiu alcançar resultados impressionantemente estáveis (diagrama de cointegração), trabalhando retorna mais de 2 spreads


Cointegração é um termo e não tem nada a ver com a sua foto.

A aplicabilidade do arim é determinada por vários testes, sendo o principal deles o arco, que determina se existe um efeito de arco na série temporal. Se não houver um efeito arco, que é cerca de 20%, então troque, mas ... na história, porque esta secção já foi aprovada ou quase aprovada ou...

 
SanSanych Fomenko:

Co-integração é um termo e não tem nada a ver com a sua foto.

A aplicabilidade da aritmética é determinada por vários testes, sendo o principal deles o arco, que determina se existe um efeito de arco na série temporal. Se não houver um efeito arco, que é cerca de 20%, então troque, mas ... na história, como esta secção já foi passada ou quase foi passada ou...

vamos definir a cointegração pela 3ª vez... o que é e porque não é relevante para a minha foto? :)

é uma foto de um local de teste, não olho para a história, tudo é sempre perfeito lá

ou do que se trata - desenvolvimento de estratégias sobre o MO ou análise de diferentes funções R, acho que sou o único que se preocupou em publicar quaisquer resultados durante alguns meses :)

 
Maxim Dmitrievsky:

a média aqui é 0, é uma estratégia neutra de mercado.

Quer que o próprio gráfico verde seja trocado? Depois vejo, primeiro pensei que era um indicador para o comércio eurusd.

Primeiro precisamos de descobrir - é um processo aleatório ou tem uma memória como as séries temporais normais.

Se tiver memória, o mashka e arima podem ser úteis.
Mas se o gráfico é completamente aleatório, então precisamos de modelos para os processos Markovianos. Eu não sou bom nisso, mas Alexander disse algo sobre o modelo Wiener, você pode começar com ele, por exemplo.

 
Maxim Dmitrievsky:

Vamos definir a terceira vez a cointegração... o que é e porque não se aplica à minha fotografia? :)

esta é uma foto já de um terreno de teste, não olho para a história, tudo é sempre perfeito lá.

Há pelo menos duas séries cronológicas na cointegração.

Mas eles não são todos.

Estas séries não são estacionárias.

Mas isto não é tudo.

Estas séries não estacionárias devem ser ligadas de tal forma que o resultado seja estacionário.

As decisões comerciais são tomadas com base nesta série STATIONARY que garante a própria possibilidade de fazer uma previsão.

 
Dr. Trader:

Quer trocar o próprio gráfico verde? Depois vejo, no início pensei que era um indicador para o comércio eurusd.

Primeiro temos de descobrir se é um processo aleatório ou se tem uma memória como uma série cronológica normal.

Se tiver memória - então tanto o mosto como arima podem ser úteis.
Mas se o gráfico é completamente aleatório, então precisamos de modelos para os processos Markovianos. Eu não sou bom nisso, mas Alexander disse algo sobre o modelo Wiener.

Então, temos de determinar se tem memória, ou seja, se é determinada pelas suas caudas?