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

 
Aleksey Nikolayev:

Se, por exemplo, todas as estratégias apenas COMPRAR, então provavelmente se trata de minimizar a sua intersecção no tempo (minimizando correlações, que são sempre positivas). Se a COMPRA e a VENDA são permitidas, os cruzamentos de tempo podem ser úteis para compensar mutuamente partes más das estratégias (as correlações negativas são geralmente boas para a carteira).

Acho que a correlação pode ser determinada simplesmente através do timing das estratégias e do timing da sua sobreposição.

Em geral, concordo com a compensação mútua de sinais dirigidos de forma diferente, mas para isso, no meu caso, preciso aplicar estratégias diferentes, e fazer uma marcação para cada um - é outra canção, mas planejo aplicá-la também.

Mas para encontrar estratégias semelhantes a fim de selecioná-los fora de um grupo ou para dividir seu risco (lote), devemos considerar não apenas os horários de entrada e saída, mas também a direção de entrada. Eu devia pensar em como fazê-lo melhor.

 
Aleksey Vyazmikin:

O que queres dizer com "faz na perfeição"? Eu não o faço manualmente, eu escrevo um script que o faz da maneira que eu vejo agora.

No meu caso, o ideal seria uma avaliação separada de cada variante do valor do preditor. E, eu quero fundir os intervalos de ativação de um preditor amplificando um alvo em um preditor, o que as malhas que eu conheço não fazem dividindo os intervalos sequencialmente, fundindo de forma similar o preditor no ranking para poupar (construindo um nó) com outro preditor. Até agora, em teoria.


Que tipo de grade de partição agregaria as faixas em uma única partição, eliminando valores intermediários, como na figura abaixo dos valores 1 e 4?


Perfeito - no sentido de ser perfeitamente preciso de acordo com a função de estimativa da divisão. Ele avaliará milhares de opções e lembrará a melhor, e se tornará um nó.

É mais fácil treinar 24 florestas/boosques padrão, cada um alimentando preditores da hora apropriada.

 
elibrarius:

Perfeito - no sentido de ser perfeitamente preciso de acordo com a função de avaliação dividida. Avalia milhares de escolhas e lembra-se da melhor, que se torna o nó.

Isto é claramente de acordo com o algoritmo, mas qual é o algoritmo correcto? Apenas no CatBoost existem 3 algoritmos para a construção de uma grelha.

elibrarius:

A maneira mais fácil é treinar 24 florestas/busts padrão, cada um alimentando os preditores da hora apropriada.

Isso reduziria a amostra em aproximadamente 24 vezes (e minha amostra já é pequena), e então, observando o princípio ganancioso da construção de árvores (nem sempre verdadeiro, como resultou das minhas experiências com árvores rachadas) selecionaríamos apenas aqueles preditores para árvore ramificada, que exatamente em uma hora em particular, estatisticamente, tinha a melhor probabilidade, Mas, na minha opinião, devemos encontrar os preditores e colocá-los na árvore, aqueles que independentemente de outras condicionalidades deram uma vantagem em toda a amostra, então não vamos obter um ajuste para uma hora concreta do dia (descrição condicionalmente mais precisa de um evento para ativação), mas uma acumulação de probabilidades independentes em uma folha.

 
Aleksey Vyazmikin:

Este é um algoritmo que verifica o intervalo de valores de previsão e tenta particionar as partes do intervalo para que elas realcem melhor a capacidade de previsão. Suponha que haja uma amostra com 3 alvos, a amostra é distribuída como 1 - 24%, 2 - 50%, 3 - 26%, e há algum preditor com um intervalo de valores, então o objetivo da grade é encontrar áreas de valores preditores onde, digamos, o alvo 1 será "previsto" por mais de 24%, e a divisão irá destacar esta área. Existem diferentes variantes de algoritmos para construir tais grelhas.

Ideia interessante, mas não é mais fácil fazê-lo desta forma...?

p.1) Nós temos algum tipo de algoritmo de aprendizagem de máquina. MO

p.2) Há uma amostra que é dividida em um trem e um teste.

p.3) há um preço que é agrupado de acordo com um determinado princípio (tempo, padrão gráfico, tudo junto, algo mais ... ...) (pode ser percebido como uma situação de mercado ou apenas um cluster)

pp. deve haver muitos ou muitos aglomerados


algoritmo de ações :

1) ensinar MO em uma bandeja

2) prever o teste usando um modelo semântico.

3) no teste identificamos os pontos que o modelo previu sem erros, chamamos-lhes XT (bom ponto)

4) cada ht corresponde a um cluster do passo 3 acima...

É isso, agora sabemos em que clusters (estados) do mercado o modelo comercializa bem... Os clusters (estados) são como um análogo da sua rede, por isso tentamos estimar através de clusters o que podemos prever e o que não podemos...


Mas ambas as abordagens têm problemas conceptuais que devem ser resolvidos primeiro. O problema não está sequer na abordagem, mas na forma como a informação é apresentada.

 
mytarmailS:


p.3) há um preço que é agregado de acordo com algum princípio (tempo, padrão gráfico, tudo junto, algo mais... ...) (pode ser percebido como uma condição de mercado ou apenas um cluster)

pp. deve haver muitos ou muitos aglomerados

Aqui eu não entendo, você está sugerindo pegar o preço dos pontos de marcação alvo e agrupá-los ou o quê?


mytarmailS:


3) durante um teste identificamos os pontos que o modelo previu sem erros, vamos chamá-los HT (bom ponto)

4) cada ht corresponde a um cluster do passo 3 acima...

É isso, agora sabemos em que clusters (estados) do mercado o modelo comercializa bem... Os clusters (estados) são como um análogo da sua rede, ou seja, tentamos usar clusters para dividir o que podemos prever e o que não podemos...

A ideia é interessante, mas o seu princípio não está relacionado com a minha sugestão ou eu não a entendo completamente. Descobrimos que o modelo activou uma certa percentagem de clusters, e depois o que fazer com ele? Eu entendo que temos que olhar para qual folha (se estamos falando de uma árvore) quantos clusters são ativados, e se a folha ativa um cluster muito mais vezes, então é apenas um sinal de que ela aprendeu a identificá-lo. Aqui poderia ser que uma grande proporção das folhas se ativassem uniformemente em diferentes grupos, o que indicaria aleatoriedade, aparentemente. Mais uma vez, tem de ter a certeza do algoritmo de agrupamento - certifique-se de que o resultado é clusters únicos e não muitos semelhantes...

 
Aleksey Vyazmikin:

Isto é claramente de acordo com o algoritmo, mas qual é o algoritmo correcto? Apenas CatBoost tem 3 algoritmos para construir a grelha.

Isto vai reduzir a amostra em cerca de 24 vezes (e minha amostra já é pequena), e então, observando o princípio da construção de árvores gananciosas (nem sempre é verdade, como resultou das minhas experiências com árvores rachadas) vamos selecionar apenas aqueles preditores para ramificar a árvore, que está em uma determinada hora estatisticamente tem a melhor probabilidade, e a necessidade, na minha opinião, de encontrar sinais e colocá-los na árvore, aqueles que, independentemente de outras condições deram a vantagem sobre toda a amostra, então você não fica apto para uma determinada hora do dia (condicional).

Que diferença faz onde você reduz a amostra? Por fora, fazendo 24 florestas ou por dentro, por exemplo, adicionando os primeiros 24 nós separados por horas? A partir destes 24 nós, cada ramo restante tomará 1/24º da amostra.

 
A propósito, o que eu não gosto em aumentar é que a profundidade de árvore recomendada é de 7-10.
Isto é, se tivermos 100 preditores e a divisão começar no meio de cada preditor. É muito provável que tenhamos 7 preditores diferentes divididos no meio. Talvez 1 ou 2 se dividam em um quarto, provavelmente menor.
Ou no reforço de algoritmos, o algoritmo não funciona por meia divisão, mas em pedaços menores? Alguém sabe?
E quem usa que profundidade de árvore?
 
elibrarius:

Que diferença faz onde se reduz a amostragem? Por fora, fazendo 24 florestas ou por dentro, por exemplo, adicionando os primeiros 24 nós com um relógio dividido? Desses 24 nós, cada ramo restante tomará 1/24º da amostra.

Não se trata de redução, mas sim de estatísticas de comportamento do preditor na amostra fora da divisão - isto deve reduzir a aleatoriedade da selecção do valor do preditor.

A propósito, a AlgLib faz a grelha em cada divisão ou uma vez e depois usa essa grelha? Pelo que entendi, os desenvolvedores do CatBoost afirmam que a grade é feita uma vez por eles.

 
Aleksey Vyazmikin:

Não percebo, está a sugerir que se pegue no preço dos pontos de marcação alvo e os aglomere ou não?

O alvo é seu, qualquer alvo... Estou um pouco rasgado ....

Você só precisa de clusters para um alvo:


Aqui encontramos os TCs nos novos testes e os aceitamos como bons...

Agora sobre os novos dados precisamos encontrar este TX para aplicar o modelo a ele, já que o modelo funciona bem apenas no TX, e como reconhecê-lo nos novos dados? como uma opção pelo número do cluster

 
Aleksey Vyazmikin:

Em geral, concordo com a compensação mútua de sinais dirigidos de forma diferente, mas para isso, no meu caso, preciso usar estratégias diferentes, e fazer uma marcação para cada um - essa é outra canção, mas planejo usá-la também.

Mas para encontrar estratégias semelhantes a fim de selecioná-los fora de um grupo ou para dividir seu risco (lote), devemos considerar não apenas os horários de entrada e saída, mas também a direção de entrada. Tenho de pensar em como fazê-lo melhor.

Vou levar a ideia à sua conclusão lógica. Suponha que temos um conjunto de sistemas em um imobilizado. Cada sistema mantém a posição de volume fixo quando está no mercado, mas a direção pode variar. 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 a duração do seu tempo no mercado, t1 e t2 são a duração do tempo que estas estratégias estão simultaneamente no mercado e dirigidas na mesma direcção e em direcçõ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.