poniedziałek, 20 maja 2024

Ile powinien kosztować Orlen?

Orlen wygląda jakby wybudził się z marazmu. Przyjrzyjmy mu się.  

Z technicznego punktu widzenia jest tak sobie. Kurs znajduje się w obszarach różnych oporów, a RSI sugeruje wykupienie. Ostatnie kilka szczytów RSI w okolicy 70 dawało faktycznie sygnał sprzedaży i teraz jest w tej okolicy: 


Co do wyceny różni analitycy próbują nam wmówić, że Orlen jest za tani. Łatwo obalić to twierdzenie. W 2023 r. spółka ogłosiła nową strategię dywidendową polegającą na wypłacie 40% skorygowanych wolnych przepływów pieniężnych (tj. przepływy z działalności operacyjnej minus przepływy z działalności inwestycyjnej) z poprzedniego roku. Jednak nie będzie to mniej niż dywidenda bazowa (gwarantowana), której poziom został ustalony na 4,00 PLN na jedną akcję dla roku 2022 i będzie sukcesywnie rósł o 15 groszy co roku, aż do poziomu 5,20 PLN na jedną akcję w roku 2030 (źródło). Wynika z tego, że do wzoru na model zdyskontowanych dywidend można wstawić minimalne dywidendy, ale wtedy zamiast koszt kapitału własnego musimy ustawić rentowność zbliżoną do obligacji. Nie można jednak brać obligacji samego Orlenu, którego bieżąca rentowność wynosi poniżej 7%, bo jego zapadalność to grudzień 2025. Lepszym porównaniem jest KGHM, którego obligacje będą wykupywane w czerwcu 2029, dla których rentowność wynosi obecnie 7,5% (tyle co oprocentowanie). 

Te 7,5% to ciągle za mało. Po pierwsze np. Millenium też do 2029 płaci ponad 8%. A przecież, to po drugie, mówimy o rynku dłużnym. Dług zawsze będzie miał pierwszeństwo przed dywidendą. Orlen mówi o "dywidendzie gwarantowanej", ale tak naprawdę co to znaczy? Nie mamy przecież gwarancji w sensie prawnym. Jest to tylko trochę bardziej pewne niż "na gębę". 

Jest też taka spółka jak PCC Rokita, która ma wypracowaną markę w branży chemicznej i która płaci ok. 9%. 

Oczywiście tak wysoki procent wynika z wysokich stóp proc., które mogą spaść w ciągu najbliższych 5 lat. Ocena tej przyszłości ciągle się zmienia przez rynek (stąd m.in. wahania kursu), więc pozostaje jedynie sprawdzić różne scenariusze.

Dla dochodu rezydualnego (po 2031) utrzymam te same parametry co w latach poprzednich. 

W sumie założyłem, że różnica między minimalną stopą dyskontową a stopą wolną od ryzyka wynosi 2,2%. 

I tak, przy dzisiejszej stopie wolnej od ryzyka dla obligacji skarbowych 7% ustaliłem stopę dyskontową (dla minimalnej dywidendy) 9,2%. Otrzymałem wartość ponad 70 zł dla inwestora krótkoterminowego lub po prostu płacącego koszty transakcyjne. Jednak koszty te nie muszą być rozumiane dosłownie, bo może to być koszt analizy akcji (czy sprzedać, dokupić itp.). 


Jak widać uwzględniłem dywidendę na rok 2024, która nie jest dyskontowana.

Dla inwestora średnioterminowego i długoterminowego  ponoszącego koszty transakcyjne (prowizja maklerska lub koszty analizy momentu sprzedaży akcji) dostałem niecałe 73 zł. 




Dla inwestora dywidendowego (bez kosztów transakcji) - ok. 75 zł.



W scenariuszu zakładającym spadek stopy procentowej w kolejnych latach o 0,5 pkt. proc. wartość akcji rośnie nawet do 81 zł, a przy założeniu stopniowego spadku stopy o 1,5 pkt - do 98. Takie wyceny będą możliwe przy większym wolumenie, ponieważ pojawia się wtedy więcej graczy, a tym samym zwiększa się rozrzut wycen.

Ryzykanci mogą więc próbować jeszcze kupować. Natomiast inwestorzy konserwatywni powinni raczej szukać gdzie indziej. Pozornie niska wycena wynika po prostu ze słabych (w porównaniu z zyskami) dywidend. Dzisiejszy kurs 72,5 zł stanowi rozsądną wycenę w porównaniu do 65 zł jeszcze kilka tygodni temu.

Link do analizy

środa, 8 maja 2024

Kolejne wykresy jako ostrzeżenie

Obecnie inwestowanie w akcje staje się coraz bardziej ryzykowne. Kolejne 2 wykresy - luka PKB w USA i spred rentowności obligacji sygnalizują nadejście bessy.

(1) Luka PKB USA (źródło)

Optymalna sytuacja to taka, gdy luka PKB jest na poziomie lub bliska zera. Nie ma ani presji inflacyjnej, ani recesyjnej. Dodatnia luka PKB wiąże się z pozornie pozytywną sytuacją gospodarczą, co przekłada się na hossę o rosnącym ryzyku. Presja inflacyjna wzrasta, ponieważ popyt nie nadąża za podażą. Ujemna luka PKB na odwrót - na początku recesja, potem stopniowa poprawa gospodarki, co przekłada się na bessę i powolne odbicie. Występuje deflacja lub niewielka inflacja. Słowem - raj dla konsumentów i inwestorów.


Zaznaczone na szaro pola to okresy recesji. Dodatkowo CBO przygotowuje prognozy m.in. tej luki. Faktyczne ostatnie kwartały odbiegają od niej, ale projekcja jest na minus:


(2) Spred rentowności obligacji (źródło)

Zasadą jest, że anglicyzmy i inne zapożyczenia z języków obcych powinno się spolszczać. "Ekonomia", "biznes", "komputer" czy "mecz" to najbliższe przykłady. Są też słowa, które nie do końca się przebiły, jak choćby "mejl", który przecież np. widnieje w Wikisłowniku, a mało kto tak zapisuje to słowo. Jeszcze gorzej jest ze "spredem", którego nawet nie znajdziemy w słownikach; jest tylko "spread". Ta niespójność wynika pewnie z tego, że jest to termin specjalistyczny, przeznaczony dla finansistów. Angielski Yield Spread, nie ma nawet "oficjalnego" odpowiednika w języku polskim, dlatego będziemy mówić po prostu o spredzie rentowności. 

Rentowność krótkoterminowa pokazuje sytuację bieżącą, a długoterminowa - długoterminowe oczekiwania. Można by więc powiedzieć, że jeżeli spred > 0, to rynek oczekuje ożywienia w przyszłości, a w każdym razie lepszej koniunktury niż obecnie. Jeżeli spred < 0, rynek oczekuje pogorszenia koniunktury w przyszłości. Ale ta druga sytuacja rodzi zagadkę. Racjonalny inwestor będzie kupował krótkoterminowe papiery, a sprzedawał długoterminowe. Ale jeśli wielu jest racjonalnych, to ceny krótkoterminowych wzrosną, a długoterminowych spadną. Wobec tego rentowność tych pierwszych zacznie spadać, a tych drugich rosnąć. W konsekwencji rentowności powinny się wyrównać. Dlaczego się nie wyrównują? W przypadku, gdy spred > 0, odpowiedź byłaby prosta - długoterminowe wiążą się z ryzykiem międzyokresowym. Nie wiadomo, czy będziemy mogli trzymać obligacje do wykupu, bo nie wiemy co się stanie za rok, dwa, nie mówiąc o 10 latach. Wcześniejsza sprzedaż będzie się wiązać z jakimś kosztem. Za to ryzyko wymagamy dodatkowego zwrotu, stąd naturalne, że spred jest dodatni.

Jak w takim razie wyjaśnić sytuację, gdy spred jest ujemny? A z tym mamy do czynienia od dłuższego czasu. Mało tego, obecny spred jest najwyższy od 1980. Poniżej jego wykres dla USA:


Gdyby więc tłumaczyć ryzykiem ujemny spred, musielibyśmy dojść do paradoksalnego wniosku, że koniunktura dziś jest mniej pewna niż za rok lub więcej. Jest to oczywisty fałsz - musi istnieć inna przyczyna. Co to może być? Mam dwie koncepcje. 

Pierwsza koncepcja to perspektywa popytu. Przez ostatnie 2 lata mieliśmy sytuację, gdy inflacja przewyższała stopy oprocentowania. Inwestorzy ponosili więc realne straty, które teraz chcą sobie odbić, bo inflacja jest niższa niż te stopy. Jeżeli uważają, że za rok czy dwa inflacja wzrośnie, to aby się przed nią zabezpieczyć, na bieżąco kupują obligacje długoterminowe. Wyższy popyt wyniesie cenę w górę i obniży ich rentowność w stosunku do krótkoterminowych. Trzeba jednak dodać, że nie chodzi o ryzyko inflacji czy ryzyko jej zmienności, bo to podwyższałoby długoterminową rentowność i tym samym spred byłby większy od zera. Chodzi odwrotnie o to, że spodziewają się większego wzrostu cen, ale po roku. Inflacja jest dodatnio skorelowana ze stopą procentową (dla Polski z WIBOR3M powyżej 50% na poziomie rocznym).

Perspektywa podaży pozwala zbudować drugą koncepcję. Z jakiegoś powodu podaż obligacji długoterminowych mogła spaść w stosunku do krótkoterminowych. Niższa podaż powoduje wyższą cenę i niższą rentowność. W ten sposób spred stałby się niższy, a nawet ujemny. Niższa podaż 10-latek może wynikać z chęci zmniejszania długoterminowego zadłużenia państwa. Tu można mieć wątpliwości, bo dług USA wynosi obecnie 130% PKB, co jest historycznym  (i niepokojącym) rekordem. Pójdźmy innym tropem. Rentowności obligacji rządowych wynikają częściowo z tego, co się dzieje w gospodarce.  Może być tak, że firmy nie chcą emitować obligacji długoterminowych, ponieważ obawiają się o przyszłość - czy będą w stanie je spłacić. Wolą emitować instrumenty na termin do roku. Więcej takich papierów obniża ich cenę, ale i podwyższa rentowność.

Ta druga koncepcja tłumaczyłaby tzw. odwróconą krzywą dochodowości (tzn. im dalszy termin zapadalności, tym niższa rentowność), którą właśnie uważa się za sygnał nadejścia recesji. Więc trzeba się na to przygotować.

Prognoza CBO (to samo źródło) wskazuje, że zaraz nastąpi powrót spredu do wartości dodatnich. To właśnie ten okres zapoczątkuje dekoniunkturę:




-------------------------------

Zobacz też:

Inflacja a luka PKB

Spread między długo- a krótkoterminową stopą procentową

wtorek, 23 kwietnia 2024

Trzy wykresy do oceny

Na stronie OECD można znaleźć gotowe prognozy wzrostu gospodarczego na kolejny rok i to nawet z podziałem na kwartały - link. Porównałem te prognozy z faktycznymi zmianami PKB z sąsiedniej strony.  Poniżej uzyskane efekty dla Niemiec, Polski i USA:




Korelacja prognozy z faktycznymi zmianami - dla Polski i Niemiec wynosi ok. 0,4, dla USA nieco powyżej 0,3. To znaczy, że OECD dość dobrze prognozuje PKB. Kolejne kwartały zapowiadają się słabo dla Niemiec (1-1,3%) i USA (1-2%), a stabilnie dla Polski (2-4%). P/E S&P 500 > 27, co jest nie do utrzymania. Chociaż można spotkać opinie, że czeka nas powtórka z bańki technologicznej z 2001 r., to w pewnym stopniu ta bańka już ma miejsce.

Link do analizy


piątek, 19 kwietnia 2024

Czy z nieruchomości da się coś jeszcze wycisnąć?

W art. Czy warto kupować akcje deweloperów? pisałem, że inwestowanie w firmy deweloperskie jest nieopłacalne. Ich naturalnym rynkiem jest rynek dłużny. Dodałem jednak, że nie chodzi mi o spekulację, która ma zawsze posmak psychologiczny. Trochę żałuję, że nie kupiłem paru spółek, bo przecież było niemal pewne, że kursy będą dalej rosły. Z drugiej strony powstrzymywała mnie myśl, że to zbyt oczywiste - przecież wszyscy wiedzą, że program z kredytem 2% czy teraz 0% doprowadzi do dużego wzrostu cen nieruchomości, a więc i zysków deweloperów, stąd ich kursy musiały wzrosnąć. Od sierpnia 2022 do marca 2023 WIG-NIERUCHOMOSCI wzrósł o 70%, a WIG o 50% (poziom zero odpowiada poziomowi 100 na wykresie). 

W rzeczywistości wiedza o tym, że ceny towarów (jakimi są też nieruchomości) będą rosły w niedługim okresie nie implikuje wzrostu cen akcji w tym samym okresie. Jeżeli rynek jest efektywny, to powinien zareagować natychmiast, gdy taki program dopłat do kredytów ogłoszono, a nie być dyskontowany stopniowo. Biorąc pod uwagę zapoznanie się z programem, w praktyce mogłoby to trwać parę dni. 

Są więc trzy możliwości. Albo rynek nie wierzył do końca, że taki nieracjonalny i populistyczny program będzie realizowany, albo wpływ na zyski nie będzie wcale taki wielki, albo rynek jest nieefektywny. Pierwsze odrzucam, ponieważ program zapoczątkował PIS, który znany jest z realizacji populistycznych programów. Sprawdźmy pobieżnie drugie w BiznesRadar.

Z komponentów WIG-NRUCH wybieramy tylko te, które już mają raport za cały rok (lub 4-ty kwartał) 2023. Nie wszystkie spółki mają, a musimy poprawnie porównywać.  Na dziś w BiznesRadarze tylko 12 z 23 ma ten raport. Suma ich udziałów w indeksie równa się 82. Aby skorygować każdy z tych 12-tu udziałów do 100 stosujemy równanie na proporcję albo od razu mnożymy udział * 100/82 (lub w ogólnym wzorze 100 przez sumę nowych udziałów). tak zmodyfikowany udział mnożymy teraz przez roczną zmianę zysku - ja wybrałem dla lepszej porównywalności EBIT. Uzyskujemy średnioroczną zmianę zysku w indeksie ważoną udziałami spółek w indeksie. Okazuje się, że zysk operacyjny wzrósł ledwo o 3,67%. Sugeruje to realną stratę deweloperów w 2023 r. Co więcej, BiznesRadar także podaje wartości dla całego sektora i wychodzi mu spadek EBIT o 15,7%. Nie wiem, na ile są to dane prawidłowe, ale słabość jest potwierdzona. Poniższa tabela pokazuje szczegółowe dane:

Dodatkowo sprawdziłem jeszcze to samo, ale dla zysku netto. Efekt? Niemal identyczny, jednak wg BiznesRadaru zysk sektora spadł o 7%, co by wskazywało, że jest trochę lepiej, podczas gdy moje obliczenia pokazują że jest +3,1%, czyli nieco gorzej niż EBIT. Tabela:

OK, ale branża deweloperska charakteryzuje się tym, że zyski nie muszą korespondować z przepływami z działalności operacyjnej - księgowy zysk powstaje dopiero z chwilą zarejestrowania aktu notarialnego. Mieszkania są kupowane w ratach na podstawie umów przedwstępnych, a więc będzie to widoczne w przepływach, ale nie w rachunku zysków i strat.

Wobec tego należy sprawdzić jeszcze przepływy operacyjne w 2023. Okazuje się, że spadły o ponad 187% (natomiast w sektorze zmiana wynosiła -23%):


Głównym ciężarem dla tego spadku było ECHO (spadek o 265%), bez którego byłby wzrost 78%. W ten sposób dałoby się wyjaśnić wzrost indeksu o 70%. Niemniej odejmownie spółki, żeby "pasowało" jest zwykłym nadużyciem. ECHO stanowi 7% całego indeksu i prawie 9% użytego do powyższych obliczeń.  

Całą analizę można pobrać stąd.

Widzimy, że wcale nie jest oczywisty tak duży wzrost. Rynek zdyskontował parę lat wprzód kredyt 2% i tak samo powinno być z kredytem 0%. Pytanie tylko czy to już nastąpiło? Aby to ocenić można oczywiście próbować wyceniać akcje, ale na szybko można zastosować rozwinięcie Fibonacciego. Metoda 162% od poprzedniego dołka jest racjonalną taktyką spekulacyjną (zob. wyjaśnienie tu). Racjonalność wynika z faktu, że nie łamie teorii efektywnego rynku, ponieważ po pierwsze liczba ta jest średnią, od której zawsze będą odchylenia, a zatem gracze o mniejszej awersji do ryzyka mogą sprzedawać trochę wyżej, a o większej awersji - niżej. Po drugie 162% stanowi jedynie punkt minimalny sprzedaży, wynikający z minimalizowania czasu trzymania waloru. Nie chodzi więc o to, że od tego punktu zaczną się spadki, ale o to, że że jest to dobry moment, by sprzedać akcje, jeśli nie mamy żadnego innego punktu zaczepienia (np. gdy nie potrafimy dobrze wycenić). Jeśli pojawią się spadki od tego punktu, to bardziej wynikają z samospełniającej się przepowiedni.
Spójrzmy więc na sytuację WIG-NIERUCHOMOŚCI:


Indeks właśnie wchodzi w rejony 161,8%, dlatego zapewne pojawi się spora grupa traderów chętnych do sprzedaży. Warto tu sobie jeszcze zadać pytanie, czy Fibo indeksu ma znaczenie, jeśli nie jest on handlowany? Indeks nazywany jest benchmarkiem nie bez powodu - jeżeli traderzy wiedzą, że inni też wiedzą, że oni patrzą na to Fibo indeksu, to przewidują, że paru graczy zareaguje tylko w oparciu o indeks, a więc oni też zareagują i tak sprawdzi się samospełniająca się przepowiednia. Oczywiście taka reakcja może być chwilowa. 
Z drugiej strony znajdzie się inny argument przemawiający za porzuceniem tej strategii na samych indeksach. Mianowicie twierdzenie, na którym się opieramy zakłada cykl życia firmy - tzn. że kurs osiągnie maksimum globalne, od którego będzie spadał do zera. Indeksy ważone kapitalizacją nie spełniają oczywiście tego warunku. Stąd powodzenie ekspansji Fibo na indeksie będzie wynikało albo z tego, że akcje o dużym udziale w indeksie znajdują się w obszarze zwrotnym, albo znowu tylko z wiary samych traderów, czyli psychologii.

poniedziałek, 15 kwietnia 2024

Dwie prognozy przemysłu na kolejny rok (gretl)

Od początku, gdy analizowałem dynamikę przemysłu z Eurostatu, wiedziałem, że są one mniej aktualne od tych podawanych przez GUS. Trzeba przyznać, że to opóźnienie jest spore, bo na dziś w Eurostacie nadal ostatnie wyniki są ze stycznia, a w GUSie od paru tygodni jest już luty. Można by więc zapytać, po co biorę dane z Eurostatu, skoro w GUSie są zawsze bardziej aktualne. Problem z GUS-owskim przemysłem jest m.in. taki, że nie jest on wyrównany sezonowo, a więc nie mogą służyć do prognozy giełdowej. Drugi problem to niekonsekwencja w podawaniu wartości za poszczególne lata: dane, które można na szybko wyciągnąć z GUSu w formie arkusza kalkulacyjnego zaczynają się (w przypadku przemysłu) od 2005 r. Tymczasem roczniki statystyczne zaczynają się od roku 2000 (Rocznik 2001 za rok 2000), a co więcej, możemy tam znaleźć roczne zmiany w produkcji przemysłowej nawet od 1994 r. Fakt, że taki brak spójności w ogóle występuje, świadczy o dalekiej niedoskonałości instytucjonalnej naszego państwa. Mówię o tym także z tego względu, że artykuł z bankiera, który omawiałem poprzednio, przedstawia wykres z danymi sprzed 2000 r.

Jeżeli GUS nie podaje danych wyrównanych sezonowo, możemy dość łatwo sami je wyrównać za pomocą X-13ARIMA-SEATS lub TRAMO-SEATS. Dodatkowy atut jaki zyskamy dzięki temu zabiegowi, będzie automatyczna prognoza na kolejny rok. Oba te narzędzia stanowią standardowe dodatki do gretla. O tym jak je zainstalować i znaleźć model napisałem w tym art. Wtedy pominąłem możliwość użycia prognozy wprost z tych dodatków. Tym razem wykorzystam wbudowane prognozy. Ale po kolei. 

X-13ARIMA-SEATS:

Algorytm X-11

Algorytm ten powstał już w 1965 r.  w amerykańskim GUS, tj. The Census Bureau. Ponieważ powstawały różne eksperymentalne warianty, nadawano im kolejne numery - od 1 do 11. W USA z jakiegoś powodu mają hopla na punkcie litery "X". W tym wypadku litera "X" ma wywodzić się od eksperymentalności metody ("eXperimental"), ponieważ jest heurystyczna czy ad hoc, a nie oparta na teorii. Inną możliwością jest ekstremalność ("eXtremal") sytuacji, z jakimi program miał sobie poradzić, a więc z nietypowymi lub brakującymi obserwacjami. Kolejne innowacje doprowadziły do powstania X-12, który potrafił np. adaptować model do zmian parametrów w czasie [1, 6]. W końcu połączono ten nowy wariant z zupełnie innym (stworzonym przez innych naukowców) programem - SEATS (ang. Signal Extraction in ARIMA Time Series), który filtruje i wygładza dane. W sumie to SEATS dekomponuje dane na trend i resztę [3, 5]. Tak powstał X-13.

Mamy więc roczne zmiany przemysłu (jako miesięczny szereg czasowy) z GUS od 2006: 



W opcjach 'Zmienna' szukamy X-13ARIMA:


Wybieramy X11, a więc nie X13. Wydaje się, że nie jest to błąd, ponieważ X13 dotyczy całego modelu (czyli z SEATS, a nie tylko ARIMA). Zaznaczamy co trzeba i klikamy OK. Dostajemy wykresy z wyrównaniem sezonowym i trendem:



Okazuje się, że wyrównanie sezonowe niewiele zmienia oryginalne dane. Zwróćmy uwagę jednak na szczegóły i ostatnie wartości w zbliżeniu:


Ostatnie dane wyrównane za luty wskazują na spadek, nie na wzrost, jak sugerują te oryginalne. Trend jednak jest pozytywny:



Kolejne zadanie to utworzenie prognozy. Mnóstwo statystyk, które otrzymujemy na starcie może do tego zniechęcać, ponieważ nie sa dobrze opisane. Po ich analizie doszedłem do wniosku, że interesuje nas część B 1.A  Forecasts of (prior adjusted) original series:


Zauważmy, że program wykonał prognozę na cały kolejny rok. Niewątpliwie w Excelu łatwiej się robi ładne wykresy, dlatego przeniosłem potrzebne dane do Excela i otrzymałem wykres:






Algorytm SEATS

Nieco inny model dostaniemy, zaznaczając w opcjach SEATS:


I dostajemy analogiczne wykresy


Okazuje się, że obecny trend nie wygląda już na rosnący:


Ponownie otrzymujemy długą tablicę ze statystykami. Prognozę danych skorygowanych sezonowo znajdziemy w części FORECAST OF FINAL COMPONENT 


Fajne jest tu, że mamy jasny podział na prognozę danych surowych (oryginalnych), wyrównanych sezonowo oraz samego trendu. Mimo iż naocznie trend wydaje się nierosnący, to prognoza wskazuje co innego:



Prognozowane dane wyrównane sezonowo są niemal identyczne jak te w X11, dlatego ich tu nie rysowałem. Oznacza to także, że trend można traktować po prostu jako trend w całej analizie X13-ARIMA-SEATS. Innymi słowy X-11 (czy X-12) używamy do prognozy np. dynamiki wyrównanej sezonowo, natomiast SEATS do wyłuskania samego trendu.


TRAMO/SEATS:

TRAMO (Time Series Regression with ARlMA Noise, Missing Observations, and Outliers) jest programem, który, jak sama nazwa wskazuje, estymuje parametry regresji z ARIMA, wykrywa brakujące obserwacje oraz obserwacje odstające i odpowiednio dostosowuje dla nich model. SEATS wykorzystuje TRAMO do dalszej reestymacji modelu. Jest to więc także użyteczne narzędzie w klasycznej ekonometrii. Formalnie SEATS powstał jeszcze przed TRAMO, choć oba w 1994 r. [3, 4], a potem je połączono w jedno [5]. 

Wybieramy Zmienna -> TRAMO/SEATS. Pojawia się okno.


 

Wybieramy w opcjach 'Wyniki' i zaznaczamy jak poniżej


Klikamy OK. Pojawią się analogiczne wykresy: 


Statystyki, jakie dostajemy używając procedury TRAMO/SEATS, są bardzo niejasne. Z mojej analizy wynika, że prognozy TRAMO znajdziemy pod opisem DECOMPOSITION OF THE SERIES: FORECAST


Natomiast prognozę SEATS znajdziemy na samym końcu pod opisem FORECAST OF FINAL COMPONENT:


Ten podział na dwie prognozy wynika z faktu, że mamy tu dwie procedury: najpierw TRAMO, a następnie SEATS, które dokonuje reestymacji modelu TRAMO. Wydaje się więc, że ta ostatnia prognoza jest poszukiwaną. Wydruk jest bardzo źle opisany - poszczególne prognozy nie przypisano nawet odpowiednich okresów. W każdym razie poniżej efekt, tego co wyłuskałem z TRAMO-SEATS:


Wg dodatkowej analizy, jaką przeprowadziłem, TRAMO-SEATS najlepiej sprawdza się w krótkim terminie, dlatego nie ma sensu brać na poważnie prognozy na cały rok. X13-ARIMA sprawdza się trochę lepiej w dłuższym terminie. Patrząc na oba wykresy danych wyrównanych sezonowo z prognozami, dochodzimy do wniosku, że kolejne miesiące powinny być w miarę pozytywne dla przemysłu. X-13ARIMA sugeruje jakiś szczyt w sierpniu. Niemniej trend pozostaje rosnący - ale oczywiście to wszystko może się zmieniać z miesiąca na miesiąc.


Literatura:

[1] Findley, D. F., B. C. Monsell, W. R. Bell, M. C. Otto, and B. C. Chen (1998). New capabilities of the X-12-ARIMA seasonal adjustment program (with discussion). Journal of Business and Economic Statistics 16, 127–177.

[2] Findley, D. F., D. P. Lytras, and A. Maravall (2016). Illuminating ARIMA Model-Based Seasonal Adjustment with Three Fundamental Seasonal Models. pp. 1–42.

[3] Gomez, V., Maravall, A. (1994a), Program SEATS Signal Extraction in ARIMA Time Series: Instructions for the User, Working Paper ECO 94/28, European University Institute, Florence.

[4] Gomez, V., Maravall, A. (1994b), Program TRAMO 'Time Series Observations With ARIMA Noise, Missing Observations and Outliers': Instructions for the User, Working Paper ECO 94/31, European University Institute, Florence.

[5] Gomez, V., Maravall, A. (1996). Programs TRAMO (Time Series Regression with Arima noise, Missing observations, and Outliers) and SEATS (Signal Extraction in Arima Time Series). Instruction for the User. Working Paper 9628.

[6] Shiskin, J., Young, A. H., Musgrave, J. C., The X-11 Variant Of The Census Method Seasonal Adjustment Program. U.S. Bureau of the Census, Technical Paper No. 15, Feb 1967.

środa, 3 kwietnia 2024

Czy strategia Bankiera działa?

Od paru lat portal bankier.pl promuje strategię inwestycyjną opisaną w artykule Prosta instrukcja obsługi warszawskiej giełdy. Została ona sprowadzona do dwóch haseł: 

1) kupuj na dołku produkcji przemysłowej

2) kupuj, gdy leje się krew na rynku złotego.

Zanim zajmę się ich testowaniem, zwrócę uwagę na niezbyt poprawny tytuł. O ile "inwestowanie" rzeczywiście oznacza kupowanie i trzymanie jakiś czas aktywów, to słowo "instrukcja" jest pojęciem szerszym i powinna zawierać oprócz strategii kupowania także sposób sprzedawania. Oczywiście można by dwie przytoczone strategie odwrócić dla momentu sprzedaży, ale intuicja nie wystarczy i autor powinien przynajmniej wspomnieć coś o zbywaniu. W sumie, to wystarczyłoby zmienić tytuł np. na "Prosta strategia inwestowania na GPW" i nie byłoby tematu. Ale zajmijmy się już istotą.

Ad 1) Kupuj na dołku produkcji przemysłowej

Dokładniej autor proponuje trzymiesięczną średnią rocznej dynamiki produkcji przemysłowej, która spada poniżej zera. Autor nie wskazuje źródła pobranych danych, nie pisze też wprost czy chodzi o polski przemysł - tego trzeba się domyślić z kontekstu. Dane o polskim przemyśle pobrałem ze strony Eurostatu (odnośnik - należy zmienić ustawienia na "Poland", "Seasonally and calendar adjusted data" oraz "Percentage change on previous period"). Aby uzyskać wymagane dane, musiałem surowe dane obrobić:

1. pobrałem miesięczne zmiany procentowe produkcji przemysłowej dla Polski,

2. zamieniłem na logarytmiczne stopy zmian,

3. aby dostać roczną dynamikę, dodałem do siebie kolejnych 12 stóp,

4. uśredniłem 3 kolejne stopy.


Dwie uwagi. Pierwsza dotyczy polskich odpowiedników nazw angielskich. Otóż industry oraz manufacturing są uznawane przez słowniki za synonimy i tłumaczone jako produkcja przemysłowa czy po prostu przemysł, ale jest to ich potoczne rozumienie. W rzeczywistości ten drugi termin oznacza przemysł przetwórczy, inaczej przetwórstwo przemysłowe, które ogólnie mówiąc stanowi produkcję pośrednią między dostarczaniem surowców a wyrobami gotowymi. Tak więc industry jest szerszym pojęciem, a manufacturing jest tylko jego składnikiem. 

Po drugie powinniśmy zdać sobie sprawę, że wielkość produkcji nie jest podawana na określony moment, ale w przedziale czasowym. Wynika to zarówno z faktu, że jest ona procesem, a nie stanem oraz z tego, że stanowi ona przychód przedsiębiorstwa produkcyjnego w danym okresie. Natomiast kurs giełdowy można porównać z wartością bilansową, czyli powstającą na dany moment, czyli formalnie jest nieporównywalny z wielkością produkcji. Aby sprowadzić obie wielkości do porównywalności, badamy ich zmiany, np. miesiąc do miesiąca lub rok do roku. Warto więc sobie uświadomić, że analizując produkcję, badamy jakby "zmiany ze zmiany" kapitału gospodarki. Zmiana między jednym momentem a drugim powoduje, że możemy przyrównać okresy do siebie dla dwóch różnych serii i w ten sposób je porównać. Choć to jedynie kwestie techniczne, to rzutują na poprawność wniosków. Z jednej strony informacje ze sfery makro przychodzą z opóźnieniem, z drugiej strony należy uważać, na który okres obliczamy zmiany. Jeśli popełnimy błąd, to błędnie wnioskować, że produkcja wyprzedza giełdę. W kontekście tego badania taki błąd nie jest jednak wielką przeszkodą, bo nie chodzi o idealne przewidzenie momentu dołka, ale okolicy. Zawsze jednak lepiej zachować precyzję.

Eurostat podaje dynamikę (procentową zmianę) produkcji na dany miesiąc i rok, a więc okres dynamiki to (początek miesiąca - koniec miesiąca). Gdybyśmy chcieli te wartości porównać ze stopami zwrotu z WIG, musielibyśmy odjąć zamknięcie w ostatnim dniu miesiąca od analogicznego zamknięcia z poprzedniego miesiąca. Jednak wiemy, że nie chodzi w naszym badaniu o stopy zwrotu, tylko o szacowanie okresu zmian trendu. Wynika z tego, że możemy wykorzystać kod R, jaki napisałem w tym artykule, gdzie porównywałem lokalne ekstrema WIG20 z sWIG80.

To po kolei. Nałożenie WIG i dynamiki przemysłu od marca 2001 do stycznia 2024:

 


Następnie filtruję oba wykresy (filtr lowess) i oznaczam lokalne ekstrema, przy czym dla przemysłu minimum ma być poniżej zera, a maksimum powyżej. 

Lokalne minima:



Pionowe linie zaznaczają dołki - czerwone przemysłu, niebieskie WIGu. Niektóre się nakładają, dlatego nie widać dwóch czerwonych, ale łatwo je usytuować, bo to najbardziej skrajne dna. W sumie mamy tu 4 czerwone dołki i 7 niebieskich. Przeanalizujmy je:

- pierwszy dołek WIGu jest w zasadzie opóźniony w stosunku do przemysłu o ponad pół roku (przemysł dobrze go prognozuje),

- drugi dołek WIGu spotyka się z dołkiem przemysłu,

- trzeci dołek WIGu wyprzedza dołek przemysłu o 1 rok,

- czwarty dołek giełdowy pokrywa się z przemysłem,

- piąty dołek WIGu tak naprawdę nie jest dołkiem, a tempo przemysłu - chociaż spada - nie wskazuje na żadne zwroty (czyli przemysł prawidłowo mówi, aby trzymać),

- szóste minimum WIGu zrównuje się z minimum przemysłu

- siódmy dołek nie koresponduje z przemysłem, który jeszcze trochę spada. 


Sumarycznie okazuje się, że dołki produkcji przemysłowej nie wyprzedzają WIGu, ponieważ jeden raz go wyprzedziły, drugi raz na odwrót, w pozostałych występują w tym samym czasie lub w ogóle ich nie ma. Niemniej rzeczywiście dołek przemysłu ma walor informacyjny i pozwala przewidzieć dalszy kierunek WIGu. Dodatkowa informacja wynika z faktu, że filtr WIGu nie może zastąpić tutaj filtru przemysłu, ponieważ w jednym przypadku dołek WIGu dał fałszywy sygnał - pod koniec roku 2018, kiedy niby było dno, ale wzrost prawie żaden - a tymczasem tempo przemysłu było ciągle dodatnie. Wcześniej, w roku 2016 także filtr WIGu osiąga lokalne minimum, a przemysł nie (tzn. spada, ale jest powyżej zera), co można byłoby uznać za argument przeciwko przemysłowi, gdybyśmy nastawiali się na krótki lub średni termin - była to mocniejsza korekta trwająca niecały rok. W dłuższym terminie nie ma tu błędu i rzeczywiście przemysł prognozuje hossę. De facto dynamika przemysłu także spadała w tym czasie, więc również można było tu zmniejszać pozycję, chociaż opieranie się tylko na tym nie miałoby sensu, choćby dlatego, że mamy inne przykłady, kiedy dynamika ta także spadała, a jednak WIG rósł. 

Popatrzmy teraz na ostatnie dołki. Minimum giełdy w 2022 r. wyprzedza lokalne minimum przemysłu o niecały rok. Tzn. dynamika produkcyjna znajduje się nadal pod kreską (choć minimalnie) i nie wiadomo czy w ogóle możemy nazwać dołkiem ten okres, ale istnieje na to szansa. Zobaczmy w zbliżeniu ten obszar:


Lokalne maksima:




Oznaczenia analogicznie jak przy dołkach. Spójrzmy:

- pierwszą górkę WIGu zapowiadała wyraźnie zmiana trendu przemysłu (jednak pierwsza górka przemysłu została zignorowana przez WIG), 

- drugą górkę WIGu podobnie wskazywała wcześniejsza górka przemysłu, chociaż bessa giełdowa była wyjątkowo krótka, a kolejny dołek przemysłu powstał trochę późno,

- trzecia górka WIGu była sygnalizowana przez sferę realną już ok. rok wcześniej, chociaż sfera ta szybko zawinęła w górę, co z pewnością dawało schizofreniczny obraz; to ten przypadek, gdy bardziej liczyła się umiejętność spekulacji (krótki trend spadkowy),

- czwarte maksimum giełdowe wyprzedziło minimalnie maksimum przemysłowe,

- przy piątym to przemysł nieco szybciej zareagował od WIGu.


Przy szczytach sytuacja się o tyle komplikuje, że raz giełda zignorowała duże spadki dynamiki produkcji, a przy wielu innych czas spadków indeksu był krótki, tak że w praktyce można było nawet nie zdążyć dobrze wyjść, kiedy trzeba było za chwilę wejść.


Ad 2) Kupuj, gdy leje się krew na rynku złotego

Kiedy się wczytamy w treść propozycji, możemy się zawieść. Autor nie wskazuje już warunku zakupu (ani tym bardziej sprzedaży), a jedynie luźno sugeruje, że jeżeli euro w ciągu roku stosunkowo mocno się umocniło do złotego, to możemy rozważać moment zakupu akcji. Podaje pewne liczby, ale niewiele one wnoszą. Jedynie co możemy zrobić, to połączyć poprzedni warunek z warunkiem, aby euro się wzmocniło w ciągu roku. Autor sugeruje min. 10%, ale jakoś nie przekonuje mnie to - nie ma powodu, żeby nie mogłoby być to 5%. Popatrzmy.


I sfiltrujmy też, ale tym razem dołki WIG będą korespondowały z górkami euro.

Lokalne minima:


Niebieskie proste wskazują dołki WIGu, czerwone - górki EUR/PLN. Prawdą jest, że jeżeli maksima euro znajdują się części dodatniej, WIG zaczyna hossę. Tak więc na obecną chwilę warunek ten nie zostaje spełniony, wręcz przeciwnie.

Lokalne maksima:

Odwrotna sytuacja, tj. górki na indeksie (niebieska prosta) vs. dołki na walucie (czerwona):


Maksima okazują się dużo bardziej problematyczne. Nawet, jeśli symetrycznie weźmiemy po uwagę tylko dołki walutowe z części ujemnej, to nie dostajemy już sygnału sprzedaży przed rokiem 2013. Gdyby przyjąć, że dołki euro zwiastują bessę, to należałoby się przygotowywać na jej nadejście. Obiektywnie jednak nie ma na to argumentu. 

Podsumowanie

Teraz jasne staje się, dlaczego autor omawianego artykułu pominął kwestię sprzedawania. Obie jego strategie mają potencjał tylko przy znajdowaniu dołków na rynku akcji (tym bardziej należałoby zmienić tytuł). Jako całość nie jest to nawet strategia sensu stricte. Można powiedzieć, że połowicznie poprawna, ale niedokończona. Jeśli chodzi o prognozę na przyszłość, to nie ma jednoznacznego sygnału. Ostatni lokalny dołek przemysłu sugeruje dalsze wzrosty giełdowe, ale nie jest spełniony warunek słabości złotego. W dodatku jeśli przemysł się teraz zagnie i wróci do dołu, to czeka nas co najmniej korekta, a prędzej czy później rynek niedźwiedzia. Wydaje mi się, że lepiej zamiast na polski przemysł spoglądać na zagraniczną produkcję. Na gospodarkę w Polsce wpływa produkcja UE (zob. tu).  


Dodatek. Kod w R:
# wykorzystanie funkcji Evan'a Friedlanda (https://stackoverflow.com/questions/6836409/finding-local-maxima-and-minima)
inflect <- function(x, czy_przemysl, threshold){
  up   <- sapply(1:threshold, function(n) c(x[-(seq(n))], rep(NA, n)))
  down <-  sapply(-1:-threshold, function(n) c(rep(NA,abs(n)), x[-seq(length(x), length(x) - abs(n) + 1)]))
  a    <- cbind(x,up,down)
  
  if (czy_przemysl==TRUE) {
    list(minima = which(apply(a, 1, min) == a[,1] & a[,1] < 0), maxima = which(apply(a, 1, max) == a[,1] & a[,1] > 0))
  } else {
    list(minima = which(apply(a, 1, min) == a[,1]), maxima = which(apply(a, 1, max) == a[,1]))
  }
}

linieEkstremum <- function(filtr, maks) {
  
  n <- 2
  if (deparse(substitute(filtr)) == "filtrPrzemysl") {
    czy_przemysl <- TRUE
    kolor <- "red"
  } else {
    czy_przemysl <- FALSE
    kolor <- "blue"
  }
  
  bottoms <- lapply(1:n, function(th) inflect(filtr, czy_przemysl, threshold = 10)$minima)
  tops <- lapply(1:n, function(th) inflect(filtr, czy_przemysl, threshold = 20)$maxima)
  
  for(i in n:n){
    if (maks==1) {
      #abline(v=tops[[i]], col=kolor)
      return(tops[[i]])
    } else {
      #abline(v=bottoms[[i]], col=kolor)
      return(bottoms[[i]])
    }
  }
}

# potrzebne pakiety
if (require("zoo")==FALSE) {
  
  install.packages("zoo")
}
library(zoo)

if (require("data.table")==FALSE) {
  
  install.packages("data.table")
}
library(data.table)

if (require("lubridate")==FALSE) {
  
  install.packages("lubridate")
}
library(lubridate)

#zamieniam "\" na "/"
sciezka <- r"(C:\Documents\R\testy)"
sciezka <- gsub("\\", "/", sciezka, fixed=T)

setwd(sciezka)

# Przemysł
# link: https://ec.europa.eu/eurostat/databrowser/view/sts_inpr_m__custom_10635116/default/table?lang=en
nazwaPliku1 <- "sts_inpr_m_page_linear.csv"
tabela_przemysl <- fread(nazwaPliku1, tz="")
tabela_przemysl$TIME_PERIOD <- paste0(tabela_przemysl$TIME_PERIOD, "-01")
tabela_przemysl$TIME_PERIOD <- ceiling_date(as.IDate(tabela_przemysl$TIME_PERIOD), "month") - days(1)
tabela_przemysl$TIME_PERIOD <- format(tabela_przemysl$TIME_PERIOD, "%Y-%m")

tabela_przemysl <- tabela_przemysl[, c("TIME_PERIOD", "OBS_VALUE")]
przemysl <- tabela_przemysl[, "OBS_VALUE"]
przemysl_rocznie <- c(rep(NA, 11), rollsum(log(1+przemysl/100)*100, k=12, align="right"))
tabela_przemysl$Przemysl_rocznie <- przemysl_rocznie
tabela_przemysl$SMA3 <- c(rep(NA, 2), round(rollmean(przemysl_rocznie, k=3, align="right"), 4))

# WIG, dane ze stooq.pl
nazwaPliku <- "wig_d.csv"
#tabela_wig <- fread(nazwaPliku, tz="")
# jeżeli jest ostrzeżenie, to prawdopodobnie sa jakieś braki, stosujemy ich wypełnienie
tabela_wig <- fread(nazwaPliku, fill=TRUE, tz="")
tabela_wig$Data <- as.Date(tabela_wig$Data)

# Zakładając, że twoja ramka danych nazywa się tabela_wig, a kolumna z datą to Data
tabela_wig$Data <- as.Date(tabela_wig$Data) 

tabela_wig$RokMies <- format(tabela_wig$Data, "%Y-%m")

# Oblicz ostatni dzień każdego miesiąca
ost_dzien_mies_tab <- aggregate(tabela_wig$Data ~ tabela_wig$RokMies, FUN=max)
colnames(ost_dzien_mies_tab) <- c("RokMiesiac", "OstatniaData")

# Wyfiltruj wiersze, gdzie Data to ostatni dzień miesiąca
tabela_wig <- tabela_wig[tabela_wig$Data %in% ost_dzien_mies_tab$OstatniaData, c(1, 5)]
tabela_wig$Data <- format(tabela_wig$Data, "%Y-%m")

# Połączenie danych
dane <- merge(x=tabela_przemysl, y=tabela_wig, by.x="TIME_PERIOD", by.y="Data")
dane <- as.data.frame(na.omit(dane[, c("TIME_PERIOD", "SMA3", "Zamkniecie")]))
colnames(dane) <- c("Okres", "Przemysl_rr", "WIG")
daty <- as.Date(paste0(dane$Okres, "-01"))
rok = year(daty)
mc = month(daty)
przemysl <- ts(dane$Przemysl_rr, start=c(rok[1], mc[1]), frequency=12)
wig <- ts(dane$WIG, start=c(rok[1], mc[1]), frequency=12)

# Wykres
par(mar=c(5, 5, 3, 5))
# Daty, indeks dat
datyWykres <- seq(from=daty[1], to=daty[length(daty)], length.out=year(daty[length(daty)])-year(daty[1]))
indeksWykres <- seq(from=1, to=length(daty), length.out=year(daty[length(daty)])-year(daty[1]))

# Wykres przemysłu
plot(x=index(index(przemysl)), y=przemysl, xlab="Okres", ylab="Dynamika przemysłu (Polska)", lwd=2, xaxt="n", type="l", col="darkred")
axis(side=1, at=indeksWykres, labels=format(datyWykres, "%Y-%m"), cex.axis=0.8)
abline(h=0, col="darkgray")

# Wykres WIG
par(new=TRUE)
plot(x=index(index(przemysl)), y=wig, log="y", axes=FALSE, xlab="", ylab="", col="darkblue", lwd=2, type="l")
axis(side=4)
mtext("WIG", side=4, line=3)
legend(x="topleft", legend=c("Przemysł (Polska)\n log-zmiany % r/r", "WIG"), lty=c(1,1),
       lwd=c(2,2), col=c("darkred", "darkblue"), cex=0.7)


# filtr lowess
filtrPrzemysl <- lowess(przemysl, f=0.03)$y
filtrPrzemysl <- ts(filtrPrzemysl, start=c(rok[1], mc[1]), frequency=12)
filtrWig <- lowess(wig, f=0.05)$y
filtrWig <- ts(filtrWig, start=c(rok[1], mc[1]), frequency=12)

# Wykres filtrów
## Filtr przemysłu
plot(x=index(index(filtrPrzemysl)), y=filtrPrzemysl, xlab="Okres", ylab="Filtr przemysłu (Polska)", lwd=2, xaxt="n", type="l", col="darkred")
axis(side=1, at=indeksWykres, labels=format(datyWykres, "%Y-%m"), cex.axis=0.8)
abline(h=0, col="darkgray")
## Filtr WIG
par(new=TRUE)
plot(x=index(index(filtrPrzemysl)), y=filtrWig, log="y", axes=FALSE, xlab="", ylab="", col="darkblue", lwd=2, type="l")
axis(side=4)
mtext("Filtr WIG", side=4, line=3)

## Dołki przemysł
abline(v=linieEkstremum(filtrPrzemysl, maks=0), col="red")
## Dołki WIG
abline(v=linieEkstremum(filtrWig, maks=0), col="blue")
legend(x="topleft", legend=c("Przemysł (Polska)\n log-zmiany % r/r", "WIG"), lty=c(1,1),
       lwd=c(2,2), col=c("darkred", "darkblue"), cex=0.5)

## Górki przemysł
abline(v=linieEkstremum(filtrPrzemysl, maks=1), col="red")
## Górki WIG
abline(v=linieEkstremum(filtrWig, maks=1), col="blue")
legend(x="topleft", legend=c("Przemysł (Polska)\n log-zmiany % r/r", "WIG"), lty=c(1,1),
       lwd=c(2,2), col=c("darkred", "darkblue"), cex=0.5)

# Zbliżenie
datyWykres <- seq(from=daty[1], to=daty[length(daty)], length.out=length(daty))
indeksWykres <- seq(from=1, to=length(daty), length.out=length(daty))

pocz <- index(index(przemysl))[length(przemysl)-24]
kon <- index(index(przemysl))[length(przemysl)]
plot(x=index(index(przemysl)), y=filtrPrzemysl, xlab="Okres", ylab="Filtr przemysłu (Polska)", lwd=2, xaxt="n", type="l", col="darkred", xlim=c(pocz, kon))
axis(side=1, at=indeksWykres, labels=format(datyWykres, "%Y-%m"), cex.axis=0.8)

abline(h=0, col="grey")
abline(v=indeksWykres, col="grey")

par(new=TRUE)
plot(x=index(index(filtrPrzemysl)), y=filtrWig, log="y", axes=FALSE, xlab="", ylab="", col="darkblue", lwd=2, type="l", xlim=c(pocz, kon))
axis(side=4)
mtext("Filtr WIG", side=4, line=3)
legend(x="bottomleft", legend=c("Przemysł (Polska)\n log-zmiany % r/r", "WIG"), lty=c(1,1),
       lwd=c(2,2), col=c("darkred", "darkblue"), cex=0.8)

########
# EUR/PLN, dane ze stooq.pl
nazwaPliku <- "eurpln_d.csv"
#tabela_eur <- fread(nazwaPliku, tz="")
# jeżeli jest ostrzeżenie, to prawdopodobnie sa jakieś braki, stosujemy ich wypełnienie
tabela_eur <- fread(nazwaPliku, fill=TRUE, tz="")
tabela_eur$Data <- as.Date(tabela_eur$Data)

# Zakładając, że twoja ramka danych nazywa się tabela_eur, a kolumna z datą to Data
tabela_eur$Data <- as.Date(tabela_eur$Data) 

tabela_eur$RokMies <- format(tabela_eur$Data, "%Y-%m")

# Oblicz ostatni dzień każdego miesiąca
ost_dzien_mies_tab <- aggregate(tabela_eur$Data ~ tabela_eur$RokMies, FUN=max)
colnames(ost_dzien_mies_tab) <- c("RokMiesiac", "OstatniaData")

# Wyfiltruj wiersze, gdzie Data to ostatni dzień miesiąca
tabela_eur <- tabela_eur[tabela_eur$Data %in% ost_dzien_mies_tab$OstatniaData, c(1, 5)]
tabela_eur$Data <- format(tabela_eur$Data, "%Y-%m")

eur <- tabela_eur$Zamkniecie
eur_rocznie <- c(rep(NA, 12), 100*diff(eur, lag=12) / head(eur, -12)) 
tabela_eur$Eur_rocznie <- eur_rocznie


# Połączenie danych
dane <- merge(x=tabela_eur, y=tabela_wig, by="Data")
dane <- as.data.frame(na.omit(dane[, c("Data", "Eur_rocznie", "Zamkniecie.y")]))
colnames(dane) <- c("Okres", "EURPLN_rr", "WIG")
daty <- as.Date(paste0(dane$Okres, "-01"))
rok = year(daty)
mc = month(daty)
eur <- ts(dane$EURPLN_rr, start=c(rok[1], mc[1]), frequency=12)
wig <- ts(dane$WIG, start=c(rok[1], mc[1]), frequency=12)

# Wykres
par(mar=c(5, 5, 3, 5))
# Daty, indeks dat
datyWykres <- seq(from=daty[1], to=daty[length(daty)], length.out=year(daty[length(daty)])-year(daty[1]))
indeksWykres <- seq(from=1, to=length(daty), length.out=year(daty[length(daty)])-year(daty[1]))

# Wykres eurpln
plot(x=index(index(eur)), y=eur, xlab="Okres", ylab="Stopa zmian EUR/PLN", lwd=2, xaxt="n", type="l", col="darkred")
axis(side=1, at=indeksWykres, labels=format(datyWykres, "%Y-%m"), cex.axis=0.8)
abline(h=c(-10, -5, 0, 5, 10), col="darkgray")
par(new=TRUE)

# Wykres WIG
plot(x=index(index(eur)), y=wig, log="y", axes=FALSE, xlab="", ylab="", col="darkblue", lwd=2, type="l")
axis(side=4)
mtext("WIG", side=4, line=3)
legend(x="topleft", legend=c("EUR/PLN zmiany % r/r", "WIG"), lty=c(1,1),
       lwd=c(2,2), col=c("darkred", "darkblue"), cex=0.7)

# filtr lowess
filtrEur <- lowess(eur, f=0.03)$y
filtrEur <- ts(filtrEur, start=c(rok[1], mc[1]), frequency=12)
filtrWig <- lowess(wig, f=0.05)$y
filtrWig <- ts(filtrWig, start=c(rok[1], mc[1]), frequency=12)

# Wykres filtrów
## Filtr eur
plot(x=index(index(filtrEur)), y=filtrEur, xlab="Okres", ylab="Filtr zmian EUR/PLN", lwd=2, xaxt="n", type="l", col="darkred")
axis(side=1, at=indeksWykres, labels=format(datyWykres, "%Y-%m"), cex.axis=0.8)
abline(h=0, col="darkgray")
## Filtr WIG
par(new=TRUE)
plot(x=index(index(filtrEur)), y=filtrWig, log="y", axes=FALSE, xlab="", ylab="", col="darkblue", lwd=2, type="l")
axis(side=4)
mtext("Filtr WIG", side=4, line=3)

## Górki eur
abline(v=linieEkstremum(filtrEur, maks=1), col="red")
## Dołki WIG
abline(v=linieEkstremum(filtrWig, maks=0), col="blue")
legend(x="topleft", legend=c("EURPLN zmiany % r/r", "WIG"), lty=c(1,1),
       lwd=c(2,2), col=c("darkred", "darkblue"), cex=0.7)

## Dołki eur
abline(v=linieEkstremum(filtrEur, maks=0), col="red")
## Górki WIG
abline(v=linieEkstremum(filtrWig, maks=1), col="blue")
legend(x="topleft", legend=c("EURPLN zmiany % r/r", "WIG"), lty=c(1,1),
       lwd=c(2,2), col=c("darkred", "darkblue"), cex=0.7)

wtorek, 12 marca 2024

Tuskowy efekt flagi to kiepska taktyka

Ostatnie 2 tygodnie charakteryzowały się po raz kolejny swego rodzaju dywergencją między polską giełdą a S&P 500, DAX-em i CAC40:


WIG spada, reszta rośnie. Analitycy raczej nie zauważyli przyczyny takiego stanu rzeczy. Z dużym prawdopodobieństwem przyczyną były wypowiedzi rządu, w szczególności D. Tuska na temat zagrożenia ze strony Rosji.

Jest zadziwiające, że media w ogóle nie biorą pod uwagę możliwości, że straszenie Tuska wojną z Rosją w ostatnich tygodniach może mieć źródło w nadchodzących wyborach. Dziennikarze i publicyści bezkrytycznie poddają się tej narracji jak małe dzieci. Tusk zapewne opracował sobie taktykę, że będzie straszył tylko do pewnego stopnia, aby nie wywołać paniki, ale to paradoksalnie działa na media niczym scena w horrorze, w której niby nic się nie dzieje, ale każdy wie, że zaraz coś się wydarzy, co wywołuje automatycznie napięcie i strach. Niby wywoływanie strachu ma komercyjny sens, ale widząc co mówią i jak się dziennikarze zachowują, to można odnieść wrażenie, że naprawdę w to wierzą, że za chwilę Rosja zaatakuje Polskę. Wspólna wyprawa Dudy i Tuska do Białego Domu podgrzewa całą atmosferę. 

Może najpierw parę faktów. Wiele miesięcy przed wojną USA ostrzegało świat przed atakiem Rosji na Ukrainę. Obecnie żadnych tego typu informacji nie ma, a wręcz przeciwnie - właśnie powstał raport amerykańskiego wywiadu na temat zagrożenia ze strony Rosji. Jak czytamy "Rosja prawie na pewno nie chce bezpośredniego konfliktu zbrojnego z USA i NATO" (link). Pełen raport znajdziemy tutaj i tam na str. 14 pada to zdanie. Zauważmy, że jak tylko informacja o tym raporcie się pojawiła, WIG gwałtownie odbił.

Z tym efektem flagi jest jednak kłopot. Bo po pierwsze jest to reakcja krótkoterminowa, a po drugie po silnej reakcji w górę, często następuje silny spadek w dół. PO nie będzie w stanie utrzymać społeczeństwa w takim pół-napięciu, więc będzie musiała albo zwiększyć "dawkę", albo zacząć akcję uspokajania.

Ale czy to w ogóle ma sens? Seo i Horiuchi zbadali wpływ militarnych sporów na poparcie liderów w 27 krajach między 2008 a 2014. Okazuje się, że przywódcy państw, które bronią się przed obcą agresją, nie odczuwają żadnej zmiany w poparciu społecznym, podczas gdy ci, którzy inicjują konflikty ofensywne, spotykają się z negatywną reakcją opinii publicznej. Poniższy rysunek z przytoczonej pracy przedstawia dokładniej te wyniki:


Kraj broniący się przed agresją jest po lewej. Poparcie na plus praktycznie się nie zmienia, ale dezaprobata wzrasta o 1.09 pkt proc. Po prawej jest kraj agresora - poparcie dla lidera spada z każdej strony prawie o 3 pkty proc. Czerwony kolor oznacza, że wyniki są istotne statystycznie.

W bardzo krótkim terminie może nastąpić jednak mała poprawa, na co wskazuje to samo badanie (chociaż to zaledwie parę tygodni).

Polska byłaby więc po lewej. Chociaż są to wyniki nieistotne statystycznie, to mimo wszystko dezaprobata raczej wzrasta. 

Wynika z tego, że "efekt flagi" jest albo iluzoryczny, albo zbyt krótkoterminowy, żeby opierać na nim predykcje. Oryginalnie był on zauważony tylko dla USA, dokładniej dotyczył poparcia dla bieżącego prezydenta. W polskim systemie poparcie to dotyczyłoby więc premiera lub prezydenta. 

Gdyby chcieć zażartować, powiedziałbym, że obecna władza po prostu chce dokopać inwestorom: co wypowiedź, to jakieś tąpnięcie. To też pokazuje, jaką nieprzewidywalnością cechuje się giełda wbrew technikom. Pozytywnym sygnałem jest pojawienie się tego amerykańskiego raportu, który powinien doprowadzić do zaniku wspomnianej dywergencji.
 

Literatura:
Seo, T,, Horiuchi, Y., Natural Experiments of the Rally ’Round the Flag Effects Using Worldwide Surveys, Jan 2022.