Souvislost amerického a evropských akciových trhů Za pomoci grafických modelů v SW Mathematica Vladislav Chýna Setkání uživatelů systému Mathematica
Řešený problém Základní pojmy Algoritmus Výsledky
Řešený problém ?
Základní pojmy Algoritmus Výsledky
Grafické modely nUžitečný nástroj statistické analýzy –Umožňuje zkoumat struktury podmíněných nezávislostí v souborech proměnných –V poslední době aplikovány rovněž ve financích nIdea: Reprezentovat data pomocí grafu –Vrcholy = proměnné –Chybějící hrana = proměnné jsou podmíněně nezávislé Základní pojmy
Definice z teorie grafů nKompletní graf: Graf nebo podgraf je kompletní, pokud je každý jeho vrchol spojen se všemi ostatními vrcholy. nKlika: Klika je množina vrcholů, která indukuje úplný graf, ale která po přidání dalšího vrcholu indukuje graf, který již není kompletní. nMatice sousednosti: Matice sousednosti A G = (a ij ) grafu G = (V,E) je čtvercová matice definovaná: a ij = 1 pokud {v i, v j } E. a ij = 0 jinak. Základní pojmy
Příklad Základní pojmy Kliky = {1,3,4}, {2,3}
Výpočet varianční matice Věrohodnostní rovnice pro grafické Gaussovské modely X 1,X 2,...,X N náhodný výběr z mnohorozměrného normálního rozdělení N(0,K), kde D = K -1 pokud vrcholy i a j nejsou spojené v grafu G pokud podmnožina a vrcholů v G tvoří kliku. (S znamená výběrovou varianční matici.). Základní pojmy
Testová statistika vhodnosti grafického modelu nDeviance Testová statistika pro testování daného grafického modelu proti modelu s úplným grafem. Má 2 f rozdělení, kde f je počet chybějících hran Základní pojmy
Řešený problém Základní pojmy Algoritmus Výsledky
Algoritmus Načtení programových balíčků Algoritmus
Zdrojový kód nNeeds["Statistics`Master`"] nNeeds["Statistics`MultiDescriptiveStatistics`"]; nNeeds["DiscreteMath`Combinatorica`"] Algoritmus
Načtení programových balíčků Input dat Algoritmus
Programový kód nSoubor *.txt Textový soubor oddělený tabulátory, v prvním řádku musí být uveden počet indexů, v druhém řádku jejich názvy (+ jako první je uveden popisek mesic). Data jsou dále uspořádána do sloupců, z nichž první obsahuje pořadové číslo měsíce (tj. 1,2,...) a další pak kurzy konkrétních indexů. nNačítací algoritmus stream = OpenRead["…………/data.txt"]; n = Read[stream,Number]; nazvy = Read[stream, Table[Word, {n + 1}]]; data = ReadList[stream, Table[Number, {n + 1}]]; Close[stream] Algoritmus
Načtení programových balíčků Input dat Výpočet log. výnosů Algoritmus
Zdrojový kód logvynosy[cena_] := Log[Drop[cena, 1]/Drop[cena, -1]]; data3 = Transpose[Map[logvynosy[#]&, Transpose[data2]]]; Algoritmus
Načtení programových balíčků Input dat Výpočet log. výnosů Test předpokladů Algoritmus
Zdrojový kód pvaluenormal[hodnota_] := (1-CDF[NormalDistribution[0,1],hodnota])*2; pvn = pvaluenormal; testznamenekdiferenci[list_] := Module[{d, k, n}, d = DeleteCases[(Drop[list, 1] - Drop[list, -1]) // N, 0.]; k = Length[Select[d, (# > 0) &]]; n = Length[d] + 1; Abs[k - (n - 1)/2]/Sqrt[(n + 1)/12]]; tzd = testznamenekdiferenci; pvaluetestu = Map[pvn[tzd[#]] &, Transpose[data3]]; vysledkytestu = Transpose[{Drop[nazvy, 1], pvaluetestu // N}]; Algoritmus
Načtení programových balíčků Input dat Výpočet log. výnosů Test předpokladů Začátek iterativní procedury (s kompletním grafem) Algoritmus
Algoritmus – pokrač. Vynechání jedné hrany Reprezentace grafu pomocí klik Výpočet deviance Maticový algoritmus Algoritmus
Maticový algoritmus nProbíhá v cyklu po klikách c nStop pravidlo testuje, zda K c,c = S c,c 1. K 0 = I 2. a = ac 1,...,ac m, b = V \ {a}, n = n´ mod m Algoritmus
Generování K n+1 Algoritmus
Zdrojový kód a = clique[[Mod[iter, Length[clique]] + 1]]; iter = iter + 1; b = Complement[Range[kk], a]; knova[[a, a]] = s[[a, a]]; knova[[a, b]] = s[[a, a]].Inverse[kstara[[a, a]]]. kstara[[a, b]]; knova[[b, a]] = kstara[[b, a]].Inverse[ kstara[[a, a]]].s[[a, a]]; knova[[b, b]] = kstara[[b, b]] - kstara[[b, a]]. Inverse[kstara[[a,a]]]. (IdentityMatrix[Length[a]] - s[[a,a]]. Inverse[kstara[[a, a]]]).s[[a, b]]; kstara = knova; Algoritmus
Algoritmus – pokrač. Nalezení minima Porovnání minima s krit. hodnotou Vynechání jedné hrany Reprezentace grafu pomocí klik Výpočet deviance Maticový algoritmus Menší Vynechání hrany s min. deviancí Procedura novygraf Algoritmus
Procedura novygraf nIdea Pokud vynecháme jednu hranu z kliky, dostaneme 2 kliky, ve jejichž zápisu chybí vždy jeden vrchol z vynechané hrany nProblém –Graf má 2 nebo více klik –Kliky nemají prázdný průnik {1,2,3} {2,3}, {1,3} {1,3,4} {1,3,4} {1,3,4} Algoritmus
Zdrojový kód podmnozina[mnozina_, prvek_] := Module[{vp}, vp = Map[( Intersection[prvek, #]) &, mnozina]; MemberQ[vp, prvek]]; neobsazena[m1_, m2_] := Complement[m2, Select[m2, (submnozina[m1, #]) &]]; novygraf[graf_, hrana_] := Module[{klikys, klikybez, bez1, bez2, bezduplicit}, klikys = Select[graf, MemberQ[#, hrana[[1]]] && MemberQ[#, hrana[[2]]] &]; klikybez = Complement[graf, klikys]; bez1 = DeleteCases[klikys, edge[[1]], 2]; bez2 = DeleteCases[klikys, edge[[2]], 2]; bezduplicit = neobsazena[klikybez, Union[bez1, bez2]]; Union[klikybez, bezduplicit]]; clique = {Range[kk]}; vektorvynechhran = Select[Position[maticesousednosti, 0], (#[[1]] > #[[2]]) &]; Map[(clique = novygraf[clique, vektorvynechhran [[#]]]) &, Range[Length[vektorvynechhran]]]; Algoritmus
Algoritmus – pokrač. Nalezení minima Porovnání minima s krit. hodnotou Vynechání jedné hrany Reprezentace grafu pomocí klik Výpočet deviance Maticový algoritmus Menší Vynechání hrany s min. deviancí Procedura novygraf Výpis výsledků Větší Algoritmus
Výpis výsledků – vykreslení grafu ShowLabeledGraph[ g = MakeGraph[ Range[kk], (MemberQ[ Position[maticesouslednosti + Transpose[maticesouslednosti], 1], {#1, #2}]) &]]; Algoritmus
Řešený problém Základní pojmy Algoritmus Výsledky
Zvolené indexy DJIA DJTA DJUA DAX FTSE100 CAC40 Výsledky
Testy předpokladů Index Test založený na znamenkách diferencí (p-value) Shapiro-Wilk test (p-value) DJIA0.80 0,230,49 DJTA0.80 0,280,22 DJUA0.46 0,090,41 DAX ,480,20 FTSE ,540,58 CAC ,240,13 PX50xxx0.80xxx0,72 Výsledky
– DJIA 2 – DJTA 3 – DJUA 4 – DAX 5 - FTSE CAC Výsledky
1 – DJIA 2 – DJTA 3 – DJUA 4 – DAX 5 - FTSE CAC PX Výsledky
Otázky ? ?!?