Streszczenie

Celem niniejszego raportu jest zbudowanie i analiza równoważonego portfela inwestycyjnego. W pracy do zbudowania portfela, użylismy niestandardowego podejścia, a mianowicie macierzy BCG, która zazwyczaj służy do analizy portfela produktów. Spowodowalo to, ze portfel sklada sie z akcji zarówno spólek doskonale wszystkim znanych, tj. Orange, czy Pekao; ale takze małych i innowacyjnych, jak CD_Project, czy Braster. W analizie powstalego w ten sposób portfela inwestycyjnego przeprowadzilismy oszacowania funkcji warunkowej wariancji za pomoca modeli klasy GARCH (uzyto standardowego modelu GARCH, jak tez EGARCH i GJGARCH) oraz wartosci narazonej na ryzyko w okresach in-sample oraz out-of-sample. Ostatnim elementem badania byla analiza wrazliwosci dla najlepiej dopasowanego modelu.

Metoda Macierzy Boston-Consulting-Group

W niniejszym projekcie wykorzystano stosunkowo nietypowe podejscie do zagadnienia budowania portfela inwestycyjnego, poniewaz postanowilismy posluzyc sie macierza Boston Consulting Group. Macierz BCG jest zazwyczaj uzywana do analizy portfela produktów, jednak po pewnych modyfikacjach mozna poczynic próby wykorzystania jej w dywersyfikacji portfela inwestycyjnego. Istota macierzy BCG polega na podziale produktów (zas w niniejszym projekcie wybranych instrumentów) na cztery grupy: dojne krowy, gwiazdy, znaki zapytania i psy. W przyblizeniu udzial poszczególnych grup w calym portfelu powinien wynosic: 40-50% dla dojnych krów, 30% dla gwiazd, 10%-20% dla znaków zapytania oraz maksymalnie do 10% dla psów. Poszczególne kategorie w odniesieniu do spólek i ich notowan powinny charakteryzowac sie nastepujacymi charakterystykami:

  1. Dojne krowy – odznaczaja sie niskim tempem wzrostu, jednak bardzo duzym udzialem w rynku. Czesto sluza one do pozyskiwania srodków finansowych w celu poczynienia inwestycji w bardziej ryzykowne aktywa. Czesc ze spólek charakteryzuje sie wyplata dywidendy.

  2. Gwiazdy – charakteryzuja sie bardzo duzymi perspektywami rozwoju, ale takze stosunkowo wysokimi nakladami inwestycyjnymi, przede wszystkim na rozwój. Inwestorzy nie moga spodziewac sie raczej wyplaty dywidend, jednak moga oczekiwac bardzo wysokich zysków w przyszlosci poprzez zwiekszenie wartosci spólki.

  3. Znaki zapytania – spólki o malym udziale w sektorze, jednak bardzo perspektywiczne; dzialajace na rynku charakteryzujacym sie duzym wzrostem.

  4. Psy – spólki cechujace sie powolnym wzrostem i niskim tempem rozwoju. Zazwyczaj wystepuja w portfelu z powodu blednie przeprowadzonej wczesniejszej analizy i identyfikacji spólek.

Wybrane spólki

Aby omówic dobór instrumentów, którego dokonalismy, wpierw musielismy zamportowac wszelkie niezbedne dla nas pakiety. W tym wypadku byly to:

library("fBasics") 
library("tseries")
library("car") 
library("FinTS")
library("fGarch") 
library("rugarch") 

Do naszego modelu wybralismy 6 aktywów. Byl to kurs zlota wyrazony w PLN oraz notowania 5 spólek, dobranych zgodnie z zasada z poprzedniego rozdzialu. Byly to kursy akcji CDA Project S.A., Braster, 11bit Studio, Orange S.A., Pekao S.A.. Dla wymienionych aktywów wzielismy pod uwage jedynie ceny zamkniecia, aby na ich podstawie pózniej wyznaczyc logarytmiczne stopu zwrotów. Uzylismy ponizszej procedury, aby pobrac odpowiednie dane dla spólki Orange S.A, a takze pozostalych aktywów,

url_orange <- "http://stooq.com/q/d/l/?s=opl"
orange <- read.csv(url_orange,header = TRUE,
                   sep = ",", dec = ".", stringsAsFactors = F)

a takze od razu ograniczyc je do potrzebnych nam wartosci, tworzac przy okazji szereg stopy zwrotu dla kazdego z aktywów.

orange$Date <- as.Date(orange$Date)                       
orange <- orange[, c("Date", "Close")]                    
colnames(orange) <- c("Data", "orange")                     
orange$rorange <- diff.xts(log(orange$orange))

Przedzial czasowy uwzgledniony przez nas to okres 18-stu miesiecy, od 1 stycznia 2016 roku do 30 czerwca 2017 roku. Wybór takiego przedzialu czasu byl podyktowany wczesniejsza analiza sytuacji finansowej przede wszystkim gwiazd i znaków zapytania, które w znacznej mierze dopiero w latach 2016 - 2017 zaczynaly wchodzic w faze wzrostu; a wiec mogly byc utozsamiane z wyzej wymienionymi grupami. Z drugiej jednak strony inwestycje w zloto analizowane w aspekcie dojnej krowy powinny charakteryzowac sie stosunkowo dlugim horyzontem czasowym, co spowodowalo, iz analizowane dane nie powinny pochodzic z okresu krótszego niz rok.

s_date <- "2016-01-01"
f_date <- "2017-06-30"

Nastepne ograniczylismy kazdy z tych szeregów, do wyzej wyznaczonych dat, tak aby kazdy cechowal sie ta sama iloscia obserwacji.

orange <- orange[orange$Date <= as.Date(f_date), ] 
orange <- orange[orange$Date > as.Date(s_date), ]

Taki dobór przedzialu czasowego pozwolil nam na skuteczne ujecie w zgodzie z teoretyczna zasada BCG, róznego rodzaju spólek/aktywów, które w naszym portfelu pelnily konkretne role. Sposród szczesciu aktywów, trzy z nich pelnily role “Dojnych Krów”, dwie wybralismy jako “Supergwiazdy”, jedna zas stanowila “Znak Zapytania”. Podzial, którego dokonalismy prezentuje sie nastepujaco:

  1. dojne krowy: 1) akcje Pekao, 2) akcje Orange oraz 3) inwestycje w zloto.

Aktywa Pekao i Orange charakteryzuja sie jednymi z najwyzszych wyplacanych dywidend, zloto zas to inwestycja dlugoterminowa jest czasem okreslana wrecz jako „bezpieczna przystan”, szczególnie w czasach spadków notowan czy kryzysów.

  1. gwiazdy: 1) akcje 11 bit studio SA oraz 2) akcje CD_Project.

11 bit studio SA jest deweloperem gier wideo i od wydania gry “This War of Mine”" jedna z gwiazd GPW. CD Project takze zajmuje sie grami – dziala w rozwijajacej sie obecnie dynamicznie branzy elektronicznej rozrywki – gier video (studio nalezace do spólki znane jest jako twórca gry Wiedzmin). Powoduje to, ze obie spólki moga byc analizowane w niniejszym projekcie jako gwiazdy.

  1. znaki zapytania: 1) akcje Braster.

Spólka zajmuje sie badaniami dotyczacymi zastosowania cieklych krysztalów w diagnostyce raka, a takze próbami komercjalizacji stworzonego przez nia urzadzenia sluzacego do domowego badania piersi.

Sumarycznie dojne krowy stanowia 50% portfela, gwiazdy 33%, zas znaki zapytania 17%. Ponizsze wykresy prezentuja wahania cen zamkniecia na GPW w badanym okresie czasu.

Orange 4

PEKAO 5

ZLOTO 6

CDA PROJECT 3

11BIT STUDIO 2

BRASTER7

Budowa Portfela

Zgodnie z tym co wczesniej opisalisy nasz model skladal sie bedzie z 6 wskazanych wczesniej aktywów gieldowych uwzgledniajacych ceny zamkniecia, z których otrzymamy logarytmiczne stopu zwrotu dla kazdego z tych insrumentów. Aby otrzymac zrównowazony portfel polaczylismy wpierw wybrane przez nas dane do wspólnej tablicy dodajac do niej od razu numer obserwacji.

mer1<-merge(bit,bra, by="Data")
mer2<-merge(mer1,cda, by="Data")
mer3<-merge(mer2,orange, by="Data")
mer4<-merge(mer3,pekao, by="Data") 
tab<-merge(mer4,zloto, by="Data")

tab$obs<-1:length(tab$bit)

Na jej podstawie zbudowalismy w kolejnym kroku portfel, w którym kazde z aktywów liczone jest taka z sama waga, tworzac portfel zrównowazony. Zastowalismy nastepujaca formule:

tab$r<-((tab$rbit+tab$rbra+tab$rpekao+tab$rorange+tab$rzloto+tab$rcda)/6)

Wyorzystujac funkcje:

basicStats(tab$r)

mozemy uzyskac podstawowe dane opisowe o tak zbudowanym portfelu. Minalna wartosc stopy zwrotu dla naszych danych wyniosla -0.0297, zas najwieksza wartoscia bylo 0.53. Srednia tego rozkladu wyniosla 0.001, a mediana 0.000597. Obie te wartosci choc niewielkie, sa wieksze od 0. Kurtoza równa sie 1.34, co odbiega od typowej wartosci 3 dla rozkladu normalnego.

Ponizej prezentujemy wykres dziennych stóp zwrotu z portfela. 8

W celu zbadania normalnosci rozkladu wygenerowalismy takze histogram naszych stóp z nalozona na niego gestoscia rozkladu normalnego. 9

Korzystajac nastepnie ze statystyki testowej Jarque-Bery, mozemy jednoznacznie odrzucic hipoteze o normalnosci rozkladu stóp zwrotu.

jarque.bera.test(na.omit(tab$r))

    Jarque Bera Test

data:  na.omit(tab$r)
X-squared = 45.408, df = 2, p-value = 1.38e-10

Nastepnie wykonalismy testy funkcyjne na badanie autokorelacji w portfelu ze wzgledu ma istotne opóznienia. Jak pokazane jest ponizej, w modelu nie wystepuja istotne opóznienia,co potwierdza takze test Durbina-Watsona. 10

acf(tab$r, lag.max = 18, na.action = na.pass,
    ylim = c(-0.15, 0.15), 
    col = "blue3", lwd = 6,
    main = "ACF st?p zwrotu z portfolio")

Wykres ACF dla kwadratów zwrotów wskazuje na wystepowanie istotnego drugiego opóznienia. 11

acf(tab$r^2, lag.max = 18, na.action = na.pass,
    ylim = c(-0.15, 0.15), 
    col = "blue3", lwd = 6,
    main = "ACF kwadrat?w st?p zwrotu z portfolio")

Z wykorzystaniem statystyki testowej Durbina-Watsona nie mozemy stwierdzic wystepowania istotnych opóznien dla poziomu istotnosci 5% dla opóznien w modelu.

durbinWatsonTest(lm(formula = tab$r ~ 1),max.lag = 5)
 lag Autocorrelation D-W Statistic p-value
   1      0.03438814      1.927655   0.460
   2      0.04108488      1.892988   0.296
   3     -0.03530054      2.041797   0.662
   4     -0.09238377      2.153990   0.090
   5     -0.07435487      2.105132   0.212
 Alternative hypothesis: rho[lag] != 0

Ten sam test dla kwadratów reszt wychodzi juz jednak korzystniej:

durbinWatsonTest(lm(formula = tab$r^2 ~ 1),max.lag = 5)
 lag Autocorrelation D-W Statistic p-value
   1     0.006147089      1.987403   0.798
   2     0.131001267      1.706515   0.020
   3    -0.028735301      2.025186   0.844
   4     0.014025149      1.938763   0.542
   5    -0.050213318      2.057274   0.496
 Alternative hypothesis: rho[lag] != 0

Zauwazamy, zatem istotnosc drugiego opóznienia dla kwadratów reszt, co oznacza, ze mozemy odrzucic H0 o braku autokorelacji dla pierwszych 5 opóznien. Co potwierdza tylko wnioski, które moglismy wyciagnac ze wczesniejszych korelogramów. Nastepnie przeprowadzamy test na wystepowanie efektów ARCH wsród stóp zwrotów. Niestety wyniki wskazuja jednoznacznie, ze nie mozemy odrzucic hipotezy zerowej o braku wystepowania efektów ARCH.

ArchTest(tab$r, lags = 5)

    ARCH LM-test; Null hypothesis: no ARCH effects

data:  tab$r
Chi-squared = 8.4813, df = 5, p-value = 0.1316

Wybór Modelu

W poszukiwaniu najodpowiedniejszej formy modelu, zaglebimy sie w klase modeli Garch(p,q). Wywodza sie one z klasy Arch(q). Zastosowanie jednak wersji w tej wlasnie postaci czesto wiaze sie z przjmowaniem duzych opóznien, co powoduje, ze zmuszeni jestesmy estymowac nierzadko bardzo duza liczbe parametrów. Poniewaz nie jest to rzecz pozadana, wprowadzamy model uogólnionej metody autoregresyjnej heteroskedastycznosci warunkoej - Garch. W naszym Badaniu zajmiemy sie wiec analiza modelu Garch, Egarch oraz GJGarach.

Na pierwszy model bierzemy klase modeli Garch. Sa to modele, które dopuszczaja aby wartosci warunkowej wariancji zalezaly takze od swoich wlasnych opóznien. Zaczniemy od sprawdzenie modelu GARCH(1,1)

spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
                   mean.model = list(armaOrder = c(0, 0), include.mean = T),
                   distribution.model = "norm")
garch1.1 <- ugarchfit(spec = spec, data = na.omit(tab$r))
garch1.1
*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model  : ARFIMA(0,0,0)
Distribution    : norm 

Optimal Parameters
------------------------------------
        Estimate  Std. Error    t value Pr(>|t|)
mu      0.001129    0.000568    1.98873 0.046731
omega   0.000000    0.000000    0.75492 0.450298
alpha1  0.000317    0.000546    0.58120 0.561109
beta1   0.997094    0.000260 3829.66242 0.000000

Robust Standard Errors:
        Estimate  Std. Error    t value Pr(>|t|)
mu      0.001129    0.000540   2.091481 0.036485
omega   0.000000    0.000004   0.078558 0.937384
alpha1  0.000317    0.006402   0.049579 0.960458
beta1   0.997094    0.004138 240.937155 0.000000

LogLikelihood : 1154.551 

Information Criteria
------------------------------------
                    
Akaike       -6.1692
Bayes        -6.1271
Shibata      -6.1694
Hannan-Quinn -6.1525

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.4235  0.5152
Lag[2*(p+q)+(p+q)-1][2]    0.7610  0.5827
Lag[4*(p+q)+(p+q)-1][5]    2.9588  0.4146
d.o.f=0
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                    0.04434  0.8332
Lag[2*(p+q)+(p+q)-1][5]   4.93094  0.1587
Lag[4*(p+q)+(p+q)-1][9]   6.43205  0.2516
d.o.f=2

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[3]    0.4585 0.500 2.000  0.4983
ARCH Lag[5]    0.8669 1.440 1.667  0.7728
ARCH Lag[7]    1.0195 2.315 1.543  0.9104

Nyblom stability test
------------------------------------
Joint Statistic:  89.298
Individual Statistics:               
mu      0.05718
omega  16.36172
alpha1  0.08453
beta1   0.09955

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:         1.07 1.24 1.6
Individual Statistic:    0.35 0.47 0.75

Sign Bias Test
------------------------------------
                   t-value   prob sig
Sign Bias           1.4495 0.1480    
Negative Sign Bias  0.6023 0.5474    
Positive Sign Bias  0.7419 0.4586    
Joint Effect        2.2070 0.5306    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     21.91      0.28895
2    30     40.49      0.07631
3    40     52.63      0.07123
4    50     57.97      0.17825


Elapsed time : 0.0896039 

Suma parametrów w modelu jest mniejsza o 1. Wszystkie parametry sa dodatnie, jednak tylko Beta1, zdaje sie byc istotna w modelu (p-value-0.000). Na podstawie testu Ljunga-Boxa dla kwadratów wystandaryzowanych reszt, nie mamy podstaw do odrzucenia hipotezy, ze kwadraty wystandaryzowanych reszt sa bialym szumem. P-value dla testu LM ARCH wskazuje nam na brak podstaw od odrzucenia hipotezy zerowej o braku efektów ARCH wsród reszt modelu. Wartosc AIC dla tego modelu to -6.1692.

Nastepnie sprawdzilismy model GARCH(1,2)

spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 2)),
                   mean.model = list(armaOrder = c(0, 0), include.mean = T),
                   distribution.model = "norm")
garch1.2 <- ugarchfit(spec = spec, data = na.omit(tab$r))
garch1.2
*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : sGARCH(1,2)
Mean Model  : ARFIMA(0,0,0)
Distribution    : norm 

Optimal Parameters
------------------------------------
        Estimate  Std. Error    t value Pr(>|t|)
mu      0.001043    0.000567 1.8411e+00 0.065612
omega   0.000000    0.000001 1.0580e-01 0.915743
alpha1  0.000000    0.000154 2.4900e-04 0.999801
beta1   0.029005    0.000031 9.4650e+02 0.000000
beta2   0.969995    0.000058 1.6676e+04 0.000000

Robust Standard Errors:
        Estimate  Std. Error    t value Pr(>|t|)
mu      0.001043    0.000551 1.8943e+00 0.058185
omega   0.000000    0.000010 7.7400e-03 0.993825
alpha1  0.000000    0.001073 3.6000e-05 0.999971
beta1   0.029005    0.000820 3.5360e+01 0.000000
beta2   0.969995    0.000800 1.2129e+03 0.000000

LogLikelihood : 1154.681 

Information Criteria
------------------------------------
                    
Akaike       -6.1645
Bayes        -6.1119
Shibata      -6.1649
Hannan-Quinn -6.1436

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.4112  0.5214
Lag[2*(p+q)+(p+q)-1][2]    0.7564  0.5845
Lag[4*(p+q)+(p+q)-1][5]    2.9686  0.4128
d.o.f=0
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                         statistic p-value
Lag[1]                     0.04217  0.8373
Lag[2*(p+q)+(p+q)-1][8]    6.14340  0.2211
Lag[4*(p+q)+(p+q)-1][14]   8.81635  0.2984
d.o.f=3

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[4]   0.06078 0.500 2.000  0.8053
ARCH Lag[6]   0.64962 1.461 1.711  0.8494
ARCH Lag[8]   1.92677 2.368 1.583  0.7563

Nyblom stability test
------------------------------------
Joint Statistic:  14.6559
Individual Statistics:               
mu      0.07545
omega  24.75807
alpha1  0.09837
beta1   0.11938
beta2   0.11938

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:         1.28 1.47 1.88
Individual Statistic:    0.35 0.47 0.75

Sign Bias Test
------------------------------------
                   t-value   prob sig
Sign Bias           1.4486 0.1483    
Negative Sign Bias  0.5935 0.5532    
Positive Sign Bias  0.7465 0.4558    
Joint Effect        2.2046 0.5310    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     22.01      0.28359
2    30     36.30      0.16490
3    40     56.06      0.03764
4    50     57.43      0.19119


Elapsed time : 0.1101999 

W modelu tym, podobnie jak w modelu dla parametrów (1,1) nieistotne okazaly sie byc parametry stalej oraz alpha. Wartosc AIC to -6.1645 co sugeruje, ze jest on nieznacznie gorszy od poprzedniego (wieksza wartosc AIC), pomimo iz równiez dla niego nie mamy podstaw do odrzucenia hipotezy o braku efektów typu Arch w modelu.

Uzyskalismy podobne wnioski równiez w przypadku modelu GARCH(2,2). Na podstawie kryteriów informacyjnych takze nie mozna byllo go uznac za model lepszy od GARCH (1,1) Takze wykorzystanie przez nas modelu GARCH(2,1) nie wywolalo, zadnej róznicy w stosunku do poprzednich modeli.

W kolejnej fazie zwrócilismy sie w strone sprawdzenia modeli EGARCH, zwiazanych z symulowaniem efektu dzwigni i modelowaniem logarytmu wariancji. W tym przypadku oszacowania parametrów nie musza byc dodatnie. Zaczelismy od modelu EGARCH(1,1).

spec = ugarchspec(variance.model = list(model ="eGARCH",
                                        garchOrder = c(1, 1)),
                  mean.model = list(armaOrder = c(0, 0), include.mean = F),
                  distribution.model = "norm")
egarch1.1 <- ugarchfit( spec = spec, data = na.omit(tab$r))
egarch1.1
*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : eGARCH(1,1)
Mean Model  : ARFIMA(0,0,0)
Distribution    : norm 

Optimal Parameters
------------------------------------
        Estimate  Std. Error  t value Pr(>|t|)
omega  -3.688485    2.410057 -1.53046 0.125904
alpha1  0.028886    0.067848  0.42574 0.670300
beta1   0.591712    0.266774  2.21802 0.026553
gamma1  0.123224    0.109390  1.12647 0.259968

Robust Standard Errors:
        Estimate  Std. Error  t value Pr(>|t|)
omega  -3.688485    1.593943 -2.31406 0.020664
alpha1  0.028886    0.084718  0.34096 0.733134
beta1   0.591712    0.177022  3.34259 0.000830
gamma1  0.123224    0.092060  1.33852 0.180726

LogLikelihood : 1153.909 

Information Criteria
------------------------------------
                    
Akaike       -6.1657
Bayes        -6.1237
Shibata      -6.1660
Hannan-Quinn -6.1490

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.6277  0.4282
Lag[2*(p+q)+(p+q)-1][2]    0.7734  0.5780
Lag[4*(p+q)+(p+q)-1][5]    2.8324  0.4385
d.o.f=0
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.4511  0.5018
Lag[2*(p+q)+(p+q)-1][5]    4.3189  0.2169
Lag[4*(p+q)+(p+q)-1][9]    5.7999  0.3219
d.o.f=2

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[3]    0.6015 0.500 2.000  0.4380
ARCH Lag[5]    1.2614 1.440 1.667  0.6573
ARCH Lag[7]    1.5063 2.315 1.543  0.8201

Nyblom stability test
------------------------------------
Joint Statistic:  0.4065
Individual Statistics:              
omega  0.08535
alpha1 0.15215
beta1  0.08674
gamma1 0.05458

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:         1.07 1.24 1.6
Individual Statistic:    0.35 0.47 0.75

Sign Bias Test
------------------------------------
                   t-value    prob sig
Sign Bias           1.6629 0.09719   *
Negative Sign Bias  0.4663 0.64126    
Positive Sign Bias  1.4840 0.13866    
Joint Effect        3.4779 0.32364    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     22.66       0.2528
2    30     36.79       0.1518
3    40     43.84       0.2738
4    50     57.43       0.1912


Elapsed time : 0.4508021 

Otrzymalismy nieistotne wartosci parametrów alpha1 i gamma1, zas istotne okazaly sie omega oraz beta1. Wsród reszt nie wystepuja efekty ARCH. Wartosc statystyki AIC wyniosla -6.1652. Nie ma takze podstawy do odrzucenia H0, o tym ze kwadraty wystandaryzowanych reszt sa bialym szumem.

Nastepnie symulowalismy model EGARCH(1,2).


*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : eGARCH(1,2)
Mean Model  : ARFIMA(0,0,0)
Distribution    : norm 

Optimal Parameters
------------------------------------
        Estimate  Std. Error    t value Pr(>|t|)
omega  -0.069775    0.000001 -69688.172        0
alpha1 -0.008328    0.000173    -48.045        0
beta1   0.165391    0.000010  16801.502        0
beta2   0.826662    0.000072  11416.695        0
gamma1 -0.069402    0.000208   -332.902        0

Robust Standard Errors:
        Estimate  Std. Error    t value Pr(>|t|)
omega  -0.069775    0.000067 -1048.0600  0.0e+00
alpha1 -0.008328    0.002034    -4.0938  4.2e-05
beta1   0.165391    0.000161  1024.8466  0.0e+00
beta2   0.826662    0.001257   657.6153  0.0e+00
gamma1 -0.069402    0.000126  -550.0320  0.0e+00

LogLikelihood : 1155.964 

Information Criteria
------------------------------------
                    
Akaike       -6.1714
Bayes        -6.1188
Shibata      -6.1717
Hannan-Quinn -6.1505

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.3656  0.5454
Lag[2*(p+q)+(p+q)-1][2]    0.6361  0.6330
Lag[4*(p+q)+(p+q)-1][5]    2.9926  0.4084
d.o.f=0
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                         statistic p-value
Lag[1]                      0.4014  0.5264
Lag[2*(p+q)+(p+q)-1][8]     5.4847  0.2912
Lag[4*(p+q)+(p+q)-1][14]    8.2421  0.3572
d.o.f=3

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[4]   0.02311 0.500 2.000  0.8792
ARCH Lag[6]   1.02056 1.461 1.711  0.7419
ARCH Lag[8]   2.07798 2.368 1.583  0.7258

Nyblom stability test
------------------------------------
Joint Statistic:  3.1584
Individual Statistics:             
omega  0.2421
alpha1 0.2376
beta1  0.2420
beta2  0.2392
gamma1 0.2376

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:         1.28 1.47 1.88
Individual Statistic:    0.35 0.47 0.75

Sign Bias Test
------------------------------------
                   t-value   prob sig
Sign Bias           1.4851 0.1384    
Negative Sign Bias  0.9468 0.3444    
Positive Sign Bias  0.2538 0.7998    
Joint Effect        2.5520 0.4660    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     16.87       0.5989
2    30     23.60       0.7486
3    40     30.54       0.8316
4    50     61.99       0.1008


Elapsed time : 1.182016 

Dla tego modelu wszystkie parametry okazaly sie byc istotne. Nie mamy podstaw do odrzucenia Hipotezy, mówiacej, iz kwadraty wystandaryzowanych reszt sa bialym szumem. Wsród reszt nie wystepuja po raz kolejny efekty ARCH. Wartosc statystyki AIC wyniosla natomiast -6.1714. Model ten jest duzo lepszy niz poprzedni.

Wyestymowalismy równiez modele EGARCH(2,1) i EGARCH(2,2). Kryteria informacyjne wskazuja, ze najlepszym dopasowaniem moze charakteryzowac sie model EGARCH(2,1), jednak patrzac na istotnosc paramterów, zdecydowalismy sie w dalszych analizach posluzyc sie EGARCH (1,2), którego wartosc kryterium informacyjnego nie odbiega znaczaco od modelu EGARCH(2,1).

Kolejna klasa analizowanych przez nas modeli sa modele z klasy GJR-GARCH(p,q).Jest to podejscie, które modeluje asymetryczny wplyw pozytywnych i negatywnych wiadomosci na zmiennosc. Na pierwszy model do omówienia wybralismy GJR-Garch(1,1).

spec = ugarchspec(variance.model = list(model ='gjrGARCH',
                                        garchOrder = c(1, 1)),
                  mean.model = list(armaOrder = c(0, 0), include.mean = F),
                  distribution.model = "norm")
gjgarch1.1 <- ugarchfit( spec = spec, data = na.omit(tab$r))
gjgarch1.1
*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : gjrGARCH(1,1)
Mean Model  : ARFIMA(0,0,0)
Distribution    : norm 

Optimal Parameters
------------------------------------
        Estimate  Std. Error     t value Pr(>|t|)
omega   0.000000    0.000000    1.304862  0.19194
alpha1  0.000099    0.003787    0.026014  0.97925
beta1   0.998374    0.000242 4119.643412  0.00000
gamma1 -0.004248    0.010483   -0.405249  0.68529

Robust Standard Errors:
        Estimate  Std. Error    t value Pr(>|t|)
omega   0.000000    0.000002   0.170147  0.86489
alpha1  0.000099    0.006725   0.014648  0.98831
beta1   0.998374    0.001209 825.566451  0.00000
gamma1 -0.004248    0.023685  -0.179358  0.85766

LogLikelihood : 1153.058 

Information Criteria
------------------------------------
                    
Akaike       -6.1612
Bayes        -6.1191
Shibata      -6.1614
Hannan-Quinn -6.1445

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.4569  0.4991
Lag[2*(p+q)+(p+q)-1][2]    0.7713  0.5787
Lag[4*(p+q)+(p+q)-1][5]    2.9670  0.4131
d.o.f=0
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                    0.01252  0.9109
Lag[2*(p+q)+(p+q)-1][5]   5.72455  0.1044
Lag[4*(p+q)+(p+q)-1][9]   7.35152  0.1715
d.o.f=2

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[3]    0.3427 0.500 2.000  0.5583
ARCH Lag[5]    0.9642 1.440 1.667  0.7436
ARCH Lag[7]    1.1654 2.315 1.543  0.8853

Nyblom stability test
------------------------------------
Joint Statistic:  93.0365
Individual Statistics:              
omega  4.25718
alpha1 0.09532
beta1  0.11157
gamma1 0.10525

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:         1.07 1.24 1.6
Individual Statistic:    0.35 0.47 0.75

Sign Bias Test
------------------------------------
                   t-value   prob sig
Sign Bias           1.5449 0.1232    
Negative Sign Bias  0.7179 0.4733    
Positive Sign Bias  0.6852 0.4937    
Joint Effect        2.5062 0.4742    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     21.26       0.3225
2    30     36.95       0.1476
3    40     36.76       0.5725
4    50     50.19       0.4260


Elapsed time : 0.3844051 

Dla tego modelu po raz kolejny tylko parametr beta1 okazal sie istotny.Nie udalo nam sie odrzucic hipotezy o braku efektów ARCH, a wystandaryzowane reszty okazaly sie byc bialym szumem, a wszystko to dla AIC=-6.1612.

*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : gjrGARCH(1,2)
Mean Model  : ARFIMA(0,0,0)
Distribution    : norm 

Optimal Parameters
------------------------------------
        Estimate  Std. Error     t value Pr(>|t|)
omega   0.000000     1.0e-06  5.0000e-06  1.00000
alpha1  0.000053     4.9e-05  1.0682e+00  0.28544
beta1   0.422241     1.6e-05  2.6193e+04  0.00000
beta2   0.580660     2.0e-06  3.1393e+05  0.00000
gamma1 -0.008055     8.6e-05 -9.3142e+01  0.00000

Robust Standard Errors:
        Estimate  Std. Error     t value Pr(>|t|)
omega   0.000000     7.0e-06      0.0000  1.00000
alpha1  0.000053     4.8e-05      1.0886  0.27634
beta1   0.422241     2.5e-05  16665.4270  0.00000
beta2   0.580660     3.0e-06 208469.6207  0.00000
gamma1 -0.008055     8.9e-05    -90.1099  0.00000

LogLikelihood : 1153.061 

Information Criteria
------------------------------------
                    
Akaike       -6.1558
Bayes        -6.1033
Shibata      -6.1562
Hannan-Quinn -6.1349

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.4462  0.5041
Lag[2*(p+q)+(p+q)-1][2]    0.7710  0.5789
Lag[4*(p+q)+(p+q)-1][5]    2.9838  0.4100
d.o.f=0
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                         statistic p-value
Lag[1]                     0.01188  0.9132
Lag[2*(p+q)+(p+q)-1][8]    7.05576  0.1475
Lag[4*(p+q)+(p+q)-1][14]   9.55349  0.2332
d.o.f=3

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[4]   0.07607 0.500 2.000  0.7827
ARCH Lag[6]   0.95983 1.461 1.711  0.7593
ARCH Lag[8]   2.09680 2.368 1.583  0.7220

Nyblom stability test
------------------------------------
Joint Statistic:  71.8171
Individual Statistics:              
omega  32.9633
alpha1  0.1363
beta1   0.1512
beta2   0.1512
gamma1  0.1501

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:         1.28 1.47 1.88
Individual Statistic:    0.35 0.47 0.75

Sign Bias Test
------------------------------------
                   t-value   prob sig
Sign Bias           1.5330 0.1261    
Negative Sign Bias  0.7275 0.4674    
Positive Sign Bias  0.6854 0.4935    
Joint Effect        2.4512 0.4842    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     22.87       0.2431
2    30     29.23       0.4534
3    40     44.48       0.2520
4    50     53.94       0.2910


Elapsed time : 0.5324008

Model ten okazal sie byc znacznie lepszy od poprzedniego, o czym swiadczy nie tylko wartosc AIC=-6.1558, ale takze istotnosc wszystkich parametrów poza alpha1 oraz stala. W tym modelu takze nie odrzucamy H0 o braku efektów ARCH oraz mozemy uznac kwadraty wystandaryzowanych reszt za bialy szum.

Dla kolejny modeli klasy GJR-GARCH, wyniki byly juz gorsze,a najnizsza wartoscia krtyeriów informacyjnych dla klasy modeli GJRGARCH charakteryzowal sie model GJRGARCH (1,2).

Szacowanie wartosci narazonej na ryzyko okres in-sample

W pierwszym kroku postanowilismy podczas szacowania wartosci narazonej na ryzyko okreslic zakres okresów in-sample oraz out-sample. Poniewaz dane pochodza za okres 1,5 roku i jest to okres stosunkowo krótki , postanowiono przyjac za okres in-sample czas obejmujacy 2016 r., zas za out-sample pierwsze pólrocze z 2017 r., by posiadac wystarczajaca liczbe rekordów do przeprowadzenia badania. Wykonano nastepujace czynnosci:

  1. Ograniczono podzbiór in sample

  2. Wystandaryzowano zwroty z portfela

  3. Porównano 1% kwantyl rozkladu normalnego z 1% kwarntylem empirycznym rozkladu zwrotów. Wartosc 1% kwantyla empirycznego rozkladu zwrotów wyniosla -2.246897 i róznila sie od 1% kwantyla rozkladu normalnego (-2.326348). Wartosc narazona na ryzyko zostala oszacowana jako iloczyn 1% kwantyla empirycznego rozkladu oraz wektora oszacowan odchylenia standardowego.

  4. Oszacowano nastepujace modele: GARCH(1,1), GJRGARCH (1,2) oraz EGARCH (1,2)

Wyniki analizy dla poszczególnych modeli przedstawiono ponizej.Pierwszym z nich jest GARCH (1,1) 13

tab20 <- tab[tab$Data <= as.Date("2016-12-30"), ]
tab20 <- tab20[as.Date("2016-01-05") <= tab20$Data, ]


tail(tab20)
tab20$rstd <- (tab20$r - mean(tab20$r, na.rm=T)) /
  sd(tab20$r ,na.rm = T)
tail(tab20)

q1 <- quantile(tab20$rstd, 0.01, na.rm = T)
q1

qnorm(0.01, 0, 1)

spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
                   mean.model = list(armaOrder = c(0, 0), include.mean = T),
                   distribution.model = "norm")


tab20.garch1.1 <- ugarchfit(spec = spec,
                            data = na.omit(tab20$r))
plot(tab20.garch1.1, which = 10)

str(tab20.garch1.1)
tab20.garch1.1@fit$sigma

tab20$VaR <- q1 * tab20.garch1.1@fit$sigma

  
  
plot(tab20$Data, tab20$r, col = "red", lwd = 1, type = 'l',
       ylim = c(-0.1, 0.1), ylab="",
       xlab="Date", main="Zwroty i VaR dla modelu GARCH(1,1)")
abline(h = 0, lty = 2)
lines(tab20$Data, tab20$VaR, type = 'l', col = "green")

sum(tab20$r < tab20$VaR) / length(tab20$VaR)

A wykres Zwrotów i VaR dla modelu GARCH(1,1) prezentuje sie nastepujaco 14

Straty w modelu GARCH (1,1) przekraczaja zakladany poziom VAR w 0.12% przypadków.

Kolejnym uwzglednionym przez nas modelem jest GJRGARCH(1,2). 15

Straty w modelu GJRGARCH (1,2) przekraczaja zakladany poziom VAR w 0.12% przypadków. 16

Ostatni przenalizowany przez nas model to EGARCH(1,2) . 17

Straty w modelu EGARCH (1,2) przekraczaja zakladany poziom VAR w 0.08% przypadków. 18

Ze wzgledu na najnizszy poziom strat przekraczajacy zakladany poziom VAR model EGARCH wydaje sie najbardziej odpowiedni dla analizowanego portfela.

Szacowanie wartosci narazonej na ryzyko w okresie out-of-sample

Jak wspomniano powyzej w okresie out-sample przyjeto podzbiór od poczatku stycznia 2017 r. do konca czerwca 2017 r.

GARCH (1,1)

start  <- tab$obs[tab$Data == as.Date("2017-01-03")]
finish <- tab$obs[tab$Data == as.Date("2017-06-30")]
tab4 <-tab[start:finish, ]


spec2 <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
                   mean.model = list(armaOrder = c(0, 0), include.mean = T),
                   distribution.model = "norm")

garch1.1 <- ugarchfit( spec = spec,
                        data = na.omit(tab$r))

garch1.1

tab$r<-((tab$rbit+tab$rbra+tab$rpekao+tab$rorange+tab$rzloto+tab$rcda)/6)


VaR <- rep(NA,times = finish - start + 1)
for (k in start:finish) {
  tmp.data <- tab[tab$obs <= (k - 1), ]
  tmp.data$rstd <- (tmp.data$r - mean(tmp.data$r, na.rm = T)) /
    sd(tmp.data$r, na.rm = T)
  q2 <- quantile(tmp.data$rstd, 0.01, na.rm = T)
  tmp.garch1.1<- ugarchfit(spec = spec2, data = na.omit(tmp.data$r))
  sigma.forecast  <- ugarchforecast(tmp.garch1.1, n.ahead = 1)
  sigma.forecast2 <- sigma.forecast@forecast$sigmaFor[1, 1]
  VaR[k - start + 1] <- q2 * sigma.forecast2
}


tab4$VaR <- VaR


plot(tab4$Data, tab4$r, col = "red", lwd = 1, type = 'l',
     ylim = c(-0.15, 0.15),
     xlab="Time",ylab="", 
     main="Zwroty z portfela i VaR w okresie out-of-sample 
     w modelu GARCH(1,1)")
abline(h = 0, lty = 2)
lines(tab4$Data, tab4$VaR, type = 'l', col = "green")
sum(tab4$r < tab4$VaR) / length(tab4$VaR)

Wykres dla GARCH (1,1) wyglada nastepujaco: 20

Straty w modelu GARCH (1,1) przekraczaja zakladany poziom VAR w 0 % przypadków.

GJRGARCH (1,2)

Wykres dla GJRGARCH (1,2) wyglada nastepujaco: 22

Straty w modelu GJRGARCH (1,2) przekraczaja zakladany poziom VAR w 0% przypadków.

EGARCH (1,2)

Wykres dla EGARCH (1,2) wyglada nastepujaco: 23

Straty w modelu EGARCH (1,2) przekraczaja zakladany poziom VAR w 0% przypadków.

Analiza Wrazliwosci

Poniewaz analiza wrazliwosci jest to analiza, która skupia sie na wynikach badania, zaleznie od stosowania róznych warunków, postanowilismy ja przeprowadzic dla modelu najbardziej dopasowanego, a mianowicie EGARCH(1,2). W tym celu zamiast analizowac 6 miesieczny okres out-of-sample, postanowilismy zrobic analogiczna analize dla okresu 3 miesiecznego out-of-sample. Wyniki miedzy jedna a druga analiza zasadniczo sie nie róznia, poniewaz w obu przypadkach potencjalne straty nie przekroczyly zakladanego poziomu VaR (0% przypaków).30

start  <- tab$obs[tab$Data == as.Date("2017-03-31")]
finish <- tab$obs[tab$Data == as.Date("2017-06-30")]
tab6 <-tab[start:finish, ]


spec2 =  ugarchspec(variance.model = list(model ="eGARCH",
                                          garchOrder = c(1, 2)), 
                    mean.model = list(armaOrder = c(0, 0), include.mean = F),
                    distribution.model = "norm")




VaR <- rep(NA,times = finish - start + 1)
for (k in start:finish) {
  tmp.data <- tab[tab$obs <= (k - 1), ]
  tmp.data$rstd <- (tmp.data$r - mean(tmp.data$r, na.rm = T)) /
    sd(tmp.data$r, na.rm = T)
  q2 <- quantile(tmp.data$rstd, 0.01, na.rm = T)
  tmp.egarch1.2 <- ugarchfit(spec = spec2, data = na.omit(tmp.data$r))
  sigma.forecast  <- ugarchforecast(tmp.egarch1.2, n.ahead = 1)
  sigma.forecast2 <- sigma.forecast@forecast$sigmaFor[1, 1]
  VaR[k - start + 1] <- q2 * sigma.forecast2
}


tab6$VaR <- VaR


plot(tab6$Data, tab6$r, col = "red", lwd = 1, type = 'l',
     ylim = c(-0.15, 0.15), xlab="Time",ylab="", 
     main="Zwroty z portfela i VaR w okresie 3 miesiecy 
     w modelu EGARCH(1,2)")
abline(h = 0, lty = 2)
lines(tab6$Data, tab6$VaR, type = 'l', col = "green")


sum(tab6$r < tab6$VaR) / length(tab6$VaR)

Podsumowanie

Badanie ukazalo, ze najlepiej dopasowanym modelem dla zbudowanego portfela inwestycyjnego jest EGARCH(1,2). Wniosek taki zostal wysuniety na podstawie przede wszystkim analizy istotnosci parametrów, ale takze kryteriów informacyjnych. EGARCH (1,2), GARCH (1,1) oraz GJRGARCH (1,2) byly najlepiej dopasowanymi modelami w swoich grupach, dlatego tez analizowano je w okresach out-sample oraz in-sample.