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