iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
0
Google Developers Machine Learning

AI可以分析股票嗎?系列 第 13

實戰前的測試路(四) :: 非股價預測測試

  • 分享至 

  • xImage
  •  

零、引言

這篇是實戰前的測試路系列最終章,先回顧一下之前的系列

前幾篇的測試都是以預測「明日股價」為目標,而今天測試則以「我今天該執行什麼動作」為目標。資料部分,同樣使用「局部正規」的方式,並加入「交易量」資訊。預測行動有三 :

  • 賣 : 當認為明天的價格會跌超過 offset_change% 時,則應當賣
  • 買 : 當認為明天的價格會漲超過 offset_change% 時,則應當買
  • 不動作 : 當認為明天的價格會在 -offset_change% ~ offset_change% 的浮動內,則不動作進行觀察

除此之外,會簡單比較一下優化器sgdadamRadam結果,和batch_size大小的取捨

這其實是上一篇正規的延伸,昨天我做完想說...
漲跌幅,如果都是的, 幹嘛還分 "正多少?" 買就是對啊! ,所以當然要來動手測看看

一、optimizer和batch_size

1. 簡單測試optimizer

optimizer LOSS predict with_choose 50
sgd -
Adam
RAdam

會發現,sgd非常的棒,慢慢地收斂但方向是對的,唯一缺點就是太慢了! 跑了1000 epochs結果loss還沒降到比adam的epochs 50還低。而Radam好像要比adam降得更慢些,但根據Radam在網路上評價,我還是使用看看好了。

2. batch_size 大小取捨

  • batch_size大,訓練速度快,對於「全局」資料有較好擬合
  • batch_size小,訓練非常慢,對於較為浮動的資料可以較好的擬合
days batch_size LOSS predict
60 250
60 50

考慮測試輸出的效益...我決定選小的!

二、非股價預測測試結果

我希望去預測我的行動,今天該不該買,或是該不該賣? 下方的測試是以輸入n天前的「局部正規」資料,希望預測出個個動作的機率,並採取最高分數的動作來執行。這個網路結構其實也同前幾篇一樣,只是我們改變輸出為one hot classification而已。 資料預處理部分,今天的測試只針對「明天一天」的結果,我們並不需要去預測後天或是大後天等等。 那就來看看測試結果吧!

  • 參數
    • epochs = 250/500
    • batch_size = 50
    • optimizer = Radam
days offset LOSS predict
60 0.02
30 0.02
10 0.02
60 0.01
30 0.01
10 0.01

三、結果觀察

先道歉,其實又有天數位移細節沒有弄好...但重新訓練真的太久了,check point也被我over write了,所以直接口頭平移(? 除了offset=0.01外其他都要往左兩天Orz 萬分抱歉Orz

今天的結果我認為滿特別的,甚至可以說是與前幾篇的結果是相反的。其中103060天的特性都不太一樣,30天的輸出都是「全部買就對了」,這可能跟dataset有關係,10和60可能就沒有這麼剛好了。 下方我做個簡單表格整理一下...

預測內容 正規方法 結果
股價 局部正規 有一點參考歷史,但模仿成分多
股價 漲跌幅正規 完全模仿前一天結果
股價 混合正規 的確有達到一點預測趨勢的效果,但對於股價的「價格」預測性低
動作 局部正規 再一定程度上能夠預測該買或是不該買
  • 如果從歷史的資料來看

    • 儘管遇上testing data 那種圖形,持續要「買」的動作其實不能算錯
  • 但不論如何,我今天有測出一個我滿想看到的圖形

: 「可能要停漲了,賣掉好了... 然後竟然還多漲一天,那我再加碼」
都能聽到類似的獨白了Orz
綜上來說,接下來進行實測的部分可能會針對action來做預測,以上就是實戰前的測試路系列

下一步-未定 (???

程式碼

LSTM_05 :: action


上一篇
實戰前的測試路(三) :: 混合正規測試
下一篇
股票市場及python網路爬蟲
系列文
AI可以分析股票嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言