czwartek, 15 lutego 2024

Stopa zwrotu - zwrot portfela

Ten post jest kontynuacją: https://kamilkondrat.blogspot.com/2024/02/stopa-zwrotu-zwrot-portfolio.html

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.

Dobrze, a więc kontynuujmy. Przejdę od razu bezpośrednio do policzenia zwrotu portfela. Metoda obliczania zwrotu portfela jest podobna do metody używanej dla pojedynczej spółki, z tą różnicą, że stosujemy znormalizowane ceny zamknięcia dla wszystkich spółek w portfelu. A więc zamiast wykorzystać bezpośrednio ceny zamknięcia, to wykorzystamy znormalizowane ceny zamknięcia, które zostały już policzone w poprzednim poście.

returns = (df_adj_close_norm / df_adj_close_norm.shift(1))-1

Tworzę zmienną "returns", która przechowa wynik, to po prostu angielski odpowiednik dla "zwroty." "shift(1)" pobiera wartość z poprzedniego wiersza i korzysta z niego w aktualnym (przesuwa wartość o jeden). W kontekście naszych danych i powyższego kodu oznacza to tyle, że znormalizowana cena z dnia poprzedniego zostaje użyta jako mianownik, który dzieli znormalizowaną cenę danego dnia, który w kontekście dnia poprzedniego jest dniem następującym po nim.

Od tego odejmujemy 1, co daje wartość, którą można przedstawić w formie procentów kiedy przemnożymy to sobie przez 100. Sugeruję wydrukować sobie tę ramkę danych. Aby to zrobić wystarczy, że uruchomicie zmienną "returns" w komórce naciskając shift + enter.

U mnie wygląda to tak:


Jak to interpretować? Weźmy pod uwagę 14 i 15 lutego. -0.032548 pomnożone przez 100% pozwoli nam uzyskać informację, która określi nam ile procent spadła cena akcji względem dnia 14 lutego. W tym przypadku, tj. 15 lutego, odnotowujemy spadek 3,2548% względem dnia poprzedniego.

returns.plot(figsize=(18,10))

A to z kolei, dzięki funkcji "plot" z biblioteki "matplotlib" wyświetla wykres. Ciekawie jest obserwować Nvidię. Można zobaczyć mocno odstające wzrosty i spadki. Liczby "18" i "10" to wartości parametrów określające wielkość wykresu, dobrze się "pobawić" wielkością tych parametrów żeby dostosować wygląd wykresu do swoich preferencji lub pod kątem ewentualnych odbiorców.

Jako dodatek rozdzielę wagi inwestycji. Pozwolę sobie zdecydować, że 25% kapitału zostanie zainwestowane w Alphabet, 25% w Microsoft i 50% Nvidia. Wyraźnie faworyzuję Nvidia. Oczywiście nie traktujcie tego jako rady inwestycyjnej i miejcie też świadomość, że nie jest to jednoznacznym odzwierciedleniem moich przekonań.

Aby to wyrazić przy pomocy abstrakcji jaką jest kod, napiszmy:

weights = np.array([0.25,0.25,0.5])

W następnym wpisie, którym zamknę tę pod-serię "zwrot portfela" zacznę od obliczenia iloczynu macierzy...

Brak komentarzy:

Prześlij komentarz

Analiza sentymentów - wpisy na mediach społecznościowych (podział danych)

Ten wpis zaczniemy od stworzenia DataFrame z danymi treningowymi train_df = pd.read_csv('train.csv', encoding='ISO-8859-1')....