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

Predikce časových řad


sals3r0

Doporučené příspěvky

fxmagico Napsal:
-------------------------------------------------------
> Zřejmě idální by bylo použít "toolbox" z těchto
> stránek:
> www.csie.ntu.edu.tw/~cjlin/libsvm/

Jo presne LIBSVM pouzivam. I v tom zdrojaku se da celkem vyznat, pridaval jsem do toho jeste ruzne extra kernel funkce, atd...

Ad podklady, precetl jsem si obe ta PDFka, hlavne "A practical guide to SVM classification", nic jinyho jsem nepotreboval...

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

Dobrý den, včerejšek a dnešek jsem strávil s libSVM ale moc jsem se nepohnul. Momentálně jsem na tom tak, že jsem si nainstaloval vyšší verzi pythonu a to 2.7 a libsvm.dll jsem zkopiroval do c:\WINDOWS\system32. Spustit se to pokouším následovně z libsvm 3.0 si zkopiruju svm.py do složky kde mám uloženy skript s modelem a pak se to snažím spustit zcela standardně přes příkazový řádek.

Skript vypadá následovně a okoukal jsem ho zde: read.pudn.com/downloads27/sourcecode/windows/other/85787/libsvm-2.71/python/README__.htm


# PRVNI POKUSNY MODEL S POMOCI LIBSVM

from svm import *

prob = svm_problem([1,-1],[[1,0,1],[-1,0,-1]])
param = svm_parameter(kernel_type = LINEAR, C=10)
m = svm_model(prob,param)
d = m.predict([1,1,1])
print d


error to vrací: TypeError: __init__() got an unexpected keyword argument "kernel_type"

Zkoušel jsem tedy ze skriptu svm.py vykoukat jak to správně zadat, ale žádný pokus mi nefungoval.

Nevíte co s tím prosím.
Honza

Link to comment
Sdílet pomocí služby

honza27: tezko rict, vstupy jsou vesmes technicke indikatory a ruzne transformovane ceny, nejsem si jisty, jestli to z principu s takovymi vstupy lze...o tomto jsem premyslel a mam v hlave jedno mozne reseni, ale to ma spoustu nevyhod, tak na tom budu muset jeste zapracovat

Ad programovaci jazyk - ridici logiku a to co neni rychlostne kriticke pisu v PHP, implementace SVM a zrejme vypocty technickych indikatoru v C++

Link to comment
Sdílet pomocí služby

Tak už mi to konečně jede :-) Finální použití libsvm vypadá nádherně, stručně, jasně a krátce važně paráda plus pan tvůrce je machr, dokonce mi odpověděl na můj stupidní dotaz...

No teď k věci libSVM obsahuje spoustu parametrů, které tam lze měnit, proto jsem si říkal, že by jsme mohli projít jejich seznam a ujasnit si co je důležité a co nikoliv. Případně navrhnout jak hledat optimální nastavení.

Výpis z README:


`svm-train' Usage
=================

Usage: svm-train [options] training_set_file [model_file]
options:
-s svm_type : set type of SVM (default 0)
0 -- C-SVC
1 -- nu-SVC
2 -- one-class SVM
3 -- epsilon-SVR
4 -- nu-SVR
-t kernel_type : set type of kernel function (default 2)
0 -- linear: u'*v
1 -- polynomial: (gamma*u'*v + coef0)^degree
2 -- radial basis function: exp(-gamma*|u-v|^2)
3 -- sigmoid: tanh(gamma*u'*v + coef0)
4 -- precomputed kernel (kernel values in training_set_file)
-d degree : set degree in kernel function (default 3)
-g gamma : set gamma in kernel function (default 1/num_features)
-r coef0 : set coef0 in kernel function (default 0)
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB (default 100)
-e epsilon : set tolerance of termination criterion (default 0.001)
-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)
-b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
-wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)
-v n: n-fold cross validation mode
-q : quiet mode (no outputs)


Vcelku jasné proměnné:
-t kernel_type: prostě jadrové funkce opravdu pěkně vysvětlené je to zde: www.ulozto.cz/6618864/pekne-vysvetleni-svm-cesky-pdf
-e epsilon, -c cost

U zbytku více méně nevím nic, podstatná bude určitě gamma, neboť jsem ji v těch textech potkal vcelku často a také -s svm_type mi leží v hlavě, ale opět netuším co si pod tím představit a kde případně hledat podklady.

Jaké proměnné Vám připadají podstatné? Jak hledáte jejich ideální nastavení?

Přeji pěkný víkend. Honza

Link to comment
Sdílet pomocí služby

Pro zacatek nechte defaultni kernel (RBF). Hledate optimalni nastaveni parametru c, p (pozor, tohle je epsilon pro SVR!) a gamma....ja pouzivam geneticky algoritmus.
Pripadne, muzete nechat nastaveni p na 0.1 a pouzit grid search tool (z baliku libtools) na hledani optimalnich hodnot c a gamma. Ostatni parametry nejsou dulezite...

Link to comment
Sdílet pomocí služby

Moc děkuji. Nezkoušel jste ty dva přístupy porovnat z hlediska, který je rychlejší a jaký najde vhodnější řešení? Jinak jsem přes víkend vykutil první backtest, jedná se o daily TF na QM, kde se snažím predikovat jednu následující hodnotu bez SL výstup MOC. Neprováděl jsem žádný scaling, vstupem je pouze close cena. SVM jsem také neupravoval mám tam defaultní nastavení. Jediný kladný výsledek vrátila kombinace 2 vstupních close cen s horizontem predikce 1 den. Výsledek Accurary = 56% beru jako hodně solidní. Také vlastně vstup 2 předcházejících dnů pro predikci 1 následujícího potvrzuje mé pozorování při stavbě klasických systému pro daily TF a pokud vím, tak i flakac u daily došel ke stejnému nastavení při použití rozhodovacích stromů. (mé výsledky viz. obrázek, jiné parametry než win% jsem zatím nezkoumal) Dále tento týden by mi snad konečně měla přijít kniha o gen. algo. předběžně jsem si pro práci vybral knihovnu pygene, ale uvidím podle toho co si nastuduju, každopádně jsem přemýšlel nad tím jak celý vstup formovat. Jednoduše jestli z toho udělat naprostý mixér s různými indikátory, periodami a počty vstupů, či v tom hledat nějakou logiku a třeba vždy pro všechny vstupy použít stejnou periodu a jeden indikátor, což třeba mě připadá jako méně vyumělkované řešení. Jak k tomuto přistupujete? Ať se daří. Honza

14542

Link to comment
Sdílet pomocí služby

Tak rychlejsi je urcite grid search, ale min presny a grid search je vhodny jen na tva parametry (pripadne treti s velmi malou presnosti).
Ja musim pouzivat GA, protoze optimalizuju jeste vstupy....

Zatim to mam udelany tak, ze mam nekolik skupin, kazda skupina ma definovany pocet hodnot, ktery generuje (s ruznymi periodami a zpozdenimi), kazdy indikator patri do nejake skupiny....GA rozhoduje, ktere indikatory pouzije (1/0) a udava parametry danych skupin + SVM parametry...\

To je jedna moznost....pro DTW rezim to pak mam udelany jeste uplne jinak (pro DTW potrebujete uplne jiny typ dat - lagovane vektory o stejne delce)...ale zatim spis pujdu tou prvni cestou (ne DTW) protoze DTW je silene pomale...

Tady fakt muzete experimentovat ruzne, klidne volit i rozsah period a lagu pro kazdy jednotlivy indikator, ale to se vam hodne zvetsi chromozomy v GA a mozna budete muset mit vetsi velikost populace...

Dalsi moznost je zacit jednoduse jak je zmineno v tom PDF co jsem tu postoval na prvni strance - brat jen transformovane ceny pomoci RDP a jednou EMA-price a zkusit co vyleze :) Tim bych mozna zacal, protoze na to by vam ten grid search stacil...

Link to comment
Sdílet pomocí služby

Moc děkuju za odpověď. Pustil jsem se do plánování, jak bych to celé chtěl mít navržené a tak jsem začal zjišťovat časy iterací aby případné řešení nepolámalo počítač. Trénovaní SVM mi trvá od 1.4379 sekundy (1vstup) do 19.657 sekundy (100vstupů) pro 50 vstupů je to 10.98, takže ten čas roste více méně lineárně.(5000úseček v trénovacím setu, 1200 v testovacím) Dejme tedy tomu, že v průměru jsem na těch 10 sekundách a chci vygenerovat 500populací o 20jedincích a mít 3 trénovací sety => 500*20*3*10=30 000sekund = 8.3hodiny výpočtů což relativně ještě jde. Problém nastává když chci mít zvlášť ještě jeden gen. algo, který zjistí ideální nastavení SVM extra pro každého jednice z prvního gen. algo... což bych chtěl, ale vypadá to, že to bude nerealizovatelné...

Jak jste na tom s výpočetním časem? Po kolika vygenerovaných populacích Vám začíná fitness konvergovat?
Pouštíte trénování SVM na více procesorů?

Mějte se skvěle.
Honza

Link to comment
Sdílet pomocí služby

Ja mam population size 30, nechavam to jet 500 iteraci (populaci)....fitness se vetsinou nejvic zlepsi v prvnich 20-30 populacich, nechavam to jet tech 500 abych mel co nejvic zajimavych vysledku...
Casove to vychazi pod 20h casu na dvouprocesorovem stroji. Mam to udelane tak, ze vzdycky pocita 2 jedince z populace naraz (2 procesy), nicmene nedoresil jsem to, ze casto spocitat jednoho jedince trva mnohem vic casu nez spocitat jineho, s tim jsem nepocital, tak pak mi proste to jedno vlakno visi idle nez dobehne ten druhy jedinec.

Ted to cely predelavam tak, aby to slo maximalne paralelizovat i na vice pocitacich bez plytvani vykonem...

Link to comment
Sdílet pomocí služby

Zdravím Vás!
Jsem rád, že se tu na finančníkovi objevilo takovéhle téma.

V nadcházející době se chystám modelovat range následujícího dne a chtěl jsem se zeptat, zda tu někdo s touto problematikou má zkušenosti. Akademická obec nabízí VECM/ARMA modely nebo modely z ARCH rodiny, nicméně R-kvadrát se spíš ve výjimečných případech přehoupne přes 50%, což je pro trading žalostně málo.

Ad MSE: Na internetu jsem narazil na jeden paper, který do vyhodnocování predikčních modelů na obchodních datech zahrnul vedle MSE a podobných měr i profit nějaké sample strategie. Výsledek byl takový, že vztah mezi kvalitou modelu dle MSE a dle profitu není jednoznačný a model s nejhorším MSE byl snad v jednom případě nejprofitabilnější. Tedy, pokud chcete modelovat něco pro praktické použití v tradingu, je použití MSE apod. diskutabilní.

Mnoho zdaru!

Link to comment
Sdílet pomocí služby


×
×
  • Vytvořit...