Forex correlation
Simple forex correlation with Yahoo finance datas
In [8]:
# import man modules
import yfinance as yf
import matplotlib.pyplot as plt
import seaborn as sns
In [10]:
# Currency pairs to analyse
currency_pairs = ['EURUSD=X', 'EURCHF=X', 'EURJPY=X', 'EURCAD=X', 'EURGBP=X',
'GBPUSD=X', 'GBPCHF=X', 'GBPJPY=X', 'GBPCAD=X',
'USDCHF=X', 'USDJPY=X','USDCAD=X',
'CADCHF=X', 'CADJPY=X',
'CHFJPY=X']
# Download historical forex data from Yahoo finance
data = yf.download(currency_pairs, period='1y', interval='1d')
[*********************100%%**********************] 15 of 15 completed
In [12]:
# Calculate the correlation matrix between the currency pairs
correlation = data['Adj Close'].corr()
correlation
Out[12]:
CADCHF=X | CADJPY=X | CHFJPY=X | EURCAD=X | EURCHF=X | EURGBP=X | EURJPY=X | EURUSD=X | GBPCAD=X | GBPCHF=X | GBPJPY=X | GBPUSD=X | USDCAD=X | USDCHF=X | USDJPY=X | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CADCHF=X | 1.000000 | 0.146840 | -0.570674 | -0.926703 | 0.317325 | 0.286145 | -0.597370 | -0.892600 | -0.941544 | 0.066657 | -0.548551 | -0.887658 | 0.201108 | 0.953216 | 0.212857 |
CADJPY=X | 0.146840 | 1.000000 | 0.728234 | -0.422460 | -0.682597 | -0.554867 | 0.683256 | -0.303501 | -0.136864 | -0.052272 | 0.712798 | -0.053794 | -0.209035 | 0.068519 | 0.955807 |
CHFJPY=X | -0.570674 | 0.728234 | 1.000000 | 0.290026 | -0.789389 | -0.657114 | 0.979984 | 0.364166 | 0.537094 | -0.094058 | 0.970635 | 0.567901 | -0.309463 | -0.602271 | 0.646915 |
EURCAD=X | -0.926703 | -0.422460 | 0.290026 | 1.000000 | 0.061373 | -0.124578 | 0.372838 | 0.943475 | 0.932272 | 0.134686 | 0.318147 | 0.866441 | -0.160260 | -0.875930 | -0.481119 |
EURCHF=X | 0.317325 | -0.682597 | -0.789389 | 0.061373 | 1.000000 | 0.437999 | -0.651874 | 0.015116 | -0.146147 | 0.526453 | -0.657038 | -0.164467 | 0.113172 | 0.316189 | -0.660304 |
EURGBP=X | 0.286145 | -0.554867 | -0.657114 | -0.124578 | 0.437999 | 1.000000 | -0.670907 | -0.215398 | -0.432377 | -0.421029 | -0.754033 | -0.474687 | 0.310892 | 0.350118 | -0.470356 |
EURJPY=X | -0.597370 | 0.683256 | 0.979984 | 0.372838 | -0.651874 | -0.670907 | 1.000000 | 0.450776 | 0.611936 | 0.055478 | 0.986979 | 0.645242 | -0.347809 | -0.637934 | 0.589409 |
EURUSD=X | -0.892600 | -0.303501 | 0.364166 | 0.943475 | 0.015116 | -0.215398 | 0.450776 | 1.000000 | 0.916995 | 0.183974 | 0.404730 | 0.948837 | -0.477928 | -0.943228 | -0.455000 |
GBPCAD=X | -0.941544 | -0.136864 | 0.537094 | 0.932272 | -0.146147 | -0.432377 | 0.611936 | 0.916995 | 1.000000 | 0.271922 | 0.596908 | 0.956783 | -0.259496 | -0.919121 | -0.220275 |
GBPCHF=X | 0.066657 | -0.052272 | -0.094058 | 0.134686 | 0.526453 | -0.421029 | 0.055478 | 0.183974 | 0.271922 | 1.000000 | 0.147821 | 0.297155 | -0.192418 | -0.000010 | -0.111455 |
GBPJPY=X | -0.548551 | 0.712798 | 0.970635 | 0.318147 | -0.657038 | -0.754033 | 0.986979 | 0.404730 | 0.596908 | 0.147821 | 1.000000 | 0.634517 | -0.355918 | -0.596876 | 0.617149 |
GBPUSD=X | -0.887658 | -0.053794 | 0.567901 | 0.866441 | -0.164467 | -0.474687 | 0.645242 | 0.948837 | 0.956783 | 0.297155 | 0.634517 | 1.000000 | -0.528706 | -0.953960 | -0.216169 |
USDCAD=X | 0.201108 | -0.209035 | -0.309463 | -0.160260 | 0.113172 | 0.310892 | -0.347809 | -0.477928 | -0.259496 | -0.192418 | -0.355918 | -0.528706 | 1.000000 | 0.487539 | 0.087426 |
USDCHF=X | 0.953216 | 0.068519 | -0.602271 | -0.875930 | 0.316189 | 0.350118 | -0.637934 | -0.943228 | -0.919121 | -0.000010 | -0.596876 | -0.953960 | 0.487539 | 1.000000 | 0.218839 |
USDJPY=X | 0.212857 | 0.955807 | 0.646915 | -0.481119 | -0.660304 | -0.470356 | 0.589409 | -0.455000 | -0.220275 | -0.111455 | 0.617149 | -0.216169 | 0.087426 | 0.218839 | 1.000000 |
In [13]:
# Create a heatmap plot for the correlation matrix
plt.figure(figsize=(10, 6))
sns.heatmap(correlation, annot=True, cmap='coolwarm', fmt=".2f")
plt.title("Forex Pairs Correlation Heatmap")
plt.show()
In [ ]: