Yahoo Finance上富时指数(FTSE)的有效交易代码求助
Correct Ticker for FTSE 100 Index on Yahoo Finance for Python Data Retrieval
刚好碰到过类似的问题,来给你捋清楚——在Yahoo Finance上,富时100指数的标准交易代码确实是^FTSE,但有时候因为pandas_datareader的Yahoo接口版本限制,或者Yahoo对指数类标的的访问规则,这个代码可能没法正常返回数据。
我亲测有效的替代方案是用FTSE.L,这是伦敦证交所上市的富时100指数追踪ETF,它的收盘价和指数本身几乎完全一致,足够满足你的需求。
另外注意你原代码里的一个小问题:data[st] = df_t['Close']没有缩进,会导致循环结束后只保留最后一个标的的数据,我已经在修正后的代码里调整了缩进:
import pandas as pd import pandas_datareader.data as wb stock_tickers = "FTSE.L".split(",") data = pd.DataFrame() dt_start = '1995-01-01' dt_end = '2019-01-05' for st in stock_tickers: print("Loading data for %s" % st) df_t = wb.get_data_yahoo(st, start=dt_start, end=dt_end) print("Retrieved: %s" % str(df_t.shape), df_t.columns) data[st] = df_t['Close'] # 缩进后才能正确存入每个标的的收盘价
如果还是想用指数本身的代码^FTSE,可以尝试升级pandas_datareader到最新版本,或者改用yfinance库(它是专门适配Yahoo Finance的第三方库,对指数标的支持更稳定),示例代码如下:
import yfinance as yf import pandas as pd stock_tickers = "^FTSE" data = yf.download(stock_tickers, start='1995-01-01', end='2019-01-05') print("Retrieved: %s" % str(data.shape), data.columns) # 提取收盘价 close_data = data['Close']
内容的提问来源于stack exchange,提问作者Arton Eel




