3

我有一些代码可以计算标准普尔 500 指数与任何股票的贝塔值——在本例中为股票代码“FET”。然而,结果似乎与我在雅虎财经上看到的完全不同,历史上这只股票非常不稳定,这可以解释雅虎财经上 1.55 的贝塔值 - http://finance.yahoo.com/q?s =fet。有人可以告诉我为什么我看到一个完全不同的数字(0.0088)吗?提前致谢。

from pandas.io.data import DataReader
from datetime import datetime
from datetime import date
import numpy
import sys

today = date.today()

stock_one = DataReader('FET','yahoo',datetime(2009,1,1), today)
stock_two = DataReader('^GSPC','yahoo',stock_one['Adj Close'].keys()[0], today)


a = stock_one['Adj Close'].pct_change()
b = stock_two['Adj Close'].pct_change()

covariance = numpy.cov(a[1:],b[1:])[0][1]
variance = numpy.var(b[1:])

beta = covariance / variance

print 'beta value ' + str(beta)
4

3 回答 3

7

好的,所以我玩了一下代码,这就是我所拥有的。

 from pandas.io.data import DataReader
import pandas.io.data as web
from datetime import datetime
from datetime import date
import numpy
import sys

start = datetime(2009, 1, 1)
today = date.today()
stock1 = 'AAPL'
stock2 = '^GSPC'

stocks = web.DataReader([stock1, stock2],'yahoo', start, today)
# stock_two = DataReader('^GSPC','yahoo', start, today)

a = stocks['Adj Close'].pct_change()

covariance = a.cov() # Cov Matrix
variance = a.var() # Of stock2 
var = variance[stock2]

cov = covariance.loc[stock2, stock1]

beta = cov / var

print "The Beta for %s is: " % (stock2), str(beta)

价格的长度不相等,所以出现了问题 #1。此外,当您执行的最后一行找到 cov 矩阵的每个值的 beta 时,这可能不是您想要的。您不需要知道基于 cov(0,0) 和 cov(1,1) 的 beta 是什么,您只需要查看 cov(0,1) 或 cov(1,0)。这些是矩阵中的位置而不是值。

无论如何,这是我得到的答案:

The Beta for ^GSPC is:  0.885852632799

* 编辑 *

使代码更易于运行,并对其进行了更改,因此只有一行可以输入您想从雅虎提取的股票。

于 2015-02-09T23:46:55.307 回答
2

您需要将关闭的 Px 转换为正确的格式进行计算。这些价格应转换为指数和股票价格的回报百分比。

于 2015-02-05T18:24:50.507 回答
1

为了匹配雅虎财务,您需要使用三年的每月调整收盘价。

https://help.yahoo.com/kb/finance/SLN2347.html?impressions=true

贝塔

使用的贝塔是权益贝塔。Beta 是特定公司相对于标准普尔 500 指数每月价格变化的每月价格变化。Beta 版的期限为 3 年(36 个月)(如果可用)。

于 2015-04-12T05:25:33.237 回答