Dominik Malý

Junior Software Developer

Game Developer

Programátor

#OpenForWork

Dominik Malý

Junior Software Developer

Game Developer

Programátor

#OpenForWork

RNN LSTM

Jeden neúspěšný pohovor mě zavedl na cestu strojového učení. Korporace, kde jsem byl na pohovoru, používala vizuální vstup k učení rozpoznávání vadných částí součástek. Bylo to velmi inspirativní a chtěl jsem si to také vyzkoušet a něco se naučit.

Nemám ambice stát se expertem na strojové učení. Zajímá mě, jak to celé funguje a co se skrývá za oponou těchto modelů. Rozhodl jsem se vyzkoušet to na tržních datech a zvolil jsem Recurrent Neural Network (RNN) LSTM.

Teď zpětně vidím, jak jsem byl trochu naivní v tom, jak snadno to půjde. V tomto směru existuje tolik proměnných, které mohou způsobit, že model nebude přesný. Neúspěch se však hodnotí podle cíle, a zde cílem není vytvořit perfektní predikční model pro trh, ale něco se naučit.

Tak začalo mé dvouměsíční tažení. Výsledek je na mém GitHubu, jedná se o už třetí verzi. Druhou verzi jsem testoval na LNMarket testnetu. Po dvou dnech a asi 600 obchodech byla úspěšnost modelu 35 % při objemu 2 333 $, ROI -0,06 %, 4 $ na pozici, průměrná páka 6x, a nepočítal jsem poplatky. Postavil jsem kolem modelu samozřejmě také risk management, a celkově model byl pouze částí celého soukolí. Ztráta po dvou dnech nebyla enormní, ale byla to zajímavá zkušenost. Kdybych model nechal běžet déle, úspěšnost by pravděpodobně klesla. Navíc jsem objevil spoustu chyb, které se staly jak během tréninku, tak i během aplikace modelu, včetně nevyladěné strategie, risk managementu a neúplnosti dat ze strany LNMarketu.

Na GitHubu najdete pouze trénink modelu. Nejsem odborník na finanční trhy, spíše hračička, a tak k tomu prosím přistupujte. Navíc poskytnutý kód má spoustu chyb, které v budoucnu možná opravím. V programu je použito více funkcí, které jsou nadbytečné, ale zahrnul jsem je pro studijní účely. Není potřeba používat batche a mít tolik vrstev modelu, ale mám to tam pro budoucí studium, abych zjistil, co dělá co. Model dělá predikce chybně a reálně bude velmi nepřesný, ale pro základní studium fungování a procesu tvorby modelu mi to stačí. Proto sem nedám kód, kde je model aplikován na LNMarket testnetu. Je to riziková a špinavá hra a na trhu je mnoho hráčů, kteří mají nad vámi navrch. A to mě přivádí k poslednímu bodu.

To, co jsem se v průběhu času naučil o strojovém učení, necháme teď stranou. Výpisky si budu ještě pár týdnů dělat. Zaměříme se na to, jestli má vůbec cenu takový model pro trh tvořit. Pokud se do toho tedy chcete pustit, OK, ale neočekávejte zázraky. Vytvořit model, který bude opravdu outperformovat ostatní účastníky trhu, je velmi těžké. Trh se nehýbe pouze na základě historie. Ano, vzory existují, ale dávají pouze představu o tom, kam se asi vydáme dál. Zkrátka, nečekejte zázraky. Trh se mění a model má omezený rozhled. Nevidí přes hranu dat, která mu dodáme. Četl jsem, že pro predikci trendu je takový model fajn, ale není to věčné. Trhy se mění a cena se nevyvíjí čistě na základě historie.

Prokopával jsem se hlouběji a objevoval další možnosti vylepšení modelu, například pomocí multitimeframe a dalších vychytávek. To už by ale bylo moc. Účel byl splněn. Strojové učení jsem si lehce osahal a byla to zábava sledovat, jak si robot vede na testnetu. Určitě bych doporučil komukoli, kdo se chce naučit něco ohledně řízení rizika, strategie, strojového učení a celkově trhů, just try it.

Děkuji za přečtení. 🙂

P.S. Originální kód bych nazval „spaghetti code“. Na GitHubu je upravená uhlazená verze pro větší přehlednost.

Malej

Primární zdroj: YouTube kanál CodeTrading

GitHub: https://github.com/MalejG/Training_RNN_LSTM_studyCode