2018年6月17日 星期日

AxisTradeCult 開發日誌 (5) - 實作更多技術指標 & 預測漲跌趨勢

上篇提到自己試著簡易預測大漲大跌訊號結果大暴死!!  由於預測效能 + data imbalance的問題一起考慮會過於複雜, 這次想先做預測趨勢這塊, 至少先確定自己建的資料特徵是有用的, 未來也才有機會預測大漲大跌這問題。

首先想到自己手邊的feature真的太少了,  之前我也只實作SMA, KDJ, BollingerBands 這三個技術指標, 這一個禮拜就開始實作各類指標以及畫圖的功能, 目前實作好的技術指標如下:
  • ATR (Average True Range)
  • Bollinger Bands
  • CCI (Commodity Channel Index)
  • DMA (Different of Moving Average)
  • DMI (Directional Moving Index)
  • EMA (Exponential Moving Average)
  • KDJ (Stochastic Oscillator)
  • MACD (Moving Average Convergence Divergence)
  • MSTD (Moving Standard Deviation)
  • MVAR (Moving Variance)
  • RSI (Relative Strength Index)
  • SMA (Simple Moving Average)
  • SMMA (Smoothed Moving Average)
  • TEMA (Triple Exponential Moving Average)
  • TR (True Range)
  • VR (Volatility Volume Ratio)
  • WR (Williams Overbought/Oversold Index)

不得不說真是他X的有夠累, 雖然有 /stockstats 的github可以參考, 可是為了驗證還是要Google以及看Yahoo財經的圖表確認自己實作有沒有錯, 真的好麻煩阿....而且這種技術指標真的太多太多了, 我目前想先實作到這, 未來有空再來繼續增加新的指標...。

秀幾張新實作好的指標圖, 幸好指標通用的GUI框架之前就做好了, 現在新增加指標也只要實作算法跟訂輸入的規格, 不用再改GUI真的是很爽XD

MACD:



EMA20 & RSI20 & WR14:




實作了那麼多技術指標, 準備資料特徵的工作算是先告一段落, 首先稍微修改一下之前的方法, 改成預測3類(上漲N%, 盤整, 下跌N%),  預測AT&T未來5天的趨勢, 股價資料期間: "2000-1-3"~"2018-6-01"。

驗證方式一樣:
1. 依時間軸切割成3份資料: D1: 2000~2006. D2: 2006~2012, D3: 2012~2018。
2. 使用D1訓練並用D2資料驗證, 在使用D2訓練並用D3資料驗證。

由於現在是預測三類, 考慮到很多分類算法只能作二類預測, 這裡使用OvR來作分類擴展。

先用之前準備好的資料特徵試試, 鄰居特徵neighbor_size = 10, 技術指標特徵使用:



[MA_W20, BollingerBands_W20, KDJ_W20]

使用的分類模型為決策樹, 預測結果:



Label1是上漲5%, Label0是盤整, Label-1則是下跌5%,  這結果很明顯的比亂猜還爛= = 畢竟資料特徵有55個都只是單純的OHLCV資料(5*(1+10)), 實際的技術指標只有6個(1+2+3), 不過跟亂猜沒兩樣真的讓我覺得頗無奈。

再來試試這一個禮拜嘔心瀝血的成果吧, 把實作的技術指標通通加進去。

預測結果:



恩....雖然還是很爛, 至少好一咪咪(?),  Data imbalance還是一樣是很大的問題(畢竟大多時候都是在盤整), 不過光是數值有稍微上去就讓我很開心了, 至少這一個多禮拜不算白費:)

再來的課題就是怎麼做feature selection, 調參數以及選擇分類算法了, 之後也打算開始多看一些相關的paper, 看其他人是怎麼用ML做股價預測的...漫漫長路阿, 希望之後能做出些許成果出來!!!

-----------------------------------------------------------------------
AxisTradeCult 程式原始碼:
https://github.com/zmcx16/AxisTradeCult


目前完成的功能如下:
  • 程式自動取得關注個股的歷史資訊 (每日的開盤, 收盤, 最低, 最高, 成交量, 調整收盤價, etc...) [資料來源: Alpha Vantage]
  • Stocks Overview頁面 (可新增, 移除個股至群組, 可依選擇時間顯示個股資料, 也會計算該天前3個月平均價&成交量以及一年成交價區間)
  • 各種技術分析線圖組合分析 
待完成項目:
  1. 投資組合頁面
  2. 提供機器學習模型預測
    • 自動取得、生成個股的基底、衍生特徵
    • 支援各類機器學習算法
    • 提供回歸測試模型預測率以及調適最佳參數
    • 提供增強式學習進行策略模擬


沒有留言:

張貼留言