Jump to content
Co nového? Mé kurzy
Komunita:
Hledat v
  • Více možností...
Najít obsah, který ...
Hledat výsledky v ...
Diskuze Sledované příspěvky Žebříčky

Diskuze k článku: Genetické algoritmy: K čemu jsou pro trading dobré?


Doporučené příspěvky

wolf:
Metoda optimalizace je jedna věc (brute force / genetic / simulated annealing / ...) – rozdíl v jednotlivých metodách je v tom, jestli se prohledává celý stavový prostor (všechny kombinace parametrů) nebo jen část, jak je ošetřeno aby metoda neuvázla v lokálním extrému tj. aby se maximalizovala pravděpodobnost dosažení globálního extrému (gradientní metody + náhodný skok apod.), dále jak je zajištěna rychlost metody (prohledávání pouze potenciálně vhodných oblastí parametrů apod.), jak je zajištěna rychlost a konvergence řešení, numerická stabilita atd. atd.

Druhá věc je optimalizační kritérium – profit faktor, net profit, max drawdowvn, system quality number atd. atd. Tj. to co chceš maximalizovat nebo minimalizovat. Na tom záleží více, než na zvolené optimalizační metodě.

Ty si zadáš množinu parametrů (jejich kombinace tvoří stavový prostor) a optimalizační kritérium (co se má maximalizovat nebo minimalizovat) a optimalizační metoda ti najde v lepším případě globální extrém (maximum nebo minimum), v horším případě nějaký lokální extrém (suboptimální řešení). Na výběru optimalizační metody závisí rychlost prohledání stavového prostoru, pravděpodobnost nalezení globálního extrému, paměťové nároky pro výpočet atd. – každá metodá má své klady i zápory.

To co ty popisuješ je úplně jiná třetí věc , zcela nezávislá na výše popsaném – automatická tvorba obchodního systému (počítačem podporovaný návrh resp. vygenerování AOS). V Ninjatraderu to nejde, tam buď použiješ průvodce při vytváření nové strategie, nebo si to naprogramuješ sám (mnohem větší flexibilita všeho) a výsledkem je kód v Ninjascriptu (založený na C#).

Programy z článku co ti vygenerují kód pro “nejlepší AOS” s “nejlepšími parametry” mají uvnitř přednastavenou množinu vstupních a výstupních pravidel, posuny SL atd. typu: když se skříží A s B nebo když X protne zdola/zhora hodnotu Y a za A, B, X, Y program automaticky dosazuje tebou vybrané indikátory nebo hodnoty a pak je prohání tou optimalizační částí popsanou na začátku. Na konci ti vypadne AOS typu že pro vstup long se má skřížit EMA s periodou 25 a WMA s periodou 11, pro výstup zase třeba CCI 8 přetnout hodnotu 150, nějaký MM atd. a to vše třeba pro timeframe 3 MIN. Na tohle je samozřejmě potřeba hodně času a počítačového výkonu. To dosazování jednotlivých indikátorů a hodnot můžeš ale dělat jakkoliv – brute force nebo GO nebo jakkoliv jinak viz výše.

Tohle automatické generování AOS je ale nejhorší možný způsob, jak přistupovat ke tvorbě obchodního systému – výsledkem bude 100% přeoptimalizovaný, nefunkční systém tj. krásné výsledky v testu a tragické výsledky potom. Když použiješ walk forward, tak ti to v drtivé většině nepomůže a výsledek bude stejný.

Zásadní problém je v přístupu:
Standarní postup je zhruba takovýhle: mám nápad (key idea) > otestuji ho, případně optimalizuji parametry na in-sample vzorku dat > pokud vypadá nadějně, otestuji systém na out of sample vzorku > obchoduji nebo zahodím, ale už nedělám znovu optimalizaci

U walk forward děláš stále dokola periodickou znovu-optimalizaci tj. adaptaci na minulá data z poslední periody. To ti v drtivé většině nepomůže k ziskovému obchodování, protože by trh musel následující periodu mít stejné podstatné charakteristiky (pro tvůj systém) jako v minulé (optimalizační) periodě. Takže navíc přibývá problém jak volit délku vzorku dat pro optimalizaci a pro používání získaných optimálních parametrů. Je to doufání, že když už to nebude s nalezenými parametry fungovat věčně, tak snad to bude fungovat aspoň chvíli (následující obchodní periodu) a pak najdu jiné, pro danou chvíli vhodnější parametry a zase budu doufat a tak pořád dokola.

Jak už jsem řekl, pokud potřebuješ kombinovat 2000 pravidel, indikátorů, parametrů, position sizing algoritmů, časových řad a já nevím čeho všeho, pak je něco špatně tj. chybí ti zásadní ingredience – key idea, pochopení toho co děláš. Taková snaha o naivní datamining nikam nevede.

Některé “úlohy” jsou velmi vhodné pro aplikaci optimalizace nebo dataminingu, zatímco jiné moc vhodné nejsou. Nejde ani tak o volbu optimalizační metody, jako spíš o volbu problému, který chceme optimalizovat. A když už optimalizovat, tak správným způsobem – pro zájemce jsem tu kdysi zmiňoval Aronsonovu knížku, ze které to pochopí každý kdo prolezl střední školu.

Link to comment
Sdílet pomocí služby

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

Nejaktivnější diskutující

Nejaktivnější diskutující

Publikované obrázky

tomnes Napsal:
-------------------------------------------------------
> Snažím se co nejvíce sledovat moderní
> vývoj v této oblasti a proto tvrdím, že dnes je
> třeba dvojí:
>
> 1) buďto vyspělá technologie typu GA,
> 2) nebo velmi jednoduchý a velmi silný nápad,
> prokazující robustnost (takový je skutečně stále
> možné postavit i s jednoduchými nástroji),
> 3) jako nejlepší však vidím kombinaci obojího

Já se přikláním k tomu bodu č. 2. Myslím si, že i bez té vyspělé technologie lze něco takového vymyslet.

Čistě teoreticky. Vymyslím jeden večer nějaký systém, chvilyr si s tím budu hrát, a druhý den to nasadím do trhu a začnu stabilně vydělávat. Někdo jiný vymyslí taky nějaký systém a udělá backtesty, 3 týdny bude optimalizovat měnit paramery, až se mu to povede k cílové představě. Provede WalkForward Optimalizaci na IS + OOS, projede to přes MSA a mnoho dalšího. Vyjede mu z toho po měsíčním testování robustní systém a začně vydělávat. A pak ty systémy někdo provná a zjistí se, že jsou úplně totožné. Proč by se to nemohlo stát? Někdo by řekl, že to je náhoda, která se nemůže stát.

Vycházím totiž z jedné věci, kterou zatím neumím uchopit respektivě pochopit. Když otevřu pozici, tak bud trh půjde se mnou nebo proti mě. Je to 50 na 50 zda vydělám nebo prodělám. Jinak řečeno, mám stejnou šanci vydělat nebo prodělat. Prodělat je velice jednoduché, takže mi z toho vychází, že vydělat by mělo být také jednoduché (když je to 50 na 50), ale ono to jednoduché(??) není. A já pořád nevím proč. Čistě matematicky, když udělám velké množství mechanických obchodů naslepo (například každých 5 minut vstup a po 5 minutých výstup, pět minut pauza a pak znova) tak bych měl být pořád kolem nuly - statisticky. (Já vím že to úplně tak přesné není, že short a long trendy se trochu liší, ale to pro moji myšlenku není podstatné). Takže když mnoho lidí tak snadno prodělá, tak by mělo mnoho lidí také snadno vydělat, a pořád nevím proč to tak není... ??
A proto pořád přemýšlím nad tím, zda je opravdu nutné používat takové "složité" sofistikované systémy.

Heron Napsal:
-------------------------------------------------------
>Optimalizace je jen optimalizace. Pokud na optimalizaci
> potřebujete víc než jen svoji hlavu (nebo kalkulačku),
> tak váš systém za nic nestojí a je přeoptimalizovaný.

Pokud toto bylo myšleno obrazně, tak mám velkou chuť si tuto větu vzít za své.

Link to comment
Sdílet pomocí služby

atari: situace je 50:50 v pripade pohybu o jeden tick - ano, ten se musí stát bud dolu nebo nahoru. tedy pokud je PT 1 tick, tak je to 50:50. samozrejme pro jeden tick chodit nelze. a kdyz uz se na to divame z pohledu dvou ticku, trh uz muze udelat vice variant, tick nahoru, 2 ticky dolu apod.
sance nemuze byt 50:50, kdyby byla tak je to az primitvne jednoduche - stacil by zakladni RRR ktery je vetsi nezli 1:2 a jste v plusu.
trhy delaji moc korekci, zastaveni, ruznych swingu apod., ze tohle mozne neni

jinak s citovanou myslenkou od Herona naprosto souhlasim, osobne mi tento uzivatel hodne pomohl zmenit pohled na trhy

Link to comment
Sdílet pomocí služby

Heron,

1) S key idea souhlasím, součástí workflow by vždy měla být key idea, nikoliv slepé hledání od nikam do nikam.
2) Můžete nějak podpořit tvrzení, že WFO nefunguje? Mé praktické zkušenosti ukazují něco jiného. A ještě jedna připomínka, neoptimalizuje se na posledním OOS okně pro nový běh, bere se OOS + něco z předešlého IS okna.
3) Máte pravdu, že je třeba najít vhodné optimalizační kombo kolik IS a kolik OOS. Proto je součástí mého workflow i optimalizace tohoto komba. Resp. optimalizace je silné slovo, řekněme, že to je poslední kritérium nutné k tomu, abych systém pustil live. Většinou udělám testy cca 6x6 = 36 kombo variant (tj. různých nastavení IS + OOS periody). Pokud drtivá většina z nich produkuje pozitivní výsledky, pak mám robustní systém a finální kombo mohu vybrat jaké chci - samozřejmě vyberu to nejlepší, ale je to vcelku jedno. Pokud funguje jediné kombo, systém zřejmě příliš robustní nebude a do live tradingu nenasadím.
4) Tu knihu jsem přehlédl, můžete prosím svůj tip zopakovat?

Atari,

ano, vymyslet lze, ale nadále monitorovat nikoliv. Jak jsem řekl, i k jednoduché idei potřebujete nějaký rozumný risk-profile, abyste mohl systém rozumě managovat, měl pro něj "mantinely". To bez WF neuděláte. Další věc je, že parametry použité dnes nemusí už fungovat zítra. Stačí se podívat na měnící se volatilitu, SL a PT dnes nemusí už platit za 6 měsíců. Co uděláte pak? Pokusíte se reoptimalizovat parametry. Můžete ale prokázat, že tento přístup je v případě vaší key idea vhodný a funkční? Bez WFO těžko. Takže i k jednoduché idei potřebujete kvalitní nástroje a workflow. Pokud navíc k tomuto workflow použijete GA, můžete vše rapidně urychlit.

Link to comment
Sdílet pomocí služby

zdravim,
a je moznost aosov podla nabidky a poptavky? cize podla rozlozenia pola bid a ask od aktualnej ceny? podla mna indikator nema vypovednu hodnotu, ale rozlozenie nabidky a poptavky to je uz o inom.
este jedna poznamka na zamyslenie - po vstupe do obchodu sa situacia moze radikalne zmenit - tie algoritmy vsuvaju falosne prikazy a po case ich stahuju - ako sa s tymto chce vysporiadat aos?

Link to comment
Sdílet pomocí služby

(tu) dobra debata

deluxe. napisal si dva predpoklady ze pri pomere 1:1 mas pravdepodobnost 50/50 a ze pre 1 tick chodit nieje mozne.

tieto predpoklady myslim niesu spravne , uz len s toho dovodu ze pri PT1 je pravdepodobnost vyssia. zavysi to od okamzitej likvidity . nakoniec dost velka skupina ucastnikov tazi z tejto % vyhody.

priklad

ak mas na priklad na ESku exekuovany LMT prikaz na 1250.25 long. PT nas na 1250,50 tak je % vyplnenia targetu podstatne vyssie ako vyplnenie SL prikaze LMT Sell 1250. navyse je tu moznost uzavretia obchodu na BE. takze pravdepodobnost sa musi rozdelit medzi 3 cenove hladiny z toho vypliva ze to nemoze byt 50-50.

obrovsku ulohu v tomto hra likvidita, ide o rychlost akou je schopny sa prikaz v takomto range vyplnit.

zamerne som vypustil commision. pretoze prave tuto statisticku vyhodu vyuzivaju prave traderi ktori tie commision maju mensie.

Link to comment
Sdílet pomocí služby

ja som sa chcel diskutujucich opytat na podobnu otazku ako marko. len by som ju trochu rozsiril.

ci pri softwaroch spominanych v clanku je moznost kombinovat rozne druhy vstupnych dat. povedzme volume at price, open interest, alebo objem last objednavky, popripade deltu medzi exekuovanymi prikazmi za casovy usek.

uvedomujem si ze to s GA nema vela spolocneho, skor forward test uz aktualneho modelu na realnych datach. len som sa chcel dozvediet ci tam je moznost kombinacie historickej ceny z aktualnymi informaciami ktore trh ponuka.

ked uz je Key idea, jasna, a zadefinovana, ci je moznost pridat urcite indikacie na zistenie aka kombinacia parametrov je vhodnejsia.

deluxe:

mna to napadlo len v kontexte tejto mojej otazky, ale este nebola na skle :).



Link to comment
Sdílet pomocí služby

tomnes:
ad 2) „Můžete nějak podpořit tvrzení, že WFO nefunguje?“
To opravdu nemůžu. Na WFO není v zásadě nic špatného – je to prostě nástroj jako každý jiný, má své výhody oproti jiným nástrojům, ale také své nevýhody. Zcela zásadní problém je ale v tom na co a jak ji aplikujeme. Můžeme si vybrat nevhodný nástroj na řešení našeho problému, nebo si vybrat sice vhodný nástroj, ale používat ho nevhodným způsobem (např. nevhodné nastavení, malý vzorek dat, chybná interpretace výsledků atd. atd.). Jen říkám, že to jakým způsobem většina lidí (nejen na tomhle serveru) postupuje při návrhu, testování a optimalizaci obchodního systému a jakým způsobem přistupují k interpretaci výsledků, je způsob naivní a nevedoucí k požadovaným výsledkům. Výjimky jistě existují.

Pokud jde o detaily ohledně volby velikosti a překrývání IS a OOS – je mi to známo, zabýval jsem se tím docela podrobně cca před 3-4 roky.

Podstatné je jestli přechod od jednoduché klasické optimalizace k periodické re-optimalizaci (WFO) vyřeší váš problém, kvůli kterému je klasická optimalizace pro váš systém nevhodná. Pokud ano, pak je WFO dobrá volba a stačí ji jen korektně použít. Pokud problém oproti klasické jednocestné optimalizaci neodstraní, pak vám WFO nepomůže.

Příklad (jen nástřel): Mám strategiii založenou na nějaké dobré myšlence, ale problém je, že parametry použité ve strategii se udrží ve vhodném rozmezí z nějakého mě známého a logického důvodu jen po dobu cca 1 měsíc +/- 1 týden. Kromě toho musí budoucí hodnota parametrů (OOS perioda) nějakým způsobem záviset na minulých hodnotách parametrů (IS perioda). Pak má smysl měnit parametry (re-optimalizovat) a používat WFO. Pokud se ale parametry této strategie mění ve zcela náhodných intervalech a nezávisí na minulých hodnotách, pak mi WFO asi moc nepomůže.

Záleží na konkrétní strategii, jak a na čem je postavena. Bez znalosti toho nelze říci, že je WFO nevhodná nebo vhodná. WFO je jen jeden ze způsobů, jak se vyrovnávat s nestacionaritou trhu a tím i parametrů systému. Jestli je to dostatečně dobrý způsob, to je otázka. Pro většinu strategií to ale není vhodná volba. To že to vypadá dobře po průchodu WFO ještě nic neznamená, věřte mi. Dobré výsledky ještě automaticky neznamenají roubustní systém. Ba naopak, díky použití WFO si tím nikdy nemůžete být jistý.

Pokud strategie NEMÁ žádné edge, tak přesto může díky (pře)optimalizaci dosahovat hezké výsledky, ale v praxi z dlouhodobého hlediska je to systém prodělávající peníze, byť může libovolnou dobu vykazovat zisky i v live tradingu (díky náhodě). Pokud takový systém budu stále re-optimalizovat, tak ze systému bez edge stejně nikdy optimalizací neudělám systém s edge (nezávisle na hezkých výsledcích, které budou tvořeny jen náhodnou složkou). A pokud naopak mám systém založený na nějakém edge, pak může optimalizace i WFO klidně být užitečná, nebo také může být kontraproduktivní a škodlivá – záleží co a jak se optimalizuje.

Jinak k těm praktickým zkušenostem, jestli vám to funguje tak je to fajn. Znamená to, že buď je váš systém založen na něčem užitečném a má nějaké (quazi)edge (byť to potřebuje čas od času přenastavit parametry), nebo je to jen další fool’s gold, to ukáže teprve čas. Moje AOS například fungují dobře i bez WFO, protože jsou postaveny na věcech, které se v čase nemění, nikoliv na věcech které se stále mění (myšleno na určité úrovni abstrakce).

ad 3) jestli tomu rozumím, tak volba délky a překryvu IS a OOS je ve vašem případě jen další proměnná pro optimalizaci. Ono je to tedy jedno, jestli použijete nějaké doporučované rule-of-thumb, nebo si to vyoptimalizujete. Na principu a užitečnosti WFO to nic nemění. Kde nic není, tam ani WFO nepomůže.

ad 4) David R. Aronson – Evidence-Based Technical Analysis
Vřele doporučuji všem. Povinná četba pro ty, kdo se chtějí vydat cestou mechanických strategií nebo AOS.

Link to comment
Sdílet pomocí služby

Heron,

ad 2) rozumím, díky za odpověď. S nutností edge v základu nezbývá než souhlasit.
ad 3) jak jsem psal, optimalizace je špatné slovo. Je to spíše ověření toho, zda je WFO vhodný nástroj pro mojí strategii.
ad 4) Děkuji, tu knihu mám akorát rozečtenou, netušil jsem, že hovoříte o této knize. Ano, velmi dobré čtení. Nutí člověka přemýšlet o mnoha důležitých aspektech.

Mám ještě pár dotazů:

1) Jak řešíte v případě AOS bez WFO stanovení nějakých parametrů, které by mohly poukazovat na to, že strategie se může blížit ke konci své životnosti? Žádné edge netrvá věčně, vytvoření risk-profile beru jako důležitou a nedílnou součást AOS systémů. Osobně mně věší množství WFO kombinací (různé IS+OOS kombinace) umožňují vytvořit alespoň nějaká vodítka. Samozřejmě, hovoříme o neznámé budoucnosti, takže jsou to "jen" vodítka, ale lepší mít nějaký risk-profile, než žádný. Zajímá mě, jaký přístup případně volíte vy?
2) Jak řešíte DD - stanovujete si nějaký předpoklad hranic DD do budoucna? Např. MonteCarlo, apod? Osobně se domnívám, že jedna z nejtěžších otázek u AOS je umět zodpovědět, kdy AOS vypnout (právě proto, že žádné edge netrvá věčně). V případě stavby systému bez key edge ani nemluvím. Stanovení post-optimalizačního risku chápu jako kriticky důležité.
3) Jak definujete pro své potřeby "edge", tj. předpoklad, že se jedná opravdu o výhodu v trhu a ne chvilkovou anomálii?
4) Jak posuzujete robustnost systému?

Samozřejmě pro své účely definovaná pravidla a postupy pro body 1-4 mám, ale rád se případně nechám inspirovat i dalšími myšlenkami, pokud vám nevadí napsat více.


Link to comment
Sdílet pomocí služby


×
×
  • Vytvořit...