piątek, 26 stycznia 2024

Analiza SMA - Wprowadzenie

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.

Zaczniemy od poznawania analizy danych finansowych korzystając z techniki SMA (Simple Moving Average) - w języku polskim istnieją dwa tłumaczenia dla "SMA" i jest to "Prosta Średnia Ruchoma" lub "Prosta Średnia Krocząca." Dla nas będzie to po prostu SMA, jednak uważam, że warto znać też polskie nazewnictwo, aby zawsze lepiej się orientować i nie być zaskoczonym jeśli usłyszy się chociażby o średniej kroczącej.

Najpierw dobrze by było powiedzieć czym jest szereg czasowy, gdyż jest on istotny z punktu widzenia SMA. Szereg czasowy, najprościej mówiąc, są to regularnie prowadzone obserwacje w czasie.

SMA została opracowana po to, aby wskazywać uwypuklające się trendy przez wygładzanie krzywej i eliminowanie drobnych zawirowań, na rzecz zaobserwowania długoterminowych tendencji. Możliwe jest to dzięki uporządkowaniu odczytów z danych finansowych, które zostały wykonane w określonym czasie (szeregi czasowe).

Aby skorzystać z SMA, w podejmowaniu decyzji finansowych można podjąć się krzyżowaniu SMA krótkiej i długoterminowej. W naszym przykładzie użyjemy 30 dniową krótką i 120 dniową długą. Będziemy je ze sobą krzyżować, co w praktyce oznacza porównywanie ich ze sobą pod względem wartości.

SMA krótkoterminowa > SMA długoterminowa

Jeśli SMA krótkoterminowa będzie wyższa od SMA długoterminowej to mamy do czynienia z sytuacją w której ostatnie zmiany cen były na tyle pozytywne, że sugerują one tendencję wzrostową. Taką sytuację nazywa się też "złotym krzyżem" (golden cross) i często interpretuje jako sygnał do zakupu. Innymi słowy, kupujemy gdyż spodziewamy się że akcje zaczną drożeć, dzięki czemu w przyszłości zarobimy.

SMA krótkoterminowa < SMA długoterminowa

Jeśli SMA krótkoterminowa będzie niższa od SMA długoterminowej wtedy mamy do czynienia z przeciwną sytuacją, nazywa się "krzyżem śmierci" (death cross) i często interpretuje jako sygnał do sprzedaży. Spodziewamy się, że ceny aktywów zaczną spadać, a my na tym stracimy, więc musimy się ich pozbyć.

Wnioski, które możemy wyciągnąć z zastosowania SMA oczywiście są tylko ułamkiem wiedzy potrzebnej do podjęcia odpowiedzialnej decyzji inwestycyjnej. Ten wpis nie jest poradą inwestycyjną, a przybliżeniem wiedzy technicznej potrzebnej do analizy technicznej do podejmowania świadomych decyzji w świecie finansów.

To jest ten czas, aby przejść do Python'a i Jupiter'a. Zakładam, że posiadacie podstawową wiedzę na temat programowania w Pythonie oraz macie jakieś pojęcie o tym czym jest Jupiter.

import pandas as pd
import numpy as np
import yfinance as yf
import pandas_ta as ta
import matplotlib.pyplot as plt

Zaczynamy od z importowania potrzebnych nam bibliotek:

"pandas" - dzięki niej będziemy mogli manipulować naszymi danymi.

"numpy" - dzięki numpy wykonamy odpowiednie obliczenia.

"yfinance" - pozwoli nam pobrać dane finansowe dostępne na Yahoo.

"pandas_ta" - jest rozszerzeniem pandas potrzebnym do zastosowania funkcji z obszaru analizy technicznej, to dzięki jej zasobom obliczymy m.in. tytułowe SMA.

"matplotlib.pyplot" - w przyszłości posłuży nam do wyświetlenia interesujących nas wykresów.

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')....