Strona Główna Blog webmasterski

Aplikacja do selekcji spółek GPW

Dzisiaj zrobię chwalę się i pokażę moją autorską aplikację do selekcji spółek notowanych na GPW.

Na początek zacznę od użytych technologii.

PHP
Symfony
Web Components
Python

Backend został napisany w PHP z użyciem frameworka Symfony 5. Front-end to aplikacja HTML wzbogacona o natywne komponenty w technologii Web Components oparte na bibliotece Polymer 3. Niektóre algorytmy zostały napisane w języku Python ze względu na duże możliwości tego języka pod względem Data Science przy relatywnej prostocie.

Ekran główny

Zamieściłem dwa screenshoty, które prezentują fragment ekranu głównego. Widać na nich 6 spółek posortowanych według wskaźnika "okazja", który bierze pod uwagę wszystkie inne wskaźniki i na ich podstawie ocenia w skali 0-6 okazyjność danej spółki. Jak widać, spółki można sortować według innych kryteriów oraz zawężać wyniki do określonych wartości poszczególnych wskaźników. W bazie danych posiadam aktualnie 100 spółek.

Ekran główny
Lista sortująca

Ekran spółki

Po otworzeniu ekranu spółki mamy dostęp do znacznie większej liczby informacji. W górnej części znajdują się wskaźniki znane z ekranu głównego. Wartość w zielonym kwadracie (wcale nie musi być zielony) oznacza ogólną ocenę spółki obliczoną w prosty sposób ze średniej pięciu wartości - Wartość, Rentowność, Zadłużenie, Dywidendy, Akcjonariat. Każdy z tych wskaźników jest obliczany na podstawie innych ogólnie znanych wskaźników, których wartości można poznać w ramkach umieszczonych nieco niżej. Nad ogólną oceną spółki znajduje się nieco tajemniczy wskaźnik nazwany AI k-NN rate, który pełni podobną funkcję, ale obliczany jest w nieco bardziej zaawansowany sposób za pomocą algorytmu k-najbliższych sąsiadów. Jego celem jest zmniejszenie wpływu jednego czynnika na cały wynik, co ma miejsce w przypadku średniej, kiedy 4/5 wartości jest słabych, ale jedna nadzwyczajnie dobra, co zawyża ocenę.

Kolejny wskaźnik to "zysk RSI" - nazwa jest nieco myląca, bo jest to skrót myślowy. Ogólnie chodzi o to, że na podstawie danych historycznych zysków netto rdr spółki obliczamy wskaźnik RSI. Za jego pomocą można ocenić czy zyski spółki są rozgrzane, czy schłodzone, co może pomóc w łapaniu "dołków".

10-letnia stopa to wskaźnik, który "prognozuje" jaki osiągniemy zysk w ciągu 10 lat, na podstawie danych historycznych cen akcji z 10 ostatnich lat i mediany dywidend. Oczywiście nie jest to wyznacznik tego, ile możemy na prawdę zarobić, ale pomaga w ocenie. W niektórych przypadkach może nawet przekłamywać, bo gdyby wziąć typową spółkę growth, jaką jest CD Projekt, to wynik byłby mocno ujemny, co w praktyce wcale nie oznacza, że na tej spółce koniecznie musimy stracić.

Ekran zawiera jeszcze wykres pokazujący zmianę wartości poszczególnych wskaźników w czasie. Jest też tabelka z listą wypłaconych przez spółkę dywidend. Nieco niżej "prognoza" zysków rozwinięta w formie tabeli, a na samym dole wspomniany wcześnie wykres zysków netto wraz ze wskaźnikiem RSI.

Poniższy screenshot można powiększyć klikając w niego.

Ekran spółki

Inne ekrany

Aplikacja posiada jeszcze ekran z otwartymi pozycjami, gdzie wyświetlana jest tabela ze wszystkimi walorami znajdującymi się portfelu oraz wykresy kołowe pokazujące procentowy udział poszczególnych walorów z podziałem na kategorie. W przyszłości pojawi się zakładka podsumowująca zamknięte pozycje.

Gdyby ktoś pytał, czy możliwe jest podzielenie się aplikacją z innymi, to z góry informuję, że na ten moment nie planuję :P