如何以编程方式获得ETF的持股

时间:2014-10-03 19:56:09

标签: yql

我正在寻找一种通过yahoo finance等网络服务获取ETF保留列表的方法。到目前为止,YQL还没有产生预期的结果。

作为一个例子,ZUB.TO是一个持有的ETF。这是holdings的列表,通过查询yahoo.finance.quotes我们没有得到正确的informationThe result.

是否有另一张表格可以包含所有权?

1 个答案:

答案 0 :(得分:0)

也许无法从Yahoo Finance下载和/或可能无法正常下载。

相反,如何使用ETF提供程序已经具有的各种API下载馆藏的Excel或CSV文件?

使用“ append_df_to_excel”文件作为文件导入,然后使用以下代码为SSgA(道富环球投资顾问)提供的所有11个部门SPDR 制作Excel文件。

我个人使用它来进行宽度分析

import pandas as pd
import append_to_excel 
# https://stackoverflow.com/questions/20219254/how-to-write-to-an-existing-excel-file-without-overwriting-data-using-pandas

##############################################################################
# Author: Salil Gangal
# Posted on: 08-JUL-2018
# Forum: Stack Overflow
##############################################################################

output_file = 'C:\my_python\SPDR_Holdings.xlsx'
base_url = "http://www.sectorspdr.com/sectorspdr/IDCO.Client.Spdrs.Holdings/Export/ExportExcel?symbol="

data = {                    
    'Ticker' :      [ 'XLC','XLY','XLP','XLE','XLF','XLV','XLI','XLB','XLRE','XLK','XLU' ]          
,   'Name' :    [ 'Communication Services','Consumer Discretionary','Consumer Staples','Energy','Financials','Health Care','Industrials','Materials','Real Estate','Technology','Utilities' ]           
}                   

spdr_df = pd.DataFrame(data)     

print(spdr_df)

for i, row in spdr_df.iterrows():
    url =  base_url + row['Ticker']
    df_url = pd.read_excel(url)
    header = df_url.iloc[0]
    holdings_df = df_url[1:]
    holdings_df.set_axis(header, axis='columns', inplace=True)
    print("\n\n", row['Ticker'] , "\n")
    print(holdings_df)
    append_df_to_excel(output_file, holdings_df, sheet_name= row['Ticker'], index=False)

Image of Excel file generated for SPDRs