Jump to content
Co nového? Mé kurzy
Komunita:
Diskuze Sledované příspěvky Žebříčky

Predikce časových řad


Doporučené příspěvky

Ak sa bavime o modelovani casovych radov, treba urcite spomenut aj Markovove modely. Ako dobry zaciatocny bod moze posluzit diplomovka a jej zoznam pouzitej literatury ,liu.diva-portal.org/smash/get/diva2:17431/FULLTEXT01 .

Honza K. ma pravdu v jednom. Cim je system zlozitejsi tym je vacsi priestor k chybam a nedomysleniu vsetkych suvislosti. Naviac, len velmi malo ludi skutocne pozna do hlbky techniky, ktore pouziva (vid SVM).

Link to comment
Sdílet pomocí služby

  • Odpovědí 125
  • Vytvořeno
  • Poslední

Nejaktivnější diskutující

Nejaktivnější diskutující

Publikované obrázky

fxmagico:
[ital]Jinak jsem se chtěl zeptat, jaké proměnné berete do trénovací množiny, kolega co vcelku dost času strávil s rozhodovacími stromy po dlouhem testování skončil pouze s hodnotami dané řady...
Pre-clusteringem myslíte shluknutí podobných průběhů v trénovacích datech a pak trénovat model přímo na určitý shluk?
[/ital]

Promenne do trenovaci mnoziny vybiram genetickym algoritmem - ruzne kombinace technickych indikatoru - ruzne zpozdenych o ruznych periodach, ROC-transformovane ceny (close, high, low)..., vse normalizovane do intervalu -1,1...

Ad pre-clustering - ano, presne tak...pro kazdy cluster jeden SVR model - s tim jsem si jeste nehral, je to trochu narocnejsi, ale mam to v todo listu...

Link to comment
Sdílet pomocí služby

Tak se koukám na ty nové podklady a v postatě by to mělo být následovně. Provedeme nelineární regresi a to tak, že si stanovíme hodnotu epsilon, což je vlastně 1/2 šířky "kanalu" okolo proložené funkce. Následně zjistíme jaké body leží mimo kanál a jejich vzdálenost od bližšího okraje kanálu. Vzdálenosti bodů ležících mimo k hraně kanálu se zprůměrují a vynásobí konstantou C.
No a regrese je formulovaná tak, že počítáme tak dlouho dokud nám všechny body neleží pokud možno v daném kanálu či vzdálenosti od kanálu jsou minimální. Proto se zřejmě epsilon volí předem jako konstanta, aby nedocházelo k nesmyslné regresi tím způsobem, že problém vyřešíme pomocí hodně širokého kanálu. Chtěl jsem se zeptat proč se to celé násobí konstanotou C, neboť to je mi záhadou.

Jinak ještě k tomu pre-shlukování, na jakém TF operujete? Bude po shluknutí dostatek vzorku v jednotlivých shlucích aby bylo na co trénovat? Kolega mi před nedávnem posílal dokument, kde se právě toto řeší pomocí klasifikace aktuálního průběhu řady a to přes SQN což by mělo být něco jako sharpe ratio jen přímo pro řadu. Potom se vlatně řada rozdělí na jednotlivé úseky a trénuje se to na ně, či zjištuje výkon systému pokud na to jdeme přes klasickou TA.







Link to comment
Sdílet pomocí služby

Ten parametr C vlastne udava kompromis mezi komplexnosti modelu a stupnem, do ktereho jsou odchylky mimo ten kanal tolerovany. Vlastne se s nim ridi jak moc ma SVM fitovat trenovaci mnozinu. Moc vysoke C = overfit, nizke C = underfit.
Parametry C i epsilon se musi volit empiricky pro danou ulohu (s vyuzitim validacnich mnozin).

Ad shlukovani - zatim jsem s nim jeste neexperimentoval, takze netusim. Ja budu operovat na TF=4h a TF=1h. Co jsem se dival jak to delaji jinde, tak shluky kde je prilis malo vzorku slucuji dohromady.

Vasi poznamce o SQN nerozumim (pokud SQN znamena system quality number z literatury od Van Tharpa) - jak je to relevantni k casovym radam? Na urceni SQN uz musite mit funkcni obchodni system...

Link to comment
Sdílet pomocí služby

Děkuji za vysvětlení, už mi SVM dává smysl, ale moc mi není jasné jak s jeho pomocí vytvoří predikce.

Dejme tomu, že máme trénovací množinu čistě jen z hodnot dané řady a pomocí 3 vstupních hodnot se snažíme systém naučit predikovat výstup:
...
yt-4, yt-3, yt-2, yt-1
yt-3, yt-2, yt-1, yt

Potom tedy SVM hledá takovou regresi, kde délka kanálu je 4 a hodnoty yt-4 a yt-3 jsou pomyslně na přímce x = 0, hodnoty yt-3 a yt-2 na x=1 atd. na což se snažíme napasovat kanál?


Na to shlukování jsem zvědavej, zkoušel jsem si něco vykutit v matlabu pomocí k-means, ale v podstatě to, že se počet shluků musí volit předem, celou metodu vyřadilo ze hry no a v podstatě pokud by se to nevolilo předem, tak je zase dost možné, že z toho vypadne jen jeden shluk, neboť když se to vykreslí tak je to jen jeden chuchvalec bodů.
Napadlo mě pro tento záměr využít přímo korelaci, kde bychom hledali podobné průběhy s její pomocí.


No s kolegou jsme to SQN pochopili tak, že si řadu pomocí SQN rozdělíme do 5 skupin:
1)Stagnace, 2)up trend, 3)silný up trend, 4)down trend, 5)silný downtrend
No a následně se zjižtuje výkonnost systému v jednotlivých skupinách. Případně by se mohlo zkusit trénovat model právě pro jednotlivé skupiny dle čeho by se mohly upravit i targety.






Link to comment
Sdílet pomocí služby

ad SVM - bohuzel, az tak do detailu jsem to nestudoval, protoze jsem to zatim nepotreboval - spis je dulezite si to prakticky vyzkouset a hrat si s tema parametrama epsilon a C

na shlukovani jsem taky zvedavej, bohuzel to komplexitu celeho systemu zvysuje tak minimalne o rad - porad mam jeste jednodussi napady jak zlepsit vykonnost predikce jinak, tohle bude pro me posledni co mam zatim v planu zkusit

SQN je uplne neco jineho:
www.traderivar.com/2010/03/sqn-trading-system-quality-number.html

Link to comment
Sdílet pomocí služby

Jinak co se toho učení týká, tak mě právě mátlo, že někde řeší to aby body ležely v kanálu a někde zase aby tam neležely. Je to zřejmě tak, že pokud chci aby tam ležely tak řeším pouze regresi určitého průběhu, pokud chci aby tam neležely, tak už řeším právě rozdělení prostoru a tedy učení. Vlatně se ta funkce snaží proplést mezi body v prostoru tak, aby do kanálu spadlo minimum bodů což je vcelku logické a pěkné řešení :)
www.dtreg.com/svm.htm

Link to comment
Sdílet pomocí služby

To co nemusi bezet extra rychle programuju v PHP (to je jazyk ve kterem programuju profesionalne a velmi rychle), SVM implementace je v C++. Ted si hraju s ciste linearni SVM predikci FX paru USDCHF, obdobi zari 2007 az srpen 2009, TF=4h. Data mam rozdelena takto: 6x training set 1000 usecek 6x validation set 150 usecek 6x test set 150 usecek 1x full out-of-sample set 750 usecek Predpovidam linearni regresi 5 usecek dopredu, linearni SVM. Na test setu a out-of-sample set demonstruji equity jednoducheho obchodniho systemu zalozeneho na predikci - system nema zadne parametry, stoploss pocita dle aktualni volatility, risk 1% kapitalu na pozici. Otevira jednu pozici na kazde usecce, pozice konci stoplossem nebo uzavrenim na close ceny za 5 usecek po otevreni (strategie S1 -cervene), srovnani se stejnou strategii ale naivni predikci (zelene).

14327

14328

Link to comment
Sdílet pomocí služby

out-of-sample set a out-of-sample equity out-of-sample test je udelan tak, ze se vezme 5 nejlepsich reseni tech 6 validacnich mnozin a aplikuje se na nasledujicich 750 usecek, SVM se pretrenuje kazdych 150 usecek znova tech 5 SVM vysledku se vzdy zprumeruje takze vyse zmineny jednoduchy obchodni system zalozeny na out-of-sample predikci by za pul roku udelal z jednoho dolaru $2.39 s max DD=32.9% (cervene)...zajimava je prubeh strategie zalozeny na naivni predikci (zelene....naivni predikce znamena nic nepredikuju, vezmu posledni vzorek) samozrejme, tento backtest je pouze orientacni (neni modelovan tick po ticku) na to, ze to je jen linearni a ne moc presna (NMSE>1 neni obecne nic moc) predikce to nevypada spatne samozrejme, jeste musim vyresit tucty problemu a poradne to testovat na vice trzich, vice TF, vice obdobich, etc..., umim si predstavit, kdyz se ta predikce parkrat trefi ve velkem trendu do opaku, tak system utrpi drsne ztraty....musim na tom jeste poradne zamakat, jak na presnosti predikci tak na robustnosti reseni

14331

14332

Link to comment
Sdílet pomocí služby

Děkuji za pěkné ukázky. Moc mi ale není jasné co přesně zaznamenává graf test1. Jinak jestli to chápu správně, tak máte několik trénovacích množin a jdete na to tak, že genetický algo. vám vyhodí kombinaci vstupních proměnných, potom 6 krát trénujete SVM v podstatě na každou množinu, pokud je to pokaždé ok tak to šoupnete někam do seznamu, geneticky algo. znovu vyhodí kombinaci vstupních proměnných a vše se opakuje. Výsledně mrknete do seznamu co vychází nejlépe a to pak sjiždíte na out of sample data?

Jinak výsledky jsou moc pěkné. Nezkoušel jste i jiný target, než je jen poloha ceny v čase yt+5? Třeba dejme tomu něco ve stylu: close>MA(100) and rsi(2) 20pips ?

Co se prog. týka tak vcelku závidím :) mě čeká velký boj, neboť jsem se to rozhodl tvořit v pythonu, no a stím právě začínám...

Link to comment
Sdílet pomocí služby

Je to vlastne walk forward proces, viz www.svms.org/finance/CaoTay2003.pdf, strana 1509, obrazek 2. Takze mam vzdycky train mnozinu, validation mnozinu a test mnozinu....test mnozina slouzi k tomu, abych overil, ze predikcni vykon na ni bude podobny jako na validacni.
Pro potvrzeni mam pak jeste dodatecnou out-of-sample mnozinu uplne mimo.

Jinak je to jak rikate, geneticky optimizer vyplivne SVM parametry, vstupni hodnoty a ruzne nastaveni period indikatoru pro kazdeho jedince v populaci, pro vsechny zminene jedince se natrenuje SVM pro vsech 6 training setu a natrenovany model se pouzije na predikci validacnich mnozin....prumerny vykon na tech validacnich mnozinach se pouzije jako fitness funkce pro ten geneticky algoritmus...necham to vetsinou jet tak 400 - 500 generaci

Vysledkem je vlastne seznam nejlepsich reseni problemu, setrideneho podle fitness funkce. Z tech pak vezmu N reseni (treba 5, nebo taky 50, s tim ruzne experimentuju) a ty aplikuju na out-of-sample mnozinu.

Strategie jine nez vyse zminena jsem zatim nezkousel, ted se chci 100% soustredit na predikcni modely, az budu spokojen a vyzkousim vsechny napady co mam momentalne v hlave, zacnu makat na strategiich. Premyslim taky o ruznych short-term strategiich, ktere budou obchodovat treba na 5min TF a budou predikci pouzivat jako filtr long-only/short only, nebo neco takoveho...

Jinak si myslim, ze python je dobra volba, kdybych nebyl profik v PHP bych spis volil taky jiny jazyk, napriklad prave python....PHP pouzivam jen proto, ze chci nad vlastnim programovanim stravit minimum casu...

Link to comment
Sdílet pomocí služby

Díky za vysvětlení. Jen mě tak napadá, že pokud tedy hledám, nějaké robusní řešení, nebylo by lepší brát do fitness nejhorší výsledek? Průměrný může být vcelku zkreslující...
Předpokládám, že každá množina z těch 6 obsahuje jiný "výsek" 4hodinového grafu cílového trhu. Nebylo by opět lepší v zájmu robusnoti, tam zamixovat různé TF a různé trhy?

Link to comment
Sdílet pomocí služby


×
×
  • Vytvořit...