价格时序预测-LSTM
價格時序預測-LSTM
- LSTM原理
- LSTM基本使用原理
- Pseudo Trading
- Keras LSTM Layer使用結果
- In-Sample結果
- Out-of-Sample結果
LSTM原理
LSTM是一種有監督神經網絡。在普通的RNN模塊里增加一個“短期記憶”模塊,使得神經網絡能夠對基于“很久之前”曾經看到過并重復出現的“時域特征片段”作出預測上的修正。一個簡單的應用是利用文本里的相距比較遠的“上下文”作更好的文本分析。
LSTM是最新的受到廣泛應用的有監督神經網絡之一。
LSTM基本使用原理
(以下的表述基于Keras里的LSTM layer)
- 一個Episode里的收斂性&Overfitting(Underfitting)可以用Valiation Data Set來檢查。在fit時,指定一個1/3的validation_split。
- 網絡的表達能力(層數&每層節點數)需要和數據量匹配,否則非常容易出現Overfitting。LSTM的“表達能力”非常出眾。同時還要用Dropout來控制LSTM瘋狂的表達能力。
Pseudo Trading
回測中需要有個交易規則。我使用的是相鄰兩個Candle的Close Price,p0, p1,其中p1是預測的未來價格。如果p1>p0,則buy@p0,并且在下一個時刻sell@p1*,其中p1*是真實價格。反之如是。
忽略所有滑點和手續費。
Keras LSTM Layer使用結果
單層LSTM,128個節點,使用MinMaxScaler, Early-exit, Dropout。模型越簡單越好。數據為5分鐘BTC/USD交易歷史數據,提取OHLCV以及ATR等一共9個Features作為LSTM輸入,輸出為價格。注意,Deep Learning (DL)本身是隨機算法,所以即使是in-sample回測,也是有隨機性。但是,In-sample的 Agg. Returns明顯是too good to be true,不可能是真實交易。
從Out-of-Sample結果看,LSTM訓練的模型是有能力beat the market的。在統計套利方面,還是有很強的實用性。LSTM很適合小資金投資者使用,因為成本很低,結果不錯。
為LSTM提供數據時,要考慮Feature的選擇,比如BTC這樣幾乎就是沒有基本面,完全是動量交易驅動,那么選擇的Feature可以很簡單,比如ATR,EMA等等常用的指標都很有效。但是,如果交易 APPL或者GOOG,那就需要其他Reference數據,因為這些大公司的股價對基本面數據是有很強的依賴。
同時,數據的時間尺度也要考慮。5分鐘的波動有可能無法cover taker手續費,所以可以考慮小時級別的交易,或者等待波動大的時候開啟交易。
In-Sample結果
Out-of-Sample結果
只展示兩個時間段作為示范。其中第一個時間段跑了兩次回測,展示出算法的隨機性。使用時需要考慮是否要voting algo的“加持”。
【待續】
總結
以上是生活随笔為你收集整理的价格时序预测-LSTM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言3 17,C语言修仙
- 下一篇: android 电话表情,歪,小人打电话