L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 1486

 
Maxim Dmitrievsky:

Non capisco affatto cosa sia, wikipedia dice così tanto che non si può capire senza un crittografo. Distribuzioni multidimensionali, e non so come costruirle, a meno che non riesca a decifrare il codice python.

e al diavolo. È solo una bella immagine del backtest, rispetto alla cointegrazione

Ecco un pruf èhttps://www.quantconnect.com/tutorials/strategy-library/pairs-trading-copula-vs-cointegration

La copula è una funzione di densità congiunta della distribuzione di diverse variabili casuali. Concettualmente è una struttura matematica abbastanza semplice, per capirlo prendete per esempio due processi casuali e costruite un grafico 2D come dipendenza della probabilità di uno dall'altro, ottenete un campo di punti, se i processi sono indipendenti allora sarà un campo quadrato uniforme, ma se sono dipendenti allora diversi modelli, compattazione di punti in alcuni luoghi e rarefazione in altri, qui la densità locale di punti è copula, mostra la dipendenza, lineare o non lineare.

 
Igor Makanu:

imho, è necessario capire la differenza tra la previsione e la vita reale, il compito del sistema di trading è quello di fare una previsione, il compito del rischio e la gestione del denaro è quello di garantire la sopravvivenza del sistema

che dire delle copule o degli omuncoli, come è stato derivato il TS o con l'aiuto di MO o con l'aiuto di optimizer.... - è una previsione ma non può controllare la situazione reale - il prezzo

Non sono contro le copule, anzi sono addirittura a favore, grazie a Max per averle ricordate, forse possono essere adattate in qualche modo alla gestione del rischio e alla previsione con l'aiuto di 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;


}

Si dice che l'algoritmo MO "quasi-ottimale" è
 
Che tipo di SVM è?
 
Maxim Dmitrievsky:
Che tipo di SVM wisp è?

No, che tipo di svm è questo "parzen window", kernel smoothing, e"quasi-ottimale" nel senso che è quasi perfetto (Mitchell lo aveva da qualche parte), ma solo molto lento, ogni iterazione - ordinamento dell'intero dataset ad un nuovo punto e convoluzione con il kernel

 

Non capisco perché non ci sono algoritmi per la costruzione di un albero che tengano conto dell'uniformità della distribuzione del segnale su tutto il campione quando si costruisce un albero?

Possiamo implementarlo in qualche modo, dato che è fondamentale per il trading.

Stimo le foglie con questa distribuzione in mente, ma se l'albero fosse costruito con questo in mente, ci sarebbero foglie/alberi molto più efficaci.
 
Aleksey Vyazmikin:
Non posso dirlo con certezza, ma non escludo che tu stia torturando gli alberi con la potatura per niente.
Questo è così, da considerazioni generali e dall'esperienza personale.
 
Aleksey Vyazmikin:

Non capisco perché non ci sono algoritmi per la costruzione di un albero che tengano conto dell'uniformità della distribuzione del segnale su tutto il campione quando si costruisce un albero?

Forse possiamo implementarlo, perché è fondamentale per il commercio.

Stimo le foglie con questa distribuzione in mente, ma se l'albero fosse costruito con questo in mente, ci sarebbero foglie/alberi molto più efficaci.
Lì prima di ogni divisione, i dati sono ordinati per scheda (che li mischia per tempo), divisi (per mezzo o per quartili), riduzione degli errori ricordata, ripetuta per tutte le schede. La migliore divisione diventa un nodo.

Suggerisci un algoritmo migliore.

 
Yuriy Asaulenko:
Non posso dirlo con certezza, ma non escludo che si torturino gli alberi con la potatura per niente.
Queste sono solo considerazioni generali ed esperienza personale.

In gioventù pensavo che il bonsai fosse una presa in giro della natura, ma quando sono diventato genitore ho capito la profondità dell'idea.

 
elibrario:
Lì prima di ogni divisione, i dati sono ordinati per scheda (che li mischia per tempo), divisi (per mezzo o per quartili), riduzione degli errori ricordata, ripetuta per tutte le schede. La migliore divisione diventa un nodo.

Suggerisci un algoritmo migliore.

Questo è il motivo per cui dobbiamo dare una stima al momento di ordinare i predittori e i loro valori e non prendere quei predittori con valori (intervalli) molto affollati, ma dare la preferenza a quelli distribuiti su tutto il campione.

Cioè, abbiamo bisogno di stimare la frequenza di ripetizione dello split sul campione, non solo la sua ripetibilità assoluta.