我試圖用sklearn預測股票價格。我是新來的預測。我試着用sklearn做高斯hmm的股票預測。但預測給出了價格疊加的狀態序列,並且它還需要來自給定輸入收盤價的點。我的問題是如何生成下10個價格?如何用高斯倫斯卡爾恩預測
1
A
回答
0
你總是會使用最後的狀態來預測下一個狀態,所以讓我們加10天的投入,通過改變結束日期爲23:
date2 = datetime.date(2012, 1, 23)
你可以仔細檢查代碼的其餘部分以確保我實際上未使用未來數據進行預測。其餘這些行可以添加到文件的底部。首先,我們要找出給定狀態的預期收益。 model.means_數組有回報,這兩個是讓我們回到這個狀態的回報,而不是未來回報,這是你想要的。爲了獲得未來的回報,我們考慮去5個州中的任何一個的可能性,以及這些州的回報是多少。我們從model.transmat_ matrix得到任何特定狀態的概率,我們使用model.means_值返回每個狀態。我們拿點產品來獲得特定狀態的預期回報。然後,我們刪除卷數據(如果需要,您可以將其保留,但您似乎對未來價格最感興趣)。
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]的值,你會看到以美元爲狀態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將是1。注意,我沒有考慮到週末的predicted_date。
這是一個有趣的練習,但您可能不會在生產中運行此操作,因此會引用引號。首先,時間序列是原始價格;這應該是百分比回報或日誌回報。另外,沒有理由爲HMM選擇5個狀態,或者HMM甚至對這個有點問題更好,我懷疑它。他們可能只是把它作爲一個例子。我認爲使用PCA的另一個sklearn例子更有趣。
相關問題
- 1. 由帕斯卡爾
- 2. 預計尼爾斯
- 3. 搜索斯威夫特卡倫特3
- 4. 如何從斯卡拉(卡斯巴)
- 5. 哈斯克爾卡過濾
- 6. Exercice與帕斯卡爾
- 7. 零指針帕斯卡爾
- 8. 算法smbPitchShift(帕斯卡爾)
- 9. 帕斯卡爾錯誤
- 10. 鏈表帕斯卡爾
- 11. 如何會議UIWebView的斯威夫特卡倫特3過期?
- 12. 德爾福/帕斯卡爾例
- 13. 帕斯卡爾布爾返回值?
- 14. 基於高斯均值的scikit-learn高斯混合模型集預測輸出
- 15. 提高對JVM斯卡拉
- 16. 斯卡拉與貓 - 笛卡爾+驗證
- 17. 帕斯卡爾:後一句話,如果
- 18. R霍爾特溫特斯預測火車/測試
- 19. 斯卡拉測試與POST
- 20. 測試XML斯卡拉
- 21. PYMC3貝葉斯預測錐
- 22. 如何哈斯克爾
- 23. 問計一類的實物斯卡拉VS哈斯克爾
- 24. 斯卡拉相當於哈斯克爾monads
- 25. 斯卡拉相當於哈斯克爾的序列
- 26. 斯卡拉等值的哈斯克爾號
- 27. 斯卡拉執行哈斯克爾最後一個方法
- 28. 如何在等式中使用帕斯卡爾字符串
- 29. 使用高斯族分佈來預測GLM中的離散量
- 30. 斯卡拉布爾函數抽象