sobota, 6 sierpnia 2016

Sezonowość i Prognozowanie.

W tym poście przypomnę wam mój wcześniejszy post. Pokazane zostaną inne metody badania sezonowości danych.
Na początku porównajmy dekompozycję tygodniową szeregu czasowego z aktualnymi danymi:
Skrypt:
library(quantmod)
kgh = getStooqData('kgh')
prices = kgh[,5]
data = as.Date(kgh[,1])
ts =xts(prices, data)
w.ts= ts(ts, start = c(1997,7), end = c(2016,8), frequency = 52)
modeldek = decompose(w.ts)
plot(modeldek$trend +modeldek$seasonal)
lines(w.ts, col ="red")
Model z porównaniem kgh
Czarna kreska to prognoza modelu.
Czerwona kreska to dane rzeczywsite kghm-u.
Następnie wykonajmy takie samo porównanie dla danych miesięcznych.
kgh.m= ts(kgh.monthly, start = c(1997,7), end = c(2016,8), frequency = 12)
mmodeldek = decompose(kgh.m, type = "multiplicative")
plot(mmodeldek$trend +  (1-mmodeldek$seasonal)*mmodeldek$trend)
lines(kgh.m, col = "red")

Tak wygląda prognoza miesięczna:
Teraz spróbujmy sprawdzić jak wyglądają miesięczne stopy zwrotu.
library(forecast)
m.ts= ts(monthlyReturn(ts), start = c(1997,7), end = c(2016,8), frequency = 12)
seasonplot(m.ts, col = c("red", "blue"), year.labels = TRUE, cex = 0.75)
Na wykresie kghmu nie widać sezonowości w miesięcznych stopach zwrotu.  Nie widać żadnego schematu zachowywania się cen akcji kgm-u.

Do prognozy szeregów czasowych wykorzystywane są metody autoregresyjne. Modele autoregresujne starają się przewidzieć cenę akcji poprzez używanie wcześniejszych obesrwacji. Pomocne może się okazać wykrycie autokorelacji. Autokorelacja oznacza że wcześniejsze wartości obserwacji są skorelowane z obserwacjami w przyszłych okresach.

Model ten wyraża się za pomocą ARIMA(p,d,q)
p - kolejność modelu autoregresyjnego
d - ilość różnicowań by doprowadzić do stacjonarności
q -  stopień średniej kroczącej

Przed skonstruowaniem modelu sprawdzimy autokorelację i autokorleację czątkową. 

acf(weeklyReturn(kgh.weekly))
acf(m.ts,lag = 30)
pacf(m.ts,lag = 30)




Jest to wykres acf dla danych miesięcznych kghmu. Pokazuje, które opóżnione dane mają statystycznie istotną korelację. Pierwszy słópek pomijamy, ponieważ jest to korelacja tych samych przypadków. I tak w tym przypdku na istotne poziomie 0.95 jest cofnięcie o 3 przypadki do tyłu, a następnie cofnięcie o 30 przypadków. Ponieważ było 30 przypadków, a poziom istotności to 0.95. Oznacza to że powinno się spodziewać od 1 do 2 statystycznie istotnych danych. I w rzeczywistości tak się stało.

Teraz użyta zostanie funkcja auto.arima. Jest to funkcja, która automatycznie dobiera najlepszy model pod względem 3 rodzajów kryteriów informacyjnych. Jeżeli ustalimy nasz argument trace = TRUE, wtedy otrzymamy listę alternatywnych modeli.
auto.arima(kgh.m, trace = TRUE)

Jednym z dwóch pierwszych wierszy jakie otrzymaliśmy jest:
 ARIMA(2,1,2)(1,0,1)[12] with drift         : 1515.436
 ARIMA(0,1,0) with drift         : 1500.055

Pierwszy model ma więcej parametrów, ponieważ jest ot arima uwzględniająca parametry sezonowości. 12 na końcu oznacza skok wartości przy 12 opóźnieniu w acf. Drugi model z driftem można uzyskać używając funkcji Arima (UWAGA! bardzo ważne jest ot że pierwsza litera jest wielką, arima i Arima to dwie różne funkcje)
Następnie ukazują się oszacowania parametrów:
 Best model: ARIMA(1,1,1)(0,0,1)[12]                   

Series: kgh.m
ARIMA(1,1,1)(0,0,1)[12]                   

Coefficients:
          ar1     ma1     sma1
      -0.4913  0.6433  -0.1197
s.e.   0.1676  0.1417   0.0661

sigma^2 estimated as 39.56:  log likelihood=-744.66
AIC=1497.31   AICc=1497.49   BIC=1511.05

modelarima = auto.arima(kgh.m)
Następnie, żeby uzyskać prognozę, należy wpisać::
forecast(modelarima, 5)
I żeby ją narysować, wystarczy:
plot(forecast(modelarima, 5)

piątek, 3 czerwca 2016

Testowanie hipotez statystycznych cz. 2

Wprowadzenie do statystyki matematycznej zostało zrobione w tym poście. Teraz temat ten zostanie omówiony w bardziej zaawansowanej formie

Jednym z koniecznym warunków do sprawnego badania hipotez, jest wyznaczenie minimalnej wielkości próby. W środowisku r można to zrobić za pomocą komendy nsize().

nsize(przedział błędu, odchylenie standardowe, p - proporcja czegoś w zmiennej binarnej(nie potrzebne przy type ="mu"), przedział ufności, typ mu lub pi - mu gdy chcemy testować średnia, pi gdy chcemy testować proporcje).

Na przykład:

nsize(4,10,"mu")

Wymagana wielkość próbki (n), aby oszacować średnią przy przedziale ufności 0,95, żeby margines błędu nie był większy niż 4 to 25.

nsize(0.1,p = 0.3,type = "pi", conf.level = 0.99)

Wymagana wielkość próbki (n), aby oszacować Odsetek sukcesów przy przedziale ufności 0.99, żeby margines błędu nie był większy niż 0,1 to 140.

Praktycznie przed prawie każdym badaniem trzeba znać wariancję populacji. Jest to też nie zbędne przy badaniu mocy testu.

Wyobrażenie rosnącej mocy(prawdopodobieństwa prawidłowej decyzji) testu wraz z liczebnością próby możemy zaobserwować za pomocą komendy np. power.prop.test , power.t.test oraz power.annova.test.

power.t.test(delta =3, sd = 2.5, power = 0.9)

Two-sample t test power calculation

n = 15.61967
delta = 3
sd = 2.5
sig.level = 0.05
power = 0.
alternative = two.sided

W tym przypadku delta podzielona przez 20 oznacza, że można wykrywać 15%-owe różnice w średnich.

Testy dzielone są na dwie najważniejsze grupy :
  • parametryczne – wartości parametrów rozkładu (znamy rozkład),
  •  nieparametryczne – postaci funkcyjnej rozkładu (nie znamy rozkładu),
Według innego kryterium rozróżnia się:
  •  hipotezy proste - hipoteza określa jeden rozkład,
  •  hipotezy złożone – hipoteza określa całą grupę rozkładów,
Omówienie najważniejszych testów:

Test Chi2

Test nieparametryczny(test zgodności) – dotyczy rozkładu teoretycznego badanej zmiennej losowej dyskretnej lub ciągłej. Test ten wymaga odpowiedniej wielkości populacji, zakłada się że jest to 30 przypadków.

  • H0 – rozkład próby jest zgodny,
  • H1 – rozkłady się różnią,
W r uruchamiany za pomocą komendy chisq.test()
x = c(10,30,10)
y = c(15,20,15)

chisq.test(x,y)

Pearson's Chi-squared test with Yates' continuity correction

data: x and y
X-squared = 0.1875, df = 1, p-value = 0.665

P- value o wartości 0.665 oznacza, że nie można odrzucić hipotezy zerowej.

Test Kołmogorowa-Smirnowa

Stosowany w przypadku zmiennych ciągłych. Stosowany dla małych prób. Niestety, wykazuje on zgodność z rozkładem normalnym, nawet jeżeli istniej duże różnice. Parametry rozkładu musza być szacowane z populacji.

Przywoływany jest za pomocą funkcji ks.test()
x = rnorm(50)
ks.test(x, 'pnorm')

One-sample Kolmogorov-Smirnov test

data: x
D = 0.13213, p-value = 0.3186
alternative hypothesis: two-sided

Nie ma podstaw by sądzić że dane pochodzą z innego rozkładu niż normalny.

Test Shapiro-Wilka

Ma dużą moc, może być stosowany do małych prób.

x = rnorm(50)
shapiro.test(x)

Shapiro-Wilk normality test

data: x
W = 0.97528, p-value = 0.3739

W następnym wpisie opisane zostaną testy na zgodność, wartości oczekiwanej i wariancji.

poniedziałek, 4 kwietnia 2016

Analiza SFK Polkap



Analiza spółki SFK Polkap S.A.
 
Profil działalności:
Ticker:
SFK
ISIN:
PLSFKPL00011
Rynek nototwań:
NewConnect
Indeks notowań:
Nc lead
Liczba akcji:
4 550 000
Liczba głosów:
4 550 000
Liczba akcji w obrocie :
753 000
Średni obrót z ostatnich 20 dni:
31 663,41 zł.
Free float:
16,55%
Poprzedni kurs:
5,1 (2016-03-21)
Kapitalizacja:
23 205 000
Źródło: opracowanie własne
Skoczowska Fabryka Kapeluszy Polkap Spółka Akcyjna zajmuje się produkcją i dystrybucją kapeluszy z wełny, włosa króliczego oraz półproduktów. Emitent swoją działalność koncentruje na rozwijaniu procesu produkcyjnego, jak również na pozyskaniu nowych klientów oraz rynków zbytu, na których oferta nie była jeszcze obecna oraz na obsłudze dotychczasowych klientów Polkap Sp. z o.o. Widocznym tego przykładem jest otworzony nie dawno showroom w Nowym Jorku, który przyczynił się do znacznego wzrostu sprzedaży w USA. Historia marki Polkap sięga 1924r., w którym to firma kapelusznicza "Hückel Sohne" (zakład macierzysty w Nowym Jiczinie, a także filie w Raciborzu oraz w Wiedniu) uruchomiła w Skoczowie filię swojego zakładu. Produkcja w początkowym okresie miała charakter sezonowy i wynosiła około 500 szt. dziennie. Odbiorcami wyrobów Spółki są głównie firmy produkcyjne i hurtownicy z Niemiec i Austrii, gdzie tradycja noszenia kapelusza jest ciągle bardzo silna. Ponadto dużą część klientów stanowią niewielkie, często rodzinne manufaktury wytwarzające kapelusze z półproduktów firmy na swój rodzimy rynek. Zazwyczaj na specjalne okoliczności i święta, gdzie kapelusz jest obowiązkowym dodatkiem ubioru.



Akcjonariat:
Źródło: opracowanie własne
Tendencje rynkowe:
Intuicyjnie, wydaje się, że w dzisiejszych czasach mało kto chodzi w kapeluszach, ale tendencje rynkowe wydają się być odwrotne.  W rzeczywistości moda na kapelusze nie przemija, a trzyma się mocno i lekko wzrasta. Na dowód może posłużyć wykres częstości wyszukiwania takich haseł jak „kapelusz” W popularnej wyszukiwarce google:
Źródło: Google.com
Wydają się też to potwierdzać niezależne badania rynkowe, takich firm jak : Global Industry Analyst, Statistic Brain Analyst, IBISworld itp. Światowy Rynek docelowo ma osiągnąć wartość 7,1 mld dolarów w 2018 roku, a rocznie sprzedaje się około 300 milionów czapek i kapeluszy. Najszybciej rozwija się rynek Azji południowo wschodniej.  Jednym z czynników wzrostu jest moda na drogie kapelusze retro. Jednakże niejednolity charakter rynku, powoduje że w ofercie powinna się znaleźć szeroka gama produktów.
Największymi zagrożeniami dla tego rynku w Polsce jest między innymi osłabianie się złotówki w stosunku do dolara, który jest główną walutą wymiany w celu importu produktów z Azji oraz euro, w których denominowany jest najem powierzchni  handlowej w galeriach.
Spółka upatruje jako szczególną okazję do rozwoju rynek ameryki północnej, ameryki południowej i Izraela. Firma jest szczególnie mocna na rynku Niemiec i Austrii, gdzie tradycja noszenia kapeluszy nadal jest silna. Z tego też powodu występuje sezonowość w przychodach spółki, które są niższe w okresie od grudnia do lutego w związku z przerwą świąteczną w Niemczech. Jednak skoczowska fabryka wydaje się nie zwalniać tempa, a wręcz przeciwnie sprzedaż znacznie przyśpiesza.
Analiza finansowa:
Źródło: opracowanie własne
Na wykresie wykazuje wyraźny trend wzrostowy i zwiększającą się różnicę między przychodami, a kosztami sprzedaży. Do wyznaczenia trendu wykorzystana została regresja liniowa.
Źródło: opracowanie własne
Źródło: opracowanie własne
Przychody ze sprzedaży stabilnie rosną w ujęciu rok do roku. Trend zysku ze sprzedaży jest rosnący, został wyznaczony za pomocą regresji liniowej.
Źródło: opracowanie własne
Źródło: opracowanie własne
Rosnąca stopa zwrotu z kapitału oraz rosnący udział zadłużenia w całkowitej sumie bilansowej to korzystne zjawiska dla inwestora, który chce zainwestować w akcje sfk polkap, ponieważ zmniejsza się koszt ważonego kapitału spółki oraz pomniejsza ryzyko ponoszone przez inwestorów kupujących papiery udziałowe.
Źródło: opracowanie własne
Przepływy pieniężne wskazują, że spółka zadłuża się by móc dalej inwestować w działalność operacyjną. Działalność operacyjna powoduje dodatni przepływ gotówki, który przewyższa zysk netto. Przepływy z działalności operacyjnej charakteryzują się sezonowością i są przeważnie najwyższe w ostatnim kwartale, natomiast nie są one wystarczająco wysokie, by pokryć wydatki inwestycyjne. Jest to charakterystyczne dla spółek dynamicznie rozwijających się.
Źródło: opracowanie własne
Źródło: opracowanie własne
Wskaźniki płynności oraz wykorzystania majątku, nie są w żaden sposób niepokojące. Cykl konwersji gotówki jest dosyć duży, ale widać tendencję do zmniejszania się jego wartości, dzięki czemu prawdopodobnie polepsza się wykorzystanie majątku.

Źródło: opracowanie własne
Interpretacja wykresu: Spółka jest tym atrakcyjniejsza w stosunku do sektora z punktu widzenia danego wskaźnika, im bardziej jej linia jest oddalona od środka. W ten sposób zaobrazować można, że spółka ma wskaźnik cena/zysk, prawie 3.5 razy mniejszy od średniej dla sektora.
Prognoza:
Spółka podała także prognozę na 2016 rok, w której spodziewa się osiągnięcia wyniku 6,5 miliona złotych zysku brutto. Oznacza to, że firma przewiduje wzrost wyników o 27% w stosunku do 5,117 mln złotych, osiągniętych w 2015 roku. Prognoza zdecydowanie pozytywnie wpływa na obraz spółki, jako potencjalną inwestycję.


Analiza ilościowa:
Parametry stóp zwrotu:
nazwa
roc.sfk
nobs
878
NAs
0
Minimum
-0.21905
Maximum
0.203454
1. kwartyl
-0.00587
3. kwartyl
0.004008
Średnia
0.000419
Mediana
0
Suma
0.36831
Górny przedział ufności
0.0014
Dolny przedział ufności
-0.00233
Środek przedziału
0.003168
Wariancja
0.001721
Odchylenie standardowe
0.04149
Skośność
0.361955
Kurtoza
4.490491
Źródło: opracowanie własne
nazwa
roc.sfk to roc.wig
Alpha
0.0003
Beta
0.3243
Beta+
0.123
Beta-
0.3118
R-squared
0.0051
Annualized Alpha
0.0828
Correlation
0.0716
Correlation p-value
0.0338
Tracking Error
0.6642
Active Premium
-0.128
Information Ratio
-0.1927
Treynor Ratio
-0.382
Źródło: opracowanie własne

Źródło:Stooq.com
Spółka znajduje się w momencie, w którym możliwe jest wybicie i powrót do trendu wzrostowego.
Podsumowanie:
Dlatego spółka przyciągna uwagę, a charakterystyka historycznych stóp zwrotu pokazuje, że  historycznie nie była bardziej ryzykowna od benchmarku w postaci szerokiego rynku. Głównym czynnikiem pro wzrostowym są rosnące zyski spółki oraz pozytywne prognozy dla rynku kapeluszy na świecie.

Analizę tą publikowałem dwa tygodnie temu w ramach projektu taurus investment fund.

Przedstawiony powyżej materiał ma charakter tylko i wyłącznie informacyjno-edukacyjny i jest zamieszczany w celach edukacyjnych przez członków Studenckiego Koła Naukowego Taurus działającego przy Katedrze Ekonomii Przemysłu i Rynku Kapitałowego na Wydziale Ekonomiczno-Socjologicznym UŁ. Autorzy serwisu prezentują własne analizy, komentarze, decyzje i wybory inwestycyjne dokonywane na własnych rachunkach inwestycyjnych, dlatego nie należy traktować poniższej treści jako rekomendacji inwestowania w jakiekolwiek instrumenty finansowe. Przedstawiony materiał nie stanowi usługi doradztwa inwestycyjnego w rozumieniu zapisów Rozporządzenia Ministra Finansów z 19 października 2005 roku. SKN Taurus oraz portal www.tif.skntaurus.pl nie ponosi żadnej odpowiedzialności za ewentualne szkody spowodowane dobrowolnym wykorzystywaniem materiałów, treści, informacji oraz opinii zawartych w serwisie przez jego użytkowników.