Sběr dat – extrakce, transformace, načítání
Pro každé systémové rozhodnutí, včetně modelů strojového učení, je důležité mít k dispozici bohatý a komplexní soubor dat. Jen tak lze vytvořit robustní a výkonný model s požadovaným výkonem. V opačném případě by vývojář čelil takzvanému GIGO efektu (garbage in – garbage out). Jedná se o výraz, který říká, že nekvalitní vstupní data poskytují nekvalitní výstupy. Přestože existuje několik datových platforem automatizujících celý proces ETL (extrakce, transformace, načítání), někdy tato řešení mohu být zbytečně komplikovaná nebo předpřipravená řešení nemusí vyhovovat vašim konkrétním potřebám.
Než začnete trénovat nebo dokonce spustíte svůj model, musíte shromáždit všechna potřebná data a dynamicky aktualizovat datové uložiště. K dosažení tohoto cíle je nutné vytvořit pomocnou aplikaci, která vše výše uvedené spravuje.
Protože se zabýváme finančními daty, naším problémem nebylo jen získávání, transformace a nahrávání dat. Existuje velké množství finančních ukazatelů a specifických údajů o firmě, které spolu mohou souviset. Všechny tyto poměrové ukazatele je třeba udržovat ve správném časovém pořadí. Abychom to zvládli, navrhli jsme několik účelových objektů, které mají na starosti:
- dotazování přístupných rozhraní API s finančními údaji
- zpracování a transformaci získaných dat
- ukládání zpracovaných dat do datového uložiště
Dotazování přístupných rozhraní API je jednou denně naplánovaný proces zaměřený na sběr všech dostupných dat, která můžeme najít, včetně dat Yahoo Finance. Proces běží na virtuálním privátním serveru, který je spolehlivým řešením za rozumnou cenu. Pro zpracování a transformaci dat jsme navrhli speciální transformátor, který spojuje požadované datové sady z různých zdrojů dohromady a spojuje je. Získáváme tak datové sady s dlouhou historií a minimem chybějících čísel. Dále zpracovatel vypočítá požadované poměry, které v původním zdroji dat chyběly.
Podívejme se na příklad: uvažujeme-li „poměr ceny k peněžním tokům“ jako potenciálně dobrou funkci přinášející informace o solventnosti a likviditě podniku, můžeme tuto funkci navrhnout se známými údaji z původního zdroje dat. Konkrétně lze k výpočtu poměru P/CF použít „provozní peněžní tok na akcii“ a „aktuální tržní hodnotu na akcii (cenu)“.
Poměr ceny a peněžního toku = cena akcie/provozní peněžní tok na akcii.
Těchto finančních ukazatelů je v tomto fundamentálním procesoru vypočteno několik desítek pro více než 3 000 akcií kótovaných na burze v USA. Porovnání dílčích a relativních hodnot zvyšuje hodnotu souboru dat.
Po dokončení všech těchto úloh transformátor převede data do souborů a nahraje je zpět do datového skladu, kde jsou datové sady připraveny k nahrání vývojáři strojového učení.
Závěrem lze říci, že dobrý model strojového učení potřebuje bohaté a rozsáhlé datové sady; v opačném případě není konečný výstup schopen přinést přidanou hodnotu extrahováním užitečných informací a celkový výkon je nestandardní. Aby bylo možné automaticky aktualizovat historické časové řady, je třeba připravit aplikaci, která shromažďuje všechna potřebná data a transformuje vlastní finanční ukazatele tak, aby z datových sad vytěžila co nejvíce. Teprve pak jste schopni navrhnout model strojového učení s přiměřeným výkonem.
Výsledky výzkumu a vývoje jsou využívány například v naší aplikaci StockPicking Lab, která každý den hledá podhodnocené a nadhodnocené akcie.