Korelacje
Warto sprawdzić korelacje przed zbudowaniem modeli uczenia maszynowego – pozwala to zobaczyć, które cechy najsilniej korelują z celem. Często stosuje się współczynnik korelacji Pearsona, który wykrywa wyłącznie zależności liniowe. Zwykle zakłada się, że dane mają rozkład normalny, co można wstępnie ocenić na podstawie histogramów. Silnie skorelowane zmienne mają współczynnik korelacji Pearsona bliski 1 (korelacja dodatnia) lub -1 (korelacja ujemna). Wartość bliska 0 oznacza brak liniowej zależności między dwiema zmiennymi.
Jeśli użyjemy tych samych przedziałów czasowych dla poprzednich i przyszłych zmian cen, możemy sprawdzić, czy kurs akcji wykazuje tendencję do powrotu do średniej (waha się wokół pewnego poziomu) czy podąża za trendem (rośnie, jeśli ostatnio rósł).
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
Korzystając z DataFrame lng_df i kolumny Adj_Close:
- Utwórz cenę przyszłą z wyprzedzeniem 5 dni (jako
5d_future_close) za pomocą.shift(-5)z biblioteki pandas. - Użyj
pct_change(5)na kolumnach5d_future_closeiAdj_Close, aby obliczyć przyszłą 5-dniową procentową zmianę ceny (5d_close_future_pct) oraz bieżącą 5-dniową procentową zmianę ceny (5d_close_pct). - Sprawdź korelacje między obiema kolumnami 5-dniowych procentowych zmian cen, wywołując
.corr()nalng_df. - Za pomocą
plt.scatter()utwórz wykres punktowy przedstawiający5d_close_pctwzględem5d_close_future_pct.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Create 5-day % changes of Adj_Close for the current day, and 5 days in the future
lng_df['5d_future_close'] = lng_df['Adj_Close'].shift(____)
lng_df['5d_close_future_pct'] = lng_df['5d_future_close'].pct_change(5)
lng_df['5d_close_pct'] = lng_df['Adj_Close'].pct_change(____)
# Calculate the correlation matrix between the 5d close pecentage changes (current and future)
corr = lng_df[['5d_close_pct', '5d_close_future_pct']].____
print(corr)
# Scatter the current 5-day percent change vs the future 5-day percent change
plt.scatter(lng_df['5d_close_pct'], lng_df[____])
plt.show()