丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給楊曉凡
發(fā)送

0

能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

本文作者: 楊曉凡 2018-02-15 14:46
導(dǎo)語(yǔ):只要訓(xùn)練出好模型,既能發(fā)論文,又能掙外快

雷鋒網(wǎng) AI 科技評(píng)論按:人工智能熱潮還沒(méi)過(guò)去,電子貨幣和區(qū)塊鏈的熱潮又滾滾而來(lái)。以 BTC(比特幣)為代表的電子貨幣近半年來(lái)吸引了全世界的注意力,每個(gè)人都想在這個(gè)熱潮中分一杯羹 —— 只不過(guò),不是每個(gè)人都賺到錢了,尤其是經(jīng)驗(yàn)不足的投資者們。

那么問(wèn)題來(lái)了,現(xiàn)在人工智能技術(shù)也有了長(zhǎng)足進(jìn)步,連 AlphaGo 在打敗柯潔之后都還能繼續(xù)進(jìn)化,可以對(duì)圍棋無(wú)師自通,所以我們有沒(méi)有機(jī)會(huì)同樣用 AlphaGo 所用的強(qiáng)化學(xué)習(xí)(Reinforcement Learning)方法學(xué)習(xí)一個(gè)百戰(zhàn)百勝的電子貨幣人工智能呢?

斯坦福大學(xué)計(jì)算機(jī)系畢業(yè)生、曾在谷歌大腦團(tuán)隊(duì)研究機(jī)器翻譯、對(duì)話建模和總結(jié)的深度學(xué)習(xí)研究員 Denny Britz 近日就在一篇博客中發(fā)表了自己的觀點(diǎn)并介紹了相關(guān)入門知識(shí)。他認(rèn)為訓(xùn)練基于強(qiáng)化學(xué)習(xí)的交易人工智能不僅可行,而且還是一個(gè)非常有價(jià)值的研究課題。雷鋒網(wǎng) AI 科技評(píng)論把這篇博客全文翻譯如下。

能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

深度學(xué)習(xí)的學(xué)術(shù)研究人員們一直以來(lái)都和金融投資市場(chǎng)保持了相當(dāng)?shù)木嚯x。這可能是由于金融界的名聲不好,或者是這個(gè)問(wèn)題從研究的角度來(lái)看不夠有趣,也可能是因?yàn)楂@得數(shù)據(jù)太貴太困難。

我會(huì)在這篇文章中論證這個(gè)觀點(diǎn):訓(xùn)練一個(gè)強(qiáng)化學(xué)習(xí)智能體在金融(以及加密貨幣)市場(chǎng)中交易也可以是一個(gè)非常有意思的研究課題。我覺(jué)得學(xué)術(shù)研究界并沒(méi)有給這個(gè)問(wèn)題給予足夠的重視,但其實(shí)這個(gè)問(wèn)題有潛力推動(dòng)許多相關(guān)領(lǐng)域的技術(shù)發(fā)展。這個(gè)問(wèn)題和訓(xùn)練 DotA 之類的多玩家游戲智能體很像,其它類似的問(wèn)題也還有很多。不過(guò)由于之前對(duì)投資交易沒(méi)有任何理解,我自己做這個(gè)項(xiàng)目花了好幾個(gè)月的時(shí)間。

請(qǐng)注意,我要研究的問(wèn)題并不是「用深度學(xué)習(xí)預(yù)測(cè)價(jià)格」。所以如果你想看這方面的示例代碼和模型的話恐怕要失望了。我想從更高的層次仔細(xì)聊聊為什么用機(jī)器學(xué)習(xí)的方法學(xué)習(xí)交易很困難,以及我覺(jué)得強(qiáng)化學(xué)習(xí)可以完美替代哪一部分。如果大家對(duì)這個(gè)問(wèn)題的興趣足夠濃厚,我可能未來(lái)會(huì)再發(fā)一篇文章介紹一些實(shí)證例子。

我估計(jì)這篇文章的大多數(shù)讀者都沒(méi)有什么投資交易經(jīng)驗(yàn),就像我當(dāng)時(shí)也是從頭學(xué)起一樣,所以我會(huì)首先介紹一些基本情況。這篇文章中我會(huì)以加密貨幣交易作為例子來(lái)分析,不過(guò)這一套想法同樣適用于大多數(shù)的其它金融市場(chǎng)。我選擇加密貨幣的理由是因?yàn)閿?shù)據(jù)是免費(fèi)的、公開(kāi)的、便于獲得,而且每個(gè)人都可以參與交易。在其它金融市場(chǎng)進(jìn)行交易的門檻要高一些,獲取數(shù)據(jù)也要貴一些。

加密貨幣交易市場(chǎng)的基本微觀結(jié)構(gòu)

加密貨幣市場(chǎng)(以及大多數(shù)金融市場(chǎng))的交易都是以我們稱作「帶有開(kāi)放式掛單列表的連續(xù)雙重拍賣」的方式在交易平臺(tái)上內(nèi)進(jìn)行的。這種說(shuō)法有點(diǎn)生硬,其實(shí)就是說(shuō)這里有買家和賣家,經(jīng)過(guò)交易平臺(tái)撮合之后他們就可以相互交易了。加密貨幣的交易平臺(tái)已經(jīng)有好幾十個(gè),每個(gè)交易平臺(tái)支持的幣種都有所不同。不過(guò)從界面和提供的數(shù)據(jù)角度來(lái)看,都是大同小異。

我們來(lái)看看 GDAX,這是美國(guó)開(kāi)設(shè)的交易平臺(tái)里最熱門的之一。假設(shè)你要交易的是「BTC-美元」交易對(duì)(用美元換比特幣),那么進(jìn)入交易界面以后,你看到的大概是這樣的畫(huà)面。

能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

頁(yè)面上提供了很多信息,我們從基礎(chǔ)的開(kāi)始一項(xiàng)項(xiàng)看。

價(jià)格走勢(shì)圖(中央)

能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

圖中給出的當(dāng)前價(jià)格是來(lái)自于最近完成的交易的。根據(jù)最近發(fā)生的交易是買入還是賣出,這個(gè)價(jià)格會(huì)不斷變化。價(jià)格走勢(shì)圖通常會(huì)以 K 線圖的方式來(lái)顯示,其中的每一條紅色或者綠色的豎線就表示了那個(gè)時(shí)間段的開(kāi)盤價(jià)、最高價(jià)、最低價(jià)、以及收盤價(jià)。在上面這張圖中,每一條豎線的時(shí)間段是 1 個(gè)小時(shí),不過(guò)這個(gè)長(zhǎng)短也可以自由選擇。價(jià)格線下方的柱狀線表示成交量,表示的是對(duì)應(yīng)時(shí)間段內(nèi)發(fā)生的所有交易的總量為多少。成交量也是一個(gè)重要指標(biāo),因?yàn)樗梢泽w現(xiàn)出市場(chǎng)的流動(dòng)性。比如假設(shè)你想買十萬(wàn)美元的比特幣,但是沒(méi)有人愿意賣,那市場(chǎng)的流動(dòng)性就非常差;也就是說(shuō)你買不到。高成交量表示很多人都愿意參與交易,同時(shí)也就代表著你可以在愿意的時(shí)候隨時(shí)進(jìn)行買賣??傮w來(lái)講,當(dāng)你越想投資很多錢的時(shí)候,你就越希望看到很高的成交量。成交量同時(shí)也體現(xiàn)了價(jià)格趨勢(shì)的「質(zhì)量」。高成交量下的價(jià)格趨勢(shì)變化要比低成交量下的價(jià)格趨勢(shì)變化更可靠。大多數(shù)時(shí)候,高成交量表示市場(chǎng)內(nèi)的相當(dāng)多參與者之間達(dá)成了共識(shí)(也有例外的情況,比如當(dāng)存在市場(chǎng)操控行為的時(shí)候)。

交易歷史(右側(cè))


能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

右側(cè)的列表顯示了所有近期完成的交易。每個(gè)交易都有成交量、價(jià)格、時(shí)間戳以及方向(買入還是賣出)。交易是掛單者和吃單者之間匹配完成的。下面還會(huì)詳細(xì)解釋。

掛單列表(左側(cè))


能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

頁(yè)面左側(cè)的這個(gè)就是掛單列表了,里面的信息就是誰(shuí)想要在什么價(jià)格買入或者賣出多少。掛單列表分為了兩個(gè)部分,買單(bids)以及賣單(asks)。根據(jù)交易規(guī)則,賣一價(jià)(best ask)是所有當(dāng)前交易者里愿意賣出的最低價(jià),它需要高于所有當(dāng)前交易者里愿意買入的最高價(jià),即買一價(jià)(best bid)。如果新增加的買單價(jià)格高于賣一價(jià),那么這筆交易就會(huì)立即成交;如果新增加的賣單價(jià)格低于買一價(jià),同樣會(huì)立即成交。

每一筆掛單都有自己的價(jià)格和數(shù)量,比如圖中賣一是數(shù)量為 0.012、價(jià)格為 7886.98 的賣單,意味著你可以從這位交易者手上以 $7886.98 的價(jià)格買到 0.012 個(gè) BTC。而如果你想要買的數(shù)量超過(guò) 0.012 個(gè) BTC,你就還需要從列表中更高一位、報(bào)價(jià)更高的賣家手里再買入一部分。成交之后的賣單就會(huì)從掛單列表里消失,直到新增的賣單或者新增的買單補(bǔ)充了被剛才的交易清空的價(jià)位。換句話說(shuō),當(dāng)你買入或者賣出的時(shí)候,你實(shí)際上就改變了掛單列表里的買賣單分布。如果你買入或者賣出的量足夠大,你可能就會(huì)大幅改變掛單列表的狀況,并且影響到當(dāng)前價(jià)格。

另外值得注意的是,你實(shí)際付出的錢要多于「數(shù)量 x 價(jià)格」,GDAX 對(duì)每筆交易收取 0.3% 的手續(xù)費(fèi),在整個(gè)金融市場(chǎng)中都算是比較高的,其它多數(shù)加密貨幣交易平臺(tái)通常是在 0.1% 到 0% 之間。

更多細(xì)節(jié)信息以及操作指導(dǎo)可以搜索或者在交易平臺(tái)體驗(yàn)一下,這里就不介紹更多了。

數(shù)據(jù)

我這篇文章選擇研究加密貨幣的主要原因就是因?yàn)閿?shù)據(jù)是公開(kāi)、免費(fèi)、便于獲取的。多數(shù)交易平臺(tái)都支持流傳輸 API,可以實(shí)時(shí)獲取交易平臺(tái)的數(shù)據(jù)更新。在這里繼續(xù)用 GDAX 作為例子獲取數(shù)據(jù),不過(guò)其實(shí)其它交易平臺(tái)的數(shù)據(jù)也差不多。我們從頭開(kāi)始做一下構(gòu)建機(jī)器學(xué)習(xí)模型需要的各個(gè)基本步驟。

交易 - Trade

假定一筆交易剛剛發(fā)生了。每筆交易的信息里都包含時(shí)間戳、交易平臺(tái)給定的唯一交易 ID、價(jià)格、成交量以及方向。如果想要根據(jù)交易信息做出 K 線圖的話,設(shè)定一個(gè)時(shí)間窗口,然后統(tǒng)計(jì)每個(gè)時(shí)間窗口內(nèi)的開(kāi)盤價(jià)、最高價(jià)、最低價(jià)、以及收盤價(jià),再把它們畫(huà)出來(lái)就好了。

{
   "time": "2014-11-07T22:19:28.578544Z",
   "trade_id": 74,
   "price": "10.00000000",
   "size": "0.01000000",
   "side": "buy"
}

掛單列表更新 - BookUpdate

假定掛單列表里的掛單更新了。每個(gè)掛單的信息都包含方向、價(jià)格以及這個(gè)價(jià)格的數(shù)量。注意這樣獲取到的數(shù)據(jù)只是掛單列表發(fā)生了變化的那一部分,要獲取整個(gè)掛單列表的話還需要自己進(jìn)行合并。

{
   "type": "l2update",
   "product_id": "BTC-USD",
   "changes": [
       ["buy", "10000.00", "3"],
       ["sell", "10000.03", "1"],
       ["sell", "10000.04", "2"],
       ["sell", "10000.07", "0"]
   ]
}

掛單列表快照 - BookSnapshot

這和掛單列表更新類似,不過(guò)這是整個(gè)掛單列表。由于完成的掛單列表會(huì)很大,獲取一次完成列表之后都使用掛單列表更新會(huì)更快、更有效率。不過(guò)偶爾用一下整個(gè)掛單列表也還是很有用的。

{
   "type": "snapshot",
   "product_id": "BTC-EUR",
   "bids": [["10000.00", "2"]],
   "asks": [["10000.02", "3"]]
}

關(guān)于市場(chǎng)數(shù)據(jù),差不多知道這么多就夠了。以上這幾個(gè)事件獲取到的數(shù)據(jù)流也就是 GDAX 的網(wǎng)頁(yè)用戶界面上的所有信息。

幾個(gè)交易指標(biāo)

在開(kāi)發(fā)交易算法的時(shí)候,要以什么作為優(yōu)化目標(biāo)呢?一個(gè)很明顯的答案自然是「盈利」,但其實(shí)故事并沒(méi)有這么簡(jiǎn)單。你不僅需要把你的交易策略和基準(zhǔn)線對(duì)比,而且你還需要評(píng)估它相比其它投資方式的風(fēng)險(xiǎn)和穩(wěn)定性。下面我會(huì)簡(jiǎn)單列舉幾個(gè)交易者們最常用的基本指標(biāo)。

凈利潤(rùn)/凈損失 Net PnL

一段時(shí)間內(nèi)算法賺到多少錢(正值)或者賠了多少錢(負(fù)值)的直接計(jì)算,另外還要記得扣除手續(xù)費(fèi)。

Alpha & Beta

Alpha 形容的是,相比另一種風(fēng)險(xiǎn)相對(duì)更小的投資方式,比如國(guó)債,這項(xiàng)投資的收益率能高出高多少。比如,相比國(guó)債的 Alpha 是 1%,就意味著在同一段時(shí)間內(nèi)的收益率高出國(guó)債 1%。Beta 也與此相關(guān),它形容的是你的投資策略相比整個(gè)市場(chǎng)的不穩(wěn)定性有多大。比如 Beta 為 0.5 就代表,當(dāng)整個(gè)市場(chǎng)的價(jià)格增加 $2 時(shí),你的投資收益為 $1。

夏普比率 Sharpe Ratio

夏普比率代表著每一份增加的風(fēng)險(xiǎn)所能帶來(lái)的收益的多少,比如每增加 1% 的風(fēng)險(xiǎn),增加的收益是 2% 還是 3%,顯然越大越好。它的計(jì)算過(guò)程不僅考慮到了策略的不穩(wěn)定性,而且也考慮到了轉(zhuǎn)向其它風(fēng)險(xiǎn)更低的投資方式的可能性。

最大跌幅 Maximum Drawdown

最大跌幅形容的是一個(gè)局部極大值和緊接著的局部極小值之間的差距,是另一個(gè)針對(duì)風(fēng)險(xiǎn)的指標(biāo)。比如,最大跌幅為 50% 的策略意味著某個(gè)時(shí)候你有可能會(huì)損失 50% 的資金。那么接下來(lái)你的資金要翻一倍才能補(bǔ)回原來(lái)的數(shù)目。顯然,最大跌幅同樣是越小越好。

風(fēng)險(xiǎn)價(jià)值 Value at Risk

風(fēng)險(xiǎn)價(jià)值也是一個(gè)偏向于風(fēng)險(xiǎn)的指標(biāo),假定市場(chǎng)運(yùn)行正常的話,它在嘗試量化在給定的時(shí)間窗口內(nèi)損失一定資金的概率如何。比如,「1天 - 5% - 10% 的 VaR」代表一天之內(nèi)有 5% 的可能性在投資中損失超過(guò) 10%。

監(jiān)督學(xué)習(xí)

在從強(qiáng)化學(xué)習(xí)的角度研究這個(gè)問(wèn)題之前,我們先看看用監(jiān)督學(xué)習(xí)的方式創(chuàng)建一個(gè)能盈利的交易算法會(huì)是什么樣的。我們也就會(huì)看到這樣做有什么問(wèn)題,以及為什么我們會(huì)需要強(qiáng)化學(xué)習(xí)的方法。

最明顯的一種解決方案就是預(yù)測(cè)價(jià)格。如果我們能預(yù)測(cè)市場(chǎng)價(jià)格會(huì)漲還是會(huì)跌,那么只要低買高賣就好了。然而,這種思路有幾個(gè)問(wèn)題。

首先,我們到底要預(yù)測(cè)什么價(jià)格?正如前文對(duì)掛單列表的分析所說(shuō),買賣的時(shí)候其實(shí)并不是針對(duì)單個(gè)價(jià)格的。最終付出的價(jià)格要看掛單列表里的掛單量,以及所付的手續(xù)費(fèi)。簡(jiǎn)單直接的做法自然是預(yù)測(cè)價(jià)格中點(diǎn),即買一和賣一價(jià)格的平均數(shù)。這也是多數(shù)研究者的做法。然而,這個(gè)價(jià)格只是一個(gè)理論價(jià)格,并不是一個(gè)可以真的進(jìn)行交易的價(jià)格,而且很可能和真實(shí)交易時(shí)的實(shí)際價(jià)格相去甚遠(yuǎn)。

下一個(gè)問(wèn)題是時(shí)間間隔。我們要預(yù)測(cè)的價(jià)格是下一筆交易的、下一秒的、下一分鐘的、下一小時(shí)的還是下一天的??jī)H憑直覺(jué)來(lái)看,要預(yù)測(cè)價(jià)格的時(shí)間點(diǎn)距離當(dāng)前越遠(yuǎn),預(yù)測(cè)結(jié)果的不確定性就越高,預(yù)測(cè)問(wèn)題的難度也就越高。

下面舉個(gè)例子。假設(shè)當(dāng)前比特幣價(jià)格是 $10,000,然后我們準(zhǔn)確地預(yù)測(cè)了一分鐘之后價(jià)格會(huì)上漲到 $10,050。那么這代表著我們可以從這次低買高賣中賺到 $50 嗎?我們分析看看。

  • 當(dāng)我們買入的時(shí)候,賣一價(jià)是  $10,000。大多數(shù)情況下我們可能沒(méi)法以 $10,000 的價(jià)格買到全部的 1.0 BTC,因?yàn)閽靻瘟斜砝镆话悴粫?huì)有足夠的量。很可能我們不得不在 $10,000 買到 0.5BTC,在 $10,010 買到另外 0.5BTC,平均價(jià)格為 $10,005。在 GDAX 上我們還要支付 0.3% 的手續(xù)費(fèi),這差不多是 $30。

  • 一分鐘過(guò)去了,價(jià)格漲到了 $10,050 了?,F(xiàn)在我們要賣出,然而市場(chǎng)變化速度很快,很可能當(dāng)我們下單的時(shí)候價(jià)格又變了。假設(shè)現(xiàn)在是 $10,045 吧,然后和買入的時(shí)候類似,我們很可能沒(méi)辦法在這個(gè)價(jià)格賣出全部的 1.0BTC,不得不在 $10,045 賣出 0.5BTC,然后在 $10,040 賣出另外 0.5BTC,平均價(jià)格 $10,042.5。然后還有 0.3% 的手續(xù)費(fèi),差不多也是 $30。

那么,這一筆交易賺了多少錢呢?-10005 - 30 - 30 + 10,042.5 = -$22.5。結(jié)果是并沒(méi)有賺到錢,雖然我們成功預(yù)測(cè)了價(jià)格上漲,但我們反而賠了 $22.5。上面的這個(gè)例子就顯示出了實(shí)際操作中會(huì)遇到的三個(gè)問(wèn)題:賣一價(jià)/買一價(jià)的流動(dòng)性不夠,網(wǎng)絡(luò)延遲,以及手續(xù)費(fèi),這三件事都不是監(jiān)督學(xué)習(xí)模型可以處理得了的。

從這里我們能學(xué)到什么呢?要憑借一個(gè)簡(jiǎn)單的價(jià)格預(yù)測(cè)策略就掙錢,我們就需要在更長(zhǎng)的時(shí)間內(nèi)預(yù)測(cè)相對(duì)大幅度的價(jià)格變化,或者非常精細(xì)地處理手續(xù)費(fèi)和掛單。時(shí)間一旦變長(zhǎng),預(yù)測(cè)就變成了一個(gè)很難的問(wèn)題;處理手續(xù)費(fèi)和掛單也還需要單獨(dú)構(gòu)建一個(gè)復(fù)雜的系統(tǒng)來(lái)處理。

監(jiān)督學(xué)習(xí)的方法還有一個(gè)大問(wèn)題,就是沒(méi)法從它里面推導(dǎo)出一個(gè)策略。在上面的例子里,我們買入是因?yàn)轭A(yù)測(cè)到價(jià)格會(huì)上漲,而且也確實(shí)上漲了,一切都基本按照計(jì)劃進(jìn)行。可是如果價(jià)格是下降的怎么辦,那就賣出嗎?還是繼續(xù)持有等待?假如價(jià)格又小幅上漲了一點(diǎn)點(diǎn)然后繼續(xù)下降了怎么辦?以及如果我們對(duì)預(yù)測(cè)的結(jié)果不那么確定,認(rèn)為 65% 的可能性漲、35% 的可能性跌,那么還要買入嗎?如何設(shè)定是否下單的閾值?

所以,如果要以監(jiān)督學(xué)習(xí)的方式解決,僅僅一個(gè)預(yù)測(cè)模型是完全不夠的(除非你的模型非常準(zhǔn)確、非常魯棒)。我們還需要一個(gè)基于規(guī)則的策略模型,把價(jià)格預(yù)測(cè)的結(jié)果作為數(shù)據(jù),決定具體要怎么做。那么這個(gè)策略又要從何而來(lái)呢?如何優(yōu)化策略的參數(shù)和做決定的閾值?這幾個(gè)問(wèn)題都不那么好解決,很多人會(huì)用簡(jiǎn)單的啟發(fā)式方法,又或者直接憑人的直覺(jué)設(shè)定。

典型的策略設(shè)計(jì)工作流程

幸運(yùn)的是,以上的許多問(wèn)題都有解決方案。然而壞消息也有,就是這些方案并不怎么高效。我們來(lái)看看交易策略開(kāi)發(fā)的典型工作流程,大概長(zhǎng)下面這樣:

能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

  1. 數(shù)據(jù)分析:對(duì)數(shù)據(jù)進(jìn)行探索性的分析,嘗試找到交易機(jī)會(huì)。你可能要看許多不同的圖表、計(jì)算統(tǒng)計(jì)數(shù)據(jù)等等。這一步的輸出是一個(gè)交易策略的「理念」,而且等待驗(yàn)證。

  2. 監(jiān)督學(xué)習(xí)模型訓(xùn)練:如果有必要的話,你可能要訓(xùn)練一個(gè)到多個(gè)監(jiān)督學(xué)習(xí)模型用來(lái)預(yù)測(cè)能支撐你的交易策略發(fā)揮作用的數(shù)據(jù)點(diǎn)位。比如價(jià)格預(yù)測(cè)、交易量預(yù)測(cè)等等。

  3. 策略開(kāi)發(fā):你需要嘗試寫一個(gè)基于規(guī)則的策略,根據(jù)市場(chǎng)的當(dāng)前狀況和監(jiān)督學(xué)習(xí)模型的預(yù)測(cè)決定采取什么動(dòng)作。請(qǐng)注意,這個(gè)策略也會(huì)包含一些參數(shù),比如決定閾值,這也需要通過(guò)優(yōu)化學(xué)習(xí),只不過(guò)可以稍后再做。

  4. 策略內(nèi)部測(cè)試:在模擬器中根據(jù)歷史數(shù)據(jù)測(cè)試交易策略的初始版本。模擬器中可以包含掛單列表流動(dòng)性、網(wǎng)絡(luò)延遲、手續(xù)費(fèi)等等因素。如果策略在模擬器中的表現(xiàn)還不錯(cuò),那么你就可以進(jìn)行下一步的參數(shù)優(yōu)化。

  5. 參數(shù)優(yōu)化:你可以用網(wǎng)格搜索這樣的搜索方法,嘗試策略中的參數(shù)的不同的值,比如閾值、相關(guān)系數(shù)等等,同樣在模擬器和歷史數(shù)據(jù)上進(jìn)行測(cè)試。注意,如果對(duì)歷史數(shù)據(jù)擬合了會(huì)造成很大的風(fēng)險(xiǎn),準(zhǔn)備驗(yàn)證數(shù)據(jù)集和測(cè)試數(shù)據(jù)集的時(shí)候一定要小心。

  6. 模擬運(yùn)行以及紙面交易:在真的讓交易策略上線運(yùn)行之前,在本地根據(jù)實(shí)時(shí)獲取的新市場(chǎng)數(shù)據(jù)進(jìn)行新一輪模擬。這叫做紙面交易,可以幫助防止過(guò)擬合。直到交易策略在紙面交易中的表現(xiàn)很好之前,都不要急于讓它上線進(jìn)行真正的交易。

  7. 上線交易:確認(rèn)沒(méi)有問(wèn)題后,用 API 把交易平臺(tái)和策略連接起來(lái),開(kāi)始真實(shí)的買入賣出。

這是一個(gè)非常復(fù)雜的過(guò)程。根據(jù)不同的機(jī)構(gòu)或者研究人員,這個(gè)流程可能會(huì)稍有不同,但是交易策略開(kāi)發(fā)基本上就是按照這個(gè)順序做下來(lái)的。那么,為什么我認(rèn)為這個(gè)過(guò)程效率很低呢?原因有下面幾個(gè):

  • 迭代周期很長(zhǎng)。第一步到第三步很大程度依靠的是做事的人自己的直覺(jué),直到做到第四步、第五步你才會(huì)知道自己想的策略效果如何,然后很有可能會(huì)導(dǎo)致你推倒重來(lái)。實(shí)際上,這里每一步都有失敗的風(fēng)險(xiǎn),逼得你不得不從頭開(kāi)始。

  • 模擬測(cè)試的步驟太靠后了。直到第四步模擬的時(shí)候你才開(kāi)始顯式地考慮延遲、交易費(fèi)用、流動(dòng)性之類的環(huán)境因素??墒请y道這些因素不應(yīng)該在一開(kāi)始設(shè)計(jì)策略的時(shí)候就考慮在內(nèi),或者直接作為模型參數(shù)的一部分么?

  • 交易策略和監(jiān)督學(xué)習(xí)模型是分別獨(dú)立設(shè)計(jì)的,然而實(shí)際上它們之間是需要緊密協(xié)作的。既然監(jiān)督學(xué)習(xí)模型的輸出需要作為策略的輸入,那么聯(lián)合優(yōu)化它們兩者不是更好么?

  • 交易策略很可能會(huì)太簡(jiǎn)單。人類所能想到、能明確描述的東西太有限了。

  • 參數(shù)優(yōu)化過(guò)程效率太低。比如說(shuō),我們假設(shè)你優(yōu)化的目標(biāo)是收益和風(fēng)險(xiǎn)的綜合值,然后你希望優(yōu)化找到一組能帶來(lái)最高的夏普比率的參數(shù)。相比于高效的基于梯度的方法,你這里只能用低效的網(wǎng)格搜索,然后希望運(yùn)氣好可以試到好的參數(shù)(同時(shí)還不要過(guò)擬合)。

那么,下面我們就看看強(qiáng)化學(xué)習(xí)能如何應(yīng)對(duì)上面的大多數(shù)問(wèn)題。

用于交易的強(qiáng)化學(xué)習(xí)模型

我們首先回憶一下,傳統(tǒng)的強(qiáng)化學(xué)習(xí)問(wèn)題可以用馬爾可夫決策過(guò)程(MDP)描述。首先我們有一個(gè)在環(huán)境中做出行動(dòng)的智能體,在第 t 步時(shí)智能體把環(huán)境的目前狀態(tài) St 作為自己的輸入,然后做出行為 At;接著在 t+1 步中接收到反饋 Rt+1 以及更新的環(huán)境狀態(tài) St+1。智能體根據(jù)某個(gè)策略 π:At = π(St) 選擇自己的行為。那么我們的目標(biāo)就是找到一個(gè)能夠在某個(gè)有限或者無(wú)限長(zhǎng)的時(shí)間內(nèi)最大化累積反饋 ∑Rt 的策略。

能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

下面我們看看這些符號(hào)在交易環(huán)境下都分別對(duì)應(yīng)什么。

智能體

從最簡(jiǎn)單的開(kāi)始。這個(gè)智能體就是我們的交易智能體。你可以把智能體看作是一個(gè)仿人類的交易者,它會(huì)打開(kāi)交易所,看著交易平臺(tái)的用戶界面,然后根據(jù)交易平臺(tái)的目前狀態(tài)和自己賬戶里的資金做出交易決定。

環(huán)境

這里開(kāi)始有一點(diǎn)麻煩。顯然我們會(huì)認(rèn)為交易平臺(tái)就是我們的環(huán)境。不過(guò)有一點(diǎn)值得注意的是,同一個(gè)交易平臺(tái)上還有很多別的智能體,有人類,也有一些基于算法的自動(dòng)交易程序。假設(shè)某個(gè)時(shí)刻我們以分鐘為級(jí)別做出行動(dòng),那么就是做出一個(gè)行動(dòng),等待一分鐘,獲得一個(gè)新的環(huán)境狀態(tài),再做出一個(gè)行動(dòng),周而復(fù)始。當(dāng)我們觀察到了一個(gè)新的狀態(tài)之后,就會(huì)把它看作是市場(chǎng)環(huán)境的響應(yīng),其中當(dāng)然也包含了其它參與者的響應(yīng)。那么從我們的智能體的角度出發(fā)的話,別的這些參與者也同樣是環(huán)境的一部分,而且還不受我們的控制。

然而,如果把其它的市場(chǎng)參與者(智能體)看作是整個(gè)大的、復(fù)雜的環(huán)境的一部分的話,我們就失去了顯式地對(duì)它們建模的機(jī)會(huì)。比如,想象我們學(xué)習(xí)到了如何對(duì)其它市場(chǎng)上運(yùn)行的算法和交易策略做反向工程,然后嘗試?yán)盟鼈儯@將是一件多么美妙的事情啊。假如這樣做的話,我們就來(lái)到了一個(gè)多智能體強(qiáng)化學(xué)習(xí)問(wèn)題的環(huán)境下,這正是一個(gè)熱門的研究領(lǐng)域;我稍后還會(huì)多說(shuō)一點(diǎn)。不過(guò)目前,簡(jiǎn)單起見(jiàn),就先假設(shè)不考慮這部分,就認(rèn)為我們就是在單個(gè)的、包含了所有其它智能體的行為的復(fù)雜環(huán)境里面。

狀態(tài)

對(duì)于在交易平臺(tái)做交易來(lái)說(shuō),我們觀測(cè)到的并不是環(huán)境的完整狀態(tài)。比如,我們并沒(méi)有辦法識(shí)別環(huán)境中的其它的智能體、它們的數(shù)量如何、每個(gè)人各自有多少賬戶余額、各自有多少掛單之類的。這也意味著,我們要處理的是一個(gè)部分可觀察的馬爾可夫決策過(guò)程(POMDP)。智能體觀察到的并不是環(huán)境的真實(shí)狀態(tài)St,而是這個(gè)狀態(tài)的一部分衍生值。我們就把它稱作觀測(cè)值 Xt,它由全狀態(tài)的某個(gè)函數(shù) Xt ~ O(St) 計(jì)算得到。

在我們這個(gè)問(wèn)題中,每一個(gè)時(shí)間步驟 t 中的觀測(cè)值僅僅是截至到 t 的所有交易平臺(tái)發(fā)生的事件的歷史(參見(jiàn)前文「數(shù)據(jù)」小節(jié))。這個(gè)事件歷史可以用來(lái)構(gòu)建當(dāng)前的交易狀態(tài)。不過(guò),為了讓智能體能夠做出決策,還有一些其它的數(shù)據(jù)也應(yīng)當(dāng)包括在觀測(cè)值之內(nèi),比如當(dāng)前的賬戶余額、當(dāng)前的掛單列表,等等。

時(shí)間尺度

我們也需要決定智能體的行動(dòng)應(yīng)該在怎么樣的時(shí)間尺度上做出。每天、每小時(shí)、每分鐘、每秒、每毫秒,甚至可變時(shí)間尺度?這些不同的選擇就各自需要不同的方法。如果買入一種資產(chǎn),持有它數(shù)天、數(shù)周甚至數(shù)月,基本上就可以認(rèn)為這是長(zhǎng)期投資,基于的分析是類似「比特幣未來(lái)會(huì)成功嗎」這樣的問(wèn)題的。通常情況下,這類投資決定都是根據(jù)外部事件、新聞,以及對(duì)這種資產(chǎn)的價(jià)值和潛力的基本認(rèn)識(shí)做出的。那么這類分析基本上也就需要對(duì)整個(gè)世界的運(yùn)轉(zhuǎn)規(guī)律有相當(dāng)?shù)恼J(rèn)識(shí),很難自動(dòng)化地使用機(jī)器學(xué)習(xí)方法。在另一個(gè)極端上,我們也知道有高頻交易(HFT)這樣的技術(shù),所有交易決定幾乎全部依賴于市場(chǎng)本身的微觀結(jié)構(gòu)信號(hào)。這些決定需要在納秒尺度上做出,運(yùn)行在 FPGA 硬件上的算法簡(jiǎn)單但是極為快速,掛單交易信息通過(guò)專門設(shè)立的線路連接并發(fā)送到交易平臺(tái)。

從另一個(gè)角度上,可以把時(shí)間尺度看作是「人性」的體現(xiàn),長(zhǎng)期投資和高頻交易就分別在坐標(biāo)的兩端。前者需要總體視角、需要對(duì)世界的運(yùn)行規(guī)律有了解、需要人類的直覺(jué)和高層次分析,后者的全部奧妙則在于簡(jiǎn)單但是極為高速的模式識(shí)別。

神經(jīng)網(wǎng)絡(luò)流行的原因之一就是因?yàn)?,提供了許多數(shù)據(jù)之后可以學(xué)到比線性回歸或者樸素貝葉斯復(fù)雜得多的數(shù)據(jù)表征。然而神經(jīng)網(wǎng)絡(luò)的速度要相對(duì)慢一些,沒(méi)法在納秒級(jí)的速度上做出預(yù)測(cè),從而也就沒(méi)法和高頻交易算法的速度競(jìng)爭(zhēng)。所以我認(rèn)為神經(jīng)網(wǎng)絡(luò)發(fā)揮作用的甜點(diǎn)應(yīng)當(dāng)就在這兩個(gè)極端當(dāng)中的某處。我們希望選擇這樣一個(gè)時(shí)間尺度:在這個(gè)時(shí)間尺度上它分析判斷數(shù)據(jù)可以比人類更快,但同時(shí)也足夠聰明,可以勝過(guò)那些「快但是簡(jiǎn)單」的算法。我的猜測(cè),僅僅是個(gè)人猜測(cè),就是神經(jīng)網(wǎng)絡(luò)做出行動(dòng)的理想時(shí)間尺度應(yīng)當(dāng)是在幾毫秒到幾分鐘之間。人類交易者也可以在這些時(shí)間尺度上做出行動(dòng),但是不見(jiàn)得會(huì)比算法塊。而且綜合分析這同一段時(shí)間內(nèi)的信息的速度也顯然是人類不如算法。那這就是算法的優(yōu)勢(shì)。

另一個(gè)基于相對(duì)短的時(shí)間尺度做行動(dòng)的原因是因?yàn)榭赡軙?huì)讓數(shù)據(jù)中的模式顯得更明顯。比如,多數(shù)人類交易者觀察的都是完全一樣的(提供了有限信息的)圖形化用戶界面,有些人也會(huì)看預(yù)定義的行情分析信號(hào)(比如 MACD),那么他們的行動(dòng)就會(huì)受限于這些信號(hào)中體現(xiàn)的信息,最終表現(xiàn)為某些規(guī)律性的行為模式。類似地,交易平臺(tái)中的自動(dòng)化交易算法也是基于某些模式運(yùn)行的。我們就希望強(qiáng)化學(xué)習(xí)算法可以發(fā)現(xiàn)這些模式、利用這些模式。

值得注意的是,我們也可以根據(jù)不同的信號(hào)觸發(fā),在多個(gè)不同的時(shí)間尺度上做出行動(dòng)。比如我們可以選擇一旦市場(chǎng)上出現(xiàn)了大額交易就做出動(dòng)作。這樣的事件觸發(fā)的智能體也可以根據(jù)觸發(fā)事件的頻率總體對(duì)應(yīng)某些時(shí)間尺度。

行為空間

在強(qiáng)化學(xué)習(xí)中,我們會(huì)針對(duì)離散(有限)和連續(xù)(無(wú)限)行為空間做出區(qū)分。根據(jù)我們希望智能體達(dá)到的復(fù)雜程度,可以有多種不同的選擇。最簡(jiǎn)單的方法就是設(shè)定三種行為:買入,持有,賣出。這樣也不是不行,但是這會(huì)限制模型在每一步中決定資金金額的能力。如果把復(fù)雜程度升級(jí),下一步需要做的就是讓智能體學(xué)會(huì)要投資多少錢,比如根據(jù)模型預(yù)估的不確定性決定不同的投資金額。這樣就會(huì)讓我們來(lái)到連續(xù)行為空間,因?yàn)槲覀冃枰瑫r(shí)決定行為(離散的)和數(shù)量(連續(xù)的)。更復(fù)雜的狀況是,讓我們的智能體學(xué)會(huì)下限價(jià)單。在這種情況下智能體要同時(shí)決定掛單價(jià)格和掛單數(shù)量,兩者都是連續(xù)數(shù)值。它也還需要有撤銷沒(méi)有成交的限價(jià)單的能力。

反饋函數(shù)

這又是一項(xiàng)很復(fù)雜的東西??蛇x的反饋函數(shù)有很多種。很容易想到的是已實(shí)現(xiàn)盈虧。每當(dāng)智能體結(jié)束一個(gè)倉(cāng)位的操作(比如賣出了之前買入的資產(chǎn),或者買入了之前借出的資產(chǎn))之后就會(huì)獲得一次反饋。這輪交易的凈收益可以是正值,也可以是負(fù)值,就把它作為我們要的反饋信號(hào)。隨著智能體學(xué)習(xí)最大化累積反饋值,它就逐漸學(xué)習(xí)了如何在交易中盈利。技術(shù)上說(shuō)這個(gè)反饋函數(shù)是正確的,而且在這個(gè)限定范圍之內(nèi)可以學(xué)出最優(yōu)策略。然而,和什么都不做相比(這將是大多數(shù)時(shí)候的智能體行為),買入和賣出的行動(dòng)數(shù)量都很少,反饋會(huì)很稀疏。所以,理想的智能體應(yīng)當(dāng)不需要頻繁地接收到反饋信號(hào)也能學(xué)習(xí)。

相比頻繁接收反饋信號(hào)的一種替代方案是未實(shí)現(xiàn)盈虧,就是指,雖然智能體當(dāng)前還沒(méi)有結(jié)束所有倉(cāng)位的操作,但是如果立即就結(jié)束的話會(huì)獲得多少利潤(rùn)。比如,當(dāng)智能體買入之后價(jià)格就開(kāi)始下跌的話,即便還沒(méi)賣出(實(shí)現(xiàn)負(fù)利潤(rùn)),智能體也會(huì)獲得負(fù)的反饋值。由于每個(gè)時(shí)間步驟上未實(shí)現(xiàn)盈虧都會(huì)發(fā)生變化,它就可以作為頻繁的反饋信號(hào)。然而,這種直接的反饋和延遲衰減函數(shù)結(jié)合使用的時(shí)候也可能會(huì)讓智能體偏向于短期的操作。

這兩種反饋函數(shù)都是針對(duì)利潤(rùn)的樸素直接的優(yōu)化。而實(shí)際交易中,交易者可能還希望最小化風(fēng)險(xiǎn)。假設(shè)策略 A 有稍低的回報(bào)和顯著更低的波動(dòng)性,而策略 B 的回報(bào)提升不多,波動(dòng)性卻很高的話,一般人們都會(huì)傾向于選擇策略 A。針對(duì)夏普比率做優(yōu)化是一種簡(jiǎn)單的在訓(xùn)練中考量到風(fēng)險(xiǎn)的做法,但也還有許多其它的指標(biāo)。我們也可以選擇最大跌幅這樣的指標(biāo)??梢韵胂螅鶕?jù)利潤(rùn)和風(fēng)險(xiǎn)之間的平衡,有許許多多復(fù)雜的反饋函數(shù)可以選擇。

強(qiáng)化學(xué)習(xí)模型的設(shè)計(jì)工作流程

現(xiàn)在我們對(duì)如何在交易中使用強(qiáng)化學(xué)習(xí)有大概的了解了,下面我們來(lái)看看為什么我們更愿意用強(qiáng)化學(xué)習(xí)而不是監(jiān)督學(xué)習(xí)。開(kāi)發(fā)強(qiáng)化學(xué)習(xí)的交易策略大概是下面這樣的步驟,要比前面監(jiān)督學(xué)習(xí)的簡(jiǎn)單得多,也要更加體系化。

能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

對(duì)我們關(guān)心的指標(biāo)做端到端優(yōu)化

在上面講過(guò)的傳統(tǒng)策略開(kāi)發(fā)過(guò)程中,我們要先經(jīng)過(guò)流水線中的好幾步才能得到我們想要的指標(biāo)數(shù)值。比如,如果我們想要找到一個(gè)最大跌幅不超過(guò) 25% 的策略,我們就要先訓(xùn)練監(jiān)督學(xué)習(xí)模型、想出一個(gè)基于規(guī)則的策略并且用到模型的數(shù)據(jù)、做內(nèi)部測(cè)試并優(yōu)化超參數(shù),然后才能經(jīng)過(guò)測(cè)試得出模型在這個(gè)指標(biāo)上的表現(xiàn)。

強(qiáng)化學(xué)習(xí)就允許我們做端到端的優(yōu)化,而且可以最大化反饋(也可以是延遲反饋)。只要在反饋函數(shù)中增加一項(xiàng),我們就可以直接對(duì)最大跌幅做優(yōu)化,而不需要分成好幾個(gè)互相獨(dú)立而且不確定互相影響的步驟。比如你可以在反饋函數(shù)中設(shè)定,當(dāng)?shù)^(guò) 25% 的時(shí)候會(huì)有一個(gè)很大的負(fù)反饋,這就會(huì)逼得智能體補(bǔ)課不考慮更換別的策略。當(dāng)然了,我們也可以把最大跌幅和其它各種我們關(guān)心的指標(biāo)結(jié)合在一起。所以強(qiáng)化學(xué)習(xí)的方法不僅更簡(jiǎn)單,也可以得到厲害得多的模型。

學(xué)到的策略

相比于需要一行行手工設(shè)計(jì)的基于規(guī)則的策略,強(qiáng)化學(xué)習(xí)可以直接學(xué)到一個(gè)策略。我們不再需要指定規(guī)則、不再需要設(shè)定閾值(比如「預(yù)測(cè)價(jià)格上漲的確定性大于 75% 時(shí)買入」)。強(qiáng)化學(xué)習(xí)策略中會(huì)隱式地形成交易規(guī)則,而且會(huì)向著我們需要的指標(biāo)進(jìn)行優(yōu)化。我們也就在策略開(kāi)發(fā)過(guò)程上邁出了一大步!并且,由于這個(gè)策略是由神經(jīng)網(wǎng)絡(luò)之類的非常復(fù)雜的模型參數(shù)化的,它能夠?qū)W到的策略要比任何人類可以想到、可以描述的策略都要復(fù)雜和強(qiáng)力得多。以及正如我們剛才說(shuō)到的,只要我們?cè)谝獠⒃O(shè)定反饋函數(shù),學(xué)到的策略可以隱式地把風(fēng)險(xiǎn)之類的指標(biāo)考慮進(jìn)去。

直接在模擬環(huán)境中訓(xùn)練

當(dāng)使用監(jiān)督學(xué)習(xí)方法時(shí),我們需要分別做內(nèi)部測(cè)試和參數(shù)優(yōu)化這兩步,因?yàn)樵诓呗灾兄苯涌紤]進(jìn)去掛單列表流動(dòng)性、手續(xù)費(fèi)結(jié)構(gòu)、延時(shí)等等因素的話太難做了。想到了一個(gè)策略,然后花了很多時(shí)間做測(cè)試之后才發(fā)現(xiàn)它不好使的事情并不少見(jiàn),延遲太高、市場(chǎng)行情變化太快等等原因都有可能。

而強(qiáng)化學(xué)習(xí)智能體是直接在模擬環(huán)境中訓(xùn)練的,而且這個(gè)模擬環(huán)境可以盡可能復(fù)雜(把延遲、流動(dòng)性和手續(xù)費(fèi)都考慮在其中),那么我們就不需要考慮剛才那些問(wèn)題了。實(shí)際上,適應(yīng)環(huán)境本身的限制也就應(yīng)當(dāng)是優(yōu)化過(guò)程的一部分。比如我們?cè)趶?qiáng)化學(xué)習(xí)環(huán)境中模擬交易平臺(tái)的延遲,導(dǎo)致智能體犯錯(cuò)的話,智能體就會(huì)接收到負(fù)值的反饋,使得它之后學(xué)會(huì)更好地應(yīng)對(duì)延遲。

我們可以進(jìn)一步拓展這種做法,模擬同一個(gè)環(huán)境中的其它智能體,從而建模我們的智能體做出行動(dòng)會(huì)對(duì)環(huán)境造成何種影響。在模擬環(huán)境的歷史數(shù)據(jù)中智能體的下單可能會(huì)帶來(lái)價(jià)格的變化,而我們其實(shí)不確定真實(shí)的市場(chǎng)對(duì)此會(huì)有什么樣的響應(yīng)。一般來(lái)說(shuō),模擬器都會(huì)忽略這些,假定智能體的下單沒(méi)有給市場(chǎng)帶來(lái)任何影響。不過(guò),通過(guò)學(xué)習(xí)一個(gè)環(huán)境的模型,然后執(zhí)行蒙特卡羅樹(shù)搜索之類的推演方法,我們就可以把市場(chǎng)(以及其它智能體)可能的反應(yīng)考慮在內(nèi)。這樣巧妙地處理了環(huán)境中的實(shí)時(shí)數(shù)據(jù)之后,我們就可以持續(xù)地改善模型。同時(shí)這里也有一個(gè)探索和利用之間的有趣的平衡:我們應(yīng)當(dāng)優(yōu)化模型,讓它在實(shí)時(shí)變化的環(huán)境中獲得更多的利潤(rùn),還是做次優(yōu)的優(yōu)化、更多地收集信息,以便我們可以優(yōu)化環(huán)境和其它智能體的模型呢?

這會(huì)是一個(gè)非常強(qiáng)有力的想法。通過(guò)建設(shè)越來(lái)越復(fù)雜的模擬環(huán)境來(lái)擬合真實(shí)市場(chǎng),我們也就可以訓(xùn)練出非常復(fù)雜的模型,復(fù)雜到以至于可以把環(huán)境本身的限制考慮在內(nèi)。

學(xué)習(xí)適應(yīng)不同的市場(chǎng)環(huán)境

直覺(jué)上來(lái)說(shuō),同樣的策略可能在有些市場(chǎng)環(huán)境中表現(xiàn)比較好、有些環(huán)境中表現(xiàn)不好。一定程度上這是策略較為簡(jiǎn)單的本質(zhì)屬性造成的,有可能策略的參數(shù)化程度確實(shí)還沒(méi)有強(qiáng)到可以讓模型學(xué)習(xí)適應(yīng)不同的市場(chǎng)環(huán)境。

不過(guò),通過(guò)神經(jīng)網(wǎng)絡(luò)進(jìn)行參數(shù)化的強(qiáng)化學(xué)習(xí)智能體學(xué)到的都是很強(qiáng)有力的交易策略,它們其實(shí)也有機(jī)會(huì)學(xué)會(huì)適應(yīng)各種不同的市場(chǎng)環(huán)境,只要首先經(jīng)過(guò)足夠長(zhǎng)時(shí)間的訓(xùn)練、有足夠的存儲(chǔ)容量,也許多學(xué)習(xí)一份歷史交易數(shù)據(jù)就可以學(xué)會(huì)適應(yīng)一個(gè)新的交易平臺(tái)。這也讓這些模型對(duì)市場(chǎng)狀況的變化更魯棒。實(shí)際上,通過(guò)在反饋函數(shù)里加入適當(dāng)?shù)膽土P項(xiàng),我們可以直接地把模型優(yōu)化得對(duì)市場(chǎng)變化更魯棒。

對(duì)其它智能體建模的能力

強(qiáng)化學(xué)習(xí)有一項(xiàng)獨(dú)特的技能,就是我們可以顯式地把其它智能體的影響考慮進(jìn)來(lái)。目前為止我們討論的都是「市場(chǎng)會(huì)如何反應(yīng)」,而其實(shí)市場(chǎng)也就是一群智能體和自動(dòng)交易算法而已,就像我們想要做的一樣。不過(guò),如果我們可以顯示地在環(huán)境中對(duì)其它智能體建模,我們的智能體就可以學(xué)會(huì)利用它們的策略牟利。簡(jiǎn)單來(lái)說(shuō),我們把「預(yù)測(cè)市場(chǎng)」的問(wèn)題重新定義為了「利用其它智能體」。這也就和我們?cè)?DotA 之類的多玩家游戲中做的事情要類似得多了。

重新聊聊交易智能體這個(gè)問(wèn)題

我這篇文章的目標(biāo)不僅僅是想要對(duì)用于交易的強(qiáng)化學(xué)習(xí)智能體做一個(gè)入門介紹,也是希望引起更多研究人員的興趣、參與研究這個(gè)問(wèn)題。交易其實(shí)可以是一個(gè)有趣的研究問(wèn)題,原因有下面這些。

實(shí)時(shí)測(cè)試以及快速的迭代循環(huán)

以往訓(xùn)練強(qiáng)化學(xué)習(xí)智能體的時(shí)候,把它們部署到真實(shí)世界并獲得反饋是一件很難或者很昂貴的事情。假設(shè)你訓(xùn)練了一個(gè)玩星際 2 的智能體,你要如何讓它和一群高水平的人類玩家對(duì)抗呢?象棋、撲克以及其它強(qiáng)化學(xué)習(xí)研究者關(guān)注的熱門游戲都有這個(gè)問(wèn)題。可能你要想辦法進(jìn)入某個(gè)世界級(jí)賽事,讓智能體完成許多場(chǎng)比賽之后再分析結(jié)果。

交易智能體的特點(diǎn)和其它那些多玩家游戲的特點(diǎn)非常類似,但是在線測(cè)試它們就簡(jiǎn)單太多了!你可以隨時(shí)通過(guò)交易平臺(tái)的 API 部署自己的智能體,隨時(shí)獲得真實(shí)世界市場(chǎng)的反饋。如果你的智能體泛化能力不好、輸了錢,你就知道你可能對(duì)訓(xùn)練數(shù)據(jù)過(guò)擬合了。換句話說(shuō),迭代更新的周期可以變得非常短。

足夠大的多玩家環(huán)境

交易環(huán)境本質(zhì)上就是一個(gè)有數(shù)以千計(jì)的智能體參與的多玩家游戲。這也是一個(gè)熱門研究領(lǐng)域。撲克、Dota2 等等游戲上我們都已經(jīng)在做出成果,同樣的技術(shù)也可以用在這里。實(shí)際上,交易問(wèn)題還是一個(gè)更困難的問(wèn)題,因?yàn)槿魏螘r(shí)刻都會(huì)有可觀數(shù)量的玩家加入或者離開(kāi)游戲。學(xué)習(xí)如何為其它智能體建模也只是研究這類問(wèn)題的其中一個(gè)方向。前面也提到過(guò),智能體在實(shí)時(shí)環(huán)境中采取行動(dòng),目的完全可以是最大化自己收集到的關(guān)于其它智能體執(zhí)行的交易策略的信息。

學(xué)習(xí)利用其它智能體以及操控市場(chǎng)

和上一個(gè)問(wèn)題緊密相連的,就是我們能否利用環(huán)境中的其它智能體。比如,如果我們確切知道交易平臺(tái)上的其它自動(dòng)交易算法的內(nèi)容,我們就可以誘使它們執(zhí)行本來(lái)不該執(zhí)行的行為,然后從它們的錯(cuò)誤中獲利。這同樣適用于人類交易者,他們中的相當(dāng)一部分人都是基于某幾組廣為人知的市場(chǎng)信號(hào)進(jìn)行交易的,比如指數(shù)移動(dòng)平均、掛單列表壓力、MACD。

(作者注:請(qǐng)不要讓你的智能體做任何違法的事情!請(qǐng)務(wù)必遵守你當(dāng)?shù)氐姆煞ㄒ?guī)。并且,算法的以往表現(xiàn)只對(duì)未來(lái)表現(xiàn)有有限的參考作用。)

稀疏回報(bào)以及探索

交易者一般只能從市場(chǎng)上獲得稀疏的反饋,大多數(shù)時(shí)候交易者都是在等待。不過(guò)買入和賣出動(dòng)作畢竟只是采取的所有動(dòng)作中的一小部分。簡(jiǎn)單直接地使用一個(gè)「心里只有反饋」的強(qiáng)化學(xué)習(xí)算法是肯定會(huì)失敗的。這就為新算法、新技術(shù)的使用提供了機(jī)會(huì),尤其是可以高效地處理稀疏反饋的基于模型的算法。

行為空間的探索也有類似的狀況。當(dāng)下的許多標(biāo)準(zhǔn)算法,比如 DQN 和 A3C 都使用的是非常樸素的方法做探索,基本上就是在策略中增加噪聲。然而在交易環(huán)境中,環(huán)境中的多數(shù)狀況都是不好的狀況,只有少數(shù)是好的。用簡(jiǎn)單直接的隨機(jī)方法做探索基本沒(méi)什么機(jī)會(huì)讓好的狀況和好的模型行為配對(duì)起來(lái)。這里很需要一種新的方法。

多智能體自我對(duì)抗

正如和圍棋、象棋智能體可以做自我對(duì)弈,多智能體環(huán)境中可以做自我對(duì)抗。比如設(shè)想我們同時(shí)訓(xùn)練了一大群互相競(jìng)爭(zhēng)的智能體,然后觀察它們之間形成的市場(chǎng)變化模式是否和真實(shí)世界的市場(chǎng)行情有類似之處。我們也可以把不同類型的智能體放在一起比拼,有的是各種標(biāo)準(zhǔn)強(qiáng)化學(xué)習(xí)算法的、有的是基于演化算法的、有的是確定性的。我們也可以把真實(shí)世界的市場(chǎng)數(shù)據(jù)作為監(jiān)督反饋信號(hào),「迫使」模擬環(huán)境中的智能體共同形成和真實(shí)世界類似的行為。

時(shí)間上的連續(xù)性

由于市場(chǎng)的變化速度實(shí)際上在微秒到毫秒級(jí),交易領(lǐng)域的問(wèn)題實(shí)際上就成為了很好的連續(xù)時(shí)間領(lǐng)域的問(wèn)題。在上面的例子中我們假定了固定的時(shí)間間隔并把它指定給了智能體。不過(guò),其實(shí)我們還可以讓智能體學(xué)習(xí)控制間隔時(shí)間。這樣,智能體不僅可以自己決定采取哪些行動(dòng),還可以決定何時(shí)采取行動(dòng)。這又是一個(gè)熱門研究問(wèn)題,機(jī)器人之類的其它領(lǐng)域也可以由此受益。

非平穩(wěn)、終身學(xué)習(xí),以及災(zāi)難性的遺忘

始終在更新變化是交易環(huán)境的固有屬性。市場(chǎng)狀況會(huì)變化,總有一些交易者在加入和離場(chǎng),他們的策略也在時(shí)時(shí)更新。我們能否訓(xùn)練出這樣的智能體,它們既可以學(xué)會(huì)自動(dòng)調(diào)節(jié),可以適應(yīng)不斷變化的市場(chǎng)環(huán)境,同時(shí)還不「忘記」它們?cè)?jīng)學(xué)到過(guò)的東西呢?比如,智能體能否成功從熊市的交易策略轉(zhuǎn)向牛市的交易策略,然后再回到熊市的策略,同時(shí)這一整個(gè)過(guò)程還都不需要重新訓(xùn)練呢?智能體能否自動(dòng)適應(yīng)新加入環(huán)境的智能體,并且自動(dòng)學(xué)會(huì)利用它們呢?

遷移學(xué)習(xí)以及輔助任務(wù)

對(duì)于復(fù)雜問(wèn)題,從零開(kāi)始訓(xùn)練強(qiáng)化學(xué)習(xí)算法可能要花費(fèi)很長(zhǎng)時(shí)間,因?yàn)樗鼈儾粌H要學(xué)習(xí)如何做出好的決定,還要學(xué)習(xí)「游戲的基本規(guī)則」。加速?gòu)?qiáng)化學(xué)習(xí)智能體訓(xùn)練的方法有很多,包括遷移學(xué)習(xí)以及使用輔助任務(wù)。比如,我們可以用專家給出的策略做強(qiáng)化學(xué)習(xí)智能體的預(yù)訓(xùn)練,或者增加價(jià)格預(yù)測(cè)之類的輔助任務(wù)作為智能體的訓(xùn)練目標(biāo),這都可以提升訓(xùn)練速度。

結(jié)論

這篇文章的目的是對(duì)基于強(qiáng)化學(xué)習(xí)方法的交易智能體做一個(gè)入門介紹,討論為什么這種方法優(yōu)于現(xiàn)有的交易策略開(kāi)發(fā)方法,以及提出什么我相信更多研究人員都應(yīng)該研究這個(gè)問(wèn)題。我希望我這篇文章達(dá)到了部分效果。

感謝閱讀!

via WildML,雷鋒網(wǎng) AI 科技評(píng)論編譯

相關(guān)文章:

Uber論文5連發(fā)宣告神經(jīng)演化新時(shí)代,深度強(qiáng)化學(xué)習(xí)訓(xùn)練勝過(guò)SGD和策略梯度

環(huán)境也能強(qiáng)化學(xué)習(xí),智能體要找不著北了,UCL汪軍團(tuán)隊(duì)提出環(huán)境設(shè)計(jì)的新方法

UCL計(jì)算機(jī)系教授汪軍:如何進(jìn)行大規(guī)模多智體強(qiáng)化學(xué)習(xí)?| CCF-GAIR 2017

100:0!Deepmind Nature論文揭示最強(qiáng)AlphaGo Zero,無(wú)需人類知識(shí)

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

能用強(qiáng)化學(xué)習(xí)買賣比特幣賺錢嗎?能能能,當(dāng)然能!

分享:
相關(guān)文章

讀論文為生

日常笑點(diǎn)滴,學(xué)術(shù)死腦筋
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)