增強(qiáng)學(xué)習(xí)于交易之DDR

增強(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),加了

  1. deep network來為市場(chǎng)狀態(tài)提取更深層的特征表達(dá);
  2. 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):

  1. 對(duì)市場(chǎng)環(huán)境狀態(tài)的表達(dá)(特征)。
  2. 根據(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í)方法。

DRL

策略


其中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á)

  1. 在drl的基礎(chǔ)上,用dnn來提取特征。
  2. 市場(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)初始化

  1. fuzzy: 使用k-means將數(shù)據(jù)聚為三類,分別算出均值和方差作為高斯函數(shù)的參數(shù)。
  2. dnn part: 這部分的初始化其實(shí)就是一個(gè)深度置信網(wǎng)絡(luò)dbn。使用三層結(jié)構(gòu),定義loss為
    公式
    從x重構(gòu)到x,訓(xùn)練完后把最后一層去掉,如隱藏層作為特征。重復(fù)n次。
  3. 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):


gradient of function Ut

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


BPTT

展開后對(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é)

最終,用偽代碼表示為:


algorithm

4. 實(shí)驗(yàn)

實(shí)驗(yàn)設(shè)置

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


prices

期貨的一些信息:


summary_of_contracts

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. 想法

  1. 狀態(tài)表達(dá)方式;
  2. 對(duì)過去歷史的建立的模型,像LSTM這種長(zhǎng)短時(shí)記憶時(shí)序模型等;
  3. 上一動(dòng)作;
  4. 模糊表達(dá)這個(gè)也是有點(diǎn)意思的,不過文章中的方式我是不是很認(rèn)可的,感覺就是一個(gè)高斯激活函數(shù);
  5. 訓(xùn)練方法,用值函數(shù)形式;
  6. 多尺度:文中也用了幾小時(shí),幾天前數(shù)據(jù),也算是一種多尺度吧;
  7. 多模態(tài):結(jié)合多種其他市場(chǎng)行情;像交通預(yù)測(cè)中的股票embedding,得到不同股票間語(yǔ)義信息,比如相同行業(yè)間相關(guān)性是比較高的;股民情感分析;新聞文本數(shù)據(jù),事件;....
  8. GAN生成序列用于加強(qiáng)訓(xùn)練;
    ........暫時(shí)想到這么多,還是有挺多可以研究的地方。當(dāng)然了,這些是要一步一步做起的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容