如何使用Python的yfinance包下载统一欧元计价的多只股票价格
使用yfinance获取并转换股票价格为欧元计价
yfinance本身不支持直接下载非本地货币计价的股票价格,但可以通过先获取本地股价+再获取对应货币兑欧元的汇率+手动换算的方式实现需求,以下是具体步骤:
1. 获取股票的本地货币价格
用你原本的代码获取目标股票的本地货币价格:
import yfinance as yf import pandas as pd startDate = "2024-01-01" endDate = "2024-06-01" # 获取港股0285.HK的港币计价价格 hk_stock = yf.download('0285.HK', start=startDate, end=endDate) # 获取韩股034020.KS的韩元计价价格 kr_stock = yf.download('034020.KS', start=startDate, end=endDate)
2. 获取对应货币兑欧元的汇率
通过yfinance的外汇标的获取汇率,格式为[本地货币代码][目标货币代码]=X:
# 港币兑欧元汇率(1 HKD 可兑换的 EUR 金额) hkd_eur_rate = yf.download('HKDEUR=X', start=startDate, end=endDate)['Close'] # 韩元兑欧元汇率(1 KRW 可兑换的 EUR 金额) krw_eur_rate = yf.download('KREUR=X', start=startDate, end=endDate)['Close']
3. 合并数据并换算为欧元计价
将股价数据和汇率数据按日期对齐,再用本地股价乘以汇率得到欧元价格:
# 处理港股数据:合并汇率并换算 hk_stock_eur = hk_stock.join(hkd_eur_rate, rsuffix='_hkd_eur') hk_stock_eur['Open_EUR'] = hk_stock_eur['Open'] * hk_stock_eur['Close_hkd_eur'] hk_stock_eur['High_EUR'] = hk_stock_eur['High'] * hk_stock_eur['Close_hkd_eur'] hk_stock_eur['Low_EUR'] = hk_stock_eur['Low'] * hk_stock_eur['Close_hkd_eur'] hk_stock_eur['Close_EUR'] = hk_stock_eur['Close'] * hk_stock_eur['Close_hkd_eur'] # 处理韩股数据:合并汇率并换算 kr_stock_eur = kr_stock.join(krw_eur_rate, rsuffix='_krw_eur') kr_stock_eur['Open_EUR'] = kr_stock_eur['Open'] * kr_stock_eur['Close_krw_eur'] kr_stock_eur['High_EUR'] = kr_stock_eur['High'] * kr_stock_eur['Close_krw_eur'] kr_stock_eur['Low_EUR'] = kr_stock_eur['Low'] * kr_stock_eur['Close_krw_eur'] kr_stock_eur['Close_EUR'] = kr_stock_eur['Close'] * kr_stock_eur['Close_krw_eur']
注意事项
- 汇率标的验证:使用前确认yfinance支持对应外汇标的,比如HKDEUR=X、KREUR=X可正常返回数据。
- 日期对齐:若股价和汇率的交易日不完全匹配,可使用
hkd_eur_rate.ffill()或bfill()填充缺失的汇率值,避免换算中断。 - 精度控制:换算后的欧元价格可通过
round(2)保留两位小数,符合货币显示习惯。
内容的提问来源于stack exchange,提问作者chrispndry
相关产品推荐
相关产品推荐

