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

 
Aleksey Vyazmikin:

Qual é o input para o agrupamento - todos os preditores de amostra ou o quê?

Bem, sim... mas nós também podemos experimentar.

 
Aleksey Nikolayev:

Vou levar a ideia a uma conclusão lógica. Suponha que temos um conjunto de sistemas sobre o mesmo activo. Cada sistema, quando no mercado, detém uma posição de volume fixo, mas a direção pode mudar. Os retornos e volatilidades da estratégia são conhecidos. Vamos definir a correlação entre estratégias usando a fórmula (t1-t2)/sqrt(T1*T2) onde T1 e T2 são as durações de sua permanência no mercado e t1 e t2 são as durações dos tempos em que essas estratégias estão simultaneamente no mercado e voltadas para as mesmas direções e direções opostas respectivamente. Esta é uma fórmula simplificada derivada sob a hipótese de preço próximo ao SB. Agora há todos os dados para aplicar a teoria de Markowitz para encontrar o portfólio ideal.

Obviamente, não vamos obter carteiras significativas desta forma (pelo menos porque apenas um activo é utilizado). Precisamos de algumas modificações.

1) Alterar o algoritmo de otimização (limites de parâmetros, penalidades). Clarificar a definição da correlação entre as estratégias.

2) Otimizar o portfólio já no momento da criação da estratégia. Ou seja, procurar estratégias baseadas na condição de otimização de portfólio sobre elas. Não é muito claro como isto pode ser formalizado de uma forma praticamente aplicável, mas a abordagem parece mais lógica em geral. Embora, como você já escreveu, isso exigiria algoritmos de reescrita, etc. etc. Não sei se vale a pena o trabalho.

É tudo verdade o que você diz. Mas eu não levaria em conta apenas o tempo de entrada no mercado - precisamos de alguma medida de desempenho durante esse período, pois não basta entrar no mercado, mas também devemos sair a tempo, e aqui condicionalmente duas estratégias semelhantes, mas uma com take fixo e outra sem take, darão alta correlação de tempo, mas resultados financeiros diferentes. Duas estratégias semelhantes podem ser úteis, por exemplo, uma delas dará lucro em condições planas e a outra dará mais lucro nas condições de tendência que, juntas, suavizarão a curva de equilíbrio.

Se não houver muitas estratégias, sua busca direta e estimativa conjunta é possível.

 
mytarmailS:

Acho que sim... mas também podemos fazer experiências.

E que algoritmo devo escolher para obter um resultado aceitável sem randomização e com um tempo de cálculo razoável? Não sou muito bom em aglomerações.

 
Aleksey Vyazmikin:

Eu estudei o CatBoost, por isso vou falar sobre isso.

A profundidade da árvore é recomendada 4-6 fendas. Esta é a profundidade que estou a tentar em geral.

A divisão do prognóstico é feita por três algoritmos diferentes à escolha. É criada uma chamada grelha.

Os resultados da divisão são interessantes de se retirar e ver por si mesmo. O que a AlgLib divide os preditores por igual ao construir a árvore para a floresta?

AlgLib divide a peça que chega pela mediana (correção - não pelo meio, mas pela mediana. ). Ou seja, se 100 exemplos vierem, ele ordena os valores e divide pelo valor do 50º exemplo. Há uma opção de quantidade no código, mas não é utilizada.

Lembrei-me sobre a XGBoost que ela tem uma variante de divisão aleatória. Parece ser a mesma coisa no catbust.

Em geral é estranho que eles recomendem árvores tão rasas.
Como já escrevi antes, com uma árvore tão rasa é improvável que um setor como 20 a 30% do valor seja selecionado. Na melhor das hipóteses, 1 ou 2 vezes serão divididas por medianas ou por valores aleatórios em Boosts.
Se a profundidade fosse 100, poderia muito bem chegar a um setor de 20-30% por algum preditor.

Presumo que em Boosts é compensado por um grande número de árvores de refinamento, que podem usar outros preditores que não foram usados na árvore principal, mas eles também serão apenas 1 -2 vezes separados.

 
Aleksey Vyazmikin:

E que algoritmo devo escolher para obter um resultado aceitável sem aleatoriedade e com um tempo de cálculo razoável? Não sou muito bom em aglomerações.

Sim em um trailer qualquer (knn,som,dtwclust...), a melhor variante certamente mostrará a experiência ...

Não me interpretes mal, não estou a usar o que escrevi, apenas li a tua ideia e olhei para ela de um lado ligeiramente diferente da implementação, por isso falei... Eu não garanto nenhum resultado.

 
elibrarius:

Algib divide a fatia de entrada pela mediana. Ou seja, se vierem 100 exemplos, ele ordena os valores e divide pelo valor do 50º exemplo. Há uma variante por quantis no código, mas não é utilizada.

Lembrei-me sobre a XGBoost que ela tem uma opção de divisão aleatória. Parece ser a mesma coisa no catbust.

Em geral é estranho que eles recomendem árvores tão rasas.
Como já escrevi antes, com uma árvore tão rasa é improvável que um setor como 20 a 30% do valor seja selecionado. Na melhor das hipóteses, 1 ou 2 vezes serão divididas por medianas ou por valores aleatórios em Boosts.
Se a profundidade fosse 100, poderia muito bem chegar a um setor de 20-30% por algum preditor.

Presumo que em Boosts isso seja compensado pelo grande número de árvores de refinamento, que podem usar outros preditores que não foram usados na árvore principal.

A realidade pode não ser o que imaginamos - devemos tentar reproduzir os algoritmos de particionamento do CatBoost e ver o que realmente acontece lá e o quão correto ele é.

Em relação à aleatoriedade - há uma aleatoriedade na escolha da partição da grade preditora, como não a melhor, mas aleatória, se eu entendi corretamente. E, há algoritmos que dividem a pilha de forma desigual por intervalos.

 
mytarmailS:

Sim, em um trailer você pode usar qualquer (knn,som,dtwclust...), a melhor opção será, naturalmente, mostrada por experiência...

Não me interpretes mal, não estou a usar o que escrevi, apenas li a tua ideia e olhei para ela de um lado ligeiramente diferente da implementação, por isso falei... Não estou a garantir nenhum resultado.

Estou a falar de garantias - só estou interessado em compreender a sua ideia.

 


O indicador Neuro está quase pronto )) Este é um EA, puramente um indicador que me faltou a habilidade.
 
Área laranja na parte superior - prevê movimento descendente, verde na parte inferior - movimento ascendente, espessura do nível de confiança da rede neural. Funciona apenas no BTCUSD M1 (por enquanto...).
Está tudo bem? ))
 
Evgeny Dyuka:
A zona laranja acima prevê o movimento para baixo, verde abaixo - movimento para cima. Funciona apenas no BTCUSD M1 (por enquanto).
Está tudo bem? ))

Eu diria que não é mau, mas é frustrante.

Basicamente funciona como um indicador normal de sobre-compra/sobre-venda.

Às vezes é certo, às vezes é errado, não devia ser...

Você já testou esta rede para negociar? A minha experiência diz-me que não vai fazer dinheiro...

A menos que você coloque um filtro na "confiança" da rede.