Ekonometria. To działa, czyli czemu Apple mnie nie zaskoczyło.

  • Home
  • /
  • Blog
  • /
  • Ekonometria. To działa, czyli czemu Apple mnie nie zaskoczyło.

Data: 27 kwietnia, 2012

Po przeczytaniu dość niepokojącego tekstu Przemysława Pająka z 23 kwietnia 2012 roku dotyczącego kursów akcji Apple, miałam mieszane uczucia. Nie mam zamiaru podważać roli informacji na rynkach (sam problem np. Insider Tradingu jest z nią związany), jednak kwestie dotyczące technicznej strony zachowania się cen zostały podane nieco chaotycznie.

To, że coś jest „ceną” nie oznacza, iż można sobie bezkarnie porównywać różne jej typy. Cena maksymalna z danego dnia nie może być porównywana z ceną zamknięcia – czyli czymś, czego używa się do modelowania rynku i predykcji. Czemu to ważne? Ceny z giełdy zachowują się bardzo specyficznie, oczywiście są odbiciem gry popytu i podaży. Cena chwilowa jednak jest bardzo chwiejna – zapewniają to działania inwestorów, rosnący lub malejący niepokój na rynku, właściwie zaaplikowana informacja. Cena maksymalna z danego dnia, jakby nie patrzeć, to cena chwilowa. Dlatego trudno na – podstawie takiego zjawiska wnioskować o średniookresowych właściwościach całego szeregu.

Właśnie, szeregu. Niewiele da nam wnioskowanie na podstawie pojedynczej, dyskretnej realizacji. Na dane patrzymy z większej perspektywy. To, co dzieje się codziennie na giełdzie, po uporządkowaniu tworzy tzw. szereg czasowy. Definicja, która może nieco przestraszyć nietechniczne osoby, mówi, że jest to pojedyncza realizacja procesu stochastycznego. Załóżmy sobie, iż mamy pewną zmienną losową, mogącą przyjmować wartości z określonym prawdopodobieństwem. W danej jednostce czasu pozwólmy, aby wartości badanego zjawiska były losowane właśnie z jej rozkładu (przyporządkowania możliwych wartości ich prawdopodobieństwom zajścia). Jeśli patrzymy na kilka okresów nasze zmienne losowe utworzą nam pewną rodzinę – to jest właśnie prosto ujęty proces stochastyczny. A teraz wylosujmy z każdej zmiennej jedną wartość. Rodzina takich wartości da właśnie szereg czasowy. Bezpośrednie wnioski? Przekonaliśmy się, że pojedyncza wartość jest z punktu widzenia całości losowa (w przypadku ciągłych rozkładów mówi się wręcz, że prawdopodobieństwo przyjęcia dokładnie tej wartości równa się zero). Bez spojrzenia na właściwości – procesu, z którego ją wygenerowano, niewiele mówi. Dane nie wiedzą, skąd pochodzą. Jedyny sensowny powód patrzenia na pojedyncze obserwacje to szukanie tzw. outlierów, inaczej obserwacji odstających, mogących w znacznym stopniu pogorszyć dopasowanie naszego modelu. Praktyka pokazuje, że jeśli outlier słabo pasuje do naszych obserwacji (może być to jakieś zanieczyszczenie bazy danych), nie nadaje się do zestawiania z innymi.

W tym kontekście porównanie ceny maksymalnej (która może być outlierem) z pojedynczą realizacją z dnia 23 kwietnia (to nawet nie była cena zamknięcia!) ma słabe właściwości predykcyjne. Rozmowa o trendzie sprawdzi się już bardziej. Czemu tak mocno zwracam uwagę na cenę zamknięcia? Jest ona w miarę stabilna i względnie oczyszczona ze… „śmieci” jakby można było powiedzieć (ceny maksymalne ze względu na swoje fluktuacje mogą być zanieczyszczone). To swoista wypadkowa danego dnia, przez to niosąca w sobie najwięcej informacji. Jak je wyciągnąć? Dać danym mówić i uważnie ich posłuchać.

Kiedy rozmawiamy z kimkolwiek zwykle staramy się wyłapać kontekst. Pojedyncze słowa mogą nas niekiedy wprowadzić w zakłopotanie, przestraszyć, ale umożliwienie rozmówcy sprostowania, zwykle pozwala zorientować się, czy były to nasze błędne przypuszczenia, czy faktycznie rozmówca ma niemiłe intencje. „Czepianie się” jednego słowa przywodzi mi na myśl szowinistyczne dowcipy o kobietach, które z jednego wyrazu wywiodą sobie całą dodatkową historię. W porządku, mnie też się to zdarza. W każdym razie, przyjmijmy, że szereg chce nam coś powiedzieć. Skupianie się na jednej obserwacji – jednym słowie – i na tej podstawie budowanie całej opowieści, bez spojrzenia na kontekst… jest pożywką dla szowinizmu (;. Dane mają swój język – co za tym idzie, nie tylko słowa, ale kontekst, składnię, „drugie dno”. Jak wspomniano, nie wiedzą, skąd pochodzą. Ale podobnie, jak ludzie mieszkający na jednym terenie wykazują pewne wzorce językowe (z których mogą nie zdawać sobie sprawy), tak samo pewne szeregi zachowują się podobnie. Dane z giełdy są tego szczególnym przykładem – w ich dialekcie występuje charakterystyczne zjawisko, które od razu nasunęło mi się na myśl przy czytaniu tekstu pana Przemysława.

Od razu napiszę: nie jestem analitykiem giełdowym. Nie będzie to tekst o analizie technicznej i ślicznych wykresach, tak chętnie pokazywanych na filmach o giełdzie. Jestem ekonometrykiem, a język, który wybrałam, żeby pokazać, że „niemożliwe jest przewidywalne” to analiza szeregów czasowych. Nie, to nie wróżbiarstwo. Czarnego kota i szklanej kuli też nie było. Czytelnicy mający podstawy statystyki matematycznej, mogą z powodzeniem samodzielnie powtórzyć przedstawione tutaj rozumowanie za pomocą programu gretl.
Zaczynamy!

Przedstawmy naszego kandydata. Oto on:

Pierwsze, na co musimy zwrócić uwagę to to, czy w ogóle coś nam sensownego powie. Jest trend – mocny wzrostowy i później przechodzący w spadkowy. Drobne fluktuacje – spadki i wzrosty na przemian. Ale najistotniejsze: szereg nie jest stacjonarny. Co to znaczy? Mówiąc technicznie nie ma stałej średniej i wariancji. Mówiąc dosyć trywialnie: nie możemy wyznaczyć wartości, wokół której wykres oscylowałby.A takie szeregi mają tendencje do przekłamywania (; dochodzi do regresji pozornej, która potrafi wskazywać istotną zależność tam, gdzie jej nie ma. Z reguły, dążąc do stacjonarności, liczymy pierwsze różnice danych zmiennych (oznaczmy d.zmienna). Dodatkowo w przypadku giełdy modelujemy zwykle logarytmiczną stopę zwrotu (ln(d.zmienna(t+1)) – ln(d.zmienna(t))). Pomaga to zmniejszyć wpływ niestałej wariancji. spójrzmy teraz na logarytmiczną stopę zwrotu nałożoną na wyjściowy szereg:

Pierwsze co możemy zauważyć, to to, że stopa zwrotu r_apple wydaje się być stacjonarna. Hipotezy tej nie pozwalają odrzucić testy Dickey-Fullera i KPSS. Również możemy to zauważyć patrząc na spektrum – procesy niestacjonarne mają wysoki skok w zerze:

Drugie istotne spostrzeżenie wprowadza nas w pojęcie faktów stylizowanych. Patrząc na stopę zwrotu możemy zauważyć, że rozrzut wartości jest zmienny – jest to miara ryzyka, przybliżenie wariancji. Blisko siebie skupiają się obserwacje o wysokiej lub niskiej wariancji składnika losowego. Jeśli zmienność jest wysoka również prawdopodobieństwo, że nadal taka będzie jest wysokie. Opisane zjawisko nosi nazwę grupowania wariancji. Niestałość w czasie określa się heteroscedastycznością. Wracając do wykresu stopy zwrotu z nałożonym pierwotnym szeregiem możemy dostrzec również efekt dźwigni – wariancja ma tendencję do mocniejszego wzrostu na skutek spadku cen, lecz jednocześnie niższego wzrostu przy wzroście cen o tę samą wartość. W praktyce oznacza to, że spadek kursu akcji przyczynia się do wzrostu niepewności na rynku w większym stopniu niż wzrost kursu o tę samą wartość. Mamy do czynienia z asymetrią warunkowej wariancji. Trzecim faktem stylizowanym jest występowanie zjawiska leptokurtyczności. Rozkład stopy zwrotu z porównaniu z rozkładem normalnym ma „grube ogony” i wyższy szczyt funkcji gęstości. Związane jest to z wyższą kurtozą. Po przeprowadzeniu testów na normalność rozkładu (np. Jarque-Berra) okazało się, że odrzucamy hipotezę zerową o normalności stopy zwrotu. Analiza graficzna również potwierdziła przypuszczenie o problemach. Tyle matematyki. Jak to się jednak ma do badanego szeregu? Leptokurtoza wiąże się z częstszym występowaniem outlierów niż w rozkładzie normalnym. Względnie prawdopodobieństwo wystąpienia nietypowych zmian kursu jest większe!

Podsumowując fakty stylizowane, możemy oswoić się nieco z myślą, że zachowanie akcji Apple nie jest jednak aż tak wyjątkowe. Nietypowe zmiany mogą się zdarzać częściej, a spadki kursu ze względu na towarzyszącą wysoką wariancję prawdopodobnie pociągają kolejne spadki. Poza tym… takie przebiegi wykazują również inne szeregi związane z giełdą. Proponuję obejrzeć sobie wykres cen zamknięcia wigu.

Wracając do Apple. Skoro już dostrzegliśmy fakty stylizowane, dobrze byłoby je potwierdzić testami. Co więcej, spróbować wymodelować zachowanie szeregu. Praktyka uczy, że najlepiej tworzyć krótkie prognozy, spróbujemy zatem zrobić prognozę na 2 dni (do poniedziałku 23 kwietnia). Moja predykcja będzie o tyle nietypowa, że wartość poniedziałkowa generowana była nie jak to zwykle się zdarza – ex post czyli mając już ogłoszone wyniki, a ex ante – postarałam się moim modelem przewidzieć przybliżoną wartość. Następnego dnia dopiero ją porównałam.

Miałam zamiar skorzystać z modelu z klasy ARIMA – modeli uzasadniających bieżącą wartość stacjonarnego szeregu wartościami poprzednimi (AR – autoregressive) oraz od poprzedzających wartości błędów losowych (MA – moving average). Jednak takie modele można szacować tylko na próbach, które nie są białym szumem (wartości możemy opisać za pomocą wpływu wcześniejszych obserwacji a nie jedynie obecnego nieskorelowanego błędu losowego), a nasz szereg takim właśnie był. Na początku gryzło mnie to strasznie („jak szereg chory to już nic nie pomoże”), ale postanowiłam zbadać zachowanie różnic ze stóp zwrotu – operacja różnicowania, o ile doprowadza do stacjonarności jest dopuszczalna.

Nie trzeba przejmować się dziwnymi datami – dane z giełdy są typu 5 notowań na 7 dni. Występują naturalne braki obserwacji, z którymi radzimy sobie, sklejając wszystkie wartości i tworząc sztuczną datę. To kwestia czysto techniczna. Proszę zwrócić uwagę na widoczną piękną stacjonarność, również w analizie spektrum. Formalne testy nie pozwoliły na odrzucenie hipotezy zerowej. Badany szereg miał jeszcze jedną miłą właściwość. Po przeprowadzeniu testu Portmanteau odrzucono hipotezę o byciu białym szumem.
Czas był najwyższy na najprzyjemniejszą część. Model musi mieć współczynniki. Nie określa się ich na podstawie uśmiechu kosmosu albo innej iluminacji, ale po graficznej analizie przebiegu funkcji ACF (autokorelacja) i PACF (cząstkowa autokorelacja). Brzmi groźnie, ale wygląda bardzo ładnie:

Rząd MA wybieramy na podstawie kilku pierwszych wystających poza przedział ufności pałek w ACF – tutaj jedna. Rząd AR analogicznie na podstawie PACF – 5, ale w praktyce wystarczy rozpocząć od 3. Wszystkich zadowolonych, że koniec i wystarczy już tylko „puścić prognozę” uprzedzam jednak, że nie. Z wyjściowego modelu procedurą od ogółu do szczegółu doprowadzamy do najprostszej formy nie odrzucanej przez testy. Ewentualnie patrzymy na kryteria informacyjne, im niższe tym lepiej. Bayesa- Schwarza jednak mocniejsze jest niż Akaike.

Testy wykazały, że powinnam użyć modelu ARIMA(0,2,1), postanowiłam jednak nie odrzucać też prognoz z ARIMA(1,2,1) oraz ARIMA(1,2,0). Chociażby po to, żeby mieć porównanie. Regresji w arimie nie interpretuje się, było jednak coś, co mnie zaniepokoiło. Wszystkie modele, chociaż już mocno okrojone, wskazywały wysokie p-value’a wiążące się z nieistotnością parametrów.

Z drugiej strony… po co robiłabym ten przydługi wstęp o faktach stylizowanych, gdybym zatrzymała się na arimie i to… kwestionowanej jakości? Po wykonaniu testu na obecność efektu arch (autoregresywnej warunkowej heteroscedastyczności)… okazało się, że nie można odrzucić hipotezy o występowaniu takowego. Podobnie analiza funkcji pac i ac reszt z modelu do kwadratu – nie zachowywały się jak biały szum.

Rozpoczęłam wybieranie właściwej formy funkcyjnej. Czysty arch okazał się nie mieć standaryzowanych reszt będących białym szumem, arch(8) tym bardziej. Poprawny był natomiast garch(1,1) – generalizowany arch, w którym oprócz opóźnionych reszt kwadrat bierzemy również opóźnioną warunkową wariancję. Dodatkową zaletą modelu była jego prostota – zaledwie 3 parametry. Zmienne łącznie i każda z osobna stały się istotne.

Przejdźmy do prognozy. Na rysunkach przedstawiłam wyniki prognozy wartości logarytmu kursu, jak i warunkowej wariancji.

Model Arima(1,2,0) pierwszą wartość przeszacował, drugiej niedoszacował, jednak prawidłowo przewidział trend. Modele, w których dodano komponent średniej ruchomej gorzej radziły sobie z trendem i za każdym razem przeszacowywały. Modele ze średnią ruchomą za to lepiej radziły sobie w przypadku warunkowej wariancji. Najbliżej wartości była Arima(0,2,1), tuż za nią Arima(1,2,1). Pierwsza niedoszacowywała wariancję, druga przeszacowywała. Najsłabiej z trendem zgodna była Arima(1,2,0). Mimo to wszystkie prognozy zachowywały trend spadkowy.

Do oceny prognoz skorzystałam również z wyliczenia podstawowych typów błędów. Przedstawiam je w tabeli dla całego okresu prognozy:

stats        | mse         mae         mape        amape
-------------+------------------------------------------------
arima(1,2,0)| .0000561675 .0074748993 .001178072  .0005890871
--------------------------------------------------------------
arima(1,2,1)| .0010927352 .0322980881 .0050909324 .0025386953
--------------------------------------------------------------
arima(0,2,1)| .0013167147 .0355713367 .005606794  .0027952407
--------------------------------------------------------------

Oraz tylko dla poniedziałku:

stats        | mse         mae         mape        amape
-------------+------------------------------------------------
arima(1,2,0)| .0000642657 .0080165863 .0012644457 .0006326229
--------------------------------------------------------------
arima(1,2,1)| .0015475246 .0393385887 .0062048244 .003092817
--------------------------------------------------------------
arima(0,2,1)| .0018267371 .042740345  .0067413794 .0033593662
--------------------------------------------------------------

Wybieramy model, który ma najniższe błędy – jest to Arima(1,2,0). Poniżej podsumowanie predykcji:

Oraz podsumowanie – wykres pierwotnego szeregu wraz z warunkową wariancją. Może i nie przewidzieliśmy idealnie wartości, ale przecież nie o to chodzi – często bardziej interesuje nas kierunek zmiany i potencjalne ryzyko. Działamy na pewnym poziomie ufności (o czym wiele osób zapomina), tutaj domyślnie było to 95%. Oznacza to, że statystycznie w 5 przypadkach na 100 godzimy się na pomyłkę. Chcąc mieć 100% pewność, że wartość wpadnie do przedziału, jaki generujemy, musielibyśmy przyjąć całą oś liczbową. Ale pewnie lepiej przynajmniej umieć sobie wytłumaczyć kierunek zmian, niż narzekać na nieprzewidywalność i liczyć na jasnowidzenie…

Newsletter OSnews raz w tygodniu. Bez reklam.