2015-02-05 34 views
1

我有一些代碼可以計算S & P 500相對於任何股票的beta--在這種情況下,股票代碼爲「FET」。然而,結果似乎與我在雅虎財經上看到的完全不同,歷史上這隻股票一直非常波動,這將解釋雅虎財務的1.55的beta值 - 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) 
+0

哼,當我跑你的代碼,我得到這個錯誤:ValueError異常:所有除級聯軸輸入數組大小必須完全匹配 – Chef1075 2015-02-09 23:28:54

+0

好像扳動庫存1天數爲710股票2是709.可能想從那裏開始。 – Chef1075 2015-02-09 23:30:26

+0

是的,我收到了同樣的錯誤代碼aapl! – godzilla 2015-02-10 00:09:36

回答

5

好吧,所以我玩了一下代碼,這就是我的。

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 

*編輯*

使代碼更容易地運行,並改變了它所以只有一個行輸入什麼股票你想從雅虎拉。

+0

接近,但嘗試使用AAPL,腳本失敗 – godzilla 2015-02-10 00:05:17

+0

更新。應該管用。幾乎那裏有 – Chef1075 2015-02-10 00:57:59

+0

,但現在我得到了FET的0.512076334094! – godzilla 2015-02-10 01:08:41

2

您需要將關閉的Px轉換爲正確的格式進行計算。這些價格應該換算成指數和股票價格的回報率。

+1

您還應該使用超額收益,即收益減去無風險利率的一些概念。你也可以看看numpy本地計算協方差的自由度是否有差異,而不管雅虎報告的值是用什麼方法。 Python中的ddof關鍵字有時會產生顯着的差異。你可能會更好,只是把它作爲一個實際的迴歸,例如, pandas.ols,而不是使用協方差方差公式。 – ely 2015-02-05 18:27:55

+0

好吧我已經做出了修改,以反映閉市價格百分比的變化,雖然看起來好一點,但我仍然看到python代碼結果和雅虎融資 – godzilla 2015-02-05 18:55:54

0

爲了匹配雅虎財務,您需要使用三年的每月調整後的收盤價格。

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.