Home > Software engineering >  Python: pandas_datareader import historical stock data in euro
Python: pandas_datareader import historical stock data in euro

Time:12-13

My aim is to get historical stock datas of different stocks from europe and us. With the function:

import pandas_datareader as web
print(web.DataReader('ALB', 'yahoo', '01.01.2020', '01.01.2021'))

Output:

                  High         Low  ...     Volume   Adj Close
Date                                ...                       
2020-01-02   73.879997   72.190002  ...  1620838.0   70.942619
2020-01-03   72.389999   71.220001  ...  1337602.0   69.926498
2020-01-06   72.169998   70.188698  ...  1330518.0   69.848328
2020-01-07   73.489998   71.130997  ...  1497506.0   70.766747
2020-01-08   71.500000   69.610001  ...  2029494.0   69.545456
...                ...         ...  ...        ...         ...
2021-12-06  252.690002  239.110001  ...  1035976.0  248.539993
2021-12-07  263.190887  253.259995  ...   888158.0  259.529999
2021-12-08  265.859985  258.690002  ...   832756.0  264.640015
2021-12-09  266.489990  257.299988  ...   535738.0  257.470001
2021-12-10  263.559998  257.220001  ...   598893.0  262.869995

returns the historical stock data in USD.

Otherwise

print(web.DataReader('BMW.DE', 'yahoo', '01.01.2020', '01.01.2021'))

Output:

                 High        Low       Open      Close     Volume  Adj Close
Date                                                                        
2020-01-02  74.629997  73.059998  73.139999  74.220001  1232319.0  67.103531
2020-01-03  73.830002  72.330002  73.730003  73.320000  1153245.0  66.289818
2020-01-06  73.050003  72.040001  72.830002  73.050003  1039192.0  66.045715
2020-01-07  74.320000  73.339996  73.599998  74.220001  1302124.0  67.103531
2020-01-08  74.500000  73.750000  73.940002  74.410004   941807.0  67.275307
...               ...        ...        ...        ...        ...        ...
2021-12-06  88.800003  86.820000  88.029999  88.419998  1100120.0  88.419998
2021-12-07  88.419998  88.419998  88.419998  88.419998        0.0  88.419998
2021-12-08  91.209999  89.129997  90.849998  91.129997  1338471.0  91.129997
2021-12-09  91.870003  90.000000  91.489998  90.220001  1050166.0  90.220001
2021-12-10  90.190002  88.949997  89.529999  89.660004  1415043.0  89.660004

return the historical stock data in EUR.

Is there a possibility to unify the currency in both cases?

CodePudding user response:

Download EURUSD=X to convert your data from EUR to USD. The important part is to reindex correctly your dataframes to align dates between them.

alb = web.DataReader('ALB', 'yahoo', '01.01.2020', '01.01.2021')
bmw = web.DataReader('BMW.DE', 'yahoo', '01.01.2020', '01.01.2021')
eurusd = web.data.DataReader('EURUSD=X', 'yahoo', '01.01.2020', '01.01.2021')
# Euro
>>> bmw[['Open', 'High', 'Low', 'Close', 'Adj Close']] \
        * eurusd[['Adj Close']].reindex(bmw.index).values

                 Open       High        Low      Close  Adj Close
Date                                                             
2020-01-02  82.069120  83.741021  81.979351  83.280971  75.295704
2020-01-03  82.367012  82.478725  80.803009  81.908979  74.055256
2020-01-06  81.292559  81.538124  80.410763  81.538124  73.719966
2020-01-07  82.417241  83.223498  82.126091  83.111520  75.142500
2020-01-08  82.478140  83.102803  82.266198  83.002414  75.043846
...               ...        ...        ...        ...        ...
2020-12-22  88.717571  89.219288  88.032307  88.228092  84.241799
2020-12-23  88.365411  89.766877  87.756078  89.425643  85.385245
2020-12-28  91.599244  92.111856  89.524372  89.695243  85.642667
2020-12-29  90.624622  90.820201  88.840000  89.426729  85.386284
2020-12-30  89.446540  89.728362  88.503067  88.503067  84.504358

[254 rows x 5 columns]

# Dollar
>>> bmw[['Open', 'High', 'Low', 'Close', 'Adj Close']]
                 Open       High        Low      Close  Adj Close
Date                                                             
2020-01-02  73.139999  74.629997  73.059998  74.220001  67.103531
2020-01-03  73.730003  73.830002  72.330002  73.320000  66.289818
2020-01-06  72.830002  73.050003  72.040001  73.050003  66.045715
2020-01-07  73.599998  74.320000  73.339996  74.220001  67.103531
2020-01-08  73.940002  74.500000  73.750000  74.410004  67.275307
...               ...        ...        ...        ...        ...
2020-12-22  72.500000  72.910004  71.940002  72.099998  68.842400
2020-12-23  72.510002  73.660004  72.010002  73.379997  70.064568
2020-12-28  75.050003  75.470001  73.349998  73.489998  70.169601
2020-12-29  74.139999  74.300003  72.680000  73.160004  69.854515
2020-12-30  73.000000  73.230003  72.230003  72.230003  68.966537

[254 rows x 5 columns]
  • Related