2015-02-05 3 views
1

나는 어떤 주식 (이 경우에는 "FET")에 대한 S & P 500의 베타를 계산하는 코드를 가지고 있습니다. 그러나 그 결과는 내가 야후 재무에 대해 본 것과 완전히 다른 것 같다. 역사적으로이 주식은 매우 휘발성이어서 야후 파이낸스 베타 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) 
+0

흠 난 당신의 코드를 실행할 때, 난이 오류가있어 연결 축 제외한 모든 입력 배열의 크기가 정확히 – Chef1075

+0

일치해야합니다을 1 개에 대한 뽑아 일수가 710 인 것 같다 주식 2는 709입니다. 거기에서 시작하고 싶을 수도 있습니다. – Chef1075

+0

예. 티커 aapl에 대해 동일한 오류가 발생했습니다! – godzilla

답변

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 행렬의 모든 값에 대한 베타가 발견되었는데, 이는 아마도 여러분이 원했던 것이 아닙니다. 베타가 cov (0,0)와 cov (1,1)를 기반으로하는지 알 필요가 없으며 cov (0,1) 또는 cov (1,0) 만 살펴 봐야합니다. 그것들은 값이 아닌 매트릭스의 위치입니다.

어쨌든, 여기에 내가 가진 대답은 :

The Beta for ^GSPC is: 0.885852632799 

* 편집 *

실행하는 코드를 쉽게 만들어, 어떤 주식을 입력하는 너무 하나 개의 라인이 변경 Yahoo에서 당기고 싶다.

+0

사이의 불일치가 여전히 보이지만 AAPL로 시도하면 스크립트가 실패로 끝나고 더 나은 모습을 보였지만 백분율로 마감 가격의 변화를 반영하도록 변경했습니다. – godzilla

+0

업데이트 됨. 일해야한다. – Chef1075

+0

거의 없지만 지금 나는 FET를 위해 0.512076334094를 얻고있다! – godzilla

2

계산을 위해 닫는 Px를 올바른 형식으로 변환해야합니다. 이 가격은 지수와 주가에 대한 수익률로 환산해야합니다.

+1

또한 초과 수익률, 즉 수익률에서 무위험 이자율의 일부 개념을 뺀 값을 사용해야합니다. 야후가보고 한 값에 대해 사용 된 방법과 달리 numpy에서 기본적으로 공분산 계산에 사용 된 자유도에 불일치가 있는지 확인할 수도 있습니다. 이런 종류의 것들을위한 파이썬의 ddof 키워드는 때때로 중요한 차이를 만들 수 있습니다. 실제 회귀로 실행하는 것이 더 나을 것입니다 (예 : pandas.ols 대신 공분산 - 분산 수식을 사용합니다. – ely

+0

나는 파이썬 코드 결과와 yahoo finance – godzilla

0

야후 재무에 부합하기 위해서는 3 년 간의 월 조정 완료 가격을 사용해야합니다. ValueError를이 :

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.

관련 문제