为什么我的测试版与雅虎财经不同?

why is my beta different from yahoo finance?

我有一些代码可以计算标准普尔 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)

您需要将收盘价Px转换成正确的格式进行计算。这些价格应转换为指数和股票价格的 return 百分比。

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

 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

* 编辑 *

使代码更易于 运行,并对其进行了更改,因此只有一行用于输入您要从 Yahoo 提取的股票。

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

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

Beta

The Beta used is Beta of Equity. Beta is the monthly price change of a particular company relative to the monthly price change of the S&P500. The time period for Beta is 3 years (36 months) when available.