Wąż na parkiecie

Ten wpis będzie nie w temacie. Nie będzie dotyczył druku 3D, to tak specjalnie. Uznałem, że skoro to mój blog, to temat nie ma to znaczenia, ważne żeby był mój. Takim właśnie tematem jest sensowne wydawanie pieniędzy i spędzanie wolnego czasu – w szczególności długich samotnych wieczorów, kiedy dzieci już śpią, a Żona pojedzie na jogę.

Kwestia jak uzyskać nadwyżkę finansową i co potem z nią zrobić chodziła mi po głowie od chyba końca studiów, kiedy wolnego czasu zrobiło się jakoś więcej. Ale dopiero mniej więcej w 2014 roku postanowiłem zrobić coś z tym na serio. Było to możliwe dzięki trzem elementom: wzrostowi wynagrodzenia z etatu, inspiracji kolegi z pracy, który już wtedy grał na giełdzie oraz uświadomieniu sobie ze komputer to nie tylko zabawka i ewentualnie maszyna do pisania lub studenckie kino domowe. W tym wpisie, jak również być może kilku następnych mam zamiar opisać co dokładnie zacząłem robić i, unowocześniając podejście, robię do dziś.

Krok pierwszy
Kupiłem książkę o analizie technicznej. Chociaż interpretacja wykresów to nie moja bajka, to znalazłem w niej coś dla siebie – kilka ostatnich rozdziałów, których większość amatorów inwestowania pewnie nie czyta. Dotyczyły one wskaźników wyliczanych z kursów akcji, których celem jest podanie mniej lub bardziej poprawnego sygnału na kupno lub sprzedaż danego papieru wartościowego. W szczególności spodobał mi się wskaźnik KST (skrót od know sure thing). Być może dlatego , że jego wyliczenie jest dość skomplikowane. Postanowiłem go sobie wyliczyć. Na początek zrobiłem to w arkuszu kalkulacyjnym, ale utrzymanie tego rozwiązania było bardzo czasochłonne i nie spełniało moich oczekiwań. Chodzi przecież o to żeby się nie narobić, prawda?

Krok drugi
Mniej więcej w tym samym czasie praca na etacie wymagała ode mnie nauki Oracle SQL. Postanowiłem więc zrobić coś pożytecznego dla mnie prywatnie i przeniosłem wspomniane wyżej wyliczenia z arkusza kalkulacyjnego do bazy danych postawionej lokalnie na moim ówczesnym laptopie. Wyliczenia zautomatyzowany się, jedyne co musiałem robić to wrzucać do bazy dane giełdowe. Równolegle w pracy zaczynałem lepiej poznawać VBA (w znacznym stopniu dzięki Grześkowi o którym pisałem tu). To dzięki VBA zacząłem realizować plan dalszej automatyzacji mojego systemu zarządzania inwestycjami giełdowymi.

Takie były początki i na tym etapie też stanęło na długie miesiące. Ale do rzeczy: chciałbym podzielić się tym, co robię teraz, by jeszcze bardziej uprościć sobie „inwestycyjne” życie.

Dalsza cześć tego wpisu ma na celu wytłumaczenie jak wykorzystuje język programowania Python do zbierania informacji z warszawskiej giełdy, ich agregowania i ładowania do bazy danych w celu dalszej analizy. Dlaczego Python? Ponieważ dostęp do VBA jest w pewnym sensie płatny – trzeba posiadać pakiet Microsoft Office. Python jest nie tylko free, ale i bardziej uniwersalny. Co więcej, najnowsze wersje Windows potrafią uruchamiać skrypty Pythona poprzez dwu-klik, bez żadnych dodatkowych wymagań.

Krok trzeci
Automatyzacja zbierania informacji o cenach akcji na zamknięcie sesji.
Składniki:

  • Python (link)
  • strona giełdy z notowaniami archiwalnymi (link)
  • baza danych MSSQL

Na stronie internetowej Giełdy można doklikać się ręcznie do informacji o wynikach sesji za każdy dzień w historii. Gdy to zrobimy dla jakiegoś konkretnego dnia i ściągniemy plik, historia pobrań przeglądarki ukaże nam bezpośredni link do danych. Analizując strukturę linku dochodzimy do wniosku, że wystarczy zmienić datę, aby dostać się do danych za żądany dzień. Cwane co? Ale co dalej? Teraz trzeba ładnie poprosić komputer, aby zrobił resztę za nas.

Tę ładną prośbę można napisać w języku programowania Python, który jest po prostu genialny, w miarę łatwy do zrozumienia – a co najważniejsze WSZYTKO da się o nim wygooglać. Nie wspominając o tym, że nazwa pochodzi od grupy Monty Python – to chyba najlepsza referencja!

Procedura tego, co chcę osiągnąć w uproszczeniu wygląda tak:


Powyższa mapa procesu powstała w programie Bizagi Modeler, pozwalającym na mapowanie procesów z wykorzystaniem notacji BPMN, bardzo polecam!

W Pythonie w zasadzie jest to równie proste jak wygląda na mapie. Ściągnięcie pliku z sieci, jeżeli znamy dokładną ścieżkę – a w przypadku danych archiwalnych z giełdy tak właśnie jest – to jedna linijka kodu wykorzystująca bibliotekę urllib.

Połączenie plików xls w jeden to użycie biblioteki pandas do ich otworzenia i stworzenia nowego pliku, do którego zapisujemy zawartość oryginałów jeden pod drugim. W przypadku mojego systemu dochodzi jeszcze kwestia dopisywania numeru notowania dla danej spółki – lista spółek na giełdzie zmienia się z czasem. Więc jeżeli dla spółek A i B pierwsze zapisane przeze mnie w bazie dane są z dat odpowiednio X i Y, to najnowsze notowanie będzie miało inny numer dla obu tych spółek.

Na koniec import do bazy danych MSSQL nie jest wielkim wyczynem. Biblioteka pyodbc bardzo to ułatwia – musimy jedynie umieć napisać zapytanie SQL typu INSERT.

Całość kodu możecie sobie pobrać poniżej i dostosować do swoich potrzeb.
Prawdopodobnie w przyszłości zmienię w nim coś, uproszczę albo dorzucić jeszcze jakąś funkcjonalność. W czasie powstawania tego wpisu zaktualizowałem go już kilka razy.

A działa to mniej więcej tak:

Ponownie Bizagi Modeler – baaardzo mi się podoba!

Procedurę i kod udostępniam, ponieważ chcę podzielić się z chętnymi tym, co robię dla siebie, aby wspomagać moje inwestowanie i minimalizować czas na to poświęcony.

Dlaczego? Poniżej long story in short…

Gdzieś w pierwszej połowie 2019 ORLEN ogłosił program dla akcjonariuszy nazwany „ORLEN w portfelu”. W dwóch słowach: masz akcje Orlenu – masz zniżkę na paliwo. Wymagania trochę śmieszne – należy posiadać 50 akcji. W tym czasie była to równowartość mniej więcej 5 tys złotych. Jak możecie się domyślać – kupiłem, a jakiś czas później pocztą przyszła czerwona karta z moim imieniem, nazwiskiem i słowem „akcjonariusz”. Czad! Normalnie prestiż +500. Kilka miesięcy później kolega podsunął mi artykuł, w którym autorzy świętowani wielki sukces programu: przekroczone 1000 zapisów i wydanych kart, takich jak moja.

1000? Serio? W kraju gdzie 30 milionów ludzi może głosować w wyborach?
Ale bieda…

To jest właśnie powód, dla którego chce się dzielić tym co robię. Chcę pokazać, że każdy z nas może stać się współwłaścicielem naszej krajowej gospodarki. I że koszt z tym związany nie jest wcale taki duży. A jak ktoś chce robić to z głową – może skorzystać z moich rozwiązań (lub swoich lepszych!). Każdy z nas ma prawo życia w dostatku i nie martwienia się o pieniądze.

Teraz zwrócę się do Ciebie. Weź kartkę, długopis i zapisz na niej kwoty wydawane miesięcznie na alkohol, papierosy, wychodzenie do restauracji, kina, teatru, subskrypcję serwisów streamingowych, itd. Jestem przekonany, że liczba, która pojawiła się na kartce jest większa od aktualne ceny jednostkowej akcji ORLENu (możesz ją podejrzeć tu). Weź powiedzmy 10-20% Twojej kwoty i policz, ile miesięcy musisz odkładać, aby uzbierać na 50 akcji tej spółki. Zastanów się teraz, ile to jest to 10-20%. Jedna paczka papierosów? Jedno pół litra? Pół wyjścia do knajpy z kumplami w miesiącu? Za skumulowaną przez kilka miesięcy równowartość możesz mieć zniżkę na paliwo, szansę na dodatkowe pieniądze z dywidendy (ORLEN akurat wypłaca ją regularnie od 2013 roku, w 2019 roku 50 akcji dawało 142 zł wypłaty po Belce) i nadal być w posiadaniu tych pieniędzy – w formie zapisu na Twoim rachunku maklerskim. Może warto pomyśleć następnym razem zanim wydasz stówę lub dwie na imprezę w weekend?

ORLEN i jego program dla akcjonariuszy to tylko przykład. Kalkulacja, którą poleciłem wyżej sprawdzi się dla wielu innych spółek notowanych na Giełdzie. Informacje są w zasięgu ręki, będziesz więc oglądać seriale, czy zastanowisz się nad tym, co robisz z pieniędzmi i co może Ci to dać?

I to tyle w tym odcinku. One love!

Powyższy tekst powstał z inicjatywy własnej autora i nie jest wspierany przez wspomniane w nim Giełdę Papierów Wartościowych S.A. i Polski Koncern Naftowy ORLEN S.A.. Pamiętaj, że inwestowanie w papiery wartościowe wiąże się z ryzykiem utraty zainwestowanego kapitału.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *