增強(qiáng)學(xué)習(xí)交易之DDR
論文Deep Direct Reinforecement Learning for Financial Signal Representation and Trading是Yue Deng等于17年3月發(fā)表在IEEE Transaction on Neural Networks and Learning System期刊上的(實(shí)際投稿時(shí)間是15年)。
這篇論文
1. 摘要
這篇論文是基于2001年發(fā)表的Learning to Trade via Direct Reinforcement論文的方法DRL(direct rl),加了
- deep network來為市場(chǎng)狀態(tài)提取更深層的特征表達(dá);
- fuzzy representation用來降低市場(chǎng)不確定性,模糊化表達(dá)市場(chǎng)的狀態(tài)。
另外也給出了網(wǎng)絡(luò)的訓(xùn)練方法task-aware BPTT。實(shí)驗(yàn)在三個(gè)商品期貨數(shù)據(jù)上進(jìn)行驗(yàn)證,也與DRL, LSTM等方法做了對(duì)比。
2. 介紹
增強(qiáng)學(xué)習(xí)是agent在環(huán)境中自我學(xué)習(xí),尋找策略的過程,在金融交易里就是學(xué)習(xí)如何在觀察市場(chǎng)狀態(tài)環(huán)境后,做出一個(gè)能讓未來收益最大化的交易動(dòng)作,比如我在觀察股票行情后,是決定買還是賣。這個(gè)動(dòng)作是可以多樣的,最簡(jiǎn)單的買賣,看漲看跌中立,也可以是多只金融產(chǎn)品的投資占比等。
RL在交易中有兩個(gè)挑戰(zhàn):
- 對(duì)市場(chǎng)環(huán)境狀態(tài)的表達(dá)(特征)。
-
根據(jù)當(dāng)前狀態(tài)以及先前動(dòng)作等做出決策。
第一點(diǎn),金融市場(chǎng)往往是多變的,充滿了大量噪聲,波動(dòng),這就導(dǎo)致了價(jià)格曲線的不穩(wěn)定性。目前有許多人工提取的特征,比如移動(dòng)平均線,減少了噪聲,反應(yīng)了市場(chǎng)的總體趨勢(shì)。但是這些特征有些依賴于專家,領(lǐng)域知識(shí),不能完整或深層次地表達(dá)市場(chǎng)環(huán)境。為了解決這個(gè)問題,文章使用AE,模糊表達(dá)來對(duì)市場(chǎng)狀態(tài)提取特征。
第二點(diǎn),使用了RNN形式,從當(dāng)前狀態(tài)和上一個(gè)動(dòng)作到當(dāng)前動(dòng)作的直接映射。
3. 算法DDR
Direct Reinforcement Trading (DRL)
文章是基于DRL的,所以這一節(jié)會(huì)先介紹DRL:
定義:
價(jià)格 p1, p2, ..., pt, ...
回報(bào) zt = pt - pt-1
決策 δt ∈ { long, neutral, short} = {1, 0, -1} 其中l(wèi)ong是看漲,neutral是中立,short是看跌。

其中δt-1zt是執(zhí)行決策δt-1后得到的回報(bào),c是交易費(fèi)用,且僅當(dāng)兩次決策不一樣時(shí)(毀約)才需要交費(fèi)。
在周期1到T的累積收益函數(shù)

最直接的就是求和

其他復(fù)雜的函數(shù)比如加了風(fēng)險(xiǎn)調(diào)整的收益等也可以作為目標(biāo)函數(shù)。
好了,現(xiàn)在的目標(biāo)就是如何定義策略的結(jié)構(gòu)和學(xué)習(xí)方法。

策略

其中f_t是特征向量,在DRL中ft = [z_t-m+1, ..., z_t],即過去m個(gè)回報(bào)作為特征。然后特征經(jīng)過線性變換,在加上上一次的動(dòng)作(構(gòu)成循環(huán)),經(jīng)過tanh函數(shù)得到-1到1的值,作為當(dāng)前動(dòng)作。
在DRL中,direct指的是直接從狀態(tài)到動(dòng)作映射,而不是學(xué)習(xí)一個(gè)值函數(shù)V(或者動(dòng)作值函數(shù)Q)。論文中的解釋是這樣的:
In the conventional RL works, the value functions defined in the discrete space are directly iterated by dynamic programming. However, as indicated in [17] and [19], learning the value function directly is not plausible for the dynamic trading problem, because complicated market conditions are hard to be explained within some discrete states.
大致意思就是傳統(tǒng)RL是針對(duì)離散狀態(tài)空間,對(duì)于交易問題,很難用幾個(gè)離散狀態(tài)來表示復(fù)雜的市場(chǎng)狀態(tài)。其實(shí)這種說法是不妥的,因?yàn)橹岛瘮?shù)是可以表示連續(xù)變量(無(wú)窮變量)的。就像游戲一樣,輸入的游戲畫面就是大量的狀態(tài),仍然可以用DQN來學(xué)習(xí)Q函數(shù)。
DNN 與 fuzzy 模糊表達(dá)

- 在drl的基礎(chǔ)上,用dnn來提取特征。
- 市場(chǎng)的行情是有很多噪聲,波動(dòng)的,為了減少不確定性,使用了fuzzy learning. 就是對(duì)原始數(shù)據(jù)進(jìn)行模糊表達(dá),相當(dāng)于預(yù)處理。
模糊表達(dá)將每個(gè)數(shù)據(jù)表達(dá)為k個(gè)模糊成員組(fuzzy membership groups),比如對(duì)于市場(chǎng)行情,可分為增長(zhǎng),下降,無(wú)趨勢(shì)三組。對(duì)于每個(gè)組會(huì)有一個(gè)組函數(shù)vi() R->[0, 1]:
可以看出是一個(gè)高斯函數(shù)。每一維會(huì)經(jīng)過組函數(shù)得到3個(gè)組對(duì)應(yīng)的值,值越大說明屬于這個(gè)組的概率越大,越接近中心點(diǎn)
最終,這個(gè)優(yōu)化的目標(biāo)可以表示為
optimal objective function
參數(shù)學(xué)習(xí)
介紹完架構(gòu)以及優(yōu)化函數(shù)后,如何得到模型參數(shù)呢?文章先初始化參數(shù),然后再進(jìn)行調(diào)優(yōu)fine-tuning.
(1)初始化
- fuzzy: 使用k-means將數(shù)據(jù)聚為三類,分別算出均值和方差作為高斯函數(shù)的參數(shù)。
- dnn part: 這部分的初始化其實(shí)就是一個(gè)深度置信網(wǎng)絡(luò)dbn。使用三層結(jié)構(gòu),定義loss為
公式
從x重構(gòu)到x,訓(xùn)練完后把最后一層去掉,如隱藏層作為特征。重復(fù)n次。 - DRL part: 固定前面參數(shù),優(yōu)化drl部分的參數(shù)。
(2)fine tuning (task-aware BPTT)
根據(jù)目標(biāo)函數(shù)UT和鏈?zhǔn)揭?guī)則對(duì)參數(shù)求導(dǎo):

第二個(gè)式子是一個(gè)遞歸的形式,我們將網(wǎng)絡(luò)按時(shí)間展開,可以得到

展開后對(duì)每個(gè)時(shí)間段我們能求得一個(gè)梯度,然后將每個(gè)參數(shù)的所有梯度取平均。這是對(duì)δt求得的梯度,另外我們對(duì)每個(gè)Rt都要算一次梯度,然后求和(平均?),最后我們得到參數(shù)的梯度的更新值。
另外加了紅線部分,是對(duì)Ut-1,Ut-2,.... 也進(jìn)行求導(dǎo)。文中說明是為了解決DNN部分梯度消失的問題。這兩個(gè)部分稱為1) the previous time stack (lower order time delay) and 2) the reward function (learning task) 作者將這種方式的權(quán)重更新稱為task-aware BPTT。
(另外一種對(duì)紅線部分的理解是對(duì)Rt-1,Rt-2的求導(dǎo))
算法總結(jié)
最終,用偽代碼表示為:

4. 實(shí)驗(yàn)
實(shí)驗(yàn)設(shè)置
(1)實(shí)驗(yàn)選取了三個(gè)期貨合約: 股指期貨IF, 白銀期貨AG,白糖期貨SU,用的是每分鐘的數(shù)據(jù)(屬于T+0):

期貨的一些信息:

CNY/pnt是內(nèi)在價(jià)值,每增長(zhǎng)或下降一個(gè)point所能得到的回報(bào);TC,c是交易費(fèi)用(考慮其他風(fēng)險(xiǎn)因素,實(shí)際上高于真實(shí)的5倍)。
(2)模型的參數(shù)
輸入是過去45min的歷史價(jià)格加上過去3h, 5h, 1 day, 3 day, 10day的變化值,一共50個(gè)輸入,得到的fuzzy層就是150;
DNN層設(shè)置是128,128,128,20.
訓(xùn)練
訓(xùn)練集:前15000點(diǎn)用作訓(xùn)練模型;當(dāng)模型在測(cè)試/預(yù)測(cè)了5000個(gè)點(diǎn)后,會(huì)用最近的15000點(diǎn)作為新的訓(xùn)練集,重新訓(xùn)練一次模型,讓模型能擬合最近數(shù)據(jù)。
驗(yàn)證集:12000用作訓(xùn)練,3000用作驗(yàn)證,防止過擬合
訓(xùn)練過程:early stopping;learning rate;100epoch
文中用task-aware BPTT和BPTT兩種方法分別訓(xùn)練,進(jìn)行對(duì)比,結(jié)果如下圖:

可以看出用了task-aware效果提升了。
實(shí)驗(yàn)結(jié)果
文中將提出的DDR,F(xiàn)DDR與DRL,SCOT進(jìn)行了對(duì)比。
前面提到的累積回報(bào)函數(shù)記為TP;另一個(gè)常用可替換的收益函數(shù)是夏普率SR(單位風(fēng)險(xiǎn)得到的收益):

論文對(duì)兩個(gè)目標(biāo)分別做了實(shí)驗(yàn)。

P&L是profit & loss。第一行是期貨價(jià)格,第二行是以TP作為收益函數(shù)的,第三行是以SR作為收益函數(shù)。結(jié)論就是DDR,F(xiàn)DDR好于DRL,SCOT;不同函數(shù)的區(qū)別就不是很明顯。
最后的收益用表格展示就是:
與基于預(yù)測(cè)的DL方法對(duì)比
對(duì)比的DL有CDNN,RNN和LSTM。預(yù)測(cè)模型就是一個(gè)softmax方式的三分類。
metrics: PR(profitable rate),TT(trading times).

收益率都是很小的,比一半多一點(diǎn),但是最終還是有收益的。交易次數(shù)是前三個(gè)方法多,F(xiàn)DDR只有他們的十分之一左右。如果不考慮cost,那么前三個(gè)的收益是要高于FDDR的;考慮cost時(shí),其他方法因?yàn)榻灰状螖?shù)多使得手續(xù)費(fèi)高,收益就降低了許多。
這種結(jié)果的原因是FDDR是考慮了上一個(gè)動(dòng)作和交易費(fèi)用的,所以交易次數(shù)就少了。但是可以看出LSTM等方法的潛力,如果他們也把費(fèi)用考慮在內(nèi)的話。
S&P 500驗(yàn)證
S&P500是標(biāo)準(zhǔn)普爾500股票指數(shù)(美國(guó)),數(shù)據(jù)從1990到2015年,以天為間隔共6500條記錄。其中2000條用于訓(xùn)練,每個(gè)100訓(xùn)練一次。
因?yàn)橹笖?shù)很受經(jīng)濟(jì)危機(jī)影響,所以將其他國(guó)家的股票指數(shù)變化也加入作為特征,包括英國(guó),香港,中國(guó)等。將多特征的FDDR記為multi-FDDR。實(shí)驗(yàn)結(jié)果為:

在2010后multi-FDDR才超過FDDR,作者的解釋是在2010年后,越來越多的算法交易公司參與到市場(chǎng)中,導(dǎo)致價(jià)格是多相關(guān)的。
不同參數(shù)的影響(魯棒性)
測(cè)試的參數(shù)有DNN層數(shù)l,節(jié)點(diǎn)數(shù)N,展開的時(shí)間段(time stacks) τ。

可以看出層數(shù)越深,效果變好;節(jié)點(diǎn)數(shù)和時(shí)間段的影響就不是很大。
5. 總結(jié)
文章在DRL的基礎(chǔ)之上,用了模糊表達(dá)和多層神經(jīng)網(wǎng)絡(luò)來提取特征。DRl有別于建模值函數(shù),是一種從狀態(tài)到動(dòng)作的直接映射,且考慮了上一動(dòng)作和交易費(fèi)用在內(nèi),取得還不錯(cuò)的結(jié)果。
事實(shí)上,論文有些地方?jīng)]有講明白,比如動(dòng)作輸出是-1到1的連續(xù)值,而真正交易動(dòng)作是-1,0,1,作者沒有給出每個(gè)的范圍(可能在DRL論文有吧)。第二點(diǎn)就是BPTT中的紅線部分含義了,如果有人也讀了論文可以一起討論討論。
6. 想法
- 狀態(tài)表達(dá)方式;
- 對(duì)過去歷史的建立的模型,像LSTM這種長(zhǎng)短時(shí)記憶時(shí)序模型等;
- 上一動(dòng)作;
- 模糊表達(dá)這個(gè)也是有點(diǎn)意思的,不過文章中的方式我是不是很認(rèn)可的,感覺就是一個(gè)高斯激活函數(shù);
- 訓(xùn)練方法,用值函數(shù)形式;
- 多尺度:文中也用了幾小時(shí),幾天前數(shù)據(jù),也算是一種多尺度吧;
- 多模態(tài):結(jié)合多種其他市場(chǎng)行情;像交通預(yù)測(cè)中的股票embedding,得到不同股票間語(yǔ)義信息,比如相同行業(yè)間相關(guān)性是比較高的;股民情感分析;新聞文本數(shù)據(jù),事件;....
- GAN生成序列用于加強(qiáng)訓(xùn)練;
........暫時(shí)想到這么多,還是有挺多可以研究的地方。當(dāng)然了,這些是要一步一步做起的。

