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

 

Sotto "cose interessanti". ))

Algoritmo DTW

Immaginate di dover trovare alcune parti uguali del prezzo nella serie, ma poiché il prezzo non è stazionario, naturalmente a causa di questa proprietà la dimensione di queste parti sarà diversa, come affrontare questo caso?

Conosco due possibili soluzioni - interpolazione e algoritmo dwt.

про dwt - https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D1%88%D0%BA%D0%B0%D0%BB%D1%8B

Non mi preoccuperò di formule perché non le conosco, non mi preoccuperò nemmeno di parole, darò solo il codice commentato perché chiunque possa riprodurlo...

Quindi questo codice è stato usato per risolvere un problema:

Abbiamo un certo modello chiamiamolo "modello principale" di dimensione (lunghezza) 8 punti (il numero è un'ipotesi arbitraria)

Dovresti trovare dei modelli simili al modello principale ma la loro dimensione è di 5 e 13 punti (le cifre sono prese a caso)

il risultato è sulla foto

ч

come può essere utilizzato ed è anche possibile è una questione aperta, mi sembra che sono riuscito ad usarlo con successo, ma è necessario ricordare che tutto questo è solo uno strumento per attuare la vostra idea, ma non l'idea stessa ...

Posterò il codice qui sotto

Алгоритм динамической трансформации временной шкалы — Википедия
  • ru.wikipedia.org
Алгоритм динамической трансформации временно́й шкалы (DTW-алгоритм, от англ.  ) — алгоритм, позволяющий найти оптимальное соответствие между временными последовательностями. Впервые применен в распознавании речи, где использован для определения того, как два речевых сигнала представляют одну и ту же исходную произнесённую фразу. Впоследствии...
File:
zzz.txt  4 kb
 

In termini semplici, l'intero punto del codice è questo:

library(dtw)

X <- rnorm(10)
Y <- rnorm(20)

my.dtw <- dtw(X ,Y)

my.dtw$distance

dove

my.dtw$distance
[1] 14.17198

è una misura di prossimità (distanza euclidea), più è piccola e maggiore è la vicinanza di X e Y

 
mytarmailS:

In termini semplici, l'intero punto del codice è questo:

library(dtw)

X <- rnorm(10)
Y <- rnorm(20)

my.dtw <- dtw(X ,Y)

my.dtw$distance

dove

my.dtw$distance
[1] 14.17198

è una misura di prossimità (distanza euclidea), più è piccola e maggiore è la vicinanza di X e Y

Nel caso: se la misura di prossimità = 1, allora la seconda riga è ottenuta dalla prima per distorsione?
 
SanSanych Fomenko:
Nel caso: se la misura di prossimità = 1, allora la seconda riga è ottenuta dalla prima per distorsione?

Di solito quando si vuole cambiare la vicinanza tra due righe, la regola è che queste righe devono essere della stessa lunghezza.

dtw può misurare la vicinanza di due righe con dimensioni diverse, naturalmente distorcerà le righe per trovare il corretto valore di vicinanza

 

mytarmailS:

Abbiamo un modello, chiamiamolo "modello principale" dimensione (lunghezza) di 8 punti (la figura è a caso)

dovete trovare dei modelli simili al modello principale ma che abbiano 5 e 13 punti (le cifre sono prese dalla spazzatura)

Era nello stesso thread, pg. 130.

In breve, il classico algoritmo DTW confronta due segmenti di lunghezza fissa n e m rispettivamente, riempie la matrice [1..n, 1..m] e prende il risultato dalla cella [n, m]. Se volete che qualche segmento abbia una lunghezza casuale, per esempio n=8 e m assume valori da 5 a 13, riempite la matrice 8*13 e prendete il risultato minimo dalle celle [8,5] a [8,13] diviso per la lunghezza del percorso.

Si scopre che la wikipedia russa ha riscritto l'intero articolo durante questo periodo, e io non lo sapevo. Nell'articolo inglese nulla è cambiato e rimane lo pseudocodice, con il quale è più facile capire il principio dell'algoritmo.

 
Vizard_:

Approccio #4) Ma non è riuscito ad entrare nel club dei "primi cento"(133) (0,68705), facendosi prendere a pugni in faccia dai nerd-coglioni))


Wow! Fantastico!!!
 
Scrittore di Awl:

Era nello stesso thread, pg. 130.

In breve, nel classico algoritmo DTW ....................

Oppure si può fare in un altro modo, semplicemente interpolare senza mezzi termini tutte le sezioni arbitrarie a una sola dimensione, e misurare semplicemente la correlazione o l'euclidea...

 

Ciao a tutti!

Chiedo aiuto e propongo di unire gli sforzi per creare un algoritmo chiamato "approssimazione polarmonica" - questo è un'approssimazione di funzione molto profonda e intelligente nel contesto della famiglia di algoritmi "MSUA" perché penso così, lo dirò più tardi con spiegazioni e possibilmente immagini

ссылка https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%83%D1%87%D1%91%D1%82%D0%B0_%D0%B0%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2

estratto dal link

Обычно степень полинома опорной функции выбирается не выше {\displaystyle N-1} N-1, где {\displaystyle N} N - количество точек выборки. Часто бывает достаточно использовать в качестве опорных функции полиномы второй степени. В таком случае на каждом шаге итерации степень результирующего полинома удваивается.

Вместо полинома Колмогорова-Габора можно использовать ряды Фурье. Их имеет смысл применять, если в исходных данных наблюдается периодичность (например, уровень воды в реках, температура воздуха, объём осадков). Полученная в таком случае модель будет полигармонической [1].

===================================================

Anche un link a uno dei tanti libri su questo meraviglioso metodo di quelli "MSUA".

Il libro ha idee molto forti ed è facile da leggere (finché non iniziano le formule) letturaMOLTO consigliatahttps://www.gmdh.net/articles/theory/bookNoiseIm.pdf

===================================================

anche alcuni commenti che confermano che l'approssimazione polarmonica è il modo giusto per pre-elaborare i dati per MO

estratto del commento

...................................…Следующим шагом была новая модель: к цене закрытия применяем фильтр низких частот (я использовал фильтр Батерворта 2-го порядка), применяем полиномиально-гармоническую аппроксимацию, преобразуем A*cos(wx)+B*sin(wx) к виду M*sin(wx+f) и в качестве вторичных признаков берем M и f.
…. И вот с такой моделью мне удалось построить сеть, которая имела очень хорошие обобщающие свойства: новые данные почти все правильно распознавала........................

link alla fonte originalehttp://www.kamynin.ru/archives/4917

 
mytarmailS:

Sembra complicato e non c'è certezza del risultato, passo.
R ha un pacchetto GMDH ("MGUA" in inglese).

A proposito, in Numerai ho anche finalizzato il modello a logloss <0,69
0.68930
Ma da qualche parte è uscito un centinaio di persone con risultati 0.4-0.5, qualche inferno, ora per i premi è come la luna.