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

时间:2015-02-05 18:15:34

标签: python covariance yahoo-finance quantitative-finance

我有一些代码计算S& P 500与任何股票的beta - 在这种情况下是股票代码" 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)

3 个答案:

答案 0 :(得分:6)

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

 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

*编辑*

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

  

β

     

使用的Beta版是Beta of Equity。 Beta是a的每月价格变化   特别是公司相对于S& P500的月度价格变动。   Beta的时间段为3年(36个月)。