Inizia subitoInizia gratis

Correlazioni

Le correlazioni sono utili da esaminare prima di costruire modelli di Machine Learning, perché ci permettono di vedere quali feature sono più correlate al target. Si usa spesso il coefficiente di correlazione di Pearson, che rileva solo relazioni lineari. In genere si assume che i dati siano distribuiti normalmente, cosa che possiamo valutare a colpo d'occhio dagli istogrammi. Variabili fortemente correlate hanno un coefficiente di Pearson vicino a 1 (correlazione positiva) o a -1 (correlazione negativa). Un valore vicino a 0 indica che le due variabili non sono correlate linearmente.

Se usiamo gli stessi orizzonti temporali per variazioni di prezzo passate e future, possiamo capire se il prezzo del titolo è mean-reverting (oscilla attorno a una media) o trend-following (continua a salire se è salito di recente).

Questo esercizio fa parte del corso

Machine Learning per la finanza in Python

Visualizza corso

Istruzioni dell'esercizio

Usando il DataFrame lng_df e la sua colonna Adj_Close:

  • Crea il prezzo futuro a 5 giorni (come 5d_future_close) con .shift(-5) di pandas.
  • Usa pct_change(5) su 5d_future_close e Adj_Close per creare la variazione percentuale di prezzo futura a 5 giorni (5d_close_future_pct) e la variazione percentuale di prezzo corrente a 5 giorni (5d_close_pct).
  • Esamina le correlazioni tra le due colonne di variazione percentuale a 5 giorni con .corr() su lng_df.
  • Con plt.scatter(), crea uno scatter plot di 5d_close_pct vs 5d_close_future_pct.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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()
Modifica ed esegui il codice