1. 程式人生 > >用深度學習LSTM炒股:對衝基金案例分析

用深度學習LSTM炒股:對衝基金案例分析

英偉達昨天一邊釋出“全球最大的GPU”,一邊經歷股價跳水20多美元,到今天發稿時間也沒恢復過來。無數同學在後臺問文摘菌,要不要抄一波底嘞?

今天用深度學習的序列模型預測股價已經取得了不錯的效果,尤其是在對衝基金中。股價資料是典型的時間序列資料。

什麼是序列資料呢?語音、文字等這些前後關聯、存在內有順序的資料都可以被視為序列資料。

將序列模型應用於語音和文字,深度學習在語音識別、閱讀理解、機器翻譯等任務上取得了驚人的成就。

具體怎麼操作?效果又如何呢?來看文摘菌今天帶來的這篇深度學習炒股指南。

對衝基金是深度學習應用中具有吸引力的領域之一,也是投資基金的一種形式。不少金融組織從投資者那裡籌集資金後對其進行管理,並通過分析時間序列資料來做出一些預測。在深度學習中,有一種適用於時間序列分析的架構是:遞迴神經網路(RNNs),更具體地說,是一種特殊型別的遞迴神經網路:長短期記憶網路(LSTM)。

RNNs維基解釋:

https://en.wikipedia.org/wiki/Recurrent_neural_network

LSTM 維基解釋:

https://en.wikipedia.org/wiki/Long_short-term_memory

LSTMs能夠從時間序列資料中捕捉最重要的特徵並進行關聯建模。股票價格預測模型是關於對衝基金如何使用此類系統的典型案例,使用了Python編寫的PyTorch框架進行訓練,設計實驗並繪製結果。

在介紹真實案例之前,我們先了解一下深度學習的基礎:

  • 首先,引入深度學習這個抽象概念。
  • 其次,引入RNNs(或更具體地說是LSTMs)以及它們如何進行時間序列分析。
  • 接著,讓讀者熟悉適合深度學習模型的金融資料。
  • 接著,舉一個例項來說明一支對衝基金如何使用深度學習預測股票價格。
  • 最後,就如何使用深度學習來提高對現有或新購對衝基金的表現提供可操作的建議。

介紹用深度學習進行交易的案例

金融行業最具挑戰性和令人興奮的任務之一便是:預測未來股價是上漲還是下跌。據我們所知,深度學習演算法非常擅長解決複雜的任務,因此深度學習系統是否能夠成功地解決預測未來價格這個問題是值得嘗試的。

股價預測:

https://www.toptal.com/machine-learning/s-p-500-automated-trading

人工神經網路這個概念已經存在了很長一段時間,但由於硬體受限,一直無法進行深度學習方面的快速實驗。十年前,Nvidia為其Tesla系列產品研發的高速計算的圖形處理單元(GPUs)促進了深度學習網路的發展。除了在遊戲和專業設計程式中提供更高質量的圖形顯示外,高度並行化的GPUs也可以計算其他資料,而且在很多情況下,它們的表現遠優於CPUs。

Nvidia Tesla維基解釋:

https://en.wikipedia.org/wiki/Nvidia_Tesla

在金融領域應用深度學習的科學論文並不多,但是金融公司對深度學習專家卻有很大的需求,顯然,這些公司認識到了深度學習的應用前景。

本文將嘗試說明:為什麼深度學習在用金融資料來構建深度學習系統時越來越受歡迎,同時也會介紹LSTMs這種特殊的遞迴神經網路。我們將概述如何使用遞迴神經網路解決金融相關問題。

本文還以對衝基金如何使用深度學習系統為例進行典型案例分析,並展示實驗過程及結果。同時我們將分析如何提高深度學習系統性能,以及如何通過引進人才(如需要什麼樣背景的深度學習人才)來搭建應用於對衝基金的深度學習系統。

是什麼使對衝基金與眾不同

在我們進入這個問題的技術層面之前,我們需要解釋的是什麼使對衝基金與眾不同。首先要明白的是,什麼是對衝基金?

對衝基金是一種投資基金,金融組織從投資者籌集資金並將其投入短期和長期投資專案或者不同金融產品。它的形式一般是有限合夥企業或有限責任公司。

對衝基金的目標是最大化回報,回報是其在特定時間段內淨值的收益或損失。普遍認為,投資風險越大,相應的回報或損失也越大。

為了獲得良好的回報,對衝基金依賴各種投資策略,試圖通過利用市場低效率來賺錢。由於對衝基金有普通投資基金所不允許的各種投資策略,其並未被認定為一般基金,也不像其他基金那樣由國家監管。

因此他們不需要公佈他們的投資策略和業務結果,這可能會使相關經營活動充滿風險。雖然一些對衝基金產生的收益超過市場平均水平,但也有一些損失了資金。其中一些的損失無法挽回,也有一些對衝基金的結果是可逆的。

通過投資對衝基金,投資者可以增加基金的淨值。不過,並不是所有人都可以投資於對衝基金,它只適用於少數富有的投資者。通常,想要參與對衝基金投資的人需要獲得認證。

這意味著他們必須在金融監管法律方面擁有特殊地位。不同國家對於“特殊地位”的認定有所不同。通常,投資者的淨資產需要非常高——不僅是個人,而且銀行和大公司也可以在對衝基金中運作。該認證旨在讓那些有必要投資知識的個人才能參與其中,從而保護經驗不足的小型投資者免受風險。

美國是全球金融市場最發達的國家,因此本文主要參考美國的監管體系。在美利堅合眾國,美國證券交易委員會(SEC)的D規則501規定了“認可投資者”一詞。

根據這一規定,認可的投資者可以是:

  • 銀行
  • 私營企業
  • 組織機構
  • 提供或出售證券的發行機構的董事,執行官和普通合夥人
  • 個人淨資產或與該人配偶合資淨值超過1,000,000美元的自然人
  • 自然人在最近兩年每個年度的個人收入超過20萬美元,或與該人的配偶每年在該年度的共同收入超過30萬美元,並且當年的預期收入也達到相同的水平。
  • 信託資產總額超過5,000,000美元
  • 所有股權擁有者均為認可投資者的實體

對衝基金管理者管理對衝基金時必須要找到一種方法形成競爭優勢從而取得成功,即需比競爭對手更具創造力,帶來更大價值。這是一個非常有吸引力的職業選擇,因為如果一個人擅長管理基金,就可能從中獲利許多。

另一方面,如果很多對衝基金管理者的決定很糟糕,他們不僅不會獲得收益,還會造成負面影響。最好的對衝基金管理者可以獲得行業中薪酬最高的職位。

除了管理費外,對衝基金管理者還可以從資金獲利中抽成。這種補償方式使對衝基金管理者更積極地投資以獲得更高的回報,但與此同時,這也會使投資者承擔更多風險。

對衝基金簡史

第一支對衝基金出現於1949年,由作家和社會學家Alfred Winslow Jones創立。1948,Alfred就當時的投資趨勢發表了一篇文章。

他在資金管理方面獲得了巨大的成功。利用他的投資創新籌集資金,這種投資創新現在被廣泛稱為多/空投股票。該策略目前在對衝基金中仍非常受歡迎。股票可以被買入(買入:買多)或賣出(賣出:賣空)。

當股價低但預計股價將會走高時,買入股票(多頭),一旦達到高價時並賣出(空頭),這正是Alfred所創理論的核心——對預計將升值的股票中持倉多頭,對預計將下跌的股票持倉空頭。

金融資料和資料集

金融資料屬於時間序列資料。時間序列是一系列按時間順序排列的資料點。通常,時間序列是連續、等間隔的時間序列:即離散時間序列資料。舉例來說,海洋潮汐的高度,太陽黑子的數量以及道瓊斯工業平均指數的每日收盤價都是時間序列。

這裡的歷史資料是指過去的時間序列資料。這是預測未來價格走向最重要和最有價值的部分。

網上有一些公開可用的資料集,但通常情況下,資料缺少很多特徵——如間隔1天的資料,間隔1小時的資料或間隔1分鐘的資料。

具有更豐富特徵和更小時間間隔的資料集通常不公開,並且需要高價購買。

更小的間隔意味著更多的時間序列資料在一個固定的時間段內——一年內有365(或366)天,所以最多有365個(或366個)天資料點可用。每天有24小時,所以在一年內有8,760(或8,784)小時資料點,每天有86,400分鐘,所以在一年內有525,600(或527,040)分鐘的資料點可用。

越多的資料意味著越多的可用資訊,也意味著可以更好地判斷下一刻會發生什麼——當然,如果資料包含足夠的特徵也可以泛化的很好。

在全球金融危機高峰時期,2007年至2008年的股價資料由於存在偏差,所以可能無法預測近期價格趨勢。越小的時間間隔,在固定的時間間隔內就會有更多資料點,從而更容易地預測接下來會發生什麼。

如果我們擁有n年內每一納秒的資料,那麼很容易預測下一納秒會發生什麼,同理在股市中,有了一定時間內的資料,在對接下來的情況作預測就容易的多。

當然,這也並不意味通過一系列資料後,只有所作的短期預測才是正確的,長期預測也可以是正確的。

每個短期預測都會產生誤差,因此通過連結多個預測,長期預測最終將產生更大的誤差而導致預測無效。以下是雅虎財經線上提供的間隔為1天的Google股票資料示例。

資料集中只有日期,開盤價,最高價,最低價和平倉價等五列資料,分別表示交易開放時證券首先交易的價格,即證券在給定交易日上達到的最高價格,給定交易日的最低價格以及當天交易證券的最終價格。

通常,此類資料集中還有兩列——“調整後收盤價”和“成交量”,但它們在這裡並不相關。調整後收盤價是指調整適用分割和股息分配後的收盤價,而成交量指是在給定時間段內在市場上交易的股票數量。

可以看到資料中缺失了部分日期。這些是證券交易所休市的日子(一般是在週末和假日)。

為了演示深度學習演算法,休市的日子使用之前的交易日價格。例如,2010-01-16,2010-01-17,2010-01-18的收盤價格將全部為288.126007,因為這就是2010-01-15。對於我們的演算法來說,資料沒有間隙是非常重要的,所以我們不會混淆它。

深度學習演算法可以通過週末和節假日的資料學習——比如說,瞭解到在五個工作日後,從最後一個工作日起,會有兩天的平價。

這是一張自2010-01-04以來谷歌股價變動的圖表。要注意的是,圖表中只顯示了交易日的變化趨勢。

什麼是深度學習?

深度學習基於資料表示學習,屬於機器學習的一個分支。機器學習不是通過程式設計,而是從資料中學習得到的演算法。它本質上是人工智慧的一種方法。

深度學習已經應用到了多個領域:計算機視覺,語音識別,自然語言處理,機器翻譯,而且在某些任務中,它的表現甚至超過人類。

深度神經網路是深度學習的核心,它最簡單、最基本的例子就是前饋神經網路,如下圖所示,一個基本的前饋神經網路包括輸入層、輸出層和隱藏層。

隱藏層是輸入層和輸出層之間的多個單獨層。我們通常說如果一個神經網路隱藏層的個數大於1,那麼這個網路就是深度的。

每一層都由不同數量的神經元組成。這個基本前饋神經網路中的層稱之為線性層,線性層中的神經元僅僅將1-D(或者2-D,如果資料是分批輸入網路的)的輸入和合適的權重相乘並求和,作為1-D或2-D輸出的最終結果。

前饋網路中通常引入啟用函式(activation function)表示非線性關係,進而對更復雜的非線性問題建模。在前饋神經網路中,資料從輸入層流向輸出層,並不會反向傳播。

神經元之間的連線是加權的。這些權重需要調整以便神經網路對於給定輸入返回準確的輸出。前饋網路將資料從輸入空間對映到輸出空間。隱藏層從前一層的特徵中提取重要的和更抽象的特徵。

通用深度學習管道和機器學習管道一樣,都包含以下步驟:

  1. 資料採集。資料被分成3部分:訓練集、驗證集和測試集。
  2. 使用訓練集進行多輪(每一輪包含多個迭代過程)訓練DNN模型,並在每輪訓練後使用驗證集進行驗證。
  3. 在不斷訓練和驗證後,測試模型(一個帶有固定引數的神經網路例項)。

訓練神經網路實際上是通過反向傳播演算法結合隨機梯度下降法來最小化損失函式,以此來不斷調整神經元之間的權重。

除了通過學習過程確定的權重,深度學習演算法通常還需要設定超引數——一類無法從學習過程獲得,但需要在學習過程前確定的引數。如網路層數、網路層中的神經元數、網路層的型別、神經元的型別和初始權重都屬於超引數。

在超引數設定中,第一存在硬體限制,目前,在一個GPU上設定一萬億個神經元是不可能的。第二超引數搜尋問題屬於組合爆炸;徹底搜尋所有可能的超引數組合是不可能的,因為這個過程需要無限長的時間。

由於上述原因,超引數的設定通常是隨機的,或者採用一些啟發式方法和一些論文中提供的知名方法——本文稍後展示一個用於金融資料分析的迴圈神經網路的超引數設定例項,許多科學家和工程師已經證明迴圈神經網路在時間序列資料處理方面表現突出。

通常,驗證一個超引數對於指定問題的效果是好是壞的最好方法就是做實驗。

訓練的目的是使得神經網路很好地擬合訓練資料。每個訓練步驟之後的模型驗證和整個訓練過程結束後的模型測試都是為了確定模型是否具有良好的泛化能力。

泛化能力強意味著神經網路模型對於新資料也能做出準確的預測。

關於模型選擇有兩個重要的術語:過擬合和欠擬合。如果一個神經網路對於它所訓練的資料太複雜——如果它有太多的引數(網路層數太多,以及/或者網路層中有太多的神經元)——這個神經網路很有可能過擬合。

因為它有足夠的能力去擬合所有資料,所以它能很好的適應訓練資料,但是這個模型在驗證集和測試集上的效能會很差。如果一個神經網路對於它所訓練的資料太過簡單,這個模型會欠擬合。

此時神經網路在訓練集、驗證集和測試集中效能都很差,因為它的能力不足以擬合訓練資料並且進行泛化。在下圖中我們用圖形來解釋這幾個術語。

藍色的線表示神經網路模型。第一張圖表示當神經網路引數較少時,不能擬合訓練資料和泛化的情況。第二張圖表示在有最優引數數量時,神經網路對新的資料有較好的泛化能力。第三張圖表示當神經網路引數太多時,這個模型過擬合訓練資料,但是在驗證集和測試集中表現不佳。

迴圈神經網路

神經網路中一個更復雜的版本是迴圈神經網路(Recurrent neural network)。與前饋神經網路不同,迴圈神經網路中的資料可以向任意方向流動。RNN可以更好的表示時間序列的相關性。一般迴圈神經網路的結構如下圖所示。

一個迴圈神經元的表示如下圖所示。在t時刻以X_{t}作為輸入,返回t時的隱藏狀態h_{t}作為輸出,隱藏層輸出反向傳播回神經元。迴圈神經元展開後的表示如下圖右側部分。X_{t_0}表示t_{0}時刻的點,X_{t_1}表示t_{1}時刻的點,X_{t}表示t時刻的點。通過t_{0},t_{1},…,t_{n}時刻的輸入X_{t_0},X_{t_1},…,X_{t_n}獲得的輸出就叫做隱藏輸出,即h_{t_0},h_{t_1},…,h_{t_n}。

最有效的一個迴圈神經網路架構是LSTM結構。表示如下:

LSTMs與一般的迴圈神經網路結構一樣,但是不同的是迴圈神經元的結構更為複雜。從上圖可以看出,在一個LSTM單元記憶體在大量的計算。

在這篇文中,LSTM單元可以視為一個黑盒子,但是對於好奇的讀者來說,可以看一篇闡述LSTMs內的計算以及其他一些內容的部落格。

部落格連結:

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

我們把神經網路的輸入稱為“特徵向量”。這是一個n維向量,其元素是特徵:f_{0},f_{1},f_{2}…,f_{n}。現在,我們來解釋迴圈神經網路是如何應用到與金融相關的任務上的。迴圈神經網路的輸入是[X_{t_0},X_{t_1},X_{t_2},…,X_{t_n}]。這裡讓n=5。

我們採用Google連續5天(見上面開盤/高/低/收盤資料表)的股票收盤價,選擇時間段為2010-01-04到2010-01-08,也就是[[311.35],[309.98],[302.16],[295.13],[299.06]]。這個例子中的特徵向量是一維的。時間序列包含5個這樣的特徵向量。迴圈神經網路的輸出是隱藏特徵[h_{t_0},h_{t_1},h_{t_2},…,h_{t_n}]。

這些特徵比輸入特徵[X_{t_0},X_{t_1},X_{t_2},…,X_{t_n}]更加抽象——LSTM需要學習到輸入特徵的重要部分並將它們對映到隱藏特徵空間。

這些隱藏的抽象特徵在下一個LSTM單元中傳播並提供一組隱藏、更加抽象的特徵,這些特徵又可以在下一個LSTM單元中傳播,以此類推。

在LSTMs連線序列之後,神經網路的最後一個組成部分是線性層(前一節介紹的簡單前饋網路的構建部分),線性層將最後的LSTM的隱藏向量對映到一維空間的某個點上,這個點就是該網路的最終輸出——時間週期X_{t+1}中預測的收盤價。在這個例子中應該是298.61。

注意:也有少量的LSTM將LSTMs的數量作為一個超引數,該引數通常由經驗獲得,當然也可以使用一些啟發式的方法。如果資料不是很複雜,我們可以使用一些不那麼複雜的結構來避免過擬合。如果資料比較複雜,我們使用一個複雜些的模型來防止欠擬合。

在訓練過程中,預測的收盤價會跟實際價格比較,其差值採用反向傳播演算法和梯度下降優化演算法(或者其他形式——具體來講在這篇文章中將使用梯度下降優化演算法的“Adam”版本),通過改變神經網路權重來最小化。

模型經過訓練和測試之後,在以後的使用中,使用者只需要給模型輸入資料,模型將會返回預測價值(理想情況下,價格會非常接近未來的真實價格)。

還有一件事要需注意,通常來講,在訓練和測試部分,資料分批次通過網路,對於網路來講只需要一次就可以計算出多個輸出。

下圖是這篇文章中使用的架構,包括2個LSTMs棧和一個線性層。

對衝基金演算法實驗

試著用一個簡單的交易策略實現演算法,描述如下:如果演算法預測明天股價會上升,就買入n(在這個例子裡n=1股該公司的股票(做多),否則就賣掉所持有的該公司的所有股票(做空)。

投資組合的初始價值(現金和股票的總價值)設定為100,000美元。每次交易行為將買入n股該公司(以Google為例)的股票或賣出所持有的該公司的所有股票。在初始時刻,系統對該給定公司股票的持有量為0。

需要時刻牢記的是這只是一個非常基礎和簡單的例子,並不適用於現實生活。若是想使這個模型在實際中很好地應用,仍需要進行很多的研發工作來調整模型。

有些在本例中被忽略的因素,在應用於實際場景時,都應當被納入考慮中:比如,交易費用沒有被考慮在模型之中。另外假設系統可以在每天的同一時間交易並且認為每一天,即使是週末或假期,都是交易日。

對於模型測試,我們使用回溯測試法。該方法利用歷史資料,基於開發策略所定義的規則重建過去本該發生的交易。我們將資料集劃分為兩部分——第一部分作為訓練集(作為歷史交易資料),第二部分作為測試集(作為未來交易資料)。

模型在訓練集上進行訓練,訓練完成後,我們在第二部分測試集上預測未來交易,從而檢驗訓練得到的模型在不屬於訓練集的“未來交易”資料上的表現。

用於評價交易策略的指標是夏普比率(Sharpe ratio,年化值,假設一年中的每一天都是交易日,一年有365天:sqrt(365)*mean(returns)/std(returns))),其中收益率定義為p_{t}/p_{t-1} - 1, p_{t}是t時刻的價格。

夏普比率反映了投資組合的收益率與額外的風險之間的比率,所以夏普比率越大越好。一般地,對投資者來說,夏普比率大於1是令人滿意的,大於2是非常不錯的,而大於3則是極好的。

本例中,只選用來自雅虎的金融資料庫(Yahoo Finance dataset)的谷歌歷史價格的每日收盤價作為特徵。雖然其他特徵也有用,但是討論該資料集中的其他特徵(開盤價、最高價、最低價)是否起作用並不在本文討論的範圍之內。

其他一些不在該資料表中的特徵可能也有用——例如某一特定分鐘的新聞觀點或某一天發生的重要事件。

然而,有時候很難將這些特徵表示成對神經網路有用的輸入並將其與現有特徵結合起來。比如,對每一個給定時期,擴充特徵向量並加入一個代表新聞觀點或特朗普(Trump)在Tweet發表的觀點是容易的(-1表示贊同,0表示中立,+1表示不贊同)。

但是,將特定的事件驅動的時刻(蘇伊士運河的海盜事件,德克薩斯州煉油廠發現炸彈)加入特徵向量並不容易,因為對於每一個這樣的特定時刻,我們需要向特徵向量中加入一個額外的元素,當該事件發生時令其為1,否則為0。

這樣以來,為了考慮所有可能的特定時刻,我們需要向特徵向量中加入無窮多個元素。

對那些更加複雜的資料,我們可以定義一些類別,對每一個特定時刻,確定它屬於哪一個類別。我們也可以在系統中加入其他公司的股票特徵,讓模型學習不同公司股票價格之間的相關性。

此外,我們可以將迴圈層與另一種專門用於計算機視覺的神經網路——卷積神經網路(convolutional neural networks)結合起來以探究視覺特徵是如何與某些公司股價相關聯的,這也是一種很有趣的做法。

也許我們可以將使用相機拍攝的一張擁擠的火車站的照片作為一個特徵,並將其加入神經網路,從而探究神經網路所“看”到的是否與某些公司的股價相關——或許在這個平庸且荒唐的例子中也存在著某些隱藏的資訊。

下圖展示了平均訓練損失隨時間逐漸減少的過程,這表明神經網路有足夠的能力去擬合訓練集。必須強調的是需要將資料進行標準化處理以保證深度學習演算法能夠收斂。

下圖展示了平均測試損失隨時間逐漸減少的過程,這表明神經網路對新資料有一定的泛化能力。

該演算法具有貪心性質:如果它預測明天股價將上升,那麼演算法將會立即買入n=1份該公司的股票(如果投資組合中有足夠的現金),否則它將會賣出所持有的該公司所有的股票(如果有的話)。

投資的時間段固定為300天。在300天以後,賣出所有股票。訓練後的模型在新的資料上的模擬結果如下圖所示。下圖展現了隨著每天做多/做空的交易(或不做交易),投資組合的價值隨時間變化的過程。

上述投資模擬的夏普比率為1.48。300天后最終的投資組合的價值為100,263.79美元。如果我們只在第一天買入股票,並在300天后賣出,組合價值為99,988.41美元。

下圖展示的是由於神經網路訓練得不好而在300天的固定投資時期後虧損的情況。

這一模擬的夏普比率為-0.94。300天后投資組合的最終價值為99,868.36美元。

下面是一個有趣的例子:上述演算法具有貪心性質並且僅僅估計了第二天的股價,並且僅僅基於這一預測值作出決策。但仍有可能需要連線多個預測值並且預測未來多期的價格。

比如,有了第一組輸入[X_ground_truth_{t0},X_ground_truth_{t1},X_ground_truth_{t2},X_ground_truth_{t3},X_ground_truth_{t4}]和第一個輸出[X_ground_truth_{t5}],我們可以把這一預測值輸給神經網路來繼續預測,即下一組輸入為[X_ground_truth_{t1},X_ground_truth_{t2},X_ground_truth_{t3},X_ground_truth_{t4},X_ground_truth_{t5}],此時輸出為[X_predicted_{t6}。

類似的,接著下一組輸入為X_ground_truth_{t2},X_ground_truth_{t3},X_ground_truth_{t4},X_predicted_{t5},X_predicted_{t6}],由此可以得到[X_predicted_{t7}]等。

這裡存在的問題是我們引入了一個預測誤差,並且這一誤差隨著每一步新的預測而不斷增加,最終導致了一個很差的長期的預測結果,如下圖所示。最開始模型預測值有真實值具有相同的下降趨勢,隨後停滯,並且隨著時間的推移變得越來越差。

對谷歌股票價格進行了簡單的深度學習的分析,只要資料量足夠大且質量足夠好,這一模型幾乎可以包含任何金融資料集。但是資料必須是可判別的,並且能夠很好地描述和表示問題。

總結

如果模型對於大量的測試都表現得很好並有很強的泛化能力,那麼它便可以使對衝基金管理者使用深度學習和演算法交易策略來預測未來某一公司的股票價格。

對衝基金管理者可以向系統輸入資金金額使其每天完成自動化交易。但是,讓自動化交易演算法在完全沒有任何監督的情況下進行交易絕對不是一個好的選擇。

因此對衝基金管理者應當有一些深度學習知識或者是僱傭一個懂得一些必要的深度學習技能的人來監管並判斷這一系統是否是去了泛化能力而不適合用於交易了。

一旦系統失去了泛化能力,那麼就有必要從頭開始訓練模型並重新進行測試(可以通過引入更多具有判別性的特徵或新的資訊——使用模型在上一次訓練時沒有用到的新的歷史資料)。

有時候,資料質量差會導致深度學習模型不能夠很好地訓練和泛化。在這種情況下,一個經驗豐富的深度學習工程師應當能夠發現並扭轉這種局面。

建立一個深度學習交易系統,你需要對衝基金資料科學家,機器學習/深度學習專家(包括科學家和工程師),熟悉機器學習/深度學習的研發工程師等等。

無論他們熟悉機器學習哪個領域的應用,不管是計算機視覺還是語音識別,老練的專家都能夠將他們的經驗很好地應用於金融領域。

歸根結底,不管是哪方面的應用或產業,深度學習都有相同的基礎,因此對有經驗的人來說從一個主題切換到另一個都應該是簡單的。

我們這裡所描述的系統是最基本的,要應用於現實世界,需要進行更多的研發工作來增加收益。可能的系統改進方法包括開發更好的交易策略。

同時收集更多的資料來訓練模型也是有幫助的,但是這樣的資料一般都很貴。

縮短時間節點間的間隔也能夠改善模型。使用更多的特徵(如資料集中每一時點對應的新聞觀點或重要的事件,儘管難以表示為適用於神經網路的形式)、大量的超引數的格點搜尋優化以及迴圈神經網路結構的探索也能給模型帶來改善。

此外,在做大量並行實驗和處理大量資料(如果收集到了大量的資料)時,我們還需要更多的計算能力(更強的GPU是必需的)。