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

 
Maxim Dmitrievsky:

Não entendo o que é, a wikipedia diz tanto que não se consegue perceber sem uma criptografia. Distribuições multidimensionais, e eu não sei como construí-las, a menos que eu consiga decifrar o código python.

e para o inferno com isso. É apenas uma bela imagem do backtest, em comparação com a cointegração

aqui está um pruf éhttps://www.quantconnect.com/tutorials/strategy-library/pairs-trading-copula-vs-cointegration

Copula é uma função da densidade de distribuição das articulações, de várias variáveis aleatórias. Conceitualmente é uma estrutura matemática simples o suficiente, para entender, por exemplo, dois processos aleatórios e construir um gráfico 2D como dependência de probabilidade de um do outro, você obtém um campo de pontos, se os processos são independentes então será um campo quadrado uniforme, mas se eles são dependentes então padrões diferentes, compactação de pontos em alguns lugares e rarefação em outros, aqui a densidade local de pontos é cópula, ele mostra dependência, linear ou não linear.

 
Igor Makanu:

imho, você precisa entender a diferença entre predição e vida real, a tarefa do sistema de trading é fazer uma predição, a tarefa de gestão de risco e dinheiro é garantir que o sistema sobreviva

E quanto a cópulas ou homunculi, como foi derivado o TS ou com a ajuda do MO ou com a ajuda do optimizer.... - é uma previsão, mas não consegue controlar a situação real - o preço

Eu não sou contra as cópulas, na verdade até sou a favor delas, graças ao Max por lembrá-las, talvez elas possam ser adaptadas de alguma forma na gestão e previsão de riscos com a ajuda do MO.

 

typedef struct

{

double dist;

double* vector;

} distvect;


int distvectcomp(distvect *v1, distvect *v2)

{

if (v1->dist == v2->dist) return 0;

double sub = v1->dist - v2->dist;

return sub / fabs(sub);

}


double* parsen(dataset inputs, dataset outputs, int k, double kernel(double), double vector[])

{

distvect* dvarr = malloc(inputs.length * sizeof(distvect));


for (int i = 0; i < inputs.length; ++i)

{

double dist = 0;

for (int j = 0; j < inputs.dimentions; ++j) dist += pow(vector[j] - inputs.data[i][j], 2);

distvect dv = { dist, outputs.data[i] };

dvarr[i] = dv;

}

qsort(dvarr, inputs.length, sizeof(distvect), distvectcomp);


double *res = calloc(outputs.dimentions, sizeof(double));

double W = 0;


for (int i = 0; i < k; ++i)

{

if (dvarr[i].dist == 0) continue;

double w = kernel(dvarr[i].dist);

W += w;

for (int d = 0; d < outputs.dimentions; ++d)

res[d] += dvarr[i].vector[d] * w;

}


for (int d = 0; d < outputs.dimentions; ++d) res[d] /= W;


free(dvarr);

return res;


}

Diz-se que o algoritmo MO "quasi-optimal" é
 
O que queres dizer? Que tipo de SVM é?
 
Maxim Dmitrievsky:
O que queres dizer? Que tipo de SVM é?

Não, que tipo de svm é este "parzen window", kernel smoothing, e"quase-optimal" no sentido de que é quase perfeito (Mitchell tinha-o em algum lugar), mas apenas muito lento, cada iteração - ordenando todo o conjunto de dados para um novo ponto e convolução com o kernel

 

Não entendo porque não existem algoritmos para construir uma árvore que levem em conta a uniformidade da distribuição do sinal em toda a amostra ao construir uma árvore?

Podemos implementá-lo de alguma forma, pois é fundamental para o comércio.

Eu estimo folhas com esta distribuição em mente, mas se a árvore fosse construída com ela em mente, haveria folhas/árvores muito mais eficazes.
 
Aleksey Vyazmikin:
Não posso dizer com certeza, mas não excluo que estás a torturar as árvores com a poda por nada.
Isto é assim, a partir de considerações gerais e da experiência pessoal.
 
Aleksey Vyazmikin:

Não entendo porque não existem algoritmos para construir uma árvore que levem em conta a uniformidade da distribuição do sinal em toda a amostra ao construir uma árvore?

Talvez possamos implementá-lo de alguma forma, porque é crucial para o comércio.

Eu estimo folhas com esta distribuição em mente, mas se a árvore fosse construída com ela em mente, haveria folhas/árvores muito mais eficazes.
Ali, antes de cada divisão, os dados são ordenados por fiche (que os embaralha pelo tempo), divididos (pelo meio ou por quartis), redução de erros lembrados, repetidos para todas as fichas. A melhor divisão torna-se um nó.

Sugerir um algoritmo melhor.

 
Yuriy Asaulenko:
Não posso dizer com certeza, mas não excluo que tortures árvores com poda por nada.
Isso são apenas considerações gerais e experiência pessoal.

Na minha juventude eu pensava que o bonsai era uma zombaria da natureza, mas quando me tornei pai, compreendi a profundidade da ideia.

 
elibrarius:
Ali, antes de cada divisão, os dados são ordenados por fiche (que os embaralha pelo tempo), divididos (pelo meio ou por quartis), redução de erros lembrados, repetidos para todas as fichas. A melhor divisão torna-se um nó.

Sugerir um algoritmo melhor.

É por isso que precisamos dar uma estimativa no momento de classificar os preditores e seus valores e não pegar aqueles preditores com valores (faixas) muito lotados, mas dar preferência aos que estão distribuídos por toda a amostra.

Ou seja, precisamos de estimar a frequência de repetição da divisão sobre a amostra, e não apenas a sua repetibilidade absoluta.