2013-06-24 2 views
1

sklearn을 사용하여 주가를 예측하려고합니다. 나는 예측에 처음이다. 나는 gaussian hmm의 주식 예측을 위해 sklearn에서 예제를 시도했다. 그러나 예측은 가격에 오버레이를 적용하고 주어진 입력 마감 가격에서 포인트를 얻는 주 시퀀스를 제공합니다. 내 질문은 다음 10 가지 가격을 생성하는 방법입니다.gaussianhmm sklearn으로 예측하는 방법

답변

0

당신은 항상 다음 상태를 예측하는 마지막 상태를 사용, 그래서 23 일에 종료 날짜를 변경하여 입력 10 일의 가치를 추가 할 것입니다 :

date2 = datetime.date(2012, 1, 23) 

당신은 코드의 나머지 부분을 다시 한 번 확인 할 수 있습니다 실제로 예측을 위해 미래의 데이터를 사용하고 있지 않은지 확인하십시오. 나머지 줄은 파일의 맨 아래에 추가 할 수 있습니다. 먼저 기대 한 수익이 주어진 주에서 무엇인지 알아 내야합니다. model.means_ 배열은 반환 값을 가지고 있습니다. 둘 다 우리가이 상태로 돌아 왔을 때의 리턴 값이고, 미래의 리턴 값은 여러분이 원하는 값입니다. 미래의 수익을 얻기 위해 우리는 5 개 주 중 어느 한 곳으로 갈 확률과 그 주에서 돌아 오는 확률을 고려합니다. 우리는 model.transmat_ 행렬에서 특정 상태로 갈 확률을 얻습니다. 우리는 model.means_ 값을 사용하는 각 상태를 반환합니다. 특정 주에 대한 예상 수익을 얻으려면 내적을 사용합니다. 그런 다음 볼륨 데이터를 제거합니다 (원하는 경우이 데이터를 남겨 둘 수 있지만 미래 가격에 가장 관심이있는 것으로 보입니다). 당신이 반환 [0]의 값을 인쇄 할 경우

expected_returns_and_volumes = np.dot(model.transmat_, model.means_) 
returns_and_volumes_columnwise = zip(*expected_returns_and_volumes) 
returns = returns_and_volumes_columnwise[0] 

, 당신은 상태 0 달러의 예상 수익을 볼 수, 반환 [1] 등 상태 1 이제, 우리는 하루 상태 주어진 내일의 가격을 예측하고 싶다. 10 일 동안 그렇게 말하면 lastN에 사용합시다.

predicted_prices = [] 
lastN = 10 
for idx in xrange(lastN): 
    state = hidden_states[-lastN+idx] 
    current_price = quotes[-lastN+idx][2] 
    current_date = datetime.date.fromordinal(dates[-lastN+idx]) 
    predicted_date = current_date + datetime.timedelta(days=1) 
    predicted_prices.append((predicted_date, current_price + returns[state])) 

print(predicted_prices) 

것은 당신이 "생산"이 실행 된 경우에 당신은 당신이 가지고있는 마지막 날짜로 날짜 2를 설정합니다 다음 lastN 내가 predicted_date의 계정 주말을 고려하지 않는 1. 참고가 될 것입니다.

이것은 재미있는 일이지만 실제로 프로덕션에서는 실행하지 않으므로 따옴표를 사용하십시오. 첫째, 시계열은 원시 가격입니다. 이것은 실제로 백분율 리턴 또는 로그 리턴이어야합니다. 게다가 HMM에 대해 5 개 주를 선택하는 것에 대한 정당성이 없거나 HMM이 이런 종류의 문제에 대해서도 좋다고 생각합니다. 아마 그들은 단지 그것을 예제로 선택했을 것입니다. 나는 PCA를 사용하는 다른 sklearn 예제가 훨씬 더 흥미 롭다고 생각한다.

관련 문제