为什么我的测试版与雅虎财经不同?
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.
我有一些代码可以计算标准普尔 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.