Ta praca odzwierciedla
zainteresowanie autora analizą finansową i wykorzystaniem narzędzi
informatycznych w jej realizacji. Niniejszy blog nie ma na celu
dostarczania porad finansowych, lecz stanowi konstruktywne podejście
autora do dzielenia się wiedzą. Autor widzi w tym sposobność do
rozwijania swoich umiejętności i zachęcania do wzajemnej dyskusji.
Należy pamiętać, że wnioski wynikające z analiz prezentowanych na tym
blogu nie powinny być bezpośrednio stosowane do podejmowania decyzji
finansowych. Nawet jeśli analizy są dokładne, stanowią one tylko
fragment potrzebnych informacji do podjęcia w pełni świadomej decyzji.
Brak szerszego kontekstu, w którym znajduje się potencjalny inwestor lub
decydent, może prowadzić do niepełnych wniosków.
Dziś rozpocznę nowy projekt. Będzie dotyczył obliczania Stopy Zwrotu. W poprzednim wpisie ( https://kamilkondrat.blogspot.com/2024/02/analiza-sentymentow-danych-giedowych_6.html ) zakończyłem opisywanie wszystkich elementów środowiska, które miały nam służyć do analizy sentymentów. Postanowiłem, że zrobię jednak mały krok w bok i na razie odpuszczę ten projekt, z tego względu, że opiera się o użycie sztucznej inteligencji.
Generalnie bardzo mi się podoba obszar AI, czytając i zagłębiając się w te wszystkie biblioteki i działanie tych różnych warstw i różnych mechanizmów sterujących uczeniem maszynowym, trenowaniem modeli itp... natknąłem się na, w moim mniemaniu, bardzo wciągające i pomysłowe rzeczy. To jest naprawdę kierunek wart eksploracji i ja na pewno do tego wrócę, natomiast moim celem nie jest bycie stricte znawcą AI, a analitykiem danych w obszarze finansów dla którego AI będzie wsparciem.
Bycie kompetentnym analitykiem danych finansowych wymaga zrozumienia świata finansów i ekonomii oraz umiejętności analizy danych jako takich bez AI, a dopiero potem można w sensowny sposób rozszerzać to o stosowanie machine learningu, tak to widzę.
Dlatego też, zaczynamy:
import pandas as pd
import yfinance as yf
Miałem okazję omawiać te moduły na tym blogu, jednak uważam, że mimo wszystko warto się odnieść jeszcze raz w celu przypomnienia i/lub podkreślenia jakiejś szczególnej cechy.
"Pandas" - to bardzo popularna i bardzo bogata biblioteka obfitująca w różne narzędzia służące do obróbki danych, w analizie danych. Nie zawiera rozwiązań z obszaru sztucznej inteligencji. Natomiast pozwala na wiele "zwykłej" analizy danych i ewentualne przygotowanie danych pod dalszą analizę danych z z zastosowaniem modeli uczenia maszynowego.
Na szczególną uwagę zasługują struktury danych takie jak "Series" i "DataFrame." "Series" jest jednowymiarową tablicą etykietowanych danych, a upraszczając tę definicję jest to prosta lista, gdzie po przecinku mamy jakieś wartości. Taki format danych odpowiada wektorowi numerycznemu, jeśli umieścimy to w kontekście pracy z AI.
DataFrame - to jest super ważny element. DataFrame, który możemy tłumaczyć jako Ramka Danych, to z kolei dwuwymiarowa struktura danych składająca się z wierszy i kolumn, gdzie każda z kolumn może być innym typem danych, a to odzwierciedla na przykład tabelę w bazie danych stworzoną w SQL.
"Yfinance" - jest biblioteką do pobierania danych finansowych ze strony Yahoo Finance...
df = yf.download("VWSYF", period="5y")
Ja wybrałem spółkę Vestas Wind Systems (o symbolu "VWSYF", co zostało użyte w kodzie), to Duńska firma specjalizująca się w produkcji, instalacji i serwisie turbin wiatrowych. Nie ma nic szczególnego w tym wyborze, możecie wybrać dane jakie chcecie lub podążać za przykładem, jeśli się uczycie.
Obliczmy podstawową stopę zwrotu:
df['simple_return'] = (df['Adj Close'] / df['Adj Close'].shift(1)) - 1
Tworzymy nową kolumnę "simple_return" i dzięki operatorowi przypisania "=" zapisujemy w niej wynik dzielenia ceny zamknięcia z danego dnia "Adj Close" przez cenę zamknięcia z dnia poprzedniego.
Metoda "shift(1)" pozwala nam sięgnąć cenę zamknięcia o jedną wyżej w wierszach danej kolumny, to ta metoda właśnie sprawia, że faktycznie sięgamy po wartość z poprzedniego dnia lub też możemy powiedzieć, że wartość, która jest wyżej "spada" nam o jedną na dół - zależy od interpretacji...
"-1" pozwala nam odjąć to co mamy "przed przecinkiem" i zostaje nam wartość dziesiętna, którą możemy zamienić sobie na wskaźnik procentowej zmiany wartości względem dnia poprzedniego.
Wszystko to będzie oczywiście działać kiedy dane będą posortowane rosnąco, czyli w naszej ramce danych daty wcześniejsze będą wierszami, które są wyżej. Warto zauważyć, że w taki sposób pandas sortuje dane automatycznie, dobra nasza.
W związku z tym, że nie chcę robić jakichś rozwiązłych wykładów, a w miarę prostym językiem zaciekawiać i uczyć małymi dawkami (tłumacząc przy tym rzeczy samemu sobie) kończę już ten wpis i do zobaczenia.
Brak komentarzy:
Prześlij komentarz