如何将ETF的数据导入到Google电子表格中?

14
这篇文章中,我列出了一些在相关论坛上发现的有趣ETF1,并收到了一些宝贵的批评。现在我想使用Google电子表格将这些ETF的更新信息汇总到一个地方,并可能用于个人投资组合管理。我需要:
  • 最好使用ISIN2代码获取数据,因为不同数据库和市场之间的股票代码/符号并不真正可靠和一致
  • 我需要的信息包括:
    1. ETF的当前价值
    2. 1年、3年和5年的表现/回报率
    3. 当前基金规模
    4. TER:总费用比率
    5. TD:跟踪误差
    6. 1年波动率

例如,考虑在“Euronext Amsterdam”上列出为“IWDA”,具有“IE00B4L5Y983” ISIN代码的“iShares Core MSCI World” ETF。我迄今为止所读到的:

  1. 我已经使用GOOGLEFINANCE函数从Google Finance中获取了当前价格和一些其他信息,来自这个页面这篇文章。然而,我不知道如何获取/计算1/3/5年的表现、基金规模、TER和TD。此外,根据这条评论,像许多其他谷歌产品一样,Google Finance似乎正在消亡。因此,拥有一个更可持续的解决方案将是很好的。
  2. 这篇文章提供了一些使用indexIMPORTXML函数从etf.com获取数据的语法。这条评论使用相同的函数从nasdaq.com获取数据。但是我无法使它们正常工作,主要是因为我不知道应该使用什么符号。
  3. 这个这个评论建议使用DGETIMPORTDATA函数从api.iextrading.com获取数据,但我也无法使其正常工作。
  4. 这篇文章bogleheads.org论坛上的许多其他帖子,使用各种变体的importHTML函数的语法从许多不同的网站导入和解析HTML表格。如果我学会如何使用这个函数,我可以从许多可靠的网站获取数据。
我希望您能帮助我了解如何获取上述信息。提前感谢您的友善支持。 P.S.1.这里,我可以使用以下命令:
=INDEX(SPLIT(INDEX(importHTML(CONCATENATE("http://etfs.morningstar.com/quote-banner?&t=", C5), "table", 1),1,11), " "), 1, 3)

and

=INDEX(SPLIT(INDEX(importHTML(CONCATENATE("http://etfs.morningstar.com/quote-banner?&t=", C5), "table", 1),1,13), " "), 1, 2)

为了逐步获取总基金规模和费用比率,但是他们没有提供大多数ETF的数据,同时我也不确定这个网站的可靠性。
注释: 1:交易所交易基金 2:国际证券识别号码

这个问题已经超过2年了,有超过13k的浏览量,展示了很多研究(但是外部研究,而不是来自本站的内容),但仍然没有(可见的)答案。我认为这可能对许多人来说很有趣,但不适合这个网站。在我看来,它需要更多的关注,包含一些离题的部分,比如不知道要使用的符号(最后一部分)(那部分可能是主题[money.se],并且至少有一个链接失效)。 - Rubén
我没有解决方案,但是对于投资组合管理,我可以推荐https://app.parqet.com/。它是免费的,并支持不同类型的资产。我认为这是相关信息,因为在了解parquet之前,我也想为我的个人投资组合管理构建一个Excel。 - tpaul1611
1个回答

2

这篇文章回答了如何通过Google Sheets进行网页抓取以及为什么它不起作用的基本问题。

一些额外的信息:

如果一个网页更改了其标签或数据呈现方式,那么您之前编写的任何IMPORT函数来提取数据都将无法工作。(两种先前有效但由于站点通过Javascript呈现数据而使数据无法通过Google Sheets IMPORT函数获得的示例方法:纳斯达克网站雅虎财经

在您的Google Sheets中,您之所以会收到“N/A”=GOOGLEFINANCE("AMS:IWDA", "return1")和类似性能函数的原因是这些属性是特定于共同基金的,该函数不会为ETF或股票计算它们。

对于股票和ETF,GOOGLEFINANCE函数允许您拉取一个股票的历史数据,并返回一系列日期和一小组属性(例如开盘价、收盘价、成交量)。您链接到的帖子在其共享的电子表格中使用了这种方法。
以下是如何使用GOOGLEFINANCE函数的历史数据功能的详细说明。
此行代码将尝试从当前日期开始拉取5年的每周数据,并返回此一只股票的日期范围和收盘价: =GOOGLEFINANCE("AMS:IWDA","close",today()-365*5,today()) 您可以添加一个QUERY函数来仅返回属性列: =QUERY(GOOGLEFINANCE("AMS:IWDA","price",today()-365*5,today()), "Select Col2") 一旦您有了数值列,您就可以应用数学函数(例如平均值、标准差、众数等)。例如,以下代码行将返回5年平均每周收盘价,并在一个单元格中给出一个值,以便用于其他股票: =AVERAGE(QUERY(GOOGLEFINANCE("AMS:IWDA","price",today()-365*5,today()), "Select Col2")) 无论您如何定义绩效,上述方法都会有所帮助,因为无论您获取长期还是单日数据,GOOGLEFINANCE函数都会返回日期和属性列。 QUERY函数只是返回属性列的一种方法,因此您可以将其用于单行实例的计算。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接