Correlaties
Correlaties zijn handig om te bekijken voordat je Machine Learning-modellen bouwt, omdat je zo ziet welke features het sterkst correleren met de target. Vaak wordt de Pearson-correlatiecoëfficiënt gebruikt, die alleen lineaire relaties detecteert. Er wordt vaak aangenomen dat onze data normaal verdeeld is; dat kun je globaal inschatten met histogrammen. Sterk gecorreleerde variabelen hebben een Pearson-correlatiecoëfficiënt dicht bij 1 (positief gecorreleerd) of -1 (negatief gecorreleerd). Een waarde rond 0 betekent dat de twee variabelen niet lineair gecorreleerd zijn.
Als we dezelfde perioden gebruiken voor eerdere en toekomstige koersveranderingen, kunnen we zien of de aandelenkoers mean-reverting is (schommelt rond een gemiddelde) of trendvolgend (stijgt als hij recent is gestegen).
Deze oefening maakt deel uit van de cursus
Machine Learning voor finance in Python
Oefeninstructies
Gebruik de DataFrame lng_df en de kolom Adj_Close:
- Maak de 5-daagse toekomstige koers (als
5d_future_close) met pandas'.shift(-5). - Gebruik
pct_change(5)op5d_future_closeenAdj_Closeom de toekomstige 5-daagse procentuele koersverandering (5d_close_future_pct) en de huidige 5-daagse procentuele koersverandering (5d_close_pct) te maken. - Onderzoek de correlaties tussen de twee kolommen met 5-daagse procentuele koersverandering met
.corr()oplng_df. - Maak met
plt.scatter()een scatterplot van5d_close_pcttegen5d_close_future_pct.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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()