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

minulé části jsme se zaměřili na přípravu a vizualizaci dat z finančních oblastí. Ukázali jsme si, jak v datech získat základní přehled a předzpracovat je do tvaru vhodného pro aplikaci sofistikovaných analytických metod. V této části se seznámíme s nástroji usnadňujícími návrh, optimalizaci i implementaci finančních výpočtů. Nakonec si ukážeme, jakým způsobem můžeme dosažené výsledky sdílet s kolegy, regulátory nebo zákazníky.

MATLAB poskytuje finančním organizacím prostředí pro efektivní vývoj kvalifikovaných, transparentních, zdokumentovaných a replikovatelných modelů rizika i zátěžových testů. Snadná přizpůsobitelnost modelů umožňuje rychle reagovat na často se měnící regulační podmínky a obchodní prostředí.

Banky, správci aktiv, dohlížecí orgány a pojišťovny využívají MATLAB při implementaci regulačních požadavků (např. Basel III, Solvency II) i v rámci zátěžového testování (např. CCAR a DFAST). MATLAB jim ulehčuje dodržování účetních standardů (např. IFRS 9) a obchodních směrnic (např. MiFID). Dále jej využívají v oblastech tržního rizika, úvěrového rizika, kontroly dodržování předpisů a detekce podvodů.

Například u regulačního standardu Basel III usnadňuje MATLAB plnění těchto běžných úloh:

  • Monte Carlo simulace úvěrového portfolia

  • analýza scénářů a stress testing

  • ekonometrické techniky pro analýzu cyklických jevů

  • modelování aktiv a pasiv

  • paralelní a GPU výpočty

  • automatická tvorba reportů

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.

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.

MATLAB je vyvíjen s ohledem na to, že velká část jeho uživatelů nejsou programátoři, ale inženýři a odborníci ve svých specializovaných doménách. Jazyk MATLABu, přestože se jedná o úplný objektový programovací jazyk 4. generace, je velmi intuitivní. Jeho zápis se blíží tomu, jak bychom algoritmy napsali na papíře.

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 nástroj pak sám vygeneruje sekci kódu, kterou lze zařadit do vytvářeného programu. Příkladem takových nástrojů aplikovatelných pro finanční modelování jsou:

  • Classification Learner a Regression Learner – klasifikace a regrese

  • Binning Explorer – automatická i manuální diskretizace proměnných pro skórovací karty

  • Application Compiler – tvorba samostatně spustitelných aplikací

  • Database Explorer – propojení s databázemi

  • Report Generator – generování reportů

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).

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

Obrázek v plné velikosti

 

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. Live Editor umožňuje kromě příkazů a komentářů vkládat formátovaný text, hypertextové odkazy, obrázky i složité matematické formule. Zobrazuje textové i grafické výstupy výpočtů a slouží jako prostředí pro symbolické výpočty.

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.

Níže uvedené možnosti sdílení již nevyžadují, aby koncoví uživatelé měli přístup k prostředí MATLAB.

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.

Algoritmy a aplikace mohou být distribuovány jako samostatně spustitelné programy, jako komponenty pro integraci s jinými softwarovými prostředími (např. Excel), nebo ve formě přenositelného zdrojového kódu v jazyce C vygenerovaného z algoritmů postavených na podmnožině jazyka MATLABu.

Programy vytvořené v prostředí MATLAB mohou být spouštěny v produkčních systémech. MATLAB má k dispozici nástroje, které zajistí snadné propojení těchto programů s webovými, databázovými či podnikovými aplikacemi pomocí klientské knihovny. Poskytuje také uživatelskou infrastrukturu k jejich správě.

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

Nyní se v krátkosti podíváme na tvorbu modelů:

Modely

Účelem analytických metod využívaných ve finančních výpočtech bývá popsat nebo predikovat pozorovaný jev. Dokumentace zahrnuje popis jejich syntaxe s konkrétními příklady a také potřebnou teorii vysvětlující použité algoritmy.

MATLAB nabízí řadu nástrojů pro předzpracování finančních dat, včetně převodů mezi měnami a mezi různými formáty pro datum a čas. Zahrnuje funkce umožňující vymezení výpočtů na pracovní dny i funkce pro tvorbu burzovních kalendářů.

MATLAB dále obsahuje nástroje pro práci s časovými řadami a pro analýzu finančních dat. K dispozici jsou standardní metody vizualizace (např. Bollingerova pásma), výkonnostní metriky (např. Sharpeho poměr) i funkce pro tvorbu a optimalizaci portfolií nebo odhad kreditního a tržního rizika. Také jsou poskytnuty nástroje pro analýzu a oceňování finančních instrumentů nebo pro modelování a simulace s použitím stochastických diferenciálních rovnic.

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ší.

Typické úkony strojového učení zahrnují trénování, validaci, porovnávání různých modelů, vizualizaci jejich výkonnosti a přesnosti nebo výběr a extrakci 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ů 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.

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

 

Ekonometrie

Ekonomická 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 vhodný model a odhadneme jeho parametry. Dále provedeme simulace jevu reprezentovaného časovou řadou a předpovíme jeho budoucí chování. Jednotlivé kroky jsou podrobněji rozebrány v následujícím odstavci.

K předzpracování časových řad lze využít řadu filtrů nebo vytvořit vlastní filtr pomocí tzv. operátoru zpoždění. Filtry slouží k oddělení trendové, sezónní a náhodné složky. Při identifikaci modelu nejprve provádíme testování hypotéz (např. stacionarity a autokorelace). Následně porovnáváme dle různých kritérii jednotlivé modely. Modely mohou být více typů, od regresních modelů časových řad, přes jednorozměrné ARIMAX/GARCH a mnohorozměrné VAR modely, až po stavově-prostorové modely. Díky nalezenému modelu lze jev reprezentovaný časovou řadou simulovat pomocí metody Monte Carlo nebo predikovat jeho budoucí vývoj.

Optimalizace portfolia

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

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. Mezi ně jsou zahrnuty nástroje a funkce pro:

 


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

Prostředí MATLAB dává také přístup k cenám a zadávání pokynů do obchodovacích systémů. 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…

Pokud vás článek zaujal, můžete si nezávazně vyzkoušet software MATLAB v podobě časově omezené zkušební verze (Trial).

Distributor produktů společnosti MathWorks v České republice a na Slovensku:
HUMUSOFT s. r. o.
http://www.humusoft.cz

humusoft-logo

mathworks-logo

 

Klonování psího miláčka: jak a proč?

Ve střední Evropě máme prvního naklonovaného psa. Aristocrat II Korec Corso se stal mediální hvězdou …

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *