poniedziałek, 19 lutego 2024

Dlaczego oddzielne badanie autokorelacji jest błędem?

 W wielu naukach, szczególnie w finansach, dużą wagę przywiązuje się do autokorelacji. Jeżeli stopy zmian jakoś autokorelują, oznacza to możliwość lepszej prognozy dalszego kierunku. Niewielu jednak wie, że proste badanie autokorelacji jest błędem. Nawet jeżeli testy sugerują istotność statystyczną autokorelacji, to w rzeczywistości może być ona pomylona z innym efektem, jeśli jest sprawdzana osobno.

W poniższych przykładach używam języka R, w tym dwa pakiety: forecast oraz rugarch:

if (require("forecast")==FALSE) {

  install.packages("forecast")

  library("forecast")

}

if (require("rugarch")==FALSE) {

  install.packages("rugarch")

  library("rugarch")

}


Przykład 1. 

Najbardziej oczywisty - może się zmienić średnia. Budujemy dwie próbki o rozkładzie normalnym z różnymi średnimi, i łączymy w jedną próbkę. Aby mieć właściwe porównanie wszędzie będę stosował to samo ziarno nr 44.

set.seed(44)

rnorm_test1 <- rnorm(n=500, mean=1)

rnorm_test2 <- rnorm(n=500, mean=4)

rnorm_test <- c(rnorm_test1, rnorm_test2)

Pacf(rnorm_test)

plot(x=rnorm_test[-length(rnorm_test)], y=rnorm_test[-1])

abline(lsfit(x=rnorm_test[-length(rnorm_test)], y=rnorm_test[-1]), lwd=2, col="blue")


 

Pozorna autokorelacja cząstkowa sięga 8 rzędów. Poniższy wykres wskazuje czarno na białym, z czego to wynika.


Przykład 2. 

A) Mniej oczywisty przykład dotyczy efektu ARCH. Problem ten analizował m.in. A. Bera [1]. Zrobię symulację procesu w pakiecie rugarch - najpierw wskazuję o jaki model mi chodzi oraz ustalam mu parametry.

Specyfikację modelu robimy za pomocą funkcji ugarchspec(). Po pierwsze wybieram rodzaj modelu. Będzie to standardowy GARCH, oznaczony tu "sGARCH". Po drugie ustawiam liczbę rzędów procesu. Ponieważ interesuje mnie tylko ARCH(1) ustawiam garchOrder = c(1, 0), co oznacza tworzenie efektu ARCH pierwszego rzędu - warunkowa wariancja zależy tylko od składnika losowego modelu. Części warunkowej średniej, tj. ARMA, nie trzeba już ustawiać, ale można - czyli armaOrder = c(0, 0), aby nie mieć żadnych autokorelacji w szeregu czasowym. Można też dodać distribution.model = "norm", aby zaznaczyć rozkład normalny. Nie jest to konieczne, ale dodam też include.mean = FALSE, czyli nie zawieraj wyrazu wolnego dla części średniej warunkowej, bo nie jest potrzebny. Ostatnią sprawą do wpisania są parametry modelu za pomocą fixed.pars. Ponieważ mamy tylko ARCH(1) w rozkładzie normalnym wystarczy ustawić wyraz wolny w równaniu wariancji (oznaczony jako omega, np. na poziomie 0.1) oraz współczynnik kierunkowy ARCH(1) (tj. efekt MA(1) w równaniu wariancji, oznaczony jako alpha1, np. równy 0.9). 

Po tym etapie wykonujemy symulację przy pomocy funkcji ugarchpath(). Musi zawierać co najmniej 2 argumenty - rodzaj modelu, który utworzyliśmy za pomocą ugarchspec() oraz liczbę obserwacji (oznaczona n.sim). Tak zbudowana symulacja jest obiektem, który zostanie nazwany simArchModel. Żeby wyciągnąć sam szereg czasowy możemy wtedy użyć komendy simArchModel@path$seriesSim.

set.seed(44)

myGarch1 <- ugarchspec(variance.model = list(model = "sGARCH", 

                                             garchOrder = c(1, 0)), 

                       distribution.model = "norm", mean.model = list(armaOrder = c(0, 0), include.mean = FALSE), 

                       fixed.pars=list(omega=0.1, alpha1=0.9))


simArchModel = ugarchpath(myGarch1, n.sim = 1000)

simArch1 <- simArchModel@path$seriesSim

Pacf(simArch1, plot=F)

Pacf(simArch)

simArchLm <- lm(tail(simArch1, -2) ~ head(simArch1, -2))

plot(x=head(simArch1, -2), y=tail(simArch1, -2))

abline(simArchLm)



PACF sugeruje 2 pierwsze rzędy ujemnej korelacji. Statystyki:  

summary(simArchLm)

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)       -0.00932    0.02310   -0.40  0.68672    
head(simArch1, -2) -0.10622    0.03153   -3.37  0.00078 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.73 on 996 degrees of freedom
Multiple R-squared:  0.0113,	Adjusted R-squared:  0.0103 
F-statistic: 11.3 on 1 and 996 DF,  p-value: 0.000784


------------------------------------------------------
Jedna uwaga techniczna co do użycia head(x, -k) i tail(x, -k). Ta funkcja działa nieintuicyjnie. Zwyczajne head(x, k) bierze pierwsze k wartości, a resztę wyrzuca. Wydawałoby się, że ujemne k będzie oznaczać wyrzucenie pierwszych k wartości i pozostawienie reszty. Jednak funkcja zachowuje się inaczej: ucina ostatnie k wartości. Najłatwiej to zapamiętać w ten sposób, że jest to to samo co head(x, length(x)-k), tylko krócej. Analogicznie tail(x, length(x)-k) jest tym samym co tail(x, -k).
------------------------------------------------------

Właściwie jedynie bliski zera R^2 mówi, że realna korelacja nie istnieje. Niemniej standardowe testy na autokorelacje jak Box-Pierce czy Ljung-Box wprowadzają w błąd:

Box.test(x=simArch, lag=2, type = "Box-Pierce")
Box.test(x=simArch, lag=2, type = "Ljung-Box")


	Box-Pierce test

data:  simArch1
X-squared = 20, df = 2, p-value = 0.00004


	Box-Ljung test

data:  simArch1
X-squared = 20, df = 2, p-value = 0.00004


Warto dodać, że gdybyśmy chcieli użyć funkcji auto.arima z pakietu forecast, dostaniemy także błędny model mimo, że optymalny. Najlepiej w tej funkcji używać kryterium BIC, ponieważ najmocniej "karze" za złe lub nadmierne dopasowanie. Ponadto warto dodać parametry: stepwise = FALSE oraz approximation = FALSE, które domyślnie są ustawione na TRUE. Te dwa parametry zostały wprowadzone po to, by efektywniej znaleźć optymalne modele, ale kosztem jest mniejsza dokładność. Opcje te mają sens tylko dla bardzo długich szeregów czasowych lub w których występują sezonowości.

arma_test_bic <- auto.arima(simArch1, stepwise = FALSE, approximation = FALSE, ic="bic")
arma_test_bic 

ARIMA(0,0,2) with zero mean 

Coefficients:
         ma1     ma2
      -0.111  -0.110
s.e.   0.031   0.031

sigma^2 = 0.525:  log likelihood = -1096
AIC=2198   AICc=2198   BIC=2212


Jak widać algorytm wskazał błędny model MA(2).


B) Jeszcze silniejszy efekt możemy dostać, jeśli zwiększymy rząd ARCH do 2. Ustawmy alpha1 na 0.49 i alpha2 na 0.5:

set.seed(44)
myGarch2 <- ugarchspec(variance.model = list(model = "sGARCH", 
                                             garchOrder = c(2, 0)), 
                       distribution.model = "norm", mean.model = list(armaOrder = c(0, 0), 
                                                                     include.mean = FALSE), 
                       fixed.pars=list(omega=0.1, alpha1=0.49, alpha2=0.5))

simArchModel = ugarchpath(myGarch2, n.sim = 1000)
simArch2 <- simArchModel@path$seriesSim
Pacf(simArch2, plot=F)
Pacf(simArch2)
simArchLm <- lm(tail(simArch2, -2) ~ head(simArch2, -2))
plot(x=head(simArch2, -2), y=tail(simArch2, -2))
abline(simArchLm)
summary(simArchLm)


 Autokorelacja drugiego rzędu sięga niemal 30%




Coefficients:
                  Estimate Std. Error t value            Pr(>|t|)    
(Intercept)        -0.0373     0.0571   -0.65                0.51    
head(simArch2, -2)  -0.2853     0.0304   -9.38 <0.0000000000000002 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.8 on 996 degrees of freedom
Multiple R-squared:  0.0812,	Adjusted R-squared:  0.0803 
F-statistic: 88.1 on 1 and 996 DF,  p-value: <0.0000000000000002



C) Co by się stało, gdybyśmy usunęli efekt ARCH i zostawili tylko stałą wariancję? Ustawmy garchOrder na c(1, 0), ale alpha1 niech równa się prawie 0:

set.seed(44)
myGarch3 <- ugarchspec(variance.model = list(model = "sGARCH", 
                                             garchOrder = c(1, 0)), 
                       distribution.model = "norm", mean.model = list(armaOrder = c(0, 0), 
                                                                     include.mean = FALSE), 
                       fixed.pars=list(omega=0.1, alpha1=0.0000000001))

simArchModel = ugarchpath(myGarch3, n.sim = 1000)
simArch3 <- simArchModel@path$seriesSim
Pacf(simArch3, plot=F)
Pacf(simArch3)
simArchLm <- lm(tail(simArch3, -2) ~ head(simArch3, -2))
plot(x=head(simArch3, -2), y=tail(simArch3, -2))
abline(simArchLm)
summary(simArchLm)




Coefficients:
                  Estimate Std. Error t value Pr(>|t|)
(Intercept)       -0.00818    0.01002   -0.82     0.41
head(simArch3, -2)  0.01541    0.03179    0.48     0.63

Residual standard error: 0.316 on 996 degrees of freedom
Multiple R-squared:  0.000236,	Adjusted R-squared:  -0.000768 
F-statistic: 0.235 on 1 and 996 DF,  p-value: 0.628



Dostajemy po prostu błądzenie losowe, dlatego testy odrzucają możliwość autokorelacji. Czyli dopiero po usunięciu efektu ARCH dostajemy prawidłowe wyniki.

Sprawdźmy jeszcze, jaki model auto.arima wskaże tym razem:
arma_test_bic <- auto.arima(simArch3, stepwise = FALSE, approximation = FALSE, ic="bic")
arma_test_bic 

ARIMA(0,0,0) with zero mean 

sigma^2 = 0.0999:  log likelihood = -267.1
AIC=536.3   AICc=536.3   BIC=541.2


Prawidłowo: brak autoregresji.

Z BIC jest ten problem, że czasami karze za mocno niedopasowanie, co prowadzi do błędu odwrotnego - mimo, że efekt ARMA istnieje, to odrzuca go (zob. ten wpis). Ponieważ AIC z kolei prowadzi do "przeuczenia", rozsądnym rozwiązaniem wydaje się posługiwanie HQC, jeżeli próba jest stosunkowo duża (por. zob. tu). Można to zrobić w samym rugarch, który zawiera funkcję autoarfima. Jest podobna do tej z forecast, ale bardziej rozbudowana pod niektórymi względami, ale jednocześnie czasochłonna. Aby znaleźć model dla HQC stosujemy np. kod:

autoarfima(data=simArch3, criterion = "HQIC", ar.max=5, ma.max=5, method = "partial")

Określenie "method" jest tu niefortunne, bo nie chodzi o wybór np. LSE czy MLE, ale po prostu o to czy szukać wszystkich możliwych kombinacji rzędów parametrów od zera do ustawionego max, a więc jeśli mamy max 3, to szuka tylko pierwszego i pozostałych nie, potem tylko drugiego, a pozostałych nie, potem tylko trzeciego, a pozostałych nie, potem pierwszego i drugiego, a nie trzeciego, potem pierwszego i trzeciego, a nie drugiego, potem drugiego i trzeciego, w końcu wszystkie trzy. Jest to method = "full". Jest to wyjątkowo czasochłonna metoda przeszukiwania, która wydaje mi się w większości przypadków zbędna. Jeżeli pierwszy rząd nie zawiera cząstkowej autokorelacji, a tylko drugi, to ustawiając method = "partial", parametr pierwszy po prostu (teoretycznie) wyniesie zero, a więc nie trzeba usuwać pierwszego rzędu z obliczeń. Jeżeli występuje tylko na trzecim rzędzie, to wg "partial"" powinniśmy dostać teoretyczne zera dla dwóch pierwszych rzędów. Tak więc tutaj algorytm oblicza parametr dla każdego pośredniego rzędu. 

Otrzymane statystyki z autoarfima:

*----------------------------------*
*          ARFIMA Model Fit        *
*----------------------------------*
Mean Model	: ARFIMA(1,0,0)
Distribution	: norm 

Optimal Parameters
------------------------------------
       Estimate  Std. Error  t value Pr(>|t|)
ar1   -0.053005    0.031698  -1.6722 0.094481
sigma  0.315631    0.007058  44.7214 0.000000

Robust Standard Errors:
       Estimate  Std. Error  t value Pr(>|t|)
ar1   -0.053005    0.031006  -1.7095  0.08736
sigma  0.315631    0.007138  44.2202  0.00000

LogLikelihood : -265.8 

Information Criteria
------------------------------------
                    
Akaike       0.53551
Bayes        0.54533
Shibata      0.53551
Hannan-Quinn 0.53924

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                          statistic p-value
Lag[1]                  0.000001256  0.9991
Lag[2*(p+q)+(p+q)-1][2] 0.082771917  1.0000
Lag[4*(p+q)+(p+q)-1][5] 0.882737349  0.9628

H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.3014  0.5830
Lag[2*(p+q)+(p+q)-1][2]    0.4997  0.6937
Lag[4*(p+q)+(p+q)-1][5]    1.5118  0.7370


ARCH LM Tests
------------------------------------
             Statistic DoF P-Value
ARCH Lag[2]     0.7098   2  0.7012
ARCH Lag[5]     2.3098   5  0.8048
ARCH Lag[10]    6.9816  10  0.7272

Nyblom stability test
------------------------------------
Joint Statistic:  0.3984
Individual Statistics:            
ar1   0.1721
sigma 0.2294

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


$rank.matrix
   AR MA Mean ARFIMA     HQIC converged
1   1  0    0      0   0.5392         1
 

Najlepszym modelem okazał się AR(1). Jednocześnie jednak model jest nieistotny stat. (p-value = 0.095), co sumarycznie przynosi poprawny wynik. HQIC lepiej działa, jeśli wiemy, że jakaś zależność istnieje (podobnie AIC), dlatego jego użycie na losowych danych może przynosić niewłaściwie rezultaty. Najlepiej używać razem z BIC.
 
Powyższe statystyki z autoarfima zawierają oprócz samych parametrów również informacje o stabilności modelu, autokorelacjach reszt i wariancji reszt. Wszystkie te testy posiadają p-value > 0.05, co oznacza, że model wydaje się stabilny i nie zawiera autokorelacji reszt. Oczywiście wiemy, że tak właśnie jest, więc działają tutaj prawidłowo.  
Z tych testów warto poświęcić chwilę testowi Nybloma na stabilność. Joint Statistic: 0.4 dotyczy stabilności całego modelu. porównujemy z teoretycznymi wartościami dla kolejnych p-value, szczególnie patrzymy na wartość korespondującą z 5% - tutaj jest to 0.75. Ponieważ ta liczba jest większa od 0.4 , nie ma podstaw do odrzucenia hipotezy zerowej o stabilności modelu. Dodatkowa analiza dotyczy każdego współczynnika osobno. Patrzymy na Individual Statistic. Mamy tu dwa współczynniki: dla AR(1) 0.17 oraz dla wariancji 0.23. Wartości te porównujemy z wartością teoretyczną odpowiadającą 5% - wynosi 0.47. Ponieważ 0.47 > 0.17 i 0.23, to znaczy, że ani parametr AR(1) ani wariancja całego modelu nie zmienia się.

Widać więc, że test pozwala sprawdzić nie tylko stabilność średniej, ale także wariancji. 
To może częściowo zastąpić badanie struktury modelu za pomocą pakietu strucchange. Ograniczeniem strucchange - przynajmniej na ten moment - jest brak wyróżnienia i oddzielenia efektów GARCH. W końcu wykryta heteroskedastyczność może być spowodowana zarówno niestabilnością parametrów, jak i efektem GARCH.


Rozwiązanie problemu

Zestaw statystyk, który otrzymujemy w autoarfima, nasuwa trop do rozwiązania problemu. Rzeczywiście, jest to szybki sposób na ocenę autokorelacji. 

Ad 1) Była zmienna rnorm_test złożona z dwóch próbek losowych z rozkładu normalnego o innych średnich. Użyjmy dla niej autoarfima:

autoarfima(data=rnorm_test, criterion = "HQIC", ar.max=5, ma.max=5, method = "partial")


*----------------------------------*
*          ARFIMA Model Fit        *
*----------------------------------*
Mean Model	: ARFIMA(4,0,3)
Distribution	: norm 

Optimal Parameters
------------------------------------
       Estimate  Std. Error    t value Pr(>|t|)
mu     1.664246    0.000848    1961.68        0
ar1   -0.895300    0.000021  -43261.14        0
ar2    0.748268    0.000017   43452.27        0
ar3    1.032321    0.000024   42584.16        0
ar4    0.074309    0.000022    3395.11        0
ma1    0.956703    0.000017   56730.59        0
ma2   -0.612226    0.000006 -100923.73        0
ma3   -0.896438    0.000023  -39376.32        0
sigma  1.043292    0.004795     217.58        0

Robust Standard Errors:
       Estimate  Std. Error     t value Pr(>|t|)
mu     1.664246    0.001353    1229.637        0
ar1   -0.895300    0.000033  -26992.452        0
ar2    0.748268    0.000038   19613.716        0
ar3    1.032321    0.000059   17386.314        0
ar4    0.074309    0.000041    1829.927        0
ma1    0.956703    0.000027   34910.145        0
ma2   -0.612226    0.000006 -103777.853        0
ma3   -0.896438    0.000054  -16747.143        0
sigma  1.043292    0.027597      37.805        0

LogLikelihood : -1462 

Information Criteria
------------------------------------
                   
Akaike       2.9427
Bayes        2.9869
Shibata      2.9425
Hannan-Quinn 2.9595

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                         statistic p-value
Lag[1]                      0.6171  0.4321
Lag[2*(p+q)+(p+q)-1][20]    7.2453  1.0000
Lag[4*(p+q)+(p+q)-1][34]   15.9922  0.6699

H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                      2.513 0.11294
Lag[2*(p+q)+(p+q)-1][2]     3.476 0.10432
Lag[4*(p+q)+(p+q)-1][5]     6.116 0.08444


ARCH LM Tests
------------------------------------
             Statistic DoF P-Value
ARCH Lag[2]      4.208   2 0.12197
ARCH Lag[5]      8.450   5 0.13313
ARCH Lag[10]    16.301  10 0.09133

Nyblom stability test
------------------------------------
Joint Statistic:  9.36
Individual Statistics:             
mu    0.07491
ar1   0.01170
ar2   0.01451
ar3   0.04257
ar4   0.06617
ma1   0.07728
ma2   0.07368
ma3   0.05045
sigma 0.24675

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:     	 2.1 2.32 2.82
Individual Statistic:	 0.35 0.47 0.75


Elapsed time : 1.476 


$rank.matrix
   AR MA Mean ARFIMA    HQIC converged
1   4  3    1      0   2.959         1


Model wskazał błędnie ARMA(4, 3), w dodatku wszystkie parametry istotne. Popatrzmy jednak na test stabilności. 9.36 > 2.32, czyli testowa przekracza wielokrotnie wartość krytyczną. Wniosek: model jest na pewno niestabilny. Test dla osobnych współczynników nie przekracza teoretycznych, co dowodzi, że ten dodatkowy test nie jest bardziej szczegółową wersją tego pierwszego. Dlaczego dla osobnych nie ma niestabilności? Zauważmy, że ta niestabilność dotyczy w rzeczywistości jedynie stałej, czyli mu. Nie wiem dlaczego test nie wskazuje tego, ale na pewno ma to związek z tym, że model został wybrany błędnie z dużą liczbą parametrów. Aby się o tym przekonać, wystarczy, że ustawimy ar.max=1 i ma.max=0:

 autoarfima(data=rnorm_test, criterion = "HQIC", ar.max=1, ma.max=0, method = "partial")


*----------------------------------*
*          ARFIMA Model Fit        *
*----------------------------------*
Mean Model	: ARFIMA(1,0,0)
Distribution	: norm 

Optimal Parameters
------------------------------------
       Estimate  Std. Error  t value Pr(>|t|)
mu      2.46629    0.131594   18.742        0
ar1     0.68144    0.023154   29.430        0
sigma   1.33144    0.029772   44.721        0

Robust Standard Errors:
       Estimate  Std. Error  t value Pr(>|t|)
mu      2.46629    0.170801   14.440        0
ar1     0.68144    0.015803   43.121        0
sigma   1.33144    0.029462   45.191        0

LogLikelihood : -1705 

Information Criteria
------------------------------------
                   
Akaike       3.4164
Bayes        3.4311
Shibata      3.4164
Hannan-Quinn 3.4220

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                       90.5       0
Lag[2*(p+q)+(p+q)-1][2]     104.1       0
Lag[4*(p+q)+(p+q)-1][5]     132.9       0

H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                      4.450 0.03489
Lag[2*(p+q)+(p+q)-1][2]     4.473 0.05628
Lag[4*(p+q)+(p+q)-1][5]     5.004 0.15278


ARCH LM Tests
------------------------------------
             Statistic DoF P-Value
ARCH Lag[2]      4.540   2  0.1033
ARCH Lag[5]      5.816   5  0.3246
ARCH Lag[10]    13.804  10  0.1821

Nyblom stability test
------------------------------------
Joint Statistic:  11.13
Individual Statistics:              
mu    10.89280
ar1    0.09111
sigma  0.14545

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:     	 0.846 1.01 1.35
Individual Statistic:	 0.35 0.47 0.75


Elapsed time : 0.02069 


$rank.matrix
  AR MA Mean ARFIMA  HQIC converged
1  1  0    1      0 3.422         1

Tym razem zarówno cały model, jak i stała mu zostały prawidłowo uznane za niestabilne. A skoro tak, to nie można traktować poważnie takich autokorelacji. Na marginesie - efekt ARCH nie występuje, na co wskazuje test ARCH LM (p-value>0.05).


Ad 2A) W drugim przykładzie mieliśmy wprowadzony ARCH do wariancji. Ponownie możemy sprawdzić go za pomocą autoarfima

autoarfima(data=simArch, criterion = "HQIC", ar.max=5, ma.max=5, method = "partial", distribution.model="norm")


*----------------------------------*
*          ARFIMA Model Fit        *
*----------------------------------*
Mean Model	: ARFIMA(0,0,2)
Distribution	: norm 

Optimal Parameters
------------------------------------
       Estimate  Std. Error  t value Pr(>|t|)
ma1    -0.11131    0.031434  -3.5412 0.000398
ma2    -0.10991    0.031448  -3.4950 0.000474
sigma   0.72384    0.016184  44.7245 0.000000

Robust Standard Errors:
       Estimate  Std. Error  t value Pr(>|t|)
ma1    -0.11131    0.080460  -1.3835  0.16653
ma2    -0.10991    0.107543  -1.0220  0.30677
sigma   0.72384    0.083658   8.6524  0.00000

LogLikelihood : -1096 

Information Criteria
------------------------------------
                   
Akaike       2.1976
Bayes        2.2123
Shibata      2.1976
Hannan-Quinn 2.2032

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                   0.001732  0.9668
Lag[2*(p+q)+(p+q)-1][5]  0.273995  1.0000
Lag[4*(p+q)+(p+q)-1][9]  2.276878  0.9695

H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                      311.0       0
Lag[2*(p+q)+(p+q)-1][2]     423.5       0
Lag[4*(p+q)+(p+q)-1][5]     585.5       0


ARCH LM Tests
------------------------------------
             Statistic DoF P-Value
ARCH Lag[2]      348.1   2       0
ARCH Lag[5]      373.2   5       0
ARCH Lag[10]     380.7  10       0

Nyblom stability test
------------------------------------
Joint Statistic:  1.714
Individual Statistics:            
ma1   0.1458
ma2   0.9028
sigma 1.1342

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:     	 0.846 1.01 1.35
Individual Statistic:	 0.35 0.47 0.75



$rank.matrix
   AR MA Mean ARFIMA  HQIC converged
1   0  2    0      0 2.203         1

 

Algorytm wybrał MA(2), co koresponduje z ujemną autokorelacją cząstkową dwóch rzędów. Ale znowu jak spojrzymy na test Nybloma, okaże się, że jest to niestabilny model. W dodatku test ARCH LM informuje o występowaniu efektu ARCH w składnikach losowych, tak samo test Weighted Ljung-Boxa dla wariancji reszt ma p-value = 0. Natomiast test Weighted Ljung-Boxa dla samych reszt daje p-value dużo powyżej 0.05, co wynika z faktu, że wszystkie autokorelacje zostały uwzględnione w modelu MA(2).

Mamy więc podstawy do stworzenia modelu ARCH. Robimy to dwóch krokach.

Krok 1. Budujemy najprostszy model teoretyczny, ale tym razem bez fixed.pars:

myGarch1 <- ugarchspec(variance.model = list(model = "sGARCH", 

                                             garchOrder = c(1, 0)), 

                       distribution.model = "norm", mean.model = list(armaOrder = c(0, 0)))


Krok 2. Znajdujemy model empiryczny: bierzemy model (myGarch1) z pierwszego kroku i wstawiamy symulację procesu ARCH z p. 2A (simArch1)

ugarchfit(spec = myGarch1, data = simArch1)

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

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

Optimal Parameters
------------------------------------
        Estimate  Std. Error  t value Pr(>|t|)
mu     -0.006221    0.011653 -0.53384  0.59345
omega   0.109187    0.008094 13.49034  0.00000
alpha1  0.803593    0.071384 11.25730  0.00000

Robust Standard Errors:
        Estimate  Std. Error  t value Pr(>|t|)
mu     -0.006221    0.011105 -0.56021  0.57534
omega   0.109187    0.008383 13.02461  0.00000
alpha1  0.803593    0.073067 10.99798  0.00000

LogLikelihood : -735.2 

Information Criteria
------------------------------------
                   
Akaike       1.4765
Bayes        1.4912
Shibata      1.4764
Hannan-Quinn 1.4820

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                      3.057 0.08039
Lag[2*(p+q)+(p+q)-1][2]     3.169 0.12628
Lag[4*(p+q)+(p+q)-1][5]     3.974 0.25734
d.o.f=0
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.2462  0.6197
Lag[2*(p+q)+(p+q)-1][2]    0.9056  0.5299
Lag[4*(p+q)+(p+q)-1][5]    1.9559  0.6289
d.o.f=1

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[2]     1.313 0.500 2.000  0.2518
ARCH Lag[4]     2.120 1.397 1.611  0.4142
ARCH Lag[6]     2.382 2.222 1.500  0.5961

Nyblom stability test
------------------------------------
Joint Statistic:  0.4109
Individual Statistics:              
mu     0.06427
omega  0.14734
alpha1 0.27249

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:     	 0.846 1.01 1.35
Individual Statistic:	 0.35 0.47 0.75

Sign Bias Test
------------------------------------
                   t-value   prob sig
Sign Bias           1.1690 0.2427    
Negative Sign Bias  0.2163 0.8288    
Positive Sign Bias  0.6087 0.5429    
Joint Effect        1.4816 0.6865    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     11.28       0.9141
2    30     15.32       0.9824
3    40     23.12       0.9796
4    50     32.20       0.9695


Przypomnę, że simArch1 miał ustawioną średnią wariancję (omega) na 0.1 oraz parametr ARCH (alpha1) na 0.9. Funkcja poprawnie dopasowała omegę, a nieco gorzej alpha1, ale oba są istotne. Teraz dokonujemy diagnostyki:

- autokorelacje w resztach modelu: nie występują (Ljung-Box Test on Standardized Residuals, p-value>0.05),

- autokorelacje w wariancji reszt modelu (Ljung-Box Test on Standardized Squared Residuals): nie występują, co oznacza, że efekt GARCH nie występuje w szeregu czasowym,

- Efekt ARCH w resztach modelu (ARCH LM Test): nie występuje, co oznacza, że uwzględniliśmy cały efekt ARCH w modelu

- stabilność (Nyblom stability test): model jest stabilny, ponieważ żadna statystyka nie przekracza wartości krytycznych,

- czy występują szoki nieuwzględnione przez model: nie występują (Sign Bias Test, p-value > 0.05)

- czy przyjęty rozkład reszt jest odpowiedni: rozkład normalny jest odpowiedni (Goodness-of-Fit Test, p>0.05 dla wszystkich kwantyli).


Powyższa diagnostyka dowodzi, że model jest poprawny.

Została ostatnia sprawa do sprawdzenia. Na samym początku robiliśmy test, z którego wynikało, że parametr AR(1) jest istotny statystycznie, choć wiedzieliśmy od początku, że żadnej autokorelacji nie ma. Ale teraz, kiedy mamy testy uwzględniające efekt ARCH, możemy sprawdzić jaka będzie ocena modelu, który zakładałby, że istnieje nie tylko ARCH(1), ale i AR(1). Wpisujemy więc armaOrder = c(1, 0):

myGarch1 <- ugarchspec(variance.model = list(model = "sGARCH", 

                                             garchOrder = c(1, 0), 

                                             submodel = NULL), 

                       distribution.model = "norm", mean.model = list(armaOrder = c(1, 0)))

ugarchfit(spec = myGarch1, data = simArch1)

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

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

Optimal Parameters
------------------------------------
        Estimate  Std. Error  t value Pr(>|t|)
mu     -0.006138    0.011482 -0.53458  0.59294
ar1    -0.024017    0.028336 -0.84758  0.39667
omega   0.109324    0.008095 13.50565  0.00000
alpha1  0.804331    0.071556 11.24056  0.00000

Robust Standard Errors:
        Estimate  Std. Error  t value Pr(>|t|)
mu     -0.006138    0.011090 -0.55346  0.57995
ar1    -0.024017    0.031426 -0.76424  0.44472
omega   0.109324    0.008389 13.03140  0.00000
alpha1  0.804331    0.072694 11.06468  0.00000

LogLikelihood : -734.9 

Information Criteria
------------------------------------
                   
Akaike       1.4777
Bayes        1.4974
Shibata      1.4777
Hannan-Quinn 1.4852

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                      1.457  0.2273
Lag[2*(p+q)+(p+q)-1][2]     1.552  0.4090
Lag[4*(p+q)+(p+q)-1][5]     2.389  0.5982
d.o.f=1
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.1987  0.6558
Lag[2*(p+q)+(p+q)-1][2]    1.0633  0.4781
Lag[4*(p+q)+(p+q)-1][5]    2.1068  0.5934
d.o.f=1

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[2]     1.722 0.500 2.000  0.1894
ARCH Lag[4]     2.373 1.397 1.611  0.3640
ARCH Lag[6]     2.579 2.222 1.500  0.5545

Nyblom stability test
------------------------------------
Joint Statistic:  0.7708
Individual Statistics:              
mu     0.06371
ar1    0.40036
omega  0.15814
alpha1 0.27546

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.1068 0.2687    
Negative Sign Bias  0.1919 0.8478    
Positive Sign Bias  0.5713 0.5680    
Joint Effect        1.3374 0.7203    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20      9.28       0.9685
2    30     22.70       0.7901
3    40     21.44       0.9899
4    50     26.40       0.9966


Skąd wiadomo, że ten drugi model jest gorszy? Po pierwsze widzimy, że ar1 jest nieistotny stat., ale po drugie wartości wszystkich kryteriów (AIC, BIC, HQC, SIC) zwiększyły się, co oznacza, że model się pogorszył. W sumie więc dostajemy informację, że dodanie autokorelacji obserwacji pogarsza jedynie model, a to znaczy, że autokorelacje faktycznie nie występują. 


Ad 2B) W przykładzie 2B robiłem symulację ARCH dwóch rzędów. Co by się stało, gdybym użył jednak do dopasowania modelu dla jednego rzędu, czyli z przykładu 2A? Do funkcji ugarchfit wstawię więc myGarch1, ale symulację simArch2:

 ugarchfit(spec = myGarch1, data = simArch2)

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

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

Optimal Parameters
------------------------------------
        Estimate  Std. Error  t value Pr(>|t|)
omega    0.35066    0.023680  14.8085        0
alpha1   0.80988    0.091434   8.8575        0

Robust Standard Errors:
        Estimate  Std. Error  t value Pr(>|t|)
omega    0.35066     0.11587   3.0264 0.002475
alpha1   0.80988     0.19997   4.0500 0.000051

LogLikelihood : -1204 

Information Criteria
------------------------------------
                   
Akaike       2.4114
Bayes        2.4212
Shibata      2.4114
Hannan-Quinn 2.4151

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic   p-value
Lag[1]                    0.06781 0.7945595
Lag[2*(p+q)+(p+q)-1][2]   6.96722 0.0121615
Lag[4*(p+q)+(p+q)-1][5]  15.92422 0.0002506
d.o.f=0
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic            p-value
Lag[1]                    0.01798 0.8933177180472207
Lag[2*(p+q)+(p+q)-1][2]  48.79191 0.0000000000001286
Lag[4*(p+q)+(p+q)-1][5]  79.48513 0.0000000000000000
d.o.f=1

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[2]     97.16 0.500 2.000       0
ARCH Lag[4]     98.80 1.397 1.611       0
ARCH Lag[6]     99.68 2.222 1.500       0

Nyblom stability test
------------------------------------
Joint Statistic:  0.4387
Individual Statistics:             
omega  0.2553
alpha1 0.2381

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

Sign Bias Test
------------------------------------
                   t-value   prob sig
Sign Bias           0.3514 0.7254    
Negative Sign Bias  0.1107 0.9118    
Positive Sign Bias  0.3619 0.7175    
Joint Effect        0.3531 0.9497    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic      p-value(g-1)
1    20     97.32 0.000000000001632
2    30     98.24 0.000000001867482
3    40    114.00 0.000000002827673
4    50    105.30 0.000005407768343


Ocena modelu rzeczywiście jest zła: występują autokorelacje w resztach i wariancji, efekt ARCH nadal się pojawia, a rozkład reszt nie pasuje. Musismy więc rzeczywiście poprawić model do ARCH dwóch rzędów:

myGarch2 <- ugarchspec(variance.model = list(model = "sGARCH", 

                                             garchOrder = c(2, 0)), 

                       distribution.model = "norm", mean.model = list(armaOrder = c(0, 0)))


ugarchfit(spec = myGarch2, data = simArch2)

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

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

Optimal Parameters
------------------------------------
        Estimate  Std. Error  t value Pr(>|t|)
mu     -0.001293    0.013566  -0.0953  0.92408
omega   0.110512    0.011278   9.7993  0.00000
alpha1  0.384594    0.055023   6.9897  0.00000
alpha2  0.541667    0.062540   8.6611  0.00000

Robust Standard Errors:
        Estimate  Std. Error   t value Pr(>|t|)
mu     -0.001293    0.012938 -0.099924  0.92041
omega   0.110512    0.010805 10.227909  0.00000
alpha1  0.384594    0.044567  8.629512  0.00000
alpha2  0.541667    0.074556  7.265275  0.00000

LogLikelihood : -963 

Information Criteria
------------------------------------
                   
Akaike       1.9340
Bayes        1.9536
Shibata      1.9339
Hannan-Quinn 1.9414

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                      3.253  0.0713
Lag[2*(p+q)+(p+q)-1][2]     3.341  0.1134
Lag[4*(p+q)+(p+q)-1][5]     4.082  0.2440
d.o.f=0
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                      1.329  0.2491
Lag[2*(p+q)+(p+q)-1][5]     2.025  0.6126
Lag[4*(p+q)+(p+q)-1][9]     3.470  0.6795
d.o.f=2

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[3]    0.4403 0.500 2.000  0.5070
ARCH Lag[5]    0.9204 1.440 1.667  0.7567
ARCH Lag[7]    2.2697 2.315 1.543  0.6603

Nyblom stability test
------------------------------------
Joint Statistic:  0.4937
Individual Statistics:             
mu     0.1045
omega  0.2665
alpha1 0.1167
alpha2 0.1563

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           0.6479 0.5172    
Negative Sign Bias  0.5606 0.5752    
Positive Sign Bias  0.1738 0.8621    
Joint Effect        1.0146 0.7977    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     11.72       0.8972
2    30     22.46       0.8007
3    40     25.68       0.9502
4    50     36.60       0.9046

Nastąpiła pełna poprawa. Podobnie jak poprzednio można porównać model dopisując ar1. Zobaczymy wtedy, że wszystkie kryteria wskazują na pogorszenie, a więc że pierwotna autokorelacja okazała się fałszem (już tego nie pokazuję).

Podsumowanie

Podsumowując, zarówno samo sprawdzanie autokorelacji, jak i konstrukcja modelu autoregresji bez sprawdzenia stabilności i efektów ARCH, jest błędne. Autokorelacja może się okazać złudzeniem.  Należy wykonać wszystkie testy i na podstawie kryteriów, takich jak BIC czy HQC, poszukać najlepszego modelu.    

Literatura:

[1] Bera, A.K., M.L. Higgins and S. Lee (1993) "Interaction Between Autocorrelation and Conditional Heteroskedasticity: A Random Coefficients Approach", Journal of Business and Economic Statistics, 10, 133-142.

niedziela, 28 stycznia 2024

Dlaczego Demokraci dają lepsze stopy zwrotu niż Republikanie?

 Wiele wskazuje na to, że inwestorzy powinni trzymać kciuki, aby demokraci wygrywali jak najczęściej. Jak wskazują Blinder i Watson (BiW) [1], w latach 1949-2013, gdy prezydentem był Demokrata, realny wzrost PKB wynosił średnio 4.33% w skali roku, podczas gdy prezydentem był Republikanin, było to 2.54%. Różnica 1.79 pkt proc. jest duża i istotna statystycznie. Odchylenie od średniej (wynoszącej 3.33%) było takie samo dla obydwu (3.8 vs. 3.9%). Autorzy załączyli poniższą grafikę:


Standardowo niebieski kolor jest kojarzony z Demokratami, czerwony z Republikanami. 

Na dokładkę przywołano poprzednie badania, które porównywały zmiany gospodarcze sięgające aż 1875 r. W okresie 1875-1947 demokraci także byli lepsi: jeżeli byli gospodarzami Białego Domu, to gospodarka rosła w tempie 5.15%, a gdy Republikanie - 3.91%.

Wnioski się komplikują, gdy analizę rozszerzymy na parlament USA, czyli Kongres. Poniżej kolejne wyniki BiW:



Jeżeli Demokraci kontrolują obydwie izby, gospodarka rośnie najmocniej - 4.7%, ale gdy Demokratą jest prezydent, a Republikanie mają Kongres, jest to tylko 2.2%. Jeżeli natomiast Republikanie kontrolują obie izby albo gdy jest podział, ale prezydent jest Republikaninem, to PKB rośnie ponad 2.8%, czyli trochę więcej. 

Jak to wygląda z punktu widzenia giełdy? Okazuje się, że indeks S&P 500 rósł w czasach Demokratów średniorocznie 8.35%, a Republikanów... zaledwie 2.7%. Odchylenie w pierwszym przypadku wyniosło 2.56%, w drugim 2.84%. Wzrost zysków spółek był w czasach Demokratów także wyższy o ponad 1 pkt proc. (5.61 vs. 4.74%). 

I teraz uwaga. Dostajemy przykład, jak intuicja wyprowadza na manowce. Otóż wydawałoby się, że nawet najgorsze okresy Demokratów - po odjęciu odchylenia od średniej stopy zwrotu (8.35-2.56 = 5.79) - pozostają lepsze niż najlepsze czasy Republikanów - po dodaniu do ich średniej odchylenia (2.7+2.84 = 5.54). A mimo to różnica dla rynku akcji jest nieistotna statystycznie. Na pierwszy rzut oka wydaje się to dziwne, ale przestaje takie być, gdy uświadomimy sobie, że rozkłady stóp zwrotu z akcji czy indeksów nie są gaussowskie. Grube ogony, czyli leptokurtoza, stanowią dodatkowy czynnik ryzyka - średnio odchylenie pozostanie stałe, jeśli grube ogony (rzadkie wydarzenia) są kompensowane mniejszymi odchyleniami częstych wydarzeń. 

Pastor i Veronesi (PiV) [3] skonstruowali model racjonalnych oczekiwań tłumaczący to zjawisko. Mianowicie awersja do ryzyka jest wg nich zmienna w czasie: gdy jest wysoka, ludzie wybierają Demokratów, a gdy jest niska, wybierają Republikanów. Demokraci kojarzeni z socjalnym i ekonomicznym zabezpieczeniem, postrzegani jako obniżający ryzyko polityczne i gospodarcze, obniżą awersję do ryzyka społeczeństwa w ciągu kolejnych lat rządów. Stąd na początku oczekiwana stopa zwrotu jest wysoka z powodu wymagania większego wynagrodzenia za niepewność w czasach niepokojów. Gdy ta niepewność spada, ceny niejako w nagrodę rosną jeszcze szybciej, ale w konsekwencji oczekiwane stopy zwrotu spadają - przyszłe stopy zwrotu są coraz mniejsze. Koresponduje to akurat z dojściem do władzy Republikanów, ponieważ społeczeństwo ma teraz mniejszą awersję do ryzyka. Republikanie kojarzeni z wolnorynkowym podejściem, odejściem od kontroli państwowej i mniejszym zabezpieczeniem socjalnym, będą teraz częściej wybierani: gdy jest względny spokój, ludzie mogą podejmować bardziej ryzykowne decyzje. Oczekiwana stopa zwrotu jest jednak ciągle niska z powodu rządów poprzedników. 

Znajduje to potwierdzenie w faktach. W czasach wysokiego bezrobocia częściej wybierani są Demokraci. W 1932 r. republikański Herbert Hoower stracił władzę na rzecz Demokraty Franklina Roosevelta. W 2008 r. - w środku kryzysu finansowego - George W. Bush został zastąpiony przez Baracka Obamę. W czasach pandemii COVID-19 Donald Trump stracił stanowisko na rzecz Joego Bidena. Trump miał pecha, że trafił na czas pandemii, bo w przeciwnym wypadku prawdopodobnie dostałby drugą kadencję. Natomiast rok 2016-2017 to był rzeczywiście spokojny i rozwojowy dla USA i Europy, więc Trumpowi udało się wygrać.

PiV proponują też interesujące wyjaśnienie wyższego wzrostu gospodarczego w czasach Demokratów. Wg nich nie chodzi wcale o lepsze decyzje polityczne, ale o to, że w czasach wyższej awersji do ryzyka, gdy Demokraci dochodzą do władzy, w sektorze prywatnym tylko wysoko wykwalifikowane jednostki zwiększają produktywność, napędzając całą gospodarkę. W ekonomii dużą rolę odgrywa łańcuch przyczynowo-skutkowy, który implikuje rozciąganie się w czasie zdarzeń. Gdy demokraci zdobywają władzę, gospodarka jest albo w recesji, albo znajduje się w jakimś stanie niepokoju, co motywuje przedsiębiorców do poprawy konkurencyjności czy produktywności. W sumie gospodarka się rozbija na dwie części: 

- taką, która szuka pomocy państwa; pracownicy w sektorze państwowym oraz słabo wykwalifikowani czy bezrobotni, oraz
- na firmy i wysoko wykwalifikowaną kadrę. 

Awersja do ryzyka odgrywa więc dwojaką rolę: część chce ochrony państwa, część sama podejmuje wysiłki na rzecz poprawy sytuacji. Jeżeli ta druga część przewyższa pierwszą, mamy do czynienia z ożywieniem gospodarczym. Na skutek kolejnych sprzężeń rozłożonych w czasie, sytuacja gospodarcza się poprawia zarówno pierwszej, jak i drugiej grupie. Awersja do ryzyka społeczeństwa spada, co pozwala dojść do władzy republikanom. Ponieważ jednak ożywienie już się dokonało, firmy przestają zwiększać produktywność i PKB rośnie coraz wolniej.

Jeżeli powyższe jest prawdą, to przyczyna leży nie tyle w czystej ekonomii, co w psychologii. Mimo to krytycy jednej i drugiej strony będą doszukiwać się przyczyn w samych działaniach partyjnych. Przeciwnicy demokratów mogą podnosić argument, że ich prezydenci najczęściej angażowali kraj w obce wojny. BiW badają tę możliwość, przypominając (tłumaczenie DeepL):

W końcu Truman przewodniczył boomowi wojny koreańskiej, a Eisenhower go zakończył; a Johnson przewodniczył rozbudowie Wietnamu, podczas gdy Nixon, po długiej zwłoce, ją zakończył. Ale z drugiej strony, Reagan zainicjował ogromny wzrost militarny w czasie pokoju, a obaj Bushowie byli prezydentami wojennymi.

Wydatki wojskowe pod rządami Demokratów rosły średnio o 5.9% rocznie, ale tylko o 0,8% pod rządami Republikanów. To jednak za mało, by wyjaśnić tak dużą różnicę, bo wydatki te stanowią nieduży procent całego PKB, w dodatku od lat spadają (zob. wykres).

Wyższe wydatki na obronę i wojsko mają jeszcze jeden słaby punkt. Same w sobie nie są inwestycjami w rozwój gospodarki, a więc nawet zastąpienie nimi innych wydatków, nie może przynieść korzyści. Zamiast przesuwania wydatków rząd może zwiększyć podatki. Ale przecież zwiększanie podatków oznacza zabieranie innym, a więc kłania się tu mit zbitej szyby. Zresztą czynnik podatkowy został odrzucony przez BiW jako nieistotny. Dalej, raczej pewne jest, że przyczyną nie była wyższa podaż pieniądza, której powinna towarzyszyć wyższa inflacja; tymczasem wzrost cen (CPI) w czasach Demokratów był nawet niższy, wynosił bowiem średnio 2.97%, a za Republikanów 3.32%. Ta różnica na korzyść Demokratów staje się jeszcze wyższa, gdy inflację mierzono deflatorem PKB: 2.89% vs. 3.44%. Ponieważ PKB odejmuje wydatki na import, to różnica między CPI a deflatorem polega na tym, że ten pierwszy uwzględnia ceny dóbr importowanych, a ten drugi nie. Stąd deflator PKB lepiej odzwierciedla prawdziwą krajową inflację konsumencką.

Pozostaje jeszcze sprawdzenie zadłużenia (deficytu). BiW również sprawdzili tę hipotezę i okazuje się, że deficyt był zazwyczaj... niższy za Demokratów. Podobne wnioski można wysunąć na podstawie wykresu na Statista, porównujący nie tyle deficyt, co wzrost długu za różnych prezydentów USA.

Ostatecznie badacze za przyczyny omawianego zjawiska uznają m.in. większą produktywność gospodarki (ponad 2x większa za demokratów) , większy optymizm konsumentów i lepsze otoczenie międzynarodowe. Pierwsze dwa czynniki pokrywają się więc z modelem PiV, natomiast trzeci można uzasadnić większą skłonnością do wzajemnej wymiany dóbr i usług, czyli do wolnego handlu. Prawica, którą reprezentują republikanie, mają większą skłonność do protekcjonizmu, co może wyjaśniać także wyższą inflację w ich czasach. 

W tym miejscu przypomnę schemat, który narysowałem, badając zależności między OECD, UE, USA i Polską (zob. ten wpis):


USA i kraje OECD oddziałują na siebie nawzajem, UE po miesiącu mocno wpływa na USA, a USA trochę słabiej po miesiącu wpływa na UE. Tak więc, jeżeli Republikanie zwyciężają i nakładają cła na kraje unijne, to kraje unijne w odwecie będą nakładać cła na USA, co pogorszy sytuację obydwu gospodarek. Ponieważ te pierwsze mogą zastąpić eksport do USA eksportem do krajów wewnątrz Unii, to wpływ USA na UE jest mniejszy niż na odwrót. Chociaż więc Amerykanie będą ważyć wszystkie za i przeciw przy wyborze prezydenta, to muszą brać pod uwagę to ryzyko związane z wyborem Trumpa i Republikanów.

Istnieje pokusa, by spostrzeżoną zależność przełożyć na inne kraje. Wtedy Demokraci byliby lewicą, a Republikanie prawicą. BiW przeanalizowali taką możliwość dla takich krajów jak Kanada, Francja, Niemcy i Wielka Brytania, gdzie panuje system dwupartyjny. Poniżej zebrane wyniki razem z USA:

Okazuje się, że tylko w Kanadzie, tj. sąsiadowi USA, towarzyszył średnio większy wzrost gosp., gdy rządziła lewica. W pozostałych przypadkach rodzaj partii nie grał roli. Być może dla Polski największe znaczenie mają Niemcy, więc przytoczę fragment z BiW [2] na ten temat (tłumaczenie - DeepL):

Niemcy, czyli Niemcy Zachodnie przed 1991 r., miały stabilny system dwupartyjny co najmniej od co najmniej od 1949 roku. Unia Chrześcijańsko-Demokratyczna (CDU) jest partią centroprawicową, a Partia Socjaldemokratyczna (SPD) jest partią centrolewicową. (...) nie znajdujemy żadnej różnicy między CDU a SPD. Zaokrąglając do pierwszego miejsca po przecinku, roczna stopa wzrostu w Niemczech wyniosła 2,2% niezależnie od tego, która partia dominowała.

Nie znam się na polityce międzynarodowej, ale pierwsze co przychodzi do głowy, to rozmyte kryterium podziału na lewicę i prawicę, a mianowicie chodzi mi o podział na kwestie światopoglądowe i ekonomiczne, które przecież należą do zupełnie innych porządków (choć pośrednio mogą się ze sobą wiązać). Jeżeli CDU i SPD są podobne gospodarczo, ale różne światopoglądowo, to nic dziwnego, że badania nie pokazują żadnych różnic. Przykładem w Polsce jest PIS, który jest prawicowy światopoglądowo, ale lewicowy gospodarczo. Dlatego, aby takie analizy miały sens, musi zostać przeprowadzona dokładniejsza analiza ideologiczna danej władzy.

W każdym razie wygrana Demokratów przynosi wyższe stopy zwrotu z amerykańskich akcji, a ponieważ korelacja GPW z USA jest ciągle silna, to można powiedzieć, że byłaby to dobra wiadomość dla naszej giełdy niezależnie od sytuacji makro w naszym kraju. Paradoksalnie dla Polski byłoby lepiej, gdyby w USA było niespokojnie, bo dałoby to większą szansę Demokratom.


Literatura:

[1] Blinder, A. S., Watson, M.W. 2016, Presidents and the US economy: An econometric exploration, American Economic Review 106, 1015–1045;

[2] Blinder, A. S., Watson, M.W. 2016, Dodatek online do [1];

[3] Pastor, L., Veronesi, P. 2018, Political cycles and stock returns, National Bureau of Economic Research Working Paper 23184.

wtorek, 9 stycznia 2024

Lepsza praworządność to lepsze zyski

Ostatnie wydarzenia skłoniły mnie do napisania prognozy spadkowej. Faktycznie sprawdziła się, jednak trzeba przyznać, że nie była to zasługa zawieruchy wokół mediów publicznych, ale zachowania zagranicy, która też akurat zawinęła w dół (technika też pomogła). Popatrzmy jednak na zachowanie rentowności 10-letnich obligacji skarbowych w dniu oraz dzień po przejęciu siłą TVP i PR przez rząd:



22.12.2023 nasze rentowności skoczyły o +1,38%, a 27.12. o kolejne 0,5%. W analogicznym czasie amerykańskie wzrosły o 0,27% i spadły o 2,58%. Niemieckie spadły o 4,5%.  

Widać, że nastąpił pewien rozjazd, ponieważ potem zaczęły już normalnie korelować. Normalnie polskie skarbówki dość mocno korelują z zagranicą (dziennie z USA ok. 0,45-0,47).

Jednocześnie reakcja polskiej giełdy była żadna, a można wręcz odnieść wrażenie, że na przekór zareagowała pozytywnie:


W kolejnych dniach korelowały już ujemnie.

Powstaje pytanie, dlaczego WIG nie spadł wtedy. Jedną z potencjalnych odpowiedzi jest nieefektywność rynku. Możliwe, że inwestorzy w swojej masie po prostu nie widzą związku między dochodami firm a praworządnością jako taką. Już w art. Demokracja a stopy zwrotu z akcji wskazywałem empiryczne dowody, że większy poziom demokratyczności oznacza wyższe oczekiwane stopy zwrotu przy niższej zmienności. Jeśli chodzi konkretnie o praworządność, to Z. Savari et al. [1] przebadali, dla lat 2000-2021, takie kraje jak: Iran, Turcja, Indonezja, Malezja, Brazylia, Rosja, Chiny, Indie, Meksyk, Polska, Tajlandia, RPA, Peru, Singapur i Korea Południowa. Okazało się, że lepsza praworządność podwyższa istotnie średnie stopy zwrotu. Badanie wykonano na dwóch różnych metodach estymacyjnych i wyszło to samo.

Dokładniejszą analizę przeprowadzili wcześniej V. Hooper et al. [2], opierając się na wieloczynnikowym CAPM. Miesięczne stopy zwrotu od stycznia 1995 do grudnia 2002 dla krajów z całego świata (baza MSCI) były modelowane standardowym CAPM powiększonym m.in. o dodatkowe  zmienne, takie jak: prawo głosu i współdecydowania, stabilność polityczna, efektywność rządu, jakość regulacji, rządy prawa i kontrola korupcji. Ze względu na ich dużą korelację, musiały być odpowiednio zgrupowane albo brane indywidualnie. Przykładowo stabilność polityczna korelowała z rządami prawa na poziomie 0,844.  Tak więc większość z tych zmiennych sama w sobie mogłaby posłużyć za substytut oceny rządów prawa. Z tego badania można wnioskować, że chociaż sama praworządność nie poprawia oczekiwanej nadwyżkowej stopy zwrotu (współczynnik jest dodatni, ale nieistotny stat.), to już stabilność polityczna jak najbardziej. A skoro ona silnie koreluje z rządami prawa, to znaczy, że pośrednio również rządy prawa korelują z nadwyżką stopy zwrotu. Dalej, również zmienność akcji okazuje się ujemnie korelować z rządami prawa (zresztą z pozostałymi czynnikami także). Wyniki te bezsprzecznie dowodzą, że lepsze środowisko instytucjonalne obniża ryzyko inwestycji w akcje w danym kraju. 

Ostatnio słyszałem słowa eksperta od stosunków międzynarodowych, że Chiny wyprzedziły już USA i to one stały się hegemonem światowym. Patrząc jednak na ten wykres (na przestrzeni 20 lat) trudno w to uwierzyć:


Chociaż badanie [2] było robione na starych (obecnie) danych, bo do 2002 r., to nawet biorąc je do porównania, otrzymamy ryzyko specyficzne (polityczne, instytucjonalne) dla Chin niemal 5x większe niż USA. Co ciekawe, dla Polski oszacowano niewiele mniejsze to ryzyko. 

Powróćmy teraz do naszej. Giełda w ogóle nie zareagowała na wątpliwe prawnie zachowanie rządu w okresie świątecznym, ponieważ inwestorzy giełdowi nie widzą powodu, by podnosić koszt kapitału. Jednocześnie jednak obligatariusze skarbowi zareagowali i to stanowczo. Można by pomyśleć, że to ma sens, bo gorsza ocena rządów prawa bezpośrednio odstrasza zagranicę do obligacji rządowych; z kolei GPW nie odstrasza nikogo, bo sprawa nie dotyczy dochodów państwowych. Niby tak, ale model kosztu kapitału własnego zawiera stopę wolną od ryzyka rynkowego (ale nie od politycznego), a za taką uważa się przecież rentowność z obligacji skarbowych. A może należy wstawić nie tę rentowność, tylko krótkoterminową, np. stopę WIBOR3M, która nie zawiera już takiego ryzyka politycznego? Nie, nie można, bo już Merton [3] dowiódł, że w dynamicznym środowisku, ze zmiennymi stopami procentowymi, koszt kapitału własnego musi zawierać ryzyko międzyokresowe, czyli zmienność struktury stopy zwrotu - nawet jeśli inwestor akcyjny ma bardzo krótki horyzont czasowy. Wynika to po prostu z tego, że może w każdej chwili sprzedać, następny może kolejnemu sprzedać itd., tak że nie ma tu żadnej daty wykupu. 

Oczywiście istnieje też prozaiczne wyjaśnienie - że inne indeksy miały mocniejszy wpływ niż jedno pojedyncze wydarzenie w kraju. I tu wracamy do badań, które przedstawiłem: sugerują one, że chodzi raczej o nieefektywność rynku. Gdyby rynek był efektywny, to byłoby na odwrót - gorsze rządy prawa prowadziłyby do wyższej oczekiwanej stopy zwrotu, jeśli byłoby ono zawarte w ryzyku systematycznym. Ewentualnie nie miałyby żadnego wpływu (byłyby w cenie), gdybyśmy uznali, że nie dotyczy to ryzyka systematycznego. Ten drugi przypadek wydaje mi się jednak mało prawdopodobny z powodu awersji do ryzyka, która psychologicznie będzie oddziaływać, nawet jeśli statystycznie nie ma tego ryzyka. Koszt kapitału musi zawierać zawsze jakiś margines na dodatkową niepewność.

Pytanie, czy jakieś z tego wnioski płyną? Czy powinniśmy się spodziewać niższej stopy zwrotu i zwiększonej zmienności w kolejnych miesiącach? Raczej nie, bo ta awantura niesie jedynie skutki polityczne i żadnych poważnych skutków gospodarczych. Chociaż z drugiej strony był to niebezpieczny precedens, który może być wykorzystywany przez inne ekipy w przyszłości. Jeśli rentowność bondów zareagowała prawie 2% wzrostem, to można by się spodziewać takiego samego spadku na WIGu, który zwyczajnie się rozmyje na wiele okresów do przodu.


Literatura:

[1] Z. Savari, M. R. Rostami, M. F. Shams, J. Jamali, Regulatory quality, rule of law and stock market performance: A system GMM approach, Int. J. Nonlinear Anal. Appl. 14 (2023) 6, 211–220 ;

[2] V. Hooper, A.B. Sim and A. Uppal, Governance and stock market performance, Econ. Syst. 33 (2009), no. 2, 93–116 ;

[3] R. C. Merton, 1973. An intertemporal capital asset pricing model. Econometrica 41(5):867–87.

piątek, 22 grudnia 2023

Wojny domowej nie będzie, ale sygnały przegrzania już są

PIS dostał świetny pretekst do robienia głośnej awantury i protestów ulicznych. Będzie chciał wywołać coś w rodzaju wojny domowej. Bo chociaż rząd ma moralną rację ws. mediów publicznych, to prawną rację ma prawdopodobnie PIS.* A w każdym razie ma silną broń, którą będzie cały czas grał i której koalicja rządowa i jej zwolennicy jeszcze nie doceniają.

Ta broń to nie granat. Nie będzie wojny domowej, ponieważ obrona mediów publicznych brzmi niewiarygodnie w ustach polityków PISu. Wszyscy widzieli jak to wyglądało, więc moralnie tu nie ma czego bronić. 

Ale nie będzie to też kapiszon. Ta afera będzie się powoli rozkręcać. Zauważmy, że PIS jest w takim szoku, że nawet nie nazywa tego aferą. Wszystko teraz zależy od władzy. Czy się nie zatrzyma w dalszej demolce, czy jednak będzie tonować emocje.

Dlaczego to jest ważne? Napisałem ostatnio kilka wpisów na temat ryzyka politycznego i wpływu demokratyczności na rynki kapitałowe. Im więcej demokratyczności, tym lepiej: wyższa stopa zwrotu i mniejsza zmienność. Bardziej demokratyczne kraje lepiej dogadują się z innymi, a przez to inwestorzy zagraniczni mają do nich większe zaufanie. Zresztą inwestorzy krajowi także będą mieć większe zaufanie do państwa. Wymiana dóbr i usług jest łatwiejsza, podobnie tworzenie wspólnych organizacji. 

Nawet jeśli na finanse spółki nie wpływają "demokratyczne wartości", to kanałem, który pośrednio te finanse powiąże będzie niższy koszt kapitału społecznego. Chociaż kapitał społeczny jest nienamacalny, to już większa płynność walorów staje się taka. Większe zaufanie inwestorów do spółki z jednej strony zachęca do większego zaangażowania, z drugiej zniechęca do szybkiego sprzedawania w przypadku gorszych wyników. Stąd niższemu kosztowi kapitału może towarzyszyć niższa zmienność.

Tymczasem oferta inwestowania w rynki zagraniczne bardzo wzrosła w ostatnich latach w Polsce. Jeżeli więc na tle innych krajów, poziom demokratyczności i praworządności spadają u nas, to stajemy się mniej atrakcyjni. 

Obecnie jesteśmy na etapie rozpoczęcia dyskontowania przejawów niepraworządności nowego rządu, który do niedawna sam siebie nazywał "opozycją demokratyczną". Inwestorzy jeszcze nie wiedzą, co o tym myśleć, ważą różne opinie. Ale myślę, że będzie miało to pewien wpływ na przyszłe tygodnie. 

Jeżeli będzie tak jak myślę, że rynek uzna obecną sytuację polityczną za wcale nie tak różową, jak na początku po wyborach, to nastąpi powrót do przeszłości. Nie sądzę jednak, żeby zniosło cały ruch od 17.10. Nie wiem czy ma to jakieś znaczenie, ale trzecia falka na WIG dotyka linii oporu od dołu.


Ci którzy używają AT również zauważą wysokie poziomy wskaźników (RSI itp.). Natomiast ekonometrycznie ARMA(0, 3) - optimum wg funkcji auto.arima z pakietu forecast w R - na kolejne dni / tygodnie sugeruje także spadki WIGu:

 


Pod koniec roku spodziewałbym się realizacji zysków, fundusze pewnie się szykują do tego.

.............................................................

* P. S.

20 grudnia 2023 przejdzie do historii jako brutalne przejęcie TVP przez nowy rząd. Chociaż nie jestem prawnikiem, to z mojej analizy wynika, że było to działanie niezgodne z Konstytucją. Już na etapie wyłożenia prawnych argumentów dostrzegam pewną niespójność. Z jednej strony rząd powołuje się na niekonstytucyjność niektórych przepisów ustawy o radiofonii i telewizji (dalej uRiT), z drugiej strony na kodeks spółek handlowych (ksh). Kłopot polega na tym, że w pierwszym przypadku to powołanie się na konstytucyjny przepis wymaga, aby to KRRiT odwołała zarząd TVP. Mówi nawet o tym dokładnie art. 26 RiT:

Do spółek wymienionych w ust. 2 i 3 stosuje się, z zastrzeżeniem art. 27–30 ustawy, przepisy Kodeksu spółek handlowych

Chodzi tu o spółki: Telewizja Polska oraz Polskie Radio. Stosujemy dla nich ksh, ale bez art. 27-30 uRiT. A właśnie art. 27 mówi o tym, kto powołuje i odwołuje członków zarządu. Art. 27 został częściowo uznany za niekonstytucyjny przez Trybunał Konstytucyjny w 2016 r. Problem polega na tym, że ten wyrok nie dotyczy pierwotnej ustawy z 1992 r., ale tej zmienionej przez PIS, który chciał, aby zarząd TVP wybierany był przez odpowiedniego ministra - jako pierwsza zmiana, a potem przez Radę Mediów Narodowych (RMN) - druga zmiana. Nowa koalicja rządowa uznała, że skoro ten przepis jest niezgodny z Konstytucją, to w ogóle nie istnieje. A przecież istnieje w pierwotnej wersji. W pierwotnej wersji to rada nadzorcza spółki powołuje i odwołuje zarząd. Z kolei radę nadzorczą powołuje i odwołuje zgodnie z art. 28 (bez jednego członka) KRRiT. W nowej wersji radę nadzorczą również miała wybierać i odwoływać RMN, co także było niekonstytucyjne. W konsekwencji za cały przebieg powoływania i odwoływania członków odpowiada KRRiT. Co więcej, a może właśnie dlatego, TK w swoim wyroku odwołuje się właśnie do tej pierwotnej wersji, która wymaga, aby to KRRiT powoływała i odwoływała zarząd.

Dlaczego więc PO było tak pewne, że nie łamie prawa? Gdyby się wczytać w ten wyrok TK, to zobaczymy, że nie jest tam napisane, że rząd nie może brać udziału w procesie powoływania i odwoływania zarządu. Jest jednak napisane, że wyłączenie KRRiT z tego procesu jest niekonstytucyjne. Załóżmy, że rząd prowadziłby rozmowy z KRRiT na ten temat. Gdyby dostał jakiś formalny dowód, że KRRiT bierze udział w tej procedurze, to miałby "podkładkę" pod zarzut bezprawnego przejmowania TVP i PR. Ale takiej podkładki nie miał.

Jednak lepszym, pewniejszym sposobem, byłoby odwołanie członków KRRiT. Nawet jeśli byłoby to możliwe, to zapewne zajęłoby to wiele miesięcy. A chodziło o czas.

NIK zarzucił niegospodarność i działania na szkodę spółki zarządowi TVP i zawiadomił prokuraturę (źródło). To kolejna przesłanka do zastosowania bezpośrednio ksh, ale jednocześnie pretekst do siłowego usunięcia zarządu i rady nadzorczej TVP.  Pomijając aspekt prawny działań prokuratury i rządu w tej sprawie, zwrócić należy uwagę na aspekt ekonomiczny. Celem mediów publicznych jest realizacja misji publicznej. W uRiT wymieniono dość precyzyjnie w punktach, co się rozumie przez misję publiczną. Wśród tych punktów nigdzie nie wymieniono celu zarobkowego. Na tym polega różnica przecież z mediami komercyjnymi. Co to oznacza? Że straty jakie ponosiła w ostatnich latach TVP same w sobie nie mogą stanowić przesłanki do zarzutu o niegospodarność i działanie na jej szkodę.  

Jedną z misji publicznych jest "służyć rozwojowi kultury, nauki i oświaty, ze szczególnym uwzględnieniem polskiego dorobku intelektualnego i artystycznego". Chociaż to zadanie wymieniono dopiero na piątym miejscu wśród tego, co powinny prezentować programy, to uważam go za jeden z najważniejszych, ponieważ właśnie wskazuje istotę różnicy między komercyjnymi mediami a publicznymi. Media publiczne powinny promować sztukę wyższą kosztem niższej oglądalności, a więc kosztem niższego zarobku z reklam.

Nie znaczy to, że NIK się myli. Bo zauważmy, że jeśli spółka komercyjna zarabia na reklamach pośrednio dostarczając rozrywkę, to ma racjonalne podstawy do wyższego wynagradzania swoich pracowników. Ale w takim razie telewizja publiczna, nie mając na celu maksymalizowania oglądalności, mniej zarabia na reklamach i analogicznie powinna mniej płacić pracownikom. To również oznacza, że należy dobierać innych ludzi - którym zależy mniej na bogaceniu się, a więcej na wypełnianiu misji. Jak dobierać takich ludzi? Właśnie jednym z "narzędzi" jest niższe wynagrodzenie. Pracownik w TVP powinien dostawać niskie, a nawet zaniżone wynagrodzenie na początku, aby sprawdzić czy zależy mu na wypełnianiu misji. Jeżeli nie przyjmie takiego stanowiska, to automatycznie sam się dyskwalifikuje. Dopiero po paru miesiącach powinien mieć zwiększone, jeśli okaże się wartościowy.

Trzeba tutaj zauważyć, że gdyby usunąć przychody z reklam, to hipotetyczna rynkowa wartość jednej akcji TVP czy PR nie musi być ujemna. Po pierwsze nie ma tu ryzyka bankructwa, co obniża koszt kapitału. Po drugie propagowanie kultury i sztuki wyższej może przynosić wymierne efekty w postaci wzrostu kapitału społecznego w dalekiej przyszłości. W jaki sposób? Może się sztuka (film, teatr, książka, audio) nie podobać, ale mimowolnie odbierana sprawia, że ludzie o niej dyskutują. Bo najgorsze co może być dla sztuki to ignorowanie jej. Ludzie rozmawiając o danej sztuce mogą rozpoznać u drugiej osoby podobne zainteresowania, podobny poziom wiedzy lub intelektu. W ten sposób mogą się poznawać i tworzyć wspólnoty. Jest to więc drugi obok religii sposób na wzmacnianie więzi i spójności społecznej, co przyspiesza komunikację. W języku makroekonomii powiedzielibyśmy, że zwiększa się szybkość obiegu pieniądza - a to podnosi dochód narodowy (przypominam wzór MV = PY => Y = (M/P)V , zob. ten art.). Media publiczne jako część struktury państwa mogą być traktowane jako kanał prowzrostowy w modelu międzyokresowym z daleką przyszłością. 

Ale patrząc tylko metodą kasową, oczywiście dostaniemy podmiot gospodarczo nieefektywny. Stąd wielu wolnorynkowców uważa, że TVP powinno się sprywatyzować. Jest to zła droga (w teorii gier jest to dokładnie studiowane). Stosowanie skrótów myślowych w stylu: mają straty, więc muszą zostać ukarani albo sprywatyzowani, nie bierze pod uwagę potencjału mediów publicznych. Natomiast zarządzanie spółką to zupełnie inna sprawa.

czwartek, 7 grudnia 2023

Czy opozycja demokratyczna chce wykończyć giełdę?

Z pewną żenadą oglądam, to co wyprawia tzw. opozycja demokratyczna ws. Orlenu. Nałożenie parapodatku "za nadmiarowe zyski" to jedno, ale jego uzasadnianie to zwykły bełkot i populizm w jednym. Słyszymy, że Orlen musi zapłacić za to, że jako monopolista zawyżał ceny paliw. Że to stąd tak duże zyski  "kosztem społeczeństwa" (jakby wcześniej nie były). To pytanie, dlaczego Jacek Krawiec, prezes Orlenu za czasów PO, twierdzi, iż 

dobre wyniki finansowe Orlenu wynikają po części z przyłączenia do spółki PGNiG, Lotosu i Energi, a po części z długofalowych efektów polityki poprzednich zarządów „z których Orlen dzisiaj spija śmietankę” (źródło).

W wywiadzie dla rp.pl z końca września tego roku Krawiec potwierdza, że pod koniec 2022 Orlen pobierał zbyt dużą marżę, ale zostało to wyrównane w 2023, kiedy spadła ona poniżej opłacalności biznesu (źródło). W sumie więc nie można oskarżać spółki o zawyżanie cen, patrząc całościowo. 

Kolejny problem świadczący o schizofrenii niektórych polityków: skoro Orlen miał te nadmiarowe zyski, to dlaczego kurs akcji nie odzwierciedla tego (nie rósł w okresie 2022-2023)? Aha, bo zysk na akcję w 2022 nie wzrósł o żadne setki procent, a jedynie o 11%. Dla przypomnienia inflacja wyniosła w tamtym roku prawie 17% (zob. GUS).

W zasadzie to winą za niski kurs Orlenu odpowiada bardziej KO niż PIS i Obajtek. Nie chodzi jednak o tę nieszczęsną składkę. Dlaczego? Bo ona już dawno była w cenie. Ostatni spadek Orlenu miał charakter czysto psychologiczny. Dlatego właśnie teraz mamy powrót do poprzednich poziomów. Nastąpiła całkowita redukcja szaleństwa z 16.10., kiedy Orlen poszybował o 8,5%. 

Rynek po prostu sobie przypomniał. O czym? O tym. O tym, że PO nauczyło się od PISu populizmu i demagogii. Przypomnijmy parę wydarzeń:


W 2022 r. politycy PO twierdzili, że PKN nie powinien w ogóle zarabiaćPOpuliści do dziś nie usunęli tego wpisu na twitterze:



Pomijam tu jeszcze jedną kwestię, mianowicie już w lutym 2023 spółka poinformowała o przeznaczeniu 14 mld zł na zamrożenie cen gazu (źródło), chociaż nawet ten fakt politycy  "opozycji rządzącej" wykorzystują do zaatakowania spółki (skoro raz zapłaciła, dlaczego nie może drugi raz?! A może dopłaci kolejne 15 mld?). 

W różnych wywiadach z politykami KO i Trzeciej Drogi słyszę, że konieczne jest, aby spółkami zarządzali ludzie kompetentni, menedżerowie, a nie politycy. Pełna zgoda. Tylko że to powinno także odnosić się do nich samych, a więc nie powinni wypowiadać się na tematy, na których się nie znają. Bo potem mamy taką sytuację, że ludzie wierzą w te banialuki o nadmiarowych zyskach i że nałożenie podatku to dobry pomysł. I gdyby udziały Orlenu w 100% należały do Skarbu Państwa, ewentualnie częściowo do zarządzających / polityków, to może i jeszcze dałoby się obronić ten pomysł. Ale wiadomo, że 50% należy do prywatnych podmiotów. Co więcej, wiele funduszy trzyma w portfelu te akcje. Tak więc poprzez programy emerytalne, jak PPK, IKE itp. wszyscy przez to tracimy. Ale oczywiście tego ludzie nie widzą, stąd tak kusząca pokusa zagarnięcia nam pieniędzy - z przyszłości.

Czy było inne wyjście? Oczywiście, że było. Zdaje się, że inflacja spowodowała, że zadłużenie w stosunku do PKB nie przekracza 50%. Należało podnieść o tyle zadłużenie, aby opłacić zwyżki energii. Czyli te 30 mld na rok czy ile tam trzeba. Orlen wypracowane zyski inwestuje w przemysł energetyczny, którego rozwój jest przecież obecnie uważany za priorytet. Zakładam, że zbuduje elektrownie, które zaspokoją zapotrzebowanie na energię dla całego kraju. Oznacza to spadek kosztów energii w długim okresie czasu. Spadek kosztów pozwoli spłacić owe dodatkowe zadłużenie wraz z odsetkami. Wydaje się, ze w takich warunkach nie należy Orlenu "prywatyzować", ponieważ, aby strategia, którą przedstawiłem, powiodła się, państwo musi kontrolować politykę dywidend, a te będą służyć do spłaty zadłużenia z odsetkami. (Widzimy więc, że nawet gdyby Orlen należał w całości do państwa, podatek nie byłby wcale świetnym pomysłem). Czy politycy tworzący wkrótce nowy rząd w ogóle to rozumieją? W trudnych czasach nowa władza nie powinna już na samym początku okazywać pogardy inwestorom, ignorować racjonalne i długoterminowe cele państwa i koncentrować się tylko na doraźnych celach (czyli w tym wypadku PIS ma rację, krytykując za tę składkę). Doprowadzić to może do powrotu braku zaufania giełdy w państwo lub po prostu złego nastawienia do polskiego rynku (skoro sięgnęli już po windfall tax u jednego dużego, to czemu nie u innego?).