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 14.9.2004
Řešený problém
Základní pojmy
Algoritmus
Výsledky
Řešený problém
?
Řešený problém
Základní pojmy
Algoritmus
Výsledky
Grafické modely
Už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
Idea: 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ů
Kompletní graf:Graf nebo podgraf je kompletní, pokud je každý jeho vrchol spojen se všemi ostatními vrcholy.
Klika:Klika je množina vrcholů, která indukuje úplný graf, ale která po přidání dalšího vrcholu indukuje graf, který již není kompletní.
Matice sousednosti:Matice sousednosti AG = (aij) grafu G = (V,E) je čtvercová matice definovaná:aij = 1 pokud {vi , vj} E.
aij = 0 jinak.
Základní pojmy
Příklad
4
1 2
3 0 0 1 10 0 1 01 1 0 11 0 1 0
GA
Základní pojmy
Kliky = {1,3,4}, {2,3}
Výpočet varianční matice
Věrohodnostní rovnice pro grafické Gaussovské modelyX1,X2,...,XN 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.).
0ˆ ijd
ˆaa aaK S
Základní pojmy
Testová statistika vhodnosti grafického modelu
DevianceTestová 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
Needs["Statistics`Master`"] Needs["Statistics`MultiDescriptiveStatistics`"]; Needs["DiscreteMath`Combinatorica`"]
Algoritmus
Algoritmus
Načtení programových balíčků
Input dat
Algoritmus
Programový kód
Soubor *.txtTextový 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ů.
Načítací algoritmusstream = OpenRead["…………/data.txt"];n = Read[stream,Number];nazvy = Read[stream, Table[Word, {n + 1}]];data = ReadList[stream, Table[Number, {n + 1}]];Close[stream]
Algoritmus
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]]];
1
tt
t
PrP
Algoritmus
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
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
Probíhá v cyklu po klikách c Stop pravidlo testuje, zda Kc,c = Sc,c
1. K0 = I
2.
a = ac1,...,acm, b = V \ {a}, n = n´ mod m
nba
naaaa
naa
nab
nbbaa
naa
nab
nba
naaaaaan
RRBIRRRBRR
RRBBK
,1
,,1
,,,,1
,,
,1
,,,1
KR
aaaa SB ,,
Algoritmus
Generování Kn+1
nba
naaaa
naa
nab
nbbaa
naa
nab
nba
naaaaaan
KKSIKKKSKK
KKSSK
,1
,,1
,,,,1
,,
,1
,,,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
IdeaPokud vynecháme jednu hranu z kliky, dostaneme 2 kliky, ve jejichž zápisu chybí vždy jeden vrchol z vynechané hrany
Problé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}
4
1 2
3 4
1 2
3
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ýpisvý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) 1992-1995 2000-2003 1992-1995 2000-2003
DJIA 0.80 0.80 0,23 0,49
DJTA 0.80 0.80 0,28 0,22
DJUA 0.46 0.46 0,09 0,41
DAX 0.80 0.46 0,48 0,20
FTSE100 0.46 0.46 0,54 0,58
CAC40 0.46 0.80 0,24 0,13
PX50 xxx 0.80 xxx 0,72
Výsledky
Výsledky
1992-1995
1 – DJIA
2 – DJTA
3 – DJUA
4 – DAX
5 - FTSE100
6 - CAC40
2 1
3 6
54
2000-2003
2 1
3 6
54
Výsledky
Výsledky
1 – DJIA
2 – DJTA
3 – DJUA
4 – DAX
5 - FTSE100
6 - CAC40
7 - PX502000-2003
2 1
3 6
54
7
Výsledky
Otázky
??!?