如何使用 pandas-datareader 从 Yahoo 查找任何索引

How to lookup any index from Yahoo using pandas-datareader

我想查找任何在线索引,包括那些带有数字的索引。一个随机的例子是:

https://uk.finance.yahoo.com/quote/YSM6.AX/futures?p=YSM6.AX

一个天真的方法是使用pandas-datareader:

from pandas_datareader import data as datareader
online_data = datareader.DataReader('YSM6.AX', 'yahoo', start, end)

但是,这不起作用。我认为代码中的数字处理不当。此命令适用于例如"AAPL".

如何使它适用于任何索引?

如果您查看您提供的 link,YSM6 是 ASX 的期货合约。具体来说是 M6 到期,意思是 2016-06。雅虎在他们的网站上不再有这份合同的数据——可能是因为它已经过期,也可能是因为它从来没有任何数据可用。另外,这个产品(3年期AU利率互换期货)好像已经被交易所下架了。

你的问题说你想要 "stock" 数据。这是带有数字符号的实际股票示例:

https://uk.finance.yahoo.com/quote/7203.KL/?p=7203.KL

YSM6.AXlink表示没有该股票的数据。 如果您想获取多只股票,并专门获取调整后的收盘价,您可以使用此代码。它考虑了任何带有“-”或在 YSM6.AX 的情况下带有“.”的有趣股票代码。在自动收报机内。

    import pandas as pd
    import datetime
    from pandas_datareader import data, wb
    tickers = ["BRK.B", "AAPL", "MSFT", "YHOO", "JPM"]
    series_list = []

    start = datetime.datetime(2012, 4, 5)
    end = datetime.datetime(2017, 3, 28)
    for security in tickers:
        s = data.DataReader(security.replace(".","-"),"yahoo",start, end )["Adj Close"]

        s.name = security
        series_list.append(s)

    df = pd.concat(series_list, axis=1)

    stocks= pd.DataFrame(df)
    stocks