股票涨跌预测方法之三:建立模型并训练
前一陣子在同學的鼓動下,花了一個多月研究了股票行情的預測方法,熟悉了常見的炒股術語及技術指標,現總結如下,純屬興趣,如果想依照本文的方法來短線操作獲利,請繞道。
研究的第三步就是建立神經網絡預測模型了,還是使用keras來搭建,使用簡單的3層全連接層做實驗,輸出就是根據第二天的漲跌幅分為5類:漲(范圍[0.01,])、微漲(范圍[0.003,0.01])、平(范圍[-0.003,0.003])、微跌(范圍[-0.01,-0.003])、跌(范圍[, -0.01]),測試了下這么分,5類概率幾乎均等。
輸入選擇什么呢?如果直接將最近N天的開盤價、收盤價、交易量等原始值輸進去,應該是很難訓練的,畢竟不同股票的價格差異較大,同一個股票幾年前的價格、交易量跟現在也類似,很難收斂,如果輸入上篇文章中的股票技術指標,這些指標又太簡單,主要用于繪圖讓人觀察,我們采用了不同天數的收盤價格滑動平均(類似于MACD中的ema計算)、不同天數的收盤意愿滑動平均(類似于CR指標的計算)、不同天數的股票振幅滑動平均、不同天數的交易量滑動平均,注意所有的平均值計算完后還要除以一個基準值,使得每個值都在1.0附近。
def GetPara(m, allDate):
if 1: #簡單處理下輸入SVM,效果較好
data = []
tmp = avg1(m.close, 32)
data.append(m.close/tmp)
data.append(avg1(m.close, 2)/tmp)
data.append(avg1(m.close, 4)/tmp)
data.append(avg1(m.close, 8)/tmp)
data.append(avg1(m.close, 16)/tmp)
tmp = m.close.copy()
tmp[0] = (m.high[0]+m.low[0])/2
tmp[1:] = (2*m.close[:-1] + m.high[:-1] +m.low[:-1]).values /4
a = m.high - tmp
b = tmp - m.low
data.append(avg1(a, 2)/avg1(b, 2))
data.append(avg1(a, 4)/avg1(b, 2))
data.append(avg1(a, 8)/avg1(b, 2))
data.append(avg1(a, 16)/avg1(b, 2))
data.append(avg1(a, 32)/avg1(b, 2))
tmp = (m.high- m.low)/ ((m.high+ m.low+0.00001)/2)
data.append(tmp)
data.append(avg1(tmp, 2))
data.append(avg1(tmp, 4))
data.append(avg1(tmp, 8))
data.append(avg1(tmp, 16))
data.append(avg1(tmp, 32))
tmp = avg1(m.volume, 32)
data.append(m.volume/tmp)
data.append(avg1(m.volume, 2)/tmp)
data.append(avg1(m.volume, 4)/tmp)
data.append(avg1(m.volume, 8)/tmp)
data.append(avg1(m.volume, 16)/tmp)
data = np.array(data).T
X_train = []
Y_train = []
n2 = 28
for k in range(30, len(tmp)-1):
if allDate[m.date[k-1]] - allDate[m.date[k-n2]] != n2-1:
continue
X_train.append(data[k, :].ravel())
#v = (m.close[k]-m.close[k-1])/m.close[k-1]
v = (m.close[k+1]-m.close[k])/m.close[k]
if v>=0.01: tmp=0
elif v>=0.003: tmp=1
elif v>=-0.003: tmp=2
elif v>=-0.01:tmp = 3
else: tmp = 4
Y_train.append(tmp)
return X_train, Y_train
然后就是建立模型并訓練,loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy'], class_mode='categorical',隨機采用10%的數據做驗證,經過長時間的等待,結果如下:
準確率35%左右,嗯,比扔銀幣的20%好多了。
總結
以上是生活随笔為你收集整理的股票涨跌预测方法之三:建立模型并训练的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 量化交易之接口篇 — 恒生UFX交易接口
- 下一篇: WPS常用快捷键汇总