以類神經(neural network)預測加權指數漲跌幅
我有一個類神經neural network的【Excel】程式,已經work,可以訓練,也能做預測。想利用每天開盤不久的當天成交量預估值,和(這裡)EXCEL成下載的台指期盤後數據,有:未平倉、買賣超、...(如圖示)。想以類神經預測當天的漲跌,請問前輩們,概念上應該要/可以怎麼做?
目前我是構想是用:第T天的未平倉、買賣超、成交量、(T+1)天的成交量、...等做input。漲跌幅為output的結果進行訓練。(PS:T是指前一天,T+1是指當天)預測時:使用已知的前一天未平倉、買賣超、成交量...等,以及當天開盤不久後的預估成交量,來預測當天的漲跌幅。
先不論準不準的問題,先就這個想法/模式而言,觀念上是否可行。覺得怪怪,在此請教大家?
【怪怪處1】第T天的成交量、(T+1)天的成交量,是同一項資料的先後之別而已。
【怪怪處2】以訓練時的每個第T天而言,將第(T+1)天的成交量納入input變數,是否適當?(我知道NN是在純抽象的數字空間,去找到符合的pattern,並不考慮期間因果關係的),但有無倒果為因的疑慮?
1. 朋友,別用excel做NN, python吧,很多好用的library。
2. BNN不是用來預測股市的。我自己是用RNN的,hidden layers同number of hidden units要自己試,與你要預測的目標複雜程度有關。而且,短線即市走勢,其實不是甚麼high dimensional的問題,deep learning未必可以幫你。
3. activation function我是用ReLU的,收歛速度較快。除非有特別原因才用另外兩款。 是有一層hidden layer的BNN。關於這裡也有一到疑問是:如何決定隱藏層的節點變數個數,有無建議或準則? 感謝分享
https:// money.udn.com/money/story/5599/2765391
=======
隨著電腦運算的被動式投資策略逐漸風行,如今主動型投資組合的操盤手又面臨新的競爭對手:靠人工智慧(AI)投資的指數股票型基金(ETF)。
美國舊金山的新創公司 EquBot 於 17 日推出這種前所未見的 ETF,代號是「AIEQ」(AI powered Eqquity ETF),將由 IBM 的 AI 平台「華生」(Watson)模仿一大群分析師如何研究股市,差別在於 AI 可以 24 小時不間斷地工作。EquBot 共同創辦人阿莫多爾(Art Amador)說:「這是個資訊爆炸的時代。AI 能提供更可靠的投資方法。」
EquBot 將與 ETF Managers Group 公司合作,用 AI 和機器學習每天審視 6,000 多家美國上市公司,力求基金配置多元化。
電腦程式蒐集資料的來源包括向監管機構的申報資料、超過百萬則新聞、企業管理階層的個人資料、經濟數據、情緒量表,和金融模型,建立出來的投資部位包括 30 支到 70 支不等的股票。選股完成後,ETF Managers Group 的人類操盤手每天還會依據電腦意見(如果建議變更)調整投資配置。
看到關於AI的討論也忍不住進來看了,
先不管AI這一塊, 我認為光靠成交量這個資料就己經太粗糙了.
可能是我不了解您這樣使用背後的意義是什麼吧.
我是覺得假設開巿後第一個小時成交量為X, 第二小時的成交量是X?還是2X? 還是X/2?,第三小時 成交量是X?還是2X? 還是X/2? 也許是能夠估算出一個大概, 但如果估算出來的區間比較大的話,是不是就沒有太大意義了? 再用這個不大有意義的估算量去 給AI學習, 感覺會出來一個OVER FITTING 的結果了, 出來的模型可能只針對喂給AI學習的歷史資料得出來的, 模型之後的表現可能無法體現出和訓練資料 一樣的效能.
BPN 的隱藏層神經過多會造成曲線過度擬合問題,導至無法正確預測未來
至於多少才合適?其實沒有標準公式,大部份是經驗法則 太厲害了,請問版主是使用倒傳遞網路嗎? 【續前文】關於:
1.隱藏層的神經元數,慣用input變數的個數減一或二;
2.學習速率,用0.8
3.活化函數選擇,採 tanh activation function。
BPN大約跑2或3000個epochs,會達收斂。
目前預測準確度有待提升,需要前輩及先進提共意見、指導。
請問 p大 的類神經 Function 如何來的
EXCEL 自帶的嗎? vba 做權重的矩陣運算
一篇別人作的,供你參考.雖然使用的變數不同
http://www.financial-hacker.com/build-better-strategies-part-5-developing-a-machine-learning-system/#more-1872
你所說的怪怪處2, 我也覺得在Training時, 把未來的資料納為 input變數, 是不妥的
本帖最後由 playhigh 於 17-10-11 15:08 編輯
謝謝,alexliou:分享文中有一建議
We use tanh here since our signals are also in the +/-1 range. The output of the network is a sigmoid function since we want a prediction in the 0..1 range.
1.依此,用tanh還算恰當。
2.文中提到他有 62% prediction accuracy。That point inspires me to produce my own prediction accuracy。
3.另外,本來我也有該用多少筆歷史資料進入training的疑問。20天?60天?文中是100筆,可為參考。
Thanks ! Looking forward for more suggestions!! 本帖最後由 playhigh 於 17-10-11 15:16 編輯
【問題討論】已知歷史交易數據(未平倉、買賣超、成交量...等);該如何使用BPN為工具,利用已知歷史數據,以及【當天預估成交量】(此值也是預估,會從開盤各時段交易另外(系統外)做推估),來預測當天的漲跌幅%?
請各位前輩、學長不吝指教! 本帖最後由 playhigh 於 17-10-11 15:59 編輯
感謝alexliou分享文中有許多寶貴觀念,摘出與大家分享。發展智能策略的方法:【Step 1】: The target variable,挑選要預測的目標,我選的是:加權指數漲跌幅%
【Step 2】: The features,selecting the features is critical for success。這點我堅信如此。我們也可以先就歷史資料做feature selection或轉軸(PCA主成份分析、FA因素分析)等多變量分析的處理。這裡,我只是憑經驗和直覺,本相關issues,雖重要但暫列他案處理。
【Step 3】: Preselecting/preprocessing predictors,
小點提到:Determine the correlations between the signals. Remove those with a strong correlation to other signals, since they do not contribute to the information.不要放入高度相關的二個變量。
~~~~依此,我的【怪怪處1】第T天的成交量、(T+1)天的成交量,是同一項資料的先後之別而已。證實是不妥的。不能將前一日、當天成交量當成2個變數。怎麼處理呢?因我想用成交量預測漲跌幅%?
【Step 4】:Step 4: Select the machine learning algorithm,選擇演算法,在此是BPN(其實NN可能有人不會覺得有用,也許吧?)
小點提到:
The usual method is error backpropagation. But it turns out that the more hidden layers you have, the worse it works. The backpropagated error terms get smaller and smaller from layer to layer, causing the first layers of the net to learn almost nothing. Which means that the predicted result becomes more and more dependent of the random initial state of the weights. 我隱藏層只有一層是OK的,我也覺得過多無益,如上文所述,蠻好的概念。
【Step 5】: Generate a test data set,用EXCEL下載證期交所資料。
【Step 6】: Calibrate the algorithm,還沒到此,等BPN模式確認了,需進一步微調參數等。
【Step 7】: The strategy,漲跌幅%預測出來後,如何操作應該不難。
【Step 8】: The experiment。需要,會的。
~~以上分享,拋磚引玉~~~請各位前輩、學長不吝指教!
難得會在這邊看到有人提出AI演算法在交易方面的討論
這方面演算法距離我好遠了,十幾年前還有在看
你說的「怪怪處」,第T天的成交量、(T+1)天的成交量,原本還以為你是要預測明天的漲跌幅
結果仔細一看,才看到(T+1)是另一個系統跑出來的預估量
如果是T天和T+1天的輸入,預測T+2天的值,這種我個人是覺得可以耶
我對高度相關的認知,是指第T天的A和B這二個輸入,若是高度相關的話,那就不適合
例如我用今天開盤的預估成交量,和收盤後的成交量,來預測明天的漲跌,這種的才算是高度相關
如果我用昨天和今天的成交量來預測明天的漲跌,這種我覺得是時間序列的問題
你的T+1天預估量是來自於另一個系統的輸出的話
那表示你的系統穩定度和收斂程度也會受該系統的影響
如果這是屬於你模型的其中一部份,那就沒話講
不然我會改成「第T天成交量」和「第T+1天開盤N分鐘的成交量」,來預測第T+1天的漲跌幅
參考看看吧,如果有誤的話還請見諒,畢竟AI演算法離我好久遠了,呵
感謝分享{:4_151:} 本帖最後由 playhigh 於 17-10-11 23:17 編輯
hchsieh 發表於 17-10-11 19:18
難得會在這邊看到有人提出AI演算法在交易方面的討論
這方面演算法距離我好遠了,十幾年前還有在看
感謝hchsieh大仔細的分析及分享。深入討論:
1.【hchsieh文】如果我用昨天和今天的成交量來預測明天的漲跌,這種我覺得是時間序列的問題。
【討論】認同是time series的問題。我沒有以time series解題。是因為(請看第2點,會更準)。
2.我是要用:「第T天成交量」和「第T+1天開盤N分鐘的成交量」所【估計的當天成交量】,來預測漲跌幅。
【原始構想】先估當天成交量,再丟給訓練好的BPN預測漲幅。為何我認為會更準?因為是於盤中、現場、即時預測,應能排除掉需更多不明的不確定得干擾。
我想在盤中(9點半,10點半...等),提早估出當天漲跌幅。
用於台指期當沖,會搭配當沖即時工具,就是市面上所謂「冰火能量」。是用EXCEL取元大的RTD即時不斷跑出。
提早預測出的漲跌幅能告訴我大方向(戰略strategy),冰火能量則告訴我即時的操作方向(戰術tatics)。
感謝【hchsieh文修正了我的看法,在於】,前一日與當天成交量,其實(可能)並不高度相關。倒是,原先所疑慮:將未來結果放入歷史資料跑預測的因果倒置,可能仍存在疑慮。
感謝提供想法。
hchsieh 發表於 17-10-11 19:18
難得會在這邊看到有人提出AI演算法在交易方面的討論
這方面演算法距離我好遠了,十幾年前還有在看
h大:
我是想用:今天開盤的預估成交量,和前一天收盤後的成交量,來預測今天的漲跌
頁:
[1]
2