środa, 3 grudnia 2025

Poziom WIG20 bardziej racjonalny niż sądziłem

Dopóki nie miałem dość motywacji, by wnikliwie przeanalizować parametry wyceny WIG20 byłem absolutnie pewien, że mamy do czynienia z przewartościowaniem. Wychodzi jednak na to, że sprawa jest dużo bardziej złożona. Od razu mówię, że obecna wycena może nie być ostateczna, bo możliwe, że pewne (mniejsze lub większe) drobiazgi będę jeszcze poprawiał. Wycena jest na dzień 01.12.2025, kurs = 3007.41 pkt. Wartość wewnętrzna wychodzi w przedziale 2440-3010, tzn. indeks osiągnął górny pułap racjonalnej wyceny.

Przyczyny poprawy wyceny

Przyczyną tej zmiany jest, najkrócej mówiąc, zrozumienie, że należy przyjąć niższą oczekiwaną stopę zwrotu. Sprawę tę wyjaśniłem w poprzednim artykule, więc nie będę się tu o tym rozwodził. Jednocześnie myślę, że później trzeba będzie głębiej przyjrzeć się związkowi między oczekiwaną stopą zwrotu a oczekiwanym wzrostem dywidendy, bo dotychczas traktowałem je raczej jako niezależne od siebie. W każdym razie WIG20 ma niższy koszt kapitału od WIG o ok. 2 pkt proc. I te 2 procenciki wszystko zmieniają...

No dobra, może nie wszystko. Pisałem, że sprawa jest bardziej skomplikowana. Stopa dyskontowa to jedno, ale założenia ROE i EPS to drugie. To po kolei. Szczegółowa analiza wszystkich spółek WIG20 pozwala nie tylko sprawdzić, na ile obliczenia wskaźników przez GPW pokrywają się z moimi, ale też zobaczyć, które spółki są problematyczne (mają straty) i co się stanie, jeśli usuniemy te straty. Wyjaśniałem już, że w długim terminie spółki WIG20 nie mogą ponosić strat, bo zostałyby wyrzucone z indeksu i zastąpione zyskownymi. A nawet jeśli nie zostaną wyrzucone, to ich udział spadnie z powodu niskiej kapitalizacji i nie będą mieć większego wpływu na indeks. Z drugiej strony całkowite wyzerowanie strat też się mija z celem. Ktoś może argumentować, że jeśli straty są jednorazowe, to nie powinniśmy ich uwzględniać, bo wycenę tworzą jedynie przyszłe zyski. Ale przecież te przyszłe zyski są generowane przez kapitał własny, a ten został właśnie obniżony o te straty. Jeśli teraz wyzerujemy straty, to zawyżymy ROE, bo spadek KW będzie większy niż spadek sumarycznego EPS.  Mój pomysł polegał na utworzeniu tych oddzielnych wariantów wyceny, a następnie uśrednieniu założeń obu, uzyskując w ten sposób unikalny wariant. Nazywam go pierwszym, bo jest ustawiony w pierwszej kolejności i jest najważniejszy. Pozostałe dwa służą głównie do porównań. 

Porównując wskaźniki z mojej analizy do tych oficjalnych, zauważymy, że C/WK są bardzo zbliżone (u mnie 1.55, oficjalne - 1.61), natomiast C/Z już trochę oddalone (14.93 vs. 15,67). Różnica w ROE jest zaniedbywalna (10.4 vs. 10.3). Do tego momentu wszystko się zgadza. Ale co się stanie, jeśli stworzymy czwarty wariant polegający na użyciu bieżącego EPS z tych oficjalnych danych, ale użyciu pozostałych parametrów? Otóż dostaniemy wartość wewnętrzną 2538 pkt. Natomiast pierwszy wariant wskazał 3013. 

Różnica między pierwszym a czwartym wariantem jest taka, że pierwszy mówi coś w rodzaju: "biorę EPS ze wszystkich spółek, następnie biorę EPS tylko spółek bez strat, i uśredniam oba", a czwarty mówi: "biorę EPS taki, jaki wychodzi z oficjalnego wskaźnika C/Z". Potem oba warianty biorą już te same uśrednione parametry. 

2 techniki czy 2 metody?

Fakt, że C/Z jest mocniej odchylone w mojej analizie od GPW oznacza, że poszczególne spółki mają wpisane inne zyski. Aby się upewnić, że poprawnie konstruuję indeks oraz jego wskaźniki, analizę (a właściwie syntezę) wykonałem dwiema różnymi technikami. W pierwszej wyłuskałem z portalu bankier.pl liczbę akcji, księgową kapitalizację (kapitał własny) i zysk z ostatnich 4-ch kwartałów. W drugiej technice wykorzystałem wskaźniki podane przez stooq.pl. Najpierw spójrzmy sumarycznie: C/WK jest identyczne u obu, ale C/Z "bankierowe" jest znacznie niższe od "stooqowego" (14.9 vs. 17).

Głównym winowajacą tej różnicy jest Orlen. Otóż wg Stooq oraz GPW C/Z Orlenu wynosi 17, a u mnie 7.7. Ewidentnie coś tu jest nie tak. Zacząłem więc drążyć. Przejrzałem rzeczywiste sprawozdania. Okazało się, że zarówno Bankier, jak i Stooq mają rację. Bo tu wchodzimy w temat kreatywnej księgowości. Czwarty kwartał 2024 w sprawozdaniu faktycznie pokazuje duży zysk netto 4 664 000 tys. zł. Ale gdybyśmy dodali do niego pozostałe kwartały, dostalibyśmy więcej niż zysk za cały rok 2024! Ten paradoks powstaje w wyniku ogromnych odpisów ujawnionych dopiero na etapie rocznego sprawozdania (6,2 mld zł). 

Jak porównamy sobie np. kwartalne wyniki w Biznesradar, to zobaczymy, że zyski za 1-3 kw 2024  są takie same jak w Bankierze, ale za 4-ty kw jest strata 1,55 mld zł, a w Bankierze wspomniane 4,7 mld zysku. Bankier pokazuje oryginalne dane z raportu kwartalnego, a Biznesradar wrzuca odpis do ostatniego kwartału, aby wyrównać z danymi rocznymi. 

Z księgowego punktu widzenia to Bankier prezentuje poprawne wyniki. Ale to Biznesradar oddaje pełny obraz sytuacji. Czyli fajnie tu widać różnicę między księgowym a inwestorskim punktem widzenia. Stooq oraz GPW podają więc C/Z dla Orlenu taki, jaki wynika inwestorskiej perspektywy.

I teraz pozornie wydaje się, że skoro podejście Stooq jest lepsze dla inwestora, to powinniśmy porzucić bankierową technikę. Ale znowu - zastanówmy się czy rzeczywiście te odpisy są tak ważne, by je umieszczać w EPS. To są jednorazowe zdarzenia, które nie mogą być traktowane na równi ze zwykłymi kosztami. Zresztą kurs Orlenu dowodzi, że inwestorzy już dawno "przetrawili" te straty. Jeśli mamy prognozować przyszłe C/Z, to prędzej to bankierowe (7,7) będzie przybliżać jego wartość. 

Ale, tak jak pisałem, nie można zupełnie pomijać jednorazowych strat, które mają negatywny wpływ na wartość poprzez niższy KW - niezależnie od tego czy ta strata jest czysto księgowa (papierowa / memoriałowa) czy kasowa. Zanim te odpisy nastąpiły, kupiono aktywa za pieniądze. Te pieniądze ktoś dał w dobrej wierze. Jeśli aktywa nie ma, to i zwrotu pieniędzy (z inwestycji) nie ma. Przecież cały kapitał własny opiera się na dobrej wierze inwestorów, że spółka zwróci w przyszłości im pieniądze i jeszcze wypłaci nadwyżkę - w postaci dywidend. Skoro tej przyszłości nie ma, to znaczy, że te pieniądze przepadły. Stąd papierowe zyski mają znaczenie dla wyceny.

Podsumowując tę część, zrobiłem dwa arkusze z wyceną na ten sam dzień liczone inną techniką... czy może metodą? Żeby było jasne - technika to nie metoda. Przez technikę rozumiem sposób zdobywania danych, a przez metodę sposób obliczania wyników i wyceny, którego rdzeń stanowi jakaś filozofia podejścia. Metoda będzie się różnić w sensie założeń, a technika w sensie źródła danych. Przykładowo, bankierową techniką obliczałem C/Z mnożąc cenę zamknięcia przez liczbę akcji, i dzieląc to przez sumę zysków z 4-ch ostatnich kwartałów (dane z bankiera). Stooqowa technika pozwala od razu wpisać C/Z wprost z portalu. Natomiast metoda jest tu inna tylko w tym sensie, że zysk TTM (Trailing Twelve Months, tj. z 12-tu ostatnich miesięcy) uwzględnia (Stooq) lub nie uwzględnia (Bankier) różnic między raportem rocznym a kwartalnym.

Uśrednienie prognoz

Po głębszym przeanalizowaniu tej sprawy myślę, że jest sensowne wyciągnięcie średniej z tych dwóch arkuszy. Tego już tam nie pokazuję, więc tutaj o tym napiszę. W każdym arkuszu za najważniejszy uważam wariant 1 i 4. W technice bankierowej są to odpowiednio wartości 3013 oraz 2538. W technice stooqowej 2585 oraz 2443. Najpierw uśredniłbym 3013 z 2585, czyli dostajemy:

(3013 + 2585)/2 = 2800.

Następnie wyciągnę średnią 2538 i 2443:

(2538 + 2443)/2 = 2490.

Czy jest sens wyciąganie jeszcze średnich z tych liczb? Wydaje mi się to już trochę sztuczne, bo pierwsza wartość koncentruje się bardziej na przyszłości, natomiast druga (czyli oparta o oficjalne wskaźniki GPW) bardziej na teraźniejszości. Ta pierwsza jest jakby bardziej nastawiona na to co będzie za jakiś czas, a ta druga bardziej na wycenę bieżącą (chociaż to taka luźna interpretacja).

Przedział prognozy

Uzyskany przedział 2490-2800 jest bardzo umowny i należy go prędzej traktować jak średnią z przedziałów. Bo taki najbardziej konserwatywny wynik byłby na poziomie tego 2440, a najbardziej optymistyczny 3310.

Rzecz jasna nie oznacza to, że WIG20 nie pójdzie jeszcze w górę, a jedynie, że każdy ruch powyżej obecnego poziomu rodzi coraz wyższe ryzyko (dla inwestora przesadnie duże). Przypomnę może wycenę vs. indeks w listopadzie roku 2017 (przy okazji - jakieś deja vu - znowu rok po rządach Trumpa):

Jest to jeden z możliwych scenariuszy.

Link do wycen - ten sam co poprzednio. Po prostu dorzuciłem dwa nowe arkusze z wycenami.

niedziela, 30 listopada 2025

Historyczne wyceny WIG20 okazują się potwornie żmudne - nowe wnioski z analizy

 Im dłużej poświęcam czas na historyczne wyceny WIG20, tym więcej zauważam przeszkód. Ogólnie można je podzielić na 5 grup. Pierwsza to wpływ takich operacji jak np. odcięcie dywidend i splity. Problem jest następujący. Powiedzmy, że spółka ogłasza, że wypłaci w danym roku bardzo dużą dywidendę. Kurs oczywiście rośnie. Ale wtedy wycena musiałaby dodać tę dywidendę bieżącą, dopóki nie ma odcięcia. W sukurs przychodzi stooq.pl, który ma domyślną opcję korygowania ceny przed zdarzeniem odcięcia - historycznie wszystkie ceny przed dniem odcięcia są pomniejszane o tę odcinaną dywidendę, dzięki czemu nie ma nagłych przeskoków cen, tak że wycena w oparciu o te skorygowane ceny przed odcięciem będzie uwzględniać już tylko przyszłe dywidendy. Analogicznie z innymi operacjami. 

Skorygowane ceny na pierwszy rzut oka wydają się pełnym rozwiązaniem tego problemu. Ale pomyślmy głębiej. Cena w przeszłości jest korygowana o wszystkie dywidendy z przyszłości. Gdyby odcięcie dotyczyło tylko danego roku, nie byłoby problemu, bo wartość księgowa jeszcze w tym roku zostanie także skorygowana o tyle samo. Ale gdy cena jest korygowana o dywidendę za wszystkie kolejne lata, to powstaje kłopot, bo wartość księgowa będzie zawyżona w stosunku do ceny. Zarówno C/WK jak i C/Z będą za niskie. Skoro EPS uzyskuję przez odwrócenie C/Z i pomnożenie przez ceny WIG20 na dany dzień, to znaczy, że EPS będzie zawyżony, tak że wycena może okazać się zawyżona.

Z tym problemem wiąże się też inny - dostępność danych - jeżeli spółka została wycofana z giełdy, na Stooq już jej nie znajdziemy. Ceny starych spółek składu indeksu można znaleźć na gpwbenchmark.pl, ale tylko te faktyczne. Wszelkie operacje, jakie zaszły międzyczasie, są trudne do znalezienia.

Drugi (mniejszy) problem: trzeba pamiętać, że niektóre spółki nadal istnieją, ale zmieniły nazwę. Przykładem jest BZWBK, który obecnie nazywa się Santander Bank Polska. Na Stooq i w Bankierze więc będzie pod nową nazwą, ale w historii GPW będzie widniała stara nazwa. Tu powiem od razu, że irytuje mnie, że te serwisy nie konsolidują tych starych nazw z nowymi. Wystarczy przekierowanie ze starych na nowe. To chyba nie takie trudne?

Trzeci problem: wycena na bieżącym ROE okazuje się zgubna, gdy jest ono znacznie poniżej kosztu kapitału własnego. Okazuje się konieczne wyłuskanie średniej rentowności z przeszłości i na jej podstawie szacować przyszłość. Jeżeli jednak operujemy średnią ROE, to prowadzi to do kolejnego spostrzeżenia: aby wycena była spójna, koszt kapitału własnego musi też być średnią z przeszłości. Ja dotychczas operowałem bieżącymi szacunkami Damodarana. 

Czwarty problem, który sobie niedawno uświadomiłem to fakt, że szacunki Damodarana dotyczą wszystkich branż, czyli powiedzmy WIG, a nie WIG20. Czyli dotychczas zakładana stopa zwrotu była za wysoka, co zaniżało wyceny. 

Piąty problem: gdy największe spółki mają straty w danym roku, bieżący EPS zostaje tak zaniżony, że wycena okazuje się mało wiarygodna. Jeżeli spółka ma jednorazową stratę, to inwestorzy nie mogą zakładać, że we wszystkich kolejnych okresach będzie strata. Muszą zakładać, że będzie zysk, który będzie rósł. Dzieje się tak z dwóch powodów. Po pierwsze jednorazowa strata nie zwiastuje kolejnych. Oczywiście wiele zależy tu od określonych przyczyn i warunków sytuacji. Po drugie nawet jeśli spółka będzie miała wiele kolejnych strat z rzędu, to zostanie ona wykreślona z głównego indeksu: jej kapitalizacja spadnie, a zastąpi ją inna spółka. To jest zresztą istotny powód, dla którego lepiej inwestować w ETFy niż oddzielnie w każdą spółkę, jeśli nie mamy chęci / czasu na aktywne zarządzanie portfelem.

Teraz krótko omówię "rozwiązanie" każdego problemu.

Pierwszy problem rozwiązuję w ten sposób, że liczę wycenę dwukrotnie - raz z oryginalnymi cenami (bez korekt cenowych), a raz z korektą cen - jeżeli w ogóle jeszcze istnieją takie spółki na giełdzie (ponieważ niestety Stooq usuwa wycofane spółki ze swojej strony).  

Z tymi cenami bez korekt występuje też problem techniczny ze strony serwisów, jak bankier.pl czy biznesradar.pl. W przypadku splitów lub scaleń zmieniają wstecznie historyczne liczby akcji w wynikach finansowych, co okazuje się w zasadzie błędem z ich strony, a przynajmniej dużą przeszkodą dla ścisłych (księgowych) analiz. Przykładowo PZU miał split w 2015 r., a więc liczba akcji powinna się zmienić, ale tego nie widać w tabelach wyników w tych serwisach. Dlatego  tam gdzie trzeba wyjątkowo ręcznie zmieniłem liczbę akcji przed splitem, żeby dostosować do ceny sprzed splitu. Zaznaczyłem takie operacje purpurowym kolorem z komentarzem.

Jeśli chodzi o drugi problem, to nie jest on trudny dla mnie, bo akurat pamiętam, które spółki zmieniały nazwę.

Trzeci problem wymagał ode mnie dużej pracy - najpierw wyłuskałem wszystkie ROE WIG20 od 2009 do 2024 roku. Oto efekt końcowy:


Średnie ROE wyniosło 10,1% i wydaje się mniej więcej utrzymywać na tym poziomie. 

Następnie wyciągnąłem historyczne premie za ryzyko dla Polski od 2006 do 2024 wg szacunków Damodarana. Na koniec została najprostsza sprawa - premia za czas, tj. historyczne rentowności 10-letnich obligacji skarbowych. Suma obydwu premii daje koszt kapitału własnego.

No i tu dochodzimy do czwartego problemu. Szacunki Damodarana dotyczą kosztu kapitału dla całego kraju - wszystkie branże są brane pod uwagę. Czyli bardziej prawidłowo to jest dla WIG, a nie WIG20. Wydawałoby się, że skoro WIG20 zawiera więcej ryzyka politycznego (które raczej nie jest dywersyfikowalne), to suma sumarum oba indeksy mogą mieć zbliżoną oczekiwaną stopę zwrotu. Okazuje się jednak, że ryzyko polityczne nie kompensuje w całości ryzyka małych spółek. WIG daje większy zwrot. Dokładniej rzecz biorąc, porównałem WIG20TR (czyli WIG20 + dywidendy) z WIG i oto co dostałem:


Czyli WIG rośnie średniorocznie szybciej od WIG20TR o prawie 2 pkt proc. To rzeczywiście sporo, trzeba przyznać. Po prostu małe i średnie spółki są bardziej ryzykowne i inwestorzy wymagają większego zwrotu kapitału. 

Tak więc okazuje się, że dotychczas zawyżałem koszt kapitału WIG20 o te 1,9 pkt proc. 

Gdyby odjąć aż 1,9 pkt proc, to powinienem przyjąć zaledwie 9% oczekiwanej stopy zwrotu To nie za mało? Na wszelki wypadek sprawdziłem za pomocą testu CUSUM zmianę średniej różnicy, ale ewidentnie mamy tu losowe odchylenia:


Średnia różnica jest stabilna, czyli muszę po prostu przyjąć, że WIG20 ma niższy koszt kapitału (r) z powodu blue chipów. Dlatego ustalam, że r jest równy kosztowi kapitału dla Polski (lub WIG) minus 1,9 pkt proc. Wtedy wykres dla r kształtuje się następująco:

Jeżeli WIG20 płaci tylko 9%, to znaczy, że ROE > r, a to wyjaśnia dlaczego C/WK > 1 (średnia z lat 2006-2024 to 1,49). 

Trzeba zauważyć, że średnia ROE i r będą się zmieniać z roku na rok, bo wycena jest na dany dzień historyczny, a więc zawiera dane do ostatniego dostępnego roku. Chodzi o to, aby uzyskać faktyczne wyceny z przeszłości, a nie sztucznie dopasowywać do nowych danych.

Zostaje piąty problem. Proponuję robić 3 warianty. Pierwszy jest najważniejszy i polega na uśrednieniu dwóch kolejnych wariantów. Nie chodzi tu o sztuczną średnią z wycen, ale z założeń. I tak, drugi wariant uwzględnia wszystkie bieżące zyski i straty, a także wszystkie bieżące parametry (ROE, r itd.). Dlatego ten wariant nazywam "Wg danych bieżących". Trzeci wariant nazywa się "Wg danych uśrednionych": zeruje straty dla obliczenia EPS oraz uśrednia parametry z poprzednich lat. Usuwanie strat nie polega na usuwaniu wartości księgowej ani kapitalizacji spółek ze stratami, a jedynie wynik netto zamiast być stratą, stanie się zerem, co technicznie wdrażam przez sumę warunkową (wartość większa od zera). 

Przy tych założeniach mam następujące wnioski:
1. Im bliżej teraźniejszości, tym znacznie lepiej używać cen bez korekt, a im dalej w przeszłość, tym lepiej sprawdza się wycena po cenach z korektami. Zrobiłem wyceny na 30.10.2015, 18.11.2016, 17.11.2017, 19.11.2021 i 18.11.2022. Prześledzę krótko te wyceny:

30.10.2015: Cena zamknięcia 2060,0 pkt. Powiedzmy środek bessy. Wycena bez korekt (wariant 1): 1667 pkt, czyli całkowite dno, które zostanie wydrążone po prawie roku. Wycena z korektami: wariant 1 daje 2286 pkt, czyli bieżący kurs byłby poniżej tej wartości. Najbliżej kursu był wariant 2, bo wskazał   1954 (odchylenie ledwo -5%).

18.11.2016: Cena zamknięcia 1725,74 pkt. Było to prawie dno bessy. Wycena bez korekt (wariant 1): 941,78 pkt, czyli mocna przesada. Wycena z korektami (wariant 1):   1179 pkt, czyli bieżący kurs byłby powyżej tej wartości o 32%. Innymi słowy można było się spodziewać dalszych spadków, a mimo to rozpoczęła się hossa. Jedynie wariant 3 wskazał prawidłową wycenę (1788 pkt).

17.11.2017: Cena zamknięcia 2443,83 pkt. Był to szczyt hossy. Wycena bez korekt (wariant 1):   2354 pkt, czyli niemal w punkt. Wycena z korektami (wariant 1): 2891, tzn. zawyżona co najmniej o 18%. 

19.11.2021: Cena zamknięcia 2248,18 pkt. Był to szczyt hossy. Wycena bez korekt (wariant 1): 3851 pkt, czyli mocne przeszacowanie. Wycena z korektami (wariant 1): nie ma nawet sensu wspominać, bo grubo ponad 4000. Można najwyżej wspomnieć o wariancie 3: 3281 pkt, czyli co najmniej 46% za dużo. Powinniśmy się więc byli spodziewać kontynuacji hossy, tymczasem dostaliśmy za chwilę gwałtowny zjazd. Trzeba tu jednak przypomnieć, że przyczyna była bardziej przypadkowa i niezależna od czynników ekonomiczno-finansowych: wojna na Ukrainie. Gdyby nie to, zapewne rynek byka by się utrzymał. To też nauczka, że "czarny łabędź" wcale nie musi być taki rzadki (półtora roku wcześniej była pandemia).

18.11.2022: Cena zamknięcia 1707,23 pkt. Był to początek hossy. Wycena bez korekt (wariant 1):   2601 pkt, czyli 52% wyżej. Kurs dotarł tam, ale dopiero po 2,5 latach. Trochę bardziej wiarygodna była wycena wariantu 3: 2334 pkt, którą indeks osiągnął po ok. roku. Wyceny z korektami są zdecydowanie przesadzone.



2. Przy tych nowych założeniach dużą rolę zaczyna odgrywać współczynnik zatrzymania. Za bieżący współczynnik przyjmowałem średnią z ostatnich 2 lat, a więc można nim trochę kalibrować i dostosowywać, tak by wycena się bardziej "zgadzała". Jednak przypomnę, że, jak pokazałem w tym wpisie, EPS WIG20 stoi w miejscu od 2007 r.:


Na marginesie nie ma znaczenia, że Stooq błędnie wylicza C/Z dla indeksu (zob. tu), z którego wyliczałem EPS, bo chodzi tu wyłącznie o zmianę poziomów, a nie sam poziom. Ponieważ wzrost zależy od tego, ile zatrzymamy zysku, to widzimy, że nie możemy dowolnie ustawiać współczynnika zatrzymania. 

Oczywiście ktoś obeznany w temacie może zauważyć, że zatrzymany zysk może być kompensowany większym nabyciem akcji własnych, ale nie ma znaczenia co jak nazwiemy czy jaką mechanikę zastosujemy, bo liczy się odpowiednio rosnąca dywidenda, a nie precyzyjna proporcja zatrzymania zysku. A dywidenda z kolei rośnie mniej więcej tak jak WIG20, co można sprawdzić analizując stopę dywidendy WIG20 (dane historyczne dostępne w Stooq). Spójrzmy na ten rysunek:



Skoro średnia - niecałe 3% - jest dość stabilna (przy okazji w następnych latach stopa będzie pewnie spadać w ramach regresji do średniej, przynajmniej stopniowo), to znaczy, że dywidenda zmienia się właśnie w tempie WIG20. Problem polega na tym, że główny indeks nie pokonał nawet szczytu z 2007 r. Jednak od 2000 r. średnio rośnie on w tempie 3,4% (w sumie to tempo inflacji). Dlatego, skoro wiemy, że średnie ROE = 10,1%, to ok. 34% tej rentowności można traktować jako substytut współczynnika zatrzymania (10%*0.34 = 3,4%). Tak więc moje szacunki pokrywają się z pośrednio wyliczoną wartością tego współczynnika. Dla niektórych lat przyjmowałem 47-50%, co może być trochę za dużo (bo daje to 5% wzrostu), ale akurat taką średnią 2-letnią dostałem i myślę, że można do takiego poziomu podnieść w czasach hossy.

3. Chociaż trudno mi się pogodzić z r = 9%, to mam z tyłu głowy, że towarzyszy mu właśnie niski wzrost dywidendy. W modelu Gordona mamy r = d + g, gdzie d to stopa dywidendy i powinna być równa 2,9%, a g to wzrost dywidendy, który wychodzi 3,4%. Razem to 6,3%, czyli faktycznie mamy nadwyżkę 2,7%. Ta nadwyżka wynika z faktu, że parametry, których używam w modelu nie są zupełnie stałe, ale są zmiennymi losowymi, tak że do wzoru r = d + g należy dodać korektę związaną z wariancją. Na ten temat chciałbym bardziej szczegółowo napisać oddzielny artykuł.     

Link do pełnej analizy znajduje się tutaj. Niedługo dodam tam bieżącą wycenę WIG20. Nie chcę mieszać jej z historycznymi wycenami, dlatego napiszę o tym osobny wpis.

piątek, 10 października 2025

Prognozowanie ROE S&P 500

Jest oczywiste, że nawet jeśli dałoby się dokładnie przewidzieć księgowe zyski czy rentowności spółek, to nie oznacza jeszcze, że możemy przewidzieć choćby kierunek ich ceny. Jak się zastanowić, to paradoksalnie właśnie ich losowość pomaga w prognozie. Bo to jak usuwanie sezonowości z danych - jeśli wiadomo, że w danym sezonie zawsze są lepsze/gorsze wyniki, to nie będzie on miał wpływu na ceny, bo rynek uwzględnia w cenie takie zależności. Warunkiem jest pewność tej sezonowości, bo jeżeli sezonowość zaczyna się wahać, okazuje się nieregularnym cyklem, to nie usuwamy jej i wchodzi w grę możliwość wykorzystania jej do przewidywania kierunku. Powiedzmy, że mamy model wskazujący, że ROE wzrośnie w następnym roku. W teorii oznacza to, że rynek powinien to uwzględnić poprzez wyższą wycenę akcji, ale w praktyce występują różne korekty, w tym przypadku spadkowe, które można wykorzystać do kupienia, aby sprzedać później po tej wyższej cenie.  

Warto na początku pokazać relację między rocznymi stopami zwrotu a zmianami ROE S&P 500 od 1981 r. do 2024:

Dane ROE od 1980 r. wyłuskałem z dwóch źródeł: 

1) raport "Economic and Capital Markets Analysis: 2023 Year in Review U.S. Chartbook" opracowany przez batesgroup.com, s. 19;

2) https://www.multpl.com/sitemap

Ten pierwszy pokazuje na wykresie historyczne P/BV indeksu od 1980. Aby uzyskać ROE, podzieliłem P/BV przez P/E, które z kolei dostałem z tego drugiego źródła. Z niego także dostaniemy P/BV, ale od 1999 r. Dlatego do 1998 mam szacunkowe ROE, a od 1999 już dokładne. To opracowanie historyczne ROE wraz z analizą udostępniam tutaj. Poniżej końcowy wykres:


To co się rzuca w oczy, to niezwykle niskie ROE w latach 80-tych (5-6%). Jednak jak sprawdzimy, P/E wynosił wtedy ok. 10-11, czyli 3 razy mniej niż obecnie. Ale ROE obecne jest też ponad 3x większe. Czyli wszystko się zgadza.

Tak jak pisałem poprzednio, ROE bywa rożnie definiowane. Z punktu widzenia wyceny interesuje nas postać EPS / BV * (1+w), gdzie w to tempo wzrostu EPS w następnym roku (lub oczekiwane w danym roku). Mógłbym oczywiście rozbić te wszystkie czynniki i sprawdzać oddzielnie, może nawet do jakichś interesujących wniosków bym doszedł, ale nie chcę komplikować analizy, dlatego będę prognozować w całości taką zmienną i będę ją nazywał po prostu ROE. Oprócz wspomnianej poprawności teoretycznej zaletą tego podejścia jest uwzględnienie jednocześnie rentowności i wzrostu zysku.

Chociaż rok 2025 jeszcze nie minął, to są prognozy EPS S&P 500 na ten rok. Np. na tej stronie podane są kwartalne prognozy i sumarycznie przewiduje się 239 dol. Byłby to wzrost o 14,5%. Zakładając obecne wskaźniki P/E i P/BV, w = 14,5%, ROE(2025) = 20,3%. W sumie dostalibyśmy następujący wykres:

Wszystkie poniższe kody są zapisane w języku R. Ładowane są pakiety: forecast, tseries, lmtest oraz strucchange.

Luka PKB jako zmienna niezależna

ROE można próbować prognozować za pomocą zmiennych różnych ekonomicznych, jak wzrost PKB, inflacja lub stopa procentowa. Wszystkie te zmienne są ze sobą powiązane, zatem nie możemy ich wrzucać po prostu do modelu, jakby były niezależne. Zamiast tworzyć skomplikowane modele, możemy zauważyć, że pewnym pośrednikiem tych zmiennych jest luka PKB. Ostatnio pisałem o tym, że FED powinien podnosić stopę procentową, aby zmniejszyć lukę, która jest wyraźnie dodatnia. Wiemy, że FED zachował się politycznie pod dyktando Trumpa - w związku z tym inflacja wzrośnie, choćby z powodu nakładanych ceł, które nie zostaną skompensowane niższą stopą proc.

Nakładając wykres luki PKB na ROE, dostajemy zaskakującą korelację: 


W sumie korelacja wynosi 55%. Jednak obie zmienne mogą być niestacjonarne (test ADF tak sugeruje), a wtedy taka korelacja jest wątpliwa. Trzeba je sprowadzić do stacjonarności. Okazuje się, że po tym przekształceniu korelacja zostaje zachowana (54,4%). W dodatku ujawnia się wtedy ujemna korelacja (-0,37) z opóźnionym ROE:
ccf(zmianyLuka, zmianyRoe)


Oznaczałoby to, że jeżeli w danym roku luka rośnie, to ROE rośnie i w następnym roku ROE spada albo rośnie wolniej. Analogicznie w przypadku zmniejszenia się luki. Dodatnia korelacja jest dość oczywista - wyższe lub niższe ROE odzwierciedla stan gospodarki (wzrost PKB oraz w jakimś stopniu inflację). Trudniejsza do wyjaśnienia jest ta ujemna opóźniona reakcja. Najpierw wykonamy test Grangera:

 > grangertest(x=zmianyLuka, y=zmianyRoe, order=1)
Granger causality test

Model 1: zmianyRoe ~ Lags(zmianyRoe, 1:1) + Lags(zmianyLuka, 1:1)
Model 2: zmianyRoe ~ Lags(zmianyRoe, 1:1)
  Res.Df Df     F Pr(>F)  
1     40                  
2     41 -1 4.439 0.0415 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


, który potwierdza, że to nie przypadkowa korelacja, ale przyczynowość (luka jest wcześniej). Następnie zbudujemy liniowy model z opóźnieniem zmian ROE i zbadamy i jego stabilność

> zmianyRoe_ts <- ts(zmianyRoe, start = 1982)  
> zmianyLuka_ts <- ts(zmianyLuka, start = 1982)
> zmianyRoe_ts1 <- window(zmianyRoe_ts, start = 1983)  
> zmianyLuka_ts1 <- window(zmianyLuka_ts, start = 1982, end = 2024)
> modelRoe <- zmianyRoe_ts1 ~ zmianyLuka_ts1
> bai = breakpoints(modelRoe)
> bai

	 Optimal 2-segment partition: 

Call:
breakpoints.formula(formula = modelRoe)

Breakpoints at observation number:
24 

Corresponding to breakdates:
2006 

Test Bai-Perrona wskazuje na zmianę struktury w 2006 r. Sprawdźmy jak zmieniają się współczynniki:

> coef(bai)
            (Intercept) zmianyLuka_ts1
1983 - 2006    0.562118      0.0796585 

2007 - 2025 0.241999 -2.1666214 


Wg testu do 2006 r. ujemna zależność w ogóle nie istniała. Żeby się upewnić czy przyczyną nie jest jakiś inny efekt jak autokorelacja reszt, kwadratów reszt czy heteroskedastyczność wykonujemy kilka testów:

> reszty <- resid(lm(modelRoe))
> 
> # autokorelacje reszt:
> bgtest(modelRoe, order = 2)

	Breusch-Godfrey test for serial correlation of order up to 2

data:  modelRoe
LM test = 3.643, df = 2, p-value = 0.162

> Box.test(reszty, type = "Ljung-Box")

	Box-Ljung test

data:  reszty
X-squared = 0.1114, df = 1, p-value = 0.739

> 
> # autokorelacje kwadratów reszt:
> Box.test(reszty^2, type = "Ljung-Box")

	Box-Ljung test

data:  reszty^2
X-squared = 0.4259, df = 1, p-value = 0.514

> 
> # heteroskedastyczność
> bptest(modelRoe)

	studentized Breusch-Pagan test

data:  modelRoe
BP = 2.145, df = 1, p-value = 0.143

> gqtest(modelRoe) 

	Goldfeld-Quandt test

data:  modelRoe
GQ = 0.9562, df1 = 20, df2 = 19, p-value = 0.54
alternative hypothesis: variance increases from segment 1 to 2

> hmctest(modelRoe)

	Harrison-McCabe test

data:  modelRoe
HMC = 0.4871, p-value = 0.504


Żaden z tych testów nie wykrył problemów z resztami, a zatem zmiana struktury wydaje się faktem. Ostatni test, jaki warto przeprowadzić, aby się upewnić, że zmiana struktury dotyczy współczynnika kierunkowego, a nie wyrazu wolnego, to Score-CUSUM, oddzielający graficznie możliwe załamanie w każdym współczynniku:


Wynik pokrywa się z testem Bai-Perrona, który wskazał rok 2006 jako rok zmiany struktury. Teraz dodatkowo mamy dowód, że chodzi wyłącznie o zmiany luki PKB, a nie wyrazu wolnego czy wariancji. 

Nadal nie odpowiedziałem skąd może wynikać ta zmiana. Biorąc pod uwagę, że rok 2007 był przełomowy w historii finansów, możliwe, że tu coś "pękło". Danych jest trochę mało, ale taki model nadal jest istotny:

> zmianyRoe_ts2 <- window(zmianyRoe_ts, start = 2007)  
> zmianyLuka_ts2 <- window(zmianyLuka_ts, start = 2006, end = 2024)
> modelRoe <- zmianyRoe_ts2 ~ zmianyLuka_ts2
> summary(lm(modelRoe))

Call:
lm(formula = modelRoe)

Residuals:
    Min      1Q  Median      3Q     Max 
-11.044  -0.403   0.184   1.762   4.152 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)       0.242      0.758    0.32  0.75338    
zmianyLuka_ts2   -2.167      0.463   -4.68  0.00022 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.3 on 17 degrees of freedom
Multiple R-squared:  0.563,	Adjusted R-squared:  0.537 
F-statistic: 21.9 on 1 and 17 DF,  p-value: 0.000215


Rysunek dobrze naświetla co tu się dzieje:


Rok 2007-2008 był wstrząsem który mógł zmienić strukturę zachowania samego PKB (być może jest to związane z działaniami państwa w celu zminimalizowania kryzysu). Rzeczywiście, od 2007-2008 r. pojawiła się ujemna autokorelacja 1 rzędu dla zmian wzrostu PKB (do 2005 była ujemna, ale nieistotna stat., po tym roku wynosi ponad 0,6). Logika podpowiada, że to właśnie ta autokorelacja jest przyczyną ujemnej opóźnionej korelacji z ROE. Wyżej widzieliśmy, że ROE koreluje dodatnio ze zmianami PKB dla tego samego roku. Zatem skoro zmiany PKB ujemnie autokorelują, to jeśli w jednym roku są wyższe, to w następnym roku będą niższe lub ujemne, a z tego wynika, że w tym drugim roku zmiana ROE też będzie średnio biorąc niższa lub ujemna.  

Zmiana luki PKB w 2025 najprawdopodobniej będzie lekko ujemna, co sugeruje wzrost ROE w 2026. Usuwając stałą z modelu, która w tym przypadku raczej przeszkadza, dostajemy:

> modelRoe <- zmianyRoe_ts2 ~ zmianyLuka_ts2 - 1
> summary(lm(modelRoe))

Call:
lm(formula = modelRoe)

Residuals:
    Min      1Q  Median      3Q     Max 
-10.803  -0.155   0.425   1.994   4.410 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
zmianyLuka_ts2   -2.161      0.451   -4.79  0.00015 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.22 on 18 degrees of freedom
Multiple R-squared:  0.561,	Adjusted R-squared:  0.536 
F-statistic:   23 on 1 and 18 DF,  p-value: 0.000146


I teraz prognoza:
> predict.lm(lm(modelRoe), newdata = data.frame(zmianyLuka_ts2 = zmianyLuka[length(zmianyLuka)]))
       1 
0.359036

Na 2026 prognoza ROE = 20,3 + 0,36 = 20,7%. 

Uzyskaliśmy więc prognozę ROE na poziomie ok. 21%. Skoro stopa zwrotu koreluje dodatnio z ROE, to możemy się spodziewać w sumie wzrostu S&P 500 jeszcze w 2026... 


Nazwałbym osiągnięciem to co uzyskałem, bo nie jest to mechaniczny model oparty na ARMA. Żaden system AI czegoś podobnego nie zbuduje. Wymaga namysłu, wiedzy i prawdziwego rozumowania ekonomicznego. Ale nie znaczy to, że z ARMA można zupełnie zrezygnować. Zawsze warto podeprzeć się paroma modelami, bo prognoza z kilku perspektyw jest bardziej obiektywna. 

Autoregresja i średnia krocząca

Najpierw jednak trzeba sprawdzić rozkład zmian ROE. Właściwie powinienem to sprawdzić na samym początku, ale normalność nie ma aż takiego znaczenia w przypadku zwykłej regresji liniowej. Jednak tam gdzie stosuje się metodę największej wiarygodności, lepiej dostosować odpowiednio dane do rozkładu albo rozkład do danych. Robimy test Shapiro-Wilka:

 > shapiro.test(zmianyRoe)


	Shapiro-Wilk normality test

data:  zmianyRoe
W = 0.8992, p-value = 0.00102


Czyli rozkład jest daleki od normalnego. Popatrzmy w ogóle na te zmiany w końcu:


Wygląda to tak, jakby wariancja się zmieniła. Wykonajmy gqtest i hmctest na samych zmianach:

> modelRoe <- zmianyRoe_ts ~ 1
> gqtest(modelRoe)

	Goldfeld-Quandt test

data:  modelRoe
GQ = 2.002, df1 = 21, df2 = 21, p-value = 0.0598
alternative hypothesis: variance increases from segment 1 to 2

> hmctest(modelRoe)

	Harrison-McCabe test

data:  modelRoe
HMC = 0.3332, p-value = 0.056


Rzeczywiście jest blisko heteroskedastyczności, co stanowi dodatkowy argument, żeby dokonać korekty obserwacji. Idziemy więc do auto.arima i tam dostosujemy dane.

Aby znormalizować niegaussowskie szeregi w auto.arima stosujemy transformację Boxa-Coxa. Są tu dwa argumenty do użycia: lambda oraz biasadj. Pierwszy to parametr transformacji. Domyślnie ustawiony na NULL, a teraz ustawiamy go na "auto". Drugi to parametr odwrotnej transformacji. Jeżeli ustawimy go na FALSE, to estymatory dopasowania oraz prognozy - jeżeli lambda nie jest NULL - są medianą (przekształcenie monotoniczne funkcji nie zmienia jej wartości środkowej, ale średnią owszem). Żeby sprowadzić medianę do średniej, potrzebna jest korekta - to robi biasadj. Możemy ustawić biasadj = TRUE, jeśli chcemy mieć średnią, czyli wartość oczekiwaną. Istotne, żeby w takim przypadku używać samego ROE jako zmiennej prognozowanej, dlatego że transformacja Boxa-Coxa działa tylko na dodatnich wartościach. 

Użyję kryterium AIC. BIC okazało się za surowe - wskazało błądzenie losowe. 

> roe_ts <- ts(roe, start = 1981)
> arima_model <- auto.arima(roe,
+                           ic = "aic", max.p = 10, max.q = 10,
+                           stepwise = FALSE, approximation = FALSE, lambda = "auto", biasadj = TRUE)
> arima_model
Series: roe 
ARIMA(0,1,2) with drift 
Box Cox transformation: lambda= 1.18272 

Coefficients:
         ma1     ma2  drift
      -0.365  -0.268  0.516
s.e.   0.145   0.147  0.322

sigma^2 = 32:  log likelihood = -137.31
AIC=282.62   AICc=283.65   BIC=289.76
> prognoza <- forecast(arima_model, h=1)$mean
> prognoza
Time Series:
Start = 46 
End = 46 
Frequency = 1 
    out 
19.9176 
> roe_ts <- ts(roe, start = 1981)
> arima_model <- auto.arima(roe_ts,
+                           ic = "aic", max.p = 10, max.q = 10,
+                           stepwise = FALSE, approximation = FALSE, lambda = "auto", biasadj = TRUE)
> arima_model
Series: roe_ts 
ARIMA(0,1,2) with drift 
Box Cox transformation: lambda= 1.18272 

Coefficients:
         ma1     ma2  drift
      -0.365  -0.268  0.516
s.e.   0.145   0.147  0.322

sigma^2 = 32:  log likelihood = -137.31
AIC=282.62   AICc=283.65   BIC=289.76
> prognoza <- forecast(arima_model, h=1)$mean
> prognoza
Time Series:
Start = 2026 
End = 2026 
Frequency = 1 
    out 
19.9176

    

Optymalny model to MA(2) i prognozuje on lekki spadek ROE w 2026 do poziomu ok. 20%. Gdybyśmy pominęli transformację, wartość niewiele by się zmieniła, bo dostalibyśmy równo 20%.

W zasadzie nie musimy nawet zastanawiać się nad tym czy transformować czy nie, tylko od razu użyć z tego samego pakietu modelu BATS (akronim od: Box-Cox transform, ARMA errors, Trend, and Seasonal components), który automatycznie sprawdza czy transformować dane i jeśli potrzeba to robi; poza tym wyławia trend, sezonowość i ARMA w resztach. 

> roe_model_bats <- bats(roe_ts, biasadj = TRUE)
> prognoza <- forecast(roe_model_bats, 1)$mean
> prognoza
Time Series:
Start = 2026 
End = 2026 
Frequency = 1 
[1] 19.6489

Tak samo jak poprzednio, jeśli biasadj = FALSE (domyślnie), dostaniemy medianę. Właściwie to w ogóle można pominąć ten argument, bo mediana często jest lepsza od średniej  dla niegaussowskich rozkładów (zob. ten wpis). 

BATS nie jest to bardziej zautomatyzowana wersja auto.arima, tylko bardziej złożony model w przestrzeni stanów (state space model). Stanem może być średni poziom ROE, nachylenie trendu albo pewna cykliczność. Jak sama nazwa wskazuje, to stan, który obowiązuje w danym czasie, a więc w następnych okresach może się zmienić. Mimo to współczynniki ARMA pozostają stałe. Intuicyjnie: jeżeli mamy tłumioną sinusoidę, to funkcja jest stała, w tym zawiera parametr tłumienia; stanem jest wtedy amplituda (wielkość ruchu), która się zmniejsza wraz z każdym okresem. 

ARMA + luka PKB

W końcu można połączyć model czysto ekonomiczny z ARMA, czyli użyć ARMAX. Do auto.arima wpisujemy argument xreg, który będzie zmianami luki PKB. Powrócę więc też do zmian ROE - i to od 2006 r., bo, jak pamiętamy, regresja z luką do tego roku była niestabilna.  Oznacza to, że lepiej wtedy nie transformować danych, bo występują ujemne wartości. Muszą wystarczyć surowe:

> arima_model <- auto.arima(zmianyRoe_ts2,
+                           ic = "bic", max.p = 10, max.q = 10,
+                           stepwise = FALSE, approximation = FALSE, xreg = zmianyLuka_ts2)
> arima_model
Series: zmianyRoe_ts2 
Regression with ARIMA(0,1,1) errors 

Coefficients:
         ma1    xreg
      -0.619  -2.478
s.e.   0.197   0.381

sigma^2 = 10.7:  log likelihood = -46.07
AIC=98.14   AICc=99.86   BIC=100.81
> prognoza <- forecast(arima_model, h=1, xreg = zmianyLuka_ts2[length(zmianyLuka_ts2)])$mean
> prognoza
Time Series:
Start = 2026 
End = 2026 
Frequency = 1 
[1] 1.29567

Nie ma znaczenia którego kryterium użyję - daje to samo. W sumie prognoza jest mocno dodatnia. Na 2026 mamy 20,3 + 1,3 = 21,6%. Pamiętać oczywiście trzeba, że model powstał w oparciu o bardzo małą próbę (ledwo 19 obserwacji), więc nie jest to szczególnie wiarygodna wartość. Raczej traktować ją należy jak drogowskaz.


Podsumowując, mechaniczne metody prognozują delikatny spadek ROE, ale efekt ekonomiczny zmienia ten kierunek na dodatni. I wstępnie dodaje giełdzie amerykańskiej pretekstu do dalszych zwyżek. 

Link do danych z tej analizy

wtorek, 16 września 2025

FED powinien podnosić, nie obniżać stóp

 Normalnie uważa się, że nie należy się kłócić z rynkiem. Ale w dzisiejszych czasach, to raczej rynek nie chce się kłócić z Trumpem. Trump żąda obniżki stóp procentowych od FEDu, rynek mu wierzy i pewnie pod to tak ciągną indeksy. Wszyscy wierzą, że FED pokornie obniży stopy i wygląda na to, że tak się właśnie stanie. Będzie to dowód na upolitycznienie tej instytucji, albowiem nic nie wskazuje, aby stopy były niższe, wręcz przeciwnie - powinny być lekko podniesione.

Po pierwsze zgodnie z wytycznymi celem FEDu powinno być utrzymanie inflacji na poziomie 2% (zob. źródło). Tymczasem inflacja w USA sięga 3% (źródło):


 Po drugie reguła Taylora, którą FED powinien się kierować, wprost wskazuje zbyt niski poziom (źródło):


Powiedzmy jednak, że krytyk tego podejścia uzna je za zbyt sztywne, bo nie bierze pod uwagę przyszłej koniunktury. Pretekstem do obniżek mają być gorsze dane z rynku pracy. Tyle że jakoś FED prognozuje normalny, nawet lepszy niż w ostatnich latach, wzrost (źródło):


Stąd reguła Taylora w wersji dynamicznej, którą prezentowałem kilka lat temu, a teraz zaktualizowałem, pokrywa się z klasyczną (link do danych):



I rzeczywiście, zgodnie z tą regułą, luka PKB jest już przesadnie dodatnia i powinna być jak najprędzej ograniczana (źródło):


Luka trochę się zmniejszyła, zatem powinni przynajmniej utrzymać stopy na obecnym poziomie. Więc to jest test dla FEDu, czy poddadzą się politycznym naciskom. 

środa, 3 września 2025

Ile powinien kosztować WIG20 trzy lata temu?

Żeby ocenić, na ile model wyceny jest sensowny albo skuteczny, należy przetestować go na  historii. Modelując wycenę WIG20 na drugą połowę 2022 r., spodziewałem się, że model Gordona wskaże niedowartościowanie na początku hossy. Jednak indeks okazał się być prawidłowo wyceniony. Możliwe, że model jest za prosty, może trzeba by założenia parametrów poprawić, a może po prostu rynek zgodził się z modelem. 

Jeśli chodzi o założenia parametrów można je oczywiście zmieniać, ale nie znaczy to, że można wstawiać dowolne liczby. Stopa dyskontowa 11,6% to suma premii za ryzyko USA, krajowego (na podst. strony Damodarana) i stopy wolnej od ryzyka (przyjąłem 6%). Współczynnik wypłaty dywidendy / zatrzymania jest trudny do oszacowania. Dziś wg moich szacunków wsp. wypłaty wynosi ok. 60-70%, czyli zatrzymania 30-40%. Można nawet dla szybkiego sprawdzianu spojrzeć na PKO: EPS = 8, dywidenda = 5.5, czyli wsp. wypłaty = 5,5/8 = 69%, a więc wsp. zatrzymania 31%. Podobnie PEKAO: odpowiednio 25,75 i 18,35, wsp. zatrzymania = 1 - 18,35/25,75 = 0,29. Ostatnio jak robiłem, to wpisywałem wsp. wypłaty = 66,66%, czyli prawidłowo, ale zamieniłem teraz na równe 70% (praktycznie nie zmienia to wyceny). Taki współczynnik generuje wzrost zysku między 3,5 a 4,6%. 

Współczynnik ten jednak się zmienia. W 2022 r. wyszło mi niecałe 50% dla wsp. zatrzymania, dokładniej 47%, i tyle przyjąłem.

Ostatni aspekt, jaki chciałem krótko poruszyć dotyczy ROE. Nigdy tego szczegółowo nie analizowałem, bo nie uważałem tego za zbyt ważne, ale teraz wyjaśnię dokładniej, że istnieją 3 różne metryki ROE:
1) podstawowa: Z(t) / KW(t) , gdzie Z(t) to zysk netto w okresie t i KW(t) to wartość księgowa kapitału własnego w okresie t,
2) stosowana w różnych analizach finansowych: Z(t) / [KW(t) + KW(t-1)]/2,
3) jedyna prawidłowa dla wyceny: Z(t) / KW(t-1), dlatego że ROE porównuje się z kosztem kapitału własnego, a ten jest stopą procentową / zwrotu.

ROE dla wyceny można też zapisać jako Z(t) * (1 + w)/ KW(t) = Podstawowe ROE * (1+w) , gdzie w to tempo wzrostu zysku. Chodzi nam o oszacowanie przyszłego ROE, czyli przyszłego zysku. Tej formuły używam, ale za w nie wstawiam wzrostu dywidendy, tylko tempo nominalnego wzrostu PKB. Zysk może rosnąć nie tylko dzięki zyskowi zatrzymanemu, ale także dzięki emisji akcji i obligacji. Ta emisja pochodzi z dochodów ludności, które rosną właśnie w tempie w. Tak więc ten wzrost nie pochodzi od strony podażowej, ale popytowej  - innymi słowy spółka może wyemitować maksymalnie tyle ile ludzie dodatkowo zarabiają. Tak więc wzrost z tej emisji nowego kapitału jest ograniczony możliwościami gospodarki. Z Banku Światowego można uzyskać dane na temat statystyk wzrostu nominalnego PKB i właśnie stąd w = 7%. 

Wycenę zrobiłem na dzień 18.11.2022, kiedy skład WIG20 został zaktualizowany. Dostałem wartość indeksu na poziomie 1783 zł. Tego dnia WIG20 kosztował na koniec dnia 1707,23 zł, zatem ściśle biorąc był niedowartościowany, ale zaledwie o 4%, więc trudno tu mówić o jakimś niedowartościowaniu. 


Co by się stało, gdyby przyjąć wsp. zatrzymania na poziomie dzisiejszym, 30-40%? Przy 30% jest to 1461, a przy 40% 1612. Czyli powiedzmy 1500 - też nie jest to poziom odległy, bo jeszcze miesiąc wcześniej indeks tam się wspinał. A co powodowało dalszy wzrost? Zysk netto spółek mocno wzrósł w kolejnym roku - średnio gdzieś o 40%. 

Link do wyceny znajdziemy tutaj.

niedziela, 31 sierpnia 2025

Krótka uwaga na temat free floatu

 Ostatnia wycena ad hoc WIG20, czyli z modelu Gordona, okazuje się jeszcze niższa niż te 1950 zł. Problem polega na wstawieniu odpowiedniej kapitalizacji i liczby akcji. W poprzedniej wycenie wstawiłem nie tyle wyemitowaną liczbę akcji, co liczbę akcji w obrocie, tj. free float. Po uwzględnieniu wszystkich akcji (na podstawie danych z bankier.pl), wycena spada do 1882 zł (link).

Można by przekonywać, że wartość tworzą jedynie ci, którzy handlują akcjami i stąd wycena nie powinna dotyczyć części zamrożonej. Free float obejmuje jednak tylko liczbę akcji na daną chwilę, a pakiety kontrolne też mogą być sprzedawane. 

Mniejszy free float rodzi zarówno przychody jak i koszty. Koszty to mniejsza płynność (trudniej kupić / sprzedać po własnej cenie) oraz związane z tym ryzyko manipulacji kursem (przez zmowę spekulantów). Ponadto duża koncentracja akcji w rękach paru podmiotów rodzi ryzyko wywłaszczenia. O problemie wywłaszczenia, czy w ogóle to jest legalne, pisałem w art. Wyciskanie akcjonariusza, czyli kiedy wycena nie ma sensu. W sumie wzrasta koszt kapitału własnego - a to obniża wartość. 

Z drugiej strony większa koncentracja kapitału w rękach inwestorów instytucjonalnych sprawia, że zarząd spółki nie może robić co mu się żywnie podoba i może być łatwo odwołany. Duzi inwestorzy patrzą na ręce zarządowi i nie będą pozwalać np. na dodatkową emisję akcji lub obligacji. Oczywiście ta zaleta koncentracji kapitału powstaje jedynie przy warunku, że pakiety kontrolne nie należą do podmiotów powiązanych z zarządzającymi. Jeśli tak się dzieje, to nie można mieć pewności, że będą zatrudniani ludzie wg klucza kompetencji, a wszelkie emisje będą tylko ułatwiane. 

W każdym razie kupując akcje powinniśmy też zwracać uwagę na poziom free floatu i kto ma kontrolę. Wydaje się, że najlepszą sytuacją jest, jeśli po pierwsze kontrola jest rozproszona między wiele funduszy niezależnych od siebie, ale sumarycznie mają powyżej 50%, a po drugie, żeby ta kontrola nie była powyżej powiedzmy 80-85%. Wzorową sytuacją jest Kruk (kontrola = 73%, najwięcej ma niecałe 13% fundusz), a przeciwieństwem mBank (kontrola 90,08%, a inny (niemiecki) bank ma aż 69% akcji). 

niedziela, 24 sierpnia 2025

Policzmy w końcu poprawnie wskaźniki indeksów

Zawsze gdy analizujemy dane finansowe, staramy się je uzyskać z najbardziej rzetelnych i aktualnych źródeł. Gdy więc chcemy zobaczyć bieżące C/Z i C/WK indeksu lub spółki, pierwszym wyborem powinno być to oficjalne. W przypadku WIG20, będzie nim strona gpwbenchmark. Widzimy, że C/Z równa się 14,66, a C/WK 1,64 (stan na 21.08.2025). Gdy jednak chcemy znaleźć historyczne wskaźniki, to dużo łatwiej oprzeć się na źródłach pośrednich. Korzystamy więc np. ze stooq. I okazuje się, że portal pokazuje inne dane: C/Z = 16,19 i C/WK = 2,86. Z czego wynika ta różnica? Czy stooq.pl pokazuje błędne wartości?

W jaki sposób policzyć wskaźnik dla indeksu? Zajmijmy się C/WK. Na logikę, cały indeks jako portfel traktujemy jak jedną spółkę. Czyli:

C/WK = Kapitalizacja portfela / Wartość księgowa portfela


Całą kapitalizację oznaczymy Kap. Powiedzmy, że mamy 3 spółki w portfelu.  Zapiszemy:


gdzie Kap_i oznacza kapitalizację spółki i, czyli


gdzie N_i - liczba akcji spółki i, C_i - cena akcji. 

Wtedy C/WK indeksu ma postać:




 WK_i - wartość księgowa na akcję spółki i.

Taką właśnie definicję wskaźników znajdziemy w dokumencie GPW "Podstawowe algorytmy wskaźników rynku kapitałowego". Jest to nic innego jak średnia ważona harmoniczna:


I dla C/Z analogicznie:


gdzie Z_i - EPS dla i-tej spółki.

Taki wzór powinno się stosować.

Dlaczego nazywa się to średnią ważoną, skoro nie widać tu żadnych wag? Wzór można tak przekształcić, żeby wagi się pojawiły. Wtedy będzie można porównać powyższy wzór z innymi średnimi ważonymi. Najpierw zdefiniujemy udział i-tej spółki w portfelu:  



Czy za udział można by alternatywnie wstawić liczbę akcji podzieloną przez liczbę wszystkich akcji? Nie, bo wtedy split czy resplit zmieniałby udział. "Waga" jest więc ciut lepszym słowem niż udział, bo jak coś waży, to wiadomo o co chodzi. Definicja udziału wywodzi się jednak formalnie z teorii portfela, w której inwestor przeznacza określoną sumę pieniędzy na zakup danego waloru (zob. ten wpis, w którym jest to wyjaśnienie). 

To teraz przekształcimy pierwotny wzór:

 


Czyli dostajemy postać:



Powiedzmy jednak, że jesteśmy otwarci na eksperymenty z innymi metodami. Porównajmy naszą formułę ze średnią ważoną arytmetyczną i geometryczną.

Średnia ważona arytmetyczna

To metoda intuicyjna w tym sensie, że wykorzystujemy naturalnie wagi (udziały) spółek z portfela. Każdą wagę mnożymy przez wskaźnik dla danej spółki:


Wskaźnik C/Z wygląda analogicznie. Teraz pomyślmy co się stanie, gdy zysk trzeciej spółki wynosi zero lub jest bardzo niski. C/Z skacze do nieskończoności albo do ogromnych wartości, a więc średnia ważona C/Z dla całego portfela będzie nienormalnie duża. Czyli z punktu widzenia C/Z widać, że nie należy tego sposobu używać. Ale wszystkie wskaźniki muszą być liczone tą samą metodą, aby zachować spójność i proporcjonalność (chociażby, żeby policzyć ROE ze stosunku C/WK do C/Z). Zatem dostajemy dowód, że C/WK też nie może być liczone w ten sposób.   


Średnia ważona geometryczna

Trzecią możliwością jest średnia geometryczna z wagami w potęgach:


Tutaj można przeprowadzić identyczne rozumowanie co w przypadku średniej arytmetycznej. Jeśli zysk wyniesie zero, to średnia ważona geometryczna skacze do nieskończoności. Nie musi być to nawet dokładnie zero, wystarczy, że będzie bardzo mały. Gdyby była strata, to już w ogóle nie dałoby się nic policzyć. Jedna spółka całkowicie psuje wskaźnik. Trzeba więc porzucić tę metodę, ale żeby zachować spójność, także C/WK nie może być w ten sposób liczone.


Przykłady
Zobaczmy przykłady trzech wariantów-okresów. Dla uproszczenia liczba akcji wszędzie równa się 1.

Okres I – wszystkie spółki mają podobny zysk
Dane wejściowe:
Spółka 1: C1 = 100, Z1 = 10, Kap1 = 100, C1/Z1 = 10
Spółka 2: C2 = 150, Z2 = 10, Kap2 = 150, C2/Z2 = 15
Spółka 3: C3 = 120, Z3 = 10, Kap3 = 120, C3/Z3 = 12

Suma kapitalizacji i zysków: 
Kap1 + Kap2 + Kap3 = 370 
Z1 + Z2 + Z3 = 30

Wagi: 
w1 = Kap1 / (Kap1 + Kap2 + Kap3) = 100 / 370 = 0,27
w2 = 150 / 370 = 0,41 
w3 = 120 / 370 = 0,32

Średnie ważone: 
Arytmetyczna = 12,7
Geometryczna = 12,5
Harmoniczna = 12,3


Okres II – spółka 3 ma spadek zysku o 95% i kapitalizacji o 40%
Dane wejściowe: 
Spółka 1: C1 = 100, Z1 = 10, Kap1 = 100, C1/Z1 = 10 
Spółka 2: C2 = 150, Z2 = 10, Kap2 = 150, C2/Z2 = 15 
Spółka 3: C3 = 72, Z3 = 0,5, Kap3 = 72, C3/Z3 = 144

Suma kapitalizacji i zysków: 
Kap1 + Kap2 + Kap3 = 322 
Z1 + Z2 + Z3 = 20,5

Wagi: 
w1 = Kap1 / (Kap1 + Kap2 + Kap3) = 100 / 322 ≈ 0,31
w2 = 150 / 322 ≈ 0,47 
w3 = 72 / 322 ≈ 0,22

Średnie ważone: 
Arytmetyczna = 42,3
Geometryczna = 21,9
Harmoniczna = 15,7


Okres III – spółka 3 ma zysk zero i spadek ceny o 50%
Dane wejściowe: 
Spółka 1: C1 = 100, Z1 = 10, Kap1 = 100, C1/Z1 = 10 
Spółka 2: C2 = 150, Z2 = 10, Kap2 = 150, C2/Z2 = 15 
Spółka 3: C3 = 60, Z3 = 0, Kap3 = 60, C3/Z3 = nieskończoność

Suma kapitalizacji i zysków: 
Kap1 + Kap2 + Kap3 = 310 
Z1 + Z2 + Z3 = 20

Wagi: 
w1 = Kap1 / (Kap1 + Kap2 + Kap3) = 100 / 310 = 0,32 
w2 = 150 / 310 = 0,48 
w3 = 60 / 310 = 0,19

Średnie ważone: 
Arytmetyczna = nieskończoność 
Geometryczna = nieskończoność 
Harmoniczna = 15,5


Spójrzmy jak "oporna" jest ta średnia harmoniczna - nawet przy nieskończonej wartości C/Z dla jednego składnika, jest stabilna, a dla ogromnych wzrostów wskaźników niewiele się zmienia. 

Co ze stratami?

Konstrukcja średniej harmonicznej pozwala też użyć jej dla spółek ze stratami, jeśli nie przeważają nad zyskami pozostałych. Ponieważ wskaźniki poszczególnych spółek sztucznie usuwa się z analizy, gdy występują straty, to lepiej używać wzoru ze stosunkiem sum, ponieważ ten z wagami wymaga użycia indywidualnych wskaźników.
 
I tu zaczyna się problem. Obecnie dwie z WIG20 są pod kreską (Pepco i PGE). Jeśli ich nie uwzględnimy, to sztucznie zaniżymy C/Z. Powoduje to nie tylko błędną analizę porównawczą, ale też dostaniemy nieprawidłowe ROE dzieląc C/WK przez C/Z. 

Potrzebujemy więc odpowiednich danych, tj. strat dla tych spółek, których nie wyłuskam ze wskaźników (raczej nie podaje się ich, gdy są ujemne). Spojrzałem więc na dane w dwóch źródłach - bankier.pl i biznesradar.pl. Oba portale pokazują inne liczby. 
Biznesradar: dla Pepco wskazuje ponad 3 mld zł strat, dla PGE ponad 1,5 mld strat. 
Bankier: dla Pepco w ogóle nie wykazuje ani zysku ani strat, dla PGE to 1,64 mld strat. 

Biorąc dane Bankiera dostałbym C/Z  = 14,59, natomiast wg Bizneradar ok. 17. Zakładając, że bankier.pl ma bardziej poprawne dane, możemy uznać, że gpw uwzględnia straty - wtedy wszystko będzie prawidłowo (przypominam, że podali 14,66).

Straty trzeba koniecznie uwzględnić we wskaźnikach nie tylko dlatego, że  błędnie omijamy gorsze spółki, ale także po to, aby utrzymać współmierność z innymi wskaźnikami. Jeżeli policzymy C/WK normalnie sumując wszystkie kapitalizacje i dzieląc je na sumę wartości księgowych (czyli średnią harmoniczną), dostaniemy dla WIG20 1,65 (stan na 21.08.2025), czyli praktycznie idealnie się zgadza z danymi gpw, a różnica wynika z zaokrągleń (przypominam, że na gpw podali 1,64).


Jak robią na stooq.pl?

Wg średniej ważonej arytmetycznej dostajemy C/Z 17,7 i C/WK 3,25. Wg średniej ważonej geometrycznej będzie to odpowiednio 13,97 i 2,26. W ogóle to nie odpowiada 16,19 i 2,86, które prezentował stooq na 21.08.  Czyli stosują jeszcze jakąś inną metodę. Jedynie, co warto odnotować, to to, że (17,7 + 13,97) / 2 = 15,84, a (3,25 + 2,26) / 2 =  daje 2,76, czyli naprawdę blisko. Sugeruje to, że używają jakiejś pośredniej metody.

Problem z ROE

Takie różnice w szacowaniu wskaźników prowadzą do dużych rozbieżności w określeniu rentowności kapitału własnego. Poprawna metoda, którą tu pokazałem, wskazuje, że dla WIG20 ROE = 1,66 / 15,11 = ok. 11%. Wg oficjalnych wskaźników GPW, byłoby to 1.64 / 14.66 = 11,2%. Ale wg stooq to jest 17,7%. Raczej nie jest przypadkiem, że wg śr. ważonej arytm. wychodzi 17,8%.

Wszystko wskazuje na to, że stooq.pl zawyża wszystkie te wskaźniki, co prowadzi do zaburzeń przy wycenie indeksu. Moje obliczenia we wpisie Jaka piękna katastrofa , w którym badałem na szybko historyczne EPS, ROE i WK okazują się błędne. Jednak sama wycena, którą wtedy pokazałem, może być nadal poprawna. Od tamtego czasu wzrósł EPS, zatem będzie wyższa. Na ten moment wyceniam WIG20 na ok. 1950, czyli nadal uważam, że indeks jest mocno przewartościowany.

Wszystkie obliczenia do tego artykułu zamieściłem w tym linku.