Zpět na seznam článků

Finanční výpočty v prostředí MATLAB (2. díl)

předchozím článku jsme si řekli, proč je MATLAB vhodné prostředí pro finanční výpočty. Jednu informaci jsem minulý týden zapomněl zmínit. Společnost MathWorks byla pro rok 2019 zařazena do kvadrantu vizionářů v magickém kvadrantu pro data science a machine learning platformy. Více informací o tomto zařazení se můžete dočíst na blogu společnosti MathWorks. Magické kvadranty jsou dílem společnosti Gartner, a jak fungují, se můžete dočíst zde. Nyní si podrobněji rozebereme postup finanční analýzy v prostředí MATLAB. Pro Vás, kdo jste zvyklí na interaktivní práci v Excelu a s prostředím MATLAB začínáte, máme také k dispozici webový seminář Analýza dat: Přecházíme z Excelu k prostředí MATLAB.

Finanční výpočty v prostředí MATLAB

Obrázek 1: Finanční Výpočty v prostředí MATLAB

Data

Základem každé analýzy jsou data. Z prostředí MATLAB lze přistupovat k datům v mnoha různých formátech. Z hlediska finančních aplikací je hlavně zajímavý přístup k textovým souborům, tabulkovým formátům (např. Excel spreadsheet), databázím, finančním datovým serverům nebo webovým službám. Data lze do prostředí MATLAB načíst pomocí jednoduchých funkcí nebo interaktivně pomocí nástrojů, jako jsou Import Tool (Obr. 2) pro data ze souborů nebo Database Explorer pro data z databází. Pro automatizaci umožňují tyto nástroje vygenerovat sadu příkazů (skript nebo funkci), kterou pro opakované načítání dat stačí pouze spouštět.

Import Dat

Obrázek 2: Import Dat

Data načtená do prostředí MATLAB vidíme přehledně v okně Workspace. MATLAB má k dispozici množství datových typů. Pro zpracování tabulkových dat je nejvhodnější datový typ table. Ve svých sloupcích umožňuje držet data různých formátů – textová, číselná, datum. Poklikáním na data v okně Workspace si můžeme data prohlížet a interaktivně je upravovat podobně jako v Excelovské tabulce.

Big data

V datové analytice bývá pravidlem, že čím více máme k dispozici dat, tím více mohou být naše analýzy a modely přesné. Chceme-li však zpracovávat příliš velké množství dat, můžeme narazit na jisté problémy. Velikost paměti PC je vždy omezená. K tomu navíc některé programy mají pevně dané omezení na množství dat, s kterým lze naráz pracovat. Řešení těchto problémů spočívá v použití zcela jiných algoritmů, než při zpracování běžně velkých dat. Datům v objemech, pro jejichž zpracování je zapotřebí použití odlišných technik, říkáme „Big Data“.

Práce v prostředí MATLAB se v případě Big Data téměř nezmění. Například paralelní for cyklus, parfor, umožňuje snadnou paralelizaci cyklu. Datové typy Tall Array a Tall Table zase umožňují volat na Big Data ty samé funkce, které voláme na běžná data načtená do paměti. MATLAB také umožňuje provádět výpočty v různých výpočetních prostředích (lokální PC, GPU, cluster, cloud) beze změny napsaného kódu. Více o práci s „Big Data“ naleznete zde.

Zpracování, analýza a vizualizace dat

Poté, co data načteme, potřebujeme v nich získat přehled. Toho dosáhneme pomocí různých způsobů vizualizace. Stejně jako při načítání dat lze při vizualizaci postupovat interaktivně nebo pomocí příkazů.

Grafy

Obrázek 3: Grafy

Na Obrázku 3 je vidět část nabídky vizualizací. Vizualizaci zvolených dat provedeme pouhým kliknutím na požadovaný typ grafu. Sestrojený graf se otevře v okně Figure, kde jej lze dále upravovat (Obr. 4). Můžeme v okně Figure například přidat název grafu, popisky os, legendu, změnit barvy, měřítka os, odstranit či zvýraznit odlehlé hodnoty, prokládat data polynomem atd. Následně graf uložíme nebo exportujeme do různých grafických formátů. Můžeme jej také přímo zkopírovat do Wordu, Excelu či PowerPointu. Chceme-li aplikovat stejnou formu vizualizace na různá data, vygenerujeme opět sadu příkazů a tím celý proces zautomatizujeme.

Nástroje pro přizpůsobení grafů

Obrázek 4: Nástroje pro přizpůsobení grafů

Kromě vizualizací získáváme v datech přehled tvorbou souhrnů, výpočtem statistik a testováním hypotéz. K dispozici jsou standardní metody vizualizace (např. Bollingerova pásma) i výkonnostní metriky (např. Sharpeho poměr). Práci s pravděpodob­nostními rozděleními usnadní grafická aplikace Distribution Fitter.

Ve finančních výpočtech velice často pracujeme s tabulkami, jejichž sloupce jsou časové řady a každý řádek přísluší jednomu časovému okamžiku. Pro zjednodušení práce s takovými daty je v MATLABu k dispozici datový typ timetable. Ten umožňuje mimo jiné snadnou synchronizaci více tabulek dle časové proměnné nebo změnu časového měřítka tabulky.

V této chvíli již víme, jak získat o datech hrubý přehled. Před samotnou analýzou je však téměř vždy zapotřebí data upravit. Předzpracování dat v sobě může zahrnovat detekci odlehlých hodnot, identifikaci chybějících údajů a jejich odstranění nebo nahrazení (např. pomocí interpolace). Obvyklou úpravou časových řad je identifikace trendů a sezónních efektů. Před trénováním modelů strojového učení se často provádí normalizace dat, transformace prediktorů nebo výběr významných prediktorů. K dispozici jsou i specializované funkce pro předzpracování finančních dat, včetně převodů mezi měnami, vymezení výpočtů na pracovní dny či tvorbu burzovních kalendářů.

Funkce pro předzpracování dat mají přirozenou syntaxi a díky úplné a přehledné dokumentaci jsou jednoduše a rychle aplikovatelné. Dokumentace je jedna z velkých předností prostředí MATLAB. Obsahuje příklady, vysvětlení konceptů i návody pro aplikování jednotlivých postupů.

Modelování

Strojové učení

Při tvorbě modelů se díky velkým výpočetním výkonům moderních počítačů čím dál tím více využívá strojové učení. Metod strojového učení je mnoho a dělí se do tří základních kategorií: klasifikace, regrese a shlukování. Každá metoda má své výhody i nevýhody. Některé jsou lépe interpretovatelné a jiné zase bývají přesnější.

Mezi typické úkony strojového učení patří trénování, validace, porovnávání různých modelů, vizualizace jejich výkonnosti a přesnosti nebo výběr a extrakce prediktorů. Často je vhodné výpočty paralelizovat a případně je i přenést na GPU, cluster či cloud. Všechny tyto úkony lze provádět interaktivně díky grafickým nástrojům Classification Learner pro klasifikaci, Regression Learner pro regresi a dalších pro trénování neuronových sítí. Grafické nástroje umožňují přehledné porovnání více natrénovaných modelů.

Natrénovaný model lze použít pro predikci na nových datech. Uvedené grafické nástroje umožňují z natrénovaného modelu generovat sadu příkazů (funkci) a tím proces trénování automatizovat. Mezi významné úkony pro strojové učení patří také optimalizace hyperparametrů, kroková regrese a učení na datech, která se nevejdou do paměti.

Grafický nástroj Regression Learner

Obrázek 5: Grafický nástroj Regression Learner

Ekonometrie

Ekonometrická data reprezentující ekonomický jev, jehož chování nás zajímá, se často vyskytují ve formě časových řad. Po úvodním předzpracování dat identifikujeme různé modely, testujeme splnění předpokladů a odhadujeme parametry modelu. Tyto kroky i s příslušnými vizualizacemi lze provádět interaktivně v grafické aplikaci Econometric Modeler. Econometric Modeler umožňuje exportovat zpracovaná data a identifikované modely, generovat reporty ve formátu PDF, HTML nebo DOCX, a generovat sadu příkazů (funkci) použitelnou pro rutinní nasazení. S využitím nalezeného modelu lze jev reprezentovaný časovou řadou simulovat pomocí metody Monte Carlo nebo predikovat.

Econometric Modeler umožňuje časové řady snadno předzpracovat a modelovat je s využitím ekonometrických modelů, např. ARMA, ARIMA, GARCH, EGARCH nebo GJR. Z dalších oblastí modelování jsou například k dispozici nástroje pro modelování a simulace s použitím stochastických diferenciálních rovnic či Bayesovská lineární regrese. Pro vytváření DSGE modelů se kromě Econometrics Toolboxu často využívají i IRIS nebo Dynare, což jsou toolboxy pro MATLAB vyvíjené jinými výrobci než je společnost MathWorks.

Optimalizace portfolia

Velice snadné rozhraní pro definování i řešení problémů optimalizace portfolia poskytuje objekt Portfolio. Ten podporuje několik typů optimalizací portfolia – Mean-Variance, Conditional Value-At-Risk a Mean-Absolute Deviation.

Uživatel může zavést omezující podmínky a transakční náklady. Odhad efektivního portfolia a jeho vah lze nalézt tak, že maximalizuje Sharpeho poměr. Je možné vizualizovat efektivní hranice a vypočítat rizika portfolia, včetně směrodatné odchylky portfolia, MAD, VaR a CVaR. V případě potřeby jde volit řešič pro optimalizaci portfolia i ladit jeho parametry. Mimo jiné jsou k dispozici vestavěné řešiče pro smíšené celočíselné nelineární programování (MINLP).

Oceňování finančních nástrojů

Prostředí MATLAB zahrnuje funkce pro oceňování, modelování a analýzu portfolií složených z finančních nástrojů s pevným výnosem, úvěrových i kapitálových finančních nástrojů. Zároveň umožňuje tvorbu nových typů finančních nástrojů. K oceňování nástrojů je možné využít diskrétní stochastické modely (např. Binomický model), Monte Carlo simulace nebo celou řadu uzavřených analytických forem řešení (např. Black-Scholes model).

Pro oceňování nástrojů s pevným výnosem, modelování výnosových křivek a analýzy citlivosti státních, podnikových a komunálních dluhopisů jsou k dispozici analytické metody splňující standardy finanční skupiny Securities Industry Association.

Analýza rizika

Z oblasti analýzy rizika MATLAB nabízí nástroje pro matematické modelování a simulace kreditního a tržního rizika. Patří sem mimo jiné nástroje a funkce pro:

Grafický nástroj Binning Explorer

Obrázek 6: Grafický nástroj Binning Explorer

Analýza sentimentu

Prostředí MATLAB poskytuje nástroje pro předzpracování, vizualizaci, analýzu a modelování textových dat. Vytvořené modely mohou být použity k analýze sentimentu.

Obchodování

Prostředí MATLAB má k dispozici i nástroje umožňující přístup k cenám a k zadávání pokynů do obchodovacích systémů.

Nástroje prostředí MATLAB pro efektivní práci

Základním nástrojem prostředí MATLAB pro vývoj programů je MATLAB Editor. Neslouží jen k zápisu kódu. Jeho součástí jsou i vývojové nástroje usnadňující tvorbu efektivních programů. K nejpodstatnějším z nich patří Code Analyzer, Debugger a Profiler.

Code Analyzer provádí automatickou analýzu kódu, aniž by bylo zapotřebí kód spouštět (tzv. statická analýza). Vyznačí chyby i jiná problematická místa a navrhne příslušné změny. Pokud Code Analyzer neodhalí žádnou chybu, nemusí výpočet kódu ještě vracet očekávané výsledky. Chyby, které neodhalí statická analýza, nalezneme nejlépe během postupného procházení a ladění kódu uvnitř debuggovacího režimu. Editor do tohoto režimu přejde vložením řádkových nebo podmíněných breakpointů a spuštěním kódu.

Dalším nástrojem pro vývoj je MATLAB Live Editor. Ten slouží jako alternativa ke klasickému MATLAB Editoru. Výhodou práce v Live Editoru je možnost vkládání formátovaného textu, hypertextových odkazů, obrázků, složitých matematických formulí nebo i interaktivních prvků. Zatímco v Editoru se vytváří skripty, funkce a třídy, v Live Editoru jsou to Live Skripty a Live Funkce. Stejně jako v Editoru je v Live Editoru k dispozici statická analýza i možnost ladění kódu. Uvnitř Live Skriptů se navíc po spuštění zobrazují textové i grafické výstupy výpočtů a může sloužit i jako prostředí pro symbolické výpočty.

MATLAB také podporuje Unit Testing Framework pro ověřování správné funkčnosti dílčích částí kódu.

Je-li doba trvání výpočtu pro nás podstatná, budeme chtít program optimalizovat. Spuštění kódu s nástrojem Profiler vytvoří report s podrobnými informacemi o výpočetním čase stráveném v jednotlivých částech programu. Získáme tak představu o tom, na které části našeho programu má smysl se zaměřit a pokusit se je optimalizovat.

Kromě přímého programování zápisem kódu je v MATLABu běžné využití specializovaných grafických nástrojů. Uživatel nejdříve v interaktivním režimu navrhne svůj model, vyhladí křivku nebo provede jiný dílčí úkol a poté vygeneruje kód, který lze zařadit do vytvářeného programu. Příkladem takových nástrojů aplikovatelných pro finanční modelování jsou:

Efektivní tvorbu programů usnadňuje i bohatá a přehledná dokumentace s četnými příklady, tipy a návody.

Uživatelé, kterým vyhovuje práce v tabulkovém procesoru Excel, mohou snadno MATLAB s Excelem propojit. MATLAB umí nejen data importovat a exportovat do formátu Excelu, ale je možné i vytvořit dynamické propojení těchto dvou programů – funkce MATLABu lze z Excelu spouštět stejným způsobem, jako zabudované funkce programu Excel.

Prostředí MATLAB poskytuje také integraci s verzovacími systémy (např. Git).

Na obrázku vidíme použití nástrojů Debugger, Code Analyzer a Profiler

Obrázek 7: Na obrázku vidíme (zleva) použití nástrojů Debugger, Code Analyzer a Profiler

Vytváření grafických aplikací a sdílení výsledků

Jakmile dokončíme výpočty, analýzy, modelování a testování, budeme chtít dosažené výsledky sdílet s kolegy, regulátory a zákazníky.

Pro kolegy, kteří mají k dispozici MATLAB, lze s pomocí nástroje Live Editor vytvářet tzv. Live Skripty, o kterých jsem se zmiňoval v předchozí kapitole. Live Skript je možné buď přímo sdílet, nebo nejprve exportovat do dokumentů PDF, HTML, LaTeX či MS Word. Lze ho také uložit jako klasický skript.

Dále lze v prostředí MATLAB vytvářet grafické interaktivní aplikace nebo přímo toolboxy s funkcemi, grafickými aplikacemi i vlastní dokumentací, a ty pak sdílet s jinými uživateli prostředí MATLAB. Pro usnadnění návrhu a vývoje grafických aplikací je k dispozici nástroj App Designer (Obr. 8).

App Designer

Obrázek 8: App Designer

Publikování kódu a generování reportů

Typickým způsobem sdílení finančních výpočtů je generování reportů. Prostředí MATLAB má k dispozici nástroje umožňující automaticky generovat reporty ve formátech Microsoft Word, Microsoft PowerPoint, HTML nebo PDF. Můžete využít připravených šablon nebo navrhnout vlastní šablony a vytvářet reporty na základě standardů vyžadovaných organizací či regulátory.

Výpočetní kód včetně výsledků můžeme také automaticky publikovat. Stisknutím tlačítka „Publish“ na panelu nástrojů se vytvoří formátovaný dokument. Podporované formáty výstupních souborů jsou HTML, XML, LaTeX, dokument aplikace Microsoft Word, PowerPoint prezentace nebo PDF.

Sdílení samostatně spustitelných aplikací a nasazení do produkčního prostředí

Programy, modely, či grafické aplikace vytvořené v prostředí MATLAB mohou být distribuovány jako samostatně spustitelné programy nebo komponenty pro integraci s jinými softwarovými prostředími. IT oddělení je může přímo nasadit do desktopových, databázových či webových aplikací, jako jsou Excel, Tableau či podnikové aplikace napsané v jazyce C#, Java®, C/C++ nebo Python. Koncoví uživatelé samostatně spustitelných programů či podnikových aplikací již nepotřebují přistupovat k prostředí MATLAB. Zdrojový kód sdílených aplikací je zašifrován a tedy skrytý před jejich koncovými uživateli.

Všechny výše zmíněné možnosti sdílení jsou proveditelné jak interaktivně, tak pomocí volání příkazů.


Uvedený seznam nástrojů zdaleka není vyčerpávající. Neváhejte nás kontaktovat s jakýmkoliv dotazem ohledně využití prostředí MATLAB v oblasti finančních výpočtů na emailovou adresu support@humusoft.cz.

Vyzkoušejte si nástroje pro finanční výpočty v prostředí MATLAB


Užitečné odkazy

Jan Studnička (HUMUSOFT) , 29.3.2019

Zpět na seznam článků