Correlações
É útil verificar correlações antes de criar modelos de Machine Learning, pois assim você vê quais variáveis explicativas se correlacionam mais fortemente com o alvo. O coeficiente de correlação de Pearson é frequentemente usado e detecta apenas relações lineares. Costuma-se assumir que nossos dados seguem distribuição normal, algo que dá para "bater o olho" em histogramas. Variáveis altamente correlacionadas têm coeficiente de Pearson próximo de 1 (correlação positiva) ou -1 (correlação negativa). Um valor próximo de 0 indica que as duas variáveis não são linearmente correlacionadas.
Se usarmos os mesmos períodos para variações de preço passadas e futuras, dá para ver se o preço da ação é mean-reverting (oscila em torno de uma média) ou seguidor de tendência (sobe se vinha subindo recentemente).
Este exercicio faz parte do curso
Machine Learning para Finanças em Python
Instruções do exercicio
Usando o DataFrame lng_df e sua coluna Adj_Close:
- Crie o preço futuro em 5 dias (como
5d_future_close) com.shift(-5)do pandas. - Use
pct_change(5)em5d_future_closeeAdj_Closepara criar a variação percentual de preço futura em 5 dias (5d_close_future_pct) e a variação percentual atual em 5 dias (5d_close_pct). - Examine as correlações entre as duas colunas de variação percentual em 5 dias com
.corr()emlng_df. - Usando
plt.scatter(), faça um diagrama de dispersão de5d_close_pctvs5d_close_future_pct.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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()