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 powstałego 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 wartości narażonej na ryzyko w okresach in-sample oraz out-of-sample. Ostatnim elementem badania byla analiza wrażliwości dla najlepiej dopasowanego modelu.

Metoda Macierzy Boston-Consulting-Group

W niniejszym projekcie wykorzystano stosunkowo nietypowe podejscie do zagadnienia budowania portfela inwestycyjnego, ponieważ postanowiliśmy poslużyć się macierzą Boston Consulting Group. Macierz BCG jest zazwyczaj używana do analizy portfela produktów, jednak po pewnych modyfikacjach można poczynić 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 przybliżeniu udział poszczególnych grup w całym 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 – odznaczają sie niskim tempem wzrostu, jednak bardzo dużym udzialem w rynku. Często slużą one do pozyskiwania środków finansowych w celu poczynienia inwestycji w bardziej ryzykowne aktywa. Część ze spółek charakteryzuje sie wypłatą dywidendy.

  2. Gwiazdy – charakteryzują sie bardzo dużymi perspektywami rozwoju, ale także stosunkowo wysokimi nakładami inwestycyjnymi, przede wszystkim na rozwój. Inwestorzy nie mogą spodziewać się raczej wypłaty dywidend, jednak mogą oczekiwać bardzo wysokich zysków w przyszłości poprzez zwiększenie wartości spółki.

  3. Znaki zapytania – spółki o małym udziale w sektorze, jednak bardzo perspektywiczne; działające na rynku charakteryzującym sie dużym wzrostem.

  4. Psy – spółki cechujące się powolnym wzrostem i niskim tempem rozwoju. Zazwyczaj występują w portfelu z powodu błędnie przeprowadzonej wcześniejszej analizy i identyfikacji spółek.

Wybrane spółki

Aby omówić dobór instrumentów, którego dokonalismy, wpierw musieliśmy zaimportować wszelkie niezbędne dla nas pakiety. W tym wypadku były to:

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

Do naszego modelu wybraliśmy 6 aktywów. Był to kurs złota wyrażony w PLN oraz notowania 5 spółek, dobranych zgodnie z zasadą z poprzedniego rozdziału. Byly to kursy akcji CDA Project S.A., Braster, 11bit Studio, Orange S.A., Pekao S.A. Dla wymienionych aktywów wzięliśmy pod uwagę jedynie ceny zamknięcia, aby na ich podstawie później wyznaczyć logarytmiczne stopu zwrotów. Użylismy poniższej procedury, aby pobrać odpowiednie dane dla spółki Orange S.A, a także pozostałych aktywów,

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

a także od razu ograniczyć je do potrzebnych nam wartości, tworząc 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))

Przedział czasowy uwzględniony przez nas to okres 18-stu miesięcy, od 1 stycznia 2016 roku do 30 czerwca 2017 roku. Wybór takiego przedziału czasu był podyktowany wcześniejszą analizą sytuacji finansowej przede wszystkim gwiazd i znaków zapytania, które w znacznej mierze dopiero w latach 2016 - 2017 zaczynały wchodzić w fazę wzrostu; a więc mogły być utożsamiane z wyżej wymienionymi grupami. Z drugiej jednak strony inwestycje w zloto analizowane w aspekcie dojnej krowy powinny charakteryzować sie stosunkowo długim horyzontem czasowym, co spowodowało, iż analizowane dane nie powinny pochodzic z okresu krótszego niż rok.

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

Następnie ograniczyliśmy każdy z tych szeregów, do wyzej wyznaczonych dat, tak aby każdy cechował się tą samą iloscią obserwacji.

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

Taki dobór przedziału czasowego pozwolił nam na skuteczne ujęcie w zgodzie z teoretyczną zasadą BCG, różnego rodzaju spółek/aktywów, które w naszym portfelu pelniły konkretne role. Sposród szcześciu aktywów, trzy z nich pelniły role “Dojnych Krów”, dwie wybraliśmy jako “Supergwiazdy”, jedna zaś stanowiła “Znak Zapytania”. Podział, którego dokonaliśmy prezentuje sie następująco:

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

Aktywa Pekao i Orange charakteryzują sie jednymi z najwyższych wypłacanych dywidend, złoto zaś to inwestycja długoterminowa, która czasem jest określana wręcz jako „bezpieczna przystań”, szczególnie w czasach spadków notowań 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”" jedną z gwiazd GPW. CD Project także zajmuje sie grami – działa w rozwijającej sie obecnie dynamicznie branży elektronicznej rozrywki – gier video (studio należące do spółki znane jest jako twórca gry Wiedzmin). Powoduje to, że obie spółki mogą być analizowane w niniejszym projekcie jako gwiazdy.

  1. znaki zapytania: 1) akcje Braster.

Spółka zajmuje sie badaniami dotyczącymi zastosowania ciekłych kryształów w diagnostyce raka, a także próbami komercjalizacji stworzonego przez nią urządzenia służącego do domowego badania piersi.

Sumarycznie dojne krowy stanowia 50% portfela, gwiazdy 33%, zaś znaki zapytania 17%. Poniższe wykresy prezentują 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 wcześniej opisaliśmy nasz model składać sie będzie z 6 wskazanych wczesniej aktywów giełdowych uwzględniających ceny zamknięcia, z których otrzymamy logarytmiczne stopu zwrotu dla każdego z tych insrumentów. Aby otrzymać zrównoważony portfel połaczyliśmy wpierw wybrane przez nas dane do wspólnej tablicy dodając 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 zbudowaliśmy w kolejnym kroku portfel, w którym każde z aktywów liczone jest z taką samą wagą, tworząc portfel zrównoważony. Zastowaliśmy następującą formułę:

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

Wyorzystując funkcję:

basicStats(tab$r)

możemy uzyskać podstawowe dane opisowe o tak zbudowanym portfelu. Minimalna wartość stopy zwrotu dla naszych danych wyniosła -0.0297, zaś największą wartością było 0.53. Średnia tego rozkładu wyniosła 0.001, a mediana 0.000597. Obie te wartości choć niewielkie, są większe od 0. Kurtoza równa sie 1.34, co odbiega od typowej wartości 3 dla rozkladu normalnego.

Poniżej prezentujemy wykres dziennych stóp zwrotu z portfela. 8

W celu zbadania normalności rozkładu wygenerowaliśmy także histogram naszych stóp z nałożoną na niego gęstościa rozkladu normalnego. 9

Korzystając następnie ze statystyki testowej Jarque-Bery, możemy jednoznacznie odrzucić hipotezę o normalności rozkładu 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

Następnie wykonaliśmy testy funkcyjne na badanie autokorelacji w portfelu ze względu na istotne opóznienia. Jak pokazane jest poniżej, w modelu nie występują istotne opóznienia,co potwierdza także 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 występowanie istotnego drugiego opóżnienia. 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 możemy stwierdzić występowania istotnych opóżnień dla poziomu istotności 5% dla opóźnień 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

Zauważamy, zatem istotność drugiego opóżnienia dla kwadratów reszt, co oznacza, że możemy odrzucić H0 o braku autokorelacji dla pierwszych 5 opóżnień. Co potwierdza tylko wnioski, które mogliśmy wyciagnąć ze wcześniejszych korelogramów. Następnie przeprowadzamy test na występowanie efektów ARCH wsród stóp zwrotów. Niestety wyniki wskazują jednoznacznie, że nie możemy odrzucić hipotezy zerowej o braku występowania 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, zaglębimy sie w klase modeli Garch(p,q). Wywodzą sie one z klasy Arch(q). Zastosowanie jednak wersji w tej właśnie postaci często wiąże się z przyjmowaniem dużych opóznień, co powoduje, że zmuszeni jesteśmy estymować nierzadko bardzo dużą liczbę parametrów. Ponieważ nie jest to rzecz pożądana, wprowadzamy model uogólnionej metody autoregresyjnej heteroskedastycznosci warunkoej - Garch. W naszym Badaniu zajmiemy sie więc analizą modelu Garch, Egarch oraz GJGarach.

Na pierwszy model bierzemy klase modeli Garch. Są to modele, które dopuszczają aby wartości warunkowej wariancji zależały także od swoich własnych opóznień. Zaczniemy od sprawdzenia 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. Wartość AIC dla tego modelu to -6.1692.

Następnie sprawdziliśmy 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 okazały się być parametry stałej oraz alpha. Wartość AIC to -6.1645 co sugeruje, że jest on nieznacznie gorszy od poprzedniego (większa wartość AIC), pomimo iz również dla niego nie mamy podstaw do odrzucenia hipotezy o braku efektów typu Arch w modelu.

Uzyskaliśmy podobne wnioski również w przypadku modelu GARCH(2,2). Na podstawie kryteriów informacyjnych także nie można było go uznać za model lepszy od GARCH (1,1) Także wykorzystanie przez nas modelu GARCH(2,1) nie wywołało różnicy w stosunku do poprzednich modeli.

W kolejnej fazie zwróciliśmy się w stronę sprawdzenia modeli EGARCH, związanych z symulowaniem efektu dźwigni i modelowaniem logarytmu wariancji. W tym przypadku oszacowania parametrów nie muszą byc dodatnie. Zaczęliśmy 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 

Otrzymaliśmy nieistotne wartości parametrów alpha1 i gamma1, zaś istotne okazały się omega oraz beta1. Wsród reszt nie występują efekty ARCH. Wartość statystyki AIC wyniosła -6.1657. Nie ma także podstaw do odrzucenia H0, o tym że kwadraty wystandaryzowanych reszt są białym szumem.

Następnie symulowaliśmy 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 okazały się być istotne. Nie mamy podstaw do odrzucenia hipotezy, mówiącej, iż kwadraty wystandaryzowanych reszt są białym szumem. Wsród reszt nie występują po raz kolejny efekty ARCH. Wartość statystyki AIC wyniosła natomiast -6.1714. Model ten jest dużo lepszy niz poprzedni.

Wyestymowaliśmy również modele EGARCH(2,1) i EGARCH(2,2). Kryteria informacyjne wskazują, ze najlepszym dopasowaniem moze charakteryzowac sie model EGARCH(2,1), jednak patrząc na istotność paramterów, zdecydowaliśmy się w dalszych analizach poslużyć sie EGARCH (1,2), którego wartość kryterium informacyjnego nie odbiega znaczaco od modelu EGARCH(2,1).

Kolejna klasa analizowanych przez nas modeli są to modele z klasy GJR-GARCH(p,q).Jest to podejście, które modeluje asymetryczny wplyw pozytywnych i negatywnych wiadomości na zmienność. Na pierwszy model do omówienia wybraliśmy 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 okazał się istotny.Nie udało nam się odrzucić hipotezy o braku efektów ARCH, a wystandaryzowane reszty okazały sie być białym szumem, a wszystko to dla modelu z wartością 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 odznaczał się wartością AIC=-6.1558. Wszystkie paramtery poza alpha1 oraz stalą były istotne. W tym modelu także nie odrzucamy H0 o braku efektów ARCH oraz możemy uznać kwadraty wystandaryzowanych reszt za biały szum.

Dla kolejnych modeli klasy GJR-GARCH, wyniki byly juz gorsze, charakteryzowały się wyższą wartością AIC niż model GJRGARCH (1,2).

Szacowanie wartości narażonej na ryzyko okres in-sample

W pierwszym kroku postanowiliśmy podczas szacowania wartości narażonej na ryzyko określić zakres okresów in-sample oraz out-sample. Ponieważ dane pochodzą za okres 1,5 roku i jest to okres stosunkowo krótki, postanowiono przyjąc za okres in-sample czas obejmujący 2016 r., zaa za out-sample pierwsze pólrocze z 2017 r., by posiadać wystarczającą liczbę rekordów do przeprowadzenia badania. Wykonano następujące czynności:

  1. Ograniczono podzbiór in sample

  2. Wystandaryzowano zwroty z portfela

  3. Porównano 1% kwantyl rozkładu normalnego z 1% kwantylem empirycznym rozkładu zwrotów. Wartość 1% kwantyla empirycznego rozkładu zwrotów wyniosła -2.246897 i rózniła się od 1% kwantyla rozkładu normalnego (-2.326348). Wartość narażona na ryzyko została oszacowana jako iloczyn 1% kwantyla empirycznego rozkładu oraz wektora oszacowań odchylenia standardowego.

  4. Oszacowano następujące modele: GARCH(1,1), GJRGARCH (1,2) oraz EGARCH (1,2)

Wyniki analizy dla poszczególnych modeli przedstawiono poniżej.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 nastepująco 14

Straty w modelu GARCH (1,1) przekraczają zakładany poziom VAR w 0.12% przypadków.

Kolejnym uwzględnionym przez nas modelem jest GJRGARCH(1,2). 15

Straty w modelu GJRGARCH (1,2) przekraczają zakładany poziom VAR w 0.12% przypadków. 16

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

Straty w modelu EGARCH (1,2) przekraczają zakładany poziom VAR w 0.08% przypadków. 18

Ze wzgledu na najniższy poziom strat przekraczający zakładany poziom VAR model EGARCH wydaje sie najbardziej odpowiedni dla analizowanego portfela.

Szacowanie wartości narażonej na ryzyko w okresie out-of-sample

Jak wspomniano powyżej w okresie out-sample przyjęto 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) wygląda następująco: 20

Straty w modelu GARCH (1,1) przekraczają zakładany poziom VAR w 0 % przypadków.

GJRGARCH (1,2)

Wykres dla GJRGARCH (1,2) wygląda następująco: 22

Straty w modelu GJRGARCH (1,2) przekraczają zakładany poziom VAR w 0% przypadków.

EGARCH (1,2)

Wykres dla EGARCH (1,2) wygląda następująco: 23

Straty w modelu EGARCH (1,2) przekraczają zakładany poziom VAR w 0% przypadków.

Analiza Wrażliwości

Ponieważ analiza wrażliwosci jest to analiza, która śskupia sie na wynikach badania, zależnie od zastosowania róznych warunków, postanowiliśmy ją przeprowadzić dla modelu najbardziej dopasowanego, a mianowicie EGARCH(1,2). W tym celu zamiast analizować 6 miesięczny okres out-of-sample, postanowiliśmy zrobić analogiczną analizę dla okresu 3 miesięcznego out-of-sample. Wyniki między jedną a drugą analizą zasadniczo sie nie róznią, poniewaz w obu przypadkach potencjalne straty nie przekroczyly zakładanego 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 ukazało, że najlepiej dopasowanym modelem dla zbudowanego portfela inwestycyjnego jest EGARCH(1,2). Wniosek taki został wysuniety na podstawie przede wszystkim analizy istotności parametrów, ale także 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.