首页 > 解决方案 > 无论如何可以从 Python 上的 Yahoo Finance DatasReader 计算 Market Beta 吗?

问题描述

我目前正试图从通过雅虎金融数据阅读器获得的股票代码中获得市场贝塔。我想知道是否有办法计算每个股市的贝塔值,并将其放入数据框中?

到目前为止,这就是我的代码:

import pandas_datareader.data as pdr

Tickers=['SBUX','TLRY']

SD='2005-01-31'

ED='2018-12-31'

TickerW=pdr.datareader(Tickers,'yahoo',SD,ED)

TickerW.head()

标签: pythonfinanceyahoo

解决方案


好的,为了确保我们在同一页面上,我们使用此处的市场 beta 的公式和定义:https ://www.investopedia.com/terms/b/beta.asp

Beta =协方差(股票收益,市场收益)/方差(市场收益)

所以首先,我们需要市场代码和股票代码。您在这里使用哪个股票代码很大程度上取决于您要比较的市场:总股票市场?只有标准普尔500指数?也许其他一些国际股票指数?这里没有 100% 正确的答案,但一个好的选择方法是考虑谁是你股票的“推动者”,以及他们持有的其他股票。(查看 Damodaran 的估值课程,如果你用谷歌搜索,可以在互联网上免费查看)。

所以现在你的问题变成了:我如何计算股票收益的协方差和方差?

首先,熊猫股票有很多信息。我们想要的是“调整关闭”。这是股票的每日收盘价,根据股票拆分、反向拆分和股息等任何“特殊”事件进行追溯调整。因为假设一只股票一天以 1000 美元的价格交易,但随后经历了 1 对 2 的股票分割,所以现在你有 2 股每股 500 美元,而不是 1 股 1000 美元。在“原始”价格图表中,您的股票似乎在一天之内就损失了 50% 的价值,而实际上什么也没发生。调整后的收盘时间序列负责确保仅反映股票价值的“真实”变化。

您可以通过拨打电话prices = TickerW['Adj. Close']或雅虎财经这些天使用的任何主要方式来获得它。通过仅查看TickerW数据框,您应该能够自己弄清楚:)

接下来,我们将把价格变成回报。那只是prices.shift(1) / prices(或者可能反过来:D查阅文档并自己尝试一下)。(书呆子注意:代替这些回报,使用对数回报在数学上更合理,因为它们具有某些合理的属性。如果你愿意,可以在回报周围加上“对数”。

最后,我们现在有一系列返回(或对数返回)。一组用于股票回报,一组用于市场回报(例如来自 SPY,用于 S&P 500)。现在我们只需要在 beta 的公式中使用它们。

好吧,去这里的方法就是做我刚刚做的事情:在谷歌上搜索“两个系列之间的熊猫协方差”,这让我们可以访问https://pandas.pydata.org/pandas-docs/stable/reference/api /pandas.Series.cov.html

所以基本上,cov = stock_returns.cov(market_returns)然后。var = market_returns.varbeta = cov / var

我会说这应该是足够的信息来发送你的方式。祝你好运。


推荐阅读