對沖基金深度學習交易簡介

已發表: 2022-03-11

在過去的幾年裡,深度神經網絡變得非常流行。 這個新興的計算機科學領域是圍繞生物神經網絡的概念創建的,深度學習已經成為當今的流行語。

深度學習科學家和工程師試圖用數學方法描述來自生物神經系統的各種模式。 深度學習系統已應用於各種問題:計算機視覺、語音識別、自然語言處理、機器翻譯等。 有趣且令人興奮的是,在某些任務中,深度學習的表現優於人類專家。 今天,我們將看看金融領域的深度學習。

深度學習更有吸引力的應用之一是在對沖基金中。 對沖基金是投資基金,從投資者那裡籌集資金並進行管理的金融機構。 他們通常使用時間序列數據並嘗試做出一些預測。 有一種特殊類型的深度學習架構適用於時間序列分析:循環神經網絡 (RNN),或者更具體地說,是一種特殊類型的循環神經網絡:長短期記憶 (LSTM) 網絡。

LSTM 能夠從時間序列數據中捕獲最重要的特徵並對其依賴關係進行建模。 股票價格預測模型作為對沖基金如何使用此類系統的說明性案例研究提出。 PyTorch 框架,用 Python 編寫,用於訓練模型、設計實驗和繪製結果。

我們將從一些深度學習基礎開始,然後再討論實際示例:

  • 將深度學習作為一個抽象概念引入。
  • 介紹 RNN——或者更具體地說,LSTM——以及如何使用它們對時間序列數據進行建模。
  • 讓讀者熟悉適合深度學習的金融數據。
  • 說明一個實際的對沖基金如何使用深度學習來預測股票價格。
  • 最後,為新的和現有的對沖基金提供可行的建議,說明如何使用/利用深度學習來提高他們的業績。

展示深度學習交易案例

金融行業最具挑戰性和最激動人心的任務之一是預測股票價格未來會上漲還是下跌。 今天,我們知道深度學習算法非常擅長解決複雜的任務,因此值得嘗試用深度學習系統來試驗,看看它們是否能成功地解決預測未來價格的問題。

作為一個概念,人工神經網絡已經存在了很長時間,但硬件還不夠好,無法在深度學習中進行快速實驗。 十年前,英偉達幫助徹底改變了深度學習網絡,因為它開始為特斯拉系列產品中的通用計算提供非常快速的圖形處理單元 (GPU)。 高度並行化的 GPU 可以計算其他數據,而不是在遊戲和專業設計應用程序中著色多邊形,而且在許多情況下,它們遠遠優於 CPU。

關於在金融領域使用深度學習的科學論文很少,但金融科技公司對深度學習專家的需求很大,因為他們顯然認識到了它的潛力。 本文將通過概述金融數據如何用於構建深度學習系統來幫助解釋為什麼深度學習在金融領域變得越來越流行。 還將介紹一種特殊類型的循環神經網絡——LSTM 網絡。 我們將概述如何使用循環神經網絡解決與金融相關的任務。

本文還通過實驗展示了對沖基金如何使用此類系統的說明性案例研究。 我們還將考慮如何改進深度學習系統,以及對沖基金如何招聘人才來構建這些系統,即深度學習人才需要具備什麼樣的背景。

是什麼讓對沖基金與眾不同

在我們討論問題的技術方面之前,我們需要解釋是什麼讓對沖基金與眾不同。 那麼,什麼是對沖基金?

對沖基金是一種投資基金——一種從投資者那裡籌集資金並將其用於短期和長期投資或不同金融產品的金融機構。 它通常以有限合夥或有限責任公司的形式成立。 對沖基金的目標是最大化回報。 回報是對沖基金在特定時間段內淨值的收益或損失。 人們普遍認為,當承擔更多風險時,獲得更高回報和損失的可能性就更大。

為了獲得良好的回報,對沖基金依靠各種投資策略,試圖利用市場的低效率來賺錢。 由於普通投資基金所不允許的各種投資策略,對沖基金不註冊為基金,即通常不像其他基金那樣受國家監管。 他們不需要公佈他們的投資策略和業務結果,這會使他們承擔很大的風險。 一些對沖基金產生的資金高於市場平均水平,但其中一些是虧損的。 其中一些帶來永久的結果,而一些對沖基金的結果是可變的。

通過投資對沖基金,投資者增加了基金的淨資產。 不過,並非所有人都可以投資對沖基金。 對沖基金面向少數富有的投資者。 通常,想要參與對沖基金的人需要獲得認證。 這意味著它們必須在金融監管法方面具有特殊地位。 對於誰可以擁有這種特殊地位,各國之間存在差異。 通常,投資者的淨資產需要非常高——不僅是個人,銀行和大公司也可以在對沖基金中運作。 該認證旨在僅允許具有重要投資知識的個人參與,從而保護小型和缺乏經驗的投資者免受風險。

本文考慮美國的監管框架,因為美國擁有全球最發達的金融市場。 因此,在美利堅合眾國,“合格投資者”一詞在美國證券交易委員會 (SEC) 條例 D 規則 501 中定義。

根據該規定,合格投資者可以是:

  • 銀行
  • 私營企業發展公司
  • 組織
  • 發行或出售證券發行人的董事、執行官和普通合夥人
  • 個人淨資產或與其配偶的聯合淨資產超過 1,000,000 美元的自然人
  • 在最近兩年每年的個人收入超過 200,000 美元或與該人的配偶在這些年份每年的共同收入超過 300,000 美元並且有合理預期在當年達到相同收入水平的自然人
  • 總資產超過 5,000,000 美元的信託
  • 所有股權所有者均為合格投資者的實體

對沖基金經理管理對沖基金。 對沖基金經理必須找到一種方法來創造競爭優勢以取得成功,即創造超越競爭對手的優勢和創造更大價值的能力。 這可能是一個非常有吸引力的職業選擇,因為如果個人擅長管理基金,它可能會非常有利可圖。

另一方面,如果許多對沖基金經理的決策被證明是錯誤的,他們將不會得到報酬,並且會獲得負面聲譽。 最好的對沖基金經理構成了所有行業中薪酬最高的職業之一。 對沖基金經理除了管理費外,還從他們為投資者賺取的回報中獲得一定比例。 這種補償方式使對沖基金經理為了獲得更大的回報而更加積極地投資,但另一方面,這也導致了投資者風險的增加。

對沖基金簡史

第一個對沖基金出現在 1949 年,由前作家和社會學家 Alfred Winslow Jones 創立。 1948 年,他正在為《財富》雜誌撰寫一篇關於當前投資趨勢的文章。

他試圖管理這筆錢,並且非常成功。 他利用他的投資創新籌集資金,現在廣為人知的是多頭/空頭股權。 該策略在對沖基金中仍然非常流行。 股票可以買入(買入:做多)或賣出(賣出:做空)。

當股價處於低位且預期股價會走高時,順理成章地買入(做多)股票,並在達到最高價格時立即賣出(做空)。這正是阿爾弗雷德·溫斯洛·瓊斯 (Alfred Winslow Jones) 創新的重點——在預期會升值的股票中做多頭寸,在預計會下跌的股票中做空頭寸。

財務數據和數據集

財務數據屬於時間序列數據。 時間序列是按時間索引的一系列數據點。 通常,時間序列是在連續的、等距的時間點獲取的序列:離散時間數據序列。 時間序列的示例包括海潮高度、太陽黑子數量和道瓊斯工業平均指數的每日收盤價。

這種情況下的歷史數據是過去的時間序列數據。 它是推測未來價格的最重要和最有價值的部分之一。 網上有一些公開可用的數據集,但通常這些數據不包含很多特徵——通常是 1 天間隔數據、1 小時間隔數據或 1 分鐘間隔數據。

具有更豐富特徵和更短時間間隔的數據集通常不會公開獲得,而且獲取成本可能非常高。 更小的間隔意味著在固定時期內有更多的時間序列數據——一年有 365(或 366)天,因此最多有 365(或 366)個數據點可用。 每天有 24 小時,因此一年中有 8,760(或 8,784)個小時數據點可用,每天有 86,400 分鐘,因此一年中有 525,600(或 527,040)分鐘數據點可用。

有了更多的數據,就有更多的信息可用,有了更多的信息,就有可能對下一個時間段會發生什麼做出更好的結論——當然,假設數據包含一個足夠好的特徵,可以很好地概括。 2007-2008 年的股票價格數據,在全球金融危機最嚴重的時期,是有偏見的,可能與如今的價格預測無關。 時間間隔越小,越容易預測接下來會發生什麼,因為在一個固定的時間間隔內有很多數據點。 如果我們在固定的n年間隔內擁有每納秒的所有數據點,那麼預測下一納秒會發生什麼比如果我們擁有每年的所有n數據點,明年股市會發生什麼更容易。固定的n年間隔。

然而,這並不意味著,假設一系列快速的短期預測是正確的,那麼長期預測也應該是正確的。 每個預測都會引入錯誤,並且通過鏈接多個預測,長期預測最終將包含大量錯誤並且將毫無用處。 以下是從 Yahoo Finance 在線抓取的 Google 股票的 1 天間隔數據示例。

用於算法交易的谷歌股票時間序列財務數據

數據集中只有幾列:日期、開盤價、最高價、最低價和收盤價——分別是證券在交易所開盤時首次交易的價格,證券在給定交易日達到的最高價格,在給定交易日達到的最低價格,以及當天交易證券的最終價格。

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

您可以看到缺少一些日期。 這些是證券交易所不工作的日子,通常是在周末和節假日。 出於我們深度學習算法演示的目的,缺失的天數以之前可用的價格進行補充。 例如,2010 年 1 月 16 日、2010 年 1 月 17 日、2010 年 1 月 18 日的收盤價都將是 288.126007,因為這就是 2010 年 1 月 15 日的收盤價。 對於我們的算法來說,數據沒有間隙很重要,所以我們不會混淆它。 深度學習算法可以從這裡學習週末和節假日的時間——例如,它會學習到五個工作日後,從上一個工作日開始,必須有兩天是平價的。

一段時間內谷歌股價走勢的直觀表示

這是自 2010 年 1 月 4 日以來谷歌股價走勢的圖表。 請注意,僅使用交易日來繪製圖表。

什麼是深度學習?

深度學習是機器學習的一部分,它基於學習數據表示。 機器學習檢查其功能不是編程而是從數據中學習的算法。 它本質上是一種人工智能方法。

深度學習已應用於各個領域:計算機視覺、語音識別、自然語言處理、機器翻譯——在其中一些任務中,它取得了優於人類的性能。

深度神經網絡是深度學習的核心。 深度神經網絡最簡單和最基本的例子是前饋神經網絡。 下面是一個簡單的前饋神經網絡的圖像。 它由輸入層、輸出層和隱藏層組成。

一個簡單的前饋神經網絡圖,輸入和輸出以及學習層表示為節點

隱藏層是輸入層和輸出層之間的所有層。 如果一個神經網絡有多個隱藏層,我們就說它是深度的。 每層由不同數量的神經元組成。 這個基本前饋神經網絡中的層稱為線性層——線性層中的神經元僅將一維(或如果數據通過網絡分批發送,則為二維)輸入的值與適當的權重相乘,將乘積相加,然後將最終結果作為一維或二維輸出。

激活函數通常應用於前饋網絡以引入非線性,因此網絡可以模擬更複雜的非線性問題。 在前饋網絡中,數據從輸入層流向輸出層,沒有環回。 神經元之間的連接被加權。 需要調整權重,以便神經網絡為給定的輸入返回正確的輸出。 前饋網絡將數據從輸入空間映射到輸出空間。 隱藏層從前一層的特徵中提取重要且更抽象的特徵。

一般的深度學習管道與機器學習管道相同,包括以下步驟:

  1. 數據採集。 數據分為三部分——訓練數據、驗證數據和測試數據。
  2. 使用訓練數據在多個“時期”(每個時期由多個迭代組成)上訓練 DNN,並在每個時期之後使用驗證數據進行驗證。
  3. 在一系列訓練課程和驗證之後測試模型(具有固定參數的神經網絡的一個實例)。

訓練神經網絡實際上意味著通過使用反向傳播算法結合隨機梯度下降來最小化損失函數來調整神經元對之間的權重。 除了通過學習過程確定的權重外,深度學習算法通常需要設置超參數——這些參數不是學習的,而是在學習之前固定的。 超參數是層數、層中神經元的數量、層的類型、神經元的類型和權重初始化。

超參數的設置有硬件限制; 目前,在單個 GPU 上設置一萬億個神經元在物理上是不可能的。 窮舉超參數搜索的第二個問題是組合爆炸; 不可能搜索所有可能的超參數組合,因為這將花費無限時間。 正因為如此,超參數是隨機設置的,或者使用科學論文中描述的一些啟發式方法和眾所周知的例子——本文後面將展示的用於金融數據分析的超參數之一是循環神經元的使用,就像科學家和工程師一樣已經證明它們可以很好地處理時間序列數據。 通常,查看給定問題的超參數是否良好的最佳方法是通過實驗。

訓練的重點是使神經網絡適合訓練數據。 在每個訓練步驟之後進行的模型驗證和在整個訓練過程之後進行的模型測試都是為了查看模型是否可以很好地泛化。 泛化意味著神經網絡可以對新的、看不見的數據做出良好的預測。

有兩個與模型選擇相關的重要術語:過擬合擬合。 如果神經網絡對其訓練的數據過於復雜——如果它有太多參數(太多層,和/或層中的神經元太多)——神經網絡可能會過度擬合數據。 它可以很好地適應訓練數據,因為它有足夠的容量來擬合所有數據,但是驗證和測試集的性能很差。

如果神經網絡對其訓練的數據過於簡單,則神經網絡可能會欠擬合數據。 在這種情況下,神經網絡在訓練、驗證和測試集上的性能很差,因為它的容量不足以擬合訓練數據和泛化。 在下圖中,以圖形方式解釋了這些術語。 藍線代表神經網絡建模的內容。 第一張圖顯示了神經網絡參數很少,不足以擬合訓練數據和泛化的情況。 第二張圖展示了存在最優參數個數且神經網絡可以很好地泛化未知數據的情況,第三張圖展示了神經網絡的參數個數過多且神經網絡可以完美地泛化的情況擬合訓練集中的所有數據,但在驗證集和測試集上表現不佳。

欠擬合、最優和過擬合場景的圖形表示

遞歸神經網絡

更複雜的神經網絡版本是循環神經網絡。 在循環神經網絡中,與前饋神經網絡相反,數據可以向任何方向流動。 他們可以很好地學習時間序列依賴性。 通用循環神經網絡的架構如下圖所示。

一般 rnn 架構的圖形表示

下圖顯示了一個循環神經元。 它將時間點tX_{t}作為輸入,並返回時間t的隱藏狀態h_{t}作為輸出。 隱藏的輸出被傳播回神經元。 循環神經元可以展開,因為它從右側顯示在同一圖像上。 X_{t_0}是時間段t_{0}中的點, X_{t_1}是時間段t_{1}中的點, X_{t}是時間段t中的點。 使用輸入X_{t_0} , X_{t_1} , ..., X_{t_n}在時間段t_{0} , t_{1} , ..., t_{n}獲得的輸出是所謂的隱藏輸出: h_{t_0} , h_{t_1} , ..., h_{t_n} ,分別。

循環神經元的 i/o 結構的可視化圖示

最好的遞歸神經網絡架構之一是 LSTM 架構。 LSTM 如下圖所示:

lstm架構的可視化

LSTM 與一般循環神經網絡具有相同的一般結構,但循環神經元略有不同,結構更複雜。 從上圖中可以看出,很多計算都是在一個 LSTM 單元內完成的。 在這篇文章的上下文中,LSTM 單元可以被視為一個黑盒子,但對於更多好奇的讀者來說,這篇很棒的博客文章解釋了 LSTM 內部的計算等等。

讓我們將神經網絡的輸入稱為“特徵向量”。 它是一個n維向量,其元素是特徵: f_{0} , f_{1} , f_{2} ..., f_{n}

 \vv{X} = [f_{0}, f_{1}, f_{2}, …, f_{n}]

現在,讓我們解釋一下如何將循環神經網絡應用於金融相關任務。 循環神經網絡的輸入是[X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}] 。 假設n = 5 。 我們在 2010 年 1 月 4 日和 2010 年 1 月 8 日之間連續五天(參見上面的開盤/高/低/收盤數據表)取 5 個 Google 收盤價,即[[311.35], [309.98], [302.16], [295.13], [299.06]] 。 本例中的特徵向量是一維的。 時間序列由五個這樣的特徵向量組成。 遞歸神經網絡的輸出是隱藏特徵[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,依此類推。 在鍊式 LSTM 序列之後,神經網絡的最後一個組件是線性層(上一節中解釋的簡單前饋網絡的構建部分),它將隱藏的特徵從最後一個 LSTM 映射到一維空間中的點,並且該點是網絡的最終輸出——時間段X_{t+1}中的預測收盤價。 此示例中X_{t+1}的基本事實是298.61

注意: LSTM 也可以少至一個——設置 LSTM 的數量是一個超參數,通常可以根據經驗找到,儘管我們可以使用一些啟發式方法。 如果數據不是那麼複雜,我們會使用不太複雜的架構,這樣模型就不會過度擬合數據。 如果數據很複雜,我們會使用複雜模型,這樣模型就不會欠擬合數據。

在訓練階段,將預測收盤價與真實價格進行比較,並使用反向傳播算法和梯度下降優化算法(或其一種形式——具體而言,在此博客,所謂的“亞當”版本的梯度下降優化算法被使用)通過改變神經網絡的權重。

在訓練和測試之後,在未來,用戶只需將輸入數據提供給神經網絡,它就會返回預測價格(希望未來的價格非常接近真實價格)。

這裡要提到的另一件事是,通常,成批的數據通過網絡發送,無論是在測試階段的訓練中,網絡都可以在一次通過中計算多個輸出。

下面是本博客中用於實驗的架構圖像。 它由兩個堆疊的 LSTM 和一個線性層組成。

上述架構的可視化表示

對沖基金算法的實驗

嘗試使用簡單的算法交易策略,如下:如果算法預測價格將在第二天上漲,則買入n (本例中n = 1 )公司的股票(多頭),否則賣出公司的所有股票公司(簡稱)。 投資組合的初始價值(現金和股票的總價值)設置為 100,000 美元。 每個多頭或空頭操作將分別購買一家公司的n股(在本例中為谷歌)或出售一家公司的所有股份。 一開始,系統擁有給定公司的0股。

永遠記住,這是一個非常基本和簡單的示例,並不適合在現實世界中使用,因為需要更多的研發工作來調整模型以使其在實踐中運行良好。 這裡忽略了一些應該在現實世界場景中考慮的事情; 例如,模型中沒有包含交易費用。 假設系統可以每天在同一時間進行交易,並且假設每天,即使是周末或節假日,都是一個交易日。

對於測試,使用回測方法。 回溯測試方法使用歷史數據來重建過去使用開發策略定義的規則可能發生的交易。 數據集分為兩部分——第一部分是訓練集(過去),第二部分是測試集(未來)。 該模型在訓練集上進行訓練,訓練後,我們在數據集的第二部分模擬未來,以查看經過訓練的模型在未接受訓練的情況下未來會如何表現。

評估交易策略的指標是夏普比率(其年化版本,假設一年中的所有天都是交易日,並且一年有 365 天: sqrt(365)*mean(returns)/std(returns)) ,其中回報定義為p_{t}/p_{t-1} - 1 ,而p_{t}是時間段t的價格。 夏普比率顯示了回報與產生的額外風險之間的比率,因此夏普比率越大越好。 通常情況下,大於1的比率是投資者可以接受的,2是很好的,3是優秀的。

僅使用來自 Yahoo Finance 數據集的 Google 歷史價格的每日收盤價作為特徵。 更多特性會有所幫助,但測試數據集中的哪些其他特性(Open、High、Low)是重要的超出了本博客的範圍。 表中未包含的其他一些特徵也可能會有所幫助——例如,特定分鐘內新聞的情緒或特定日期的重要事件。 然而,有時很難做出對神經網絡輸入有用的數據表示並將它們與現有特徵相結合。 例如,很容易擴展特徵向量並在每個給定時間段放置一個表示新聞情緒或特朗普的推文情緒的數字( -1非常負面, 0中性, +1非常正面等),但它不是很容易將特定事件驅動的時刻(蘇伊士運河的海盜,德克薩斯州煉油廠的炸彈)放入特徵向量中,因為對於每個特定時刻,我們需要在特徵向量中添加一個額外元素來放入1如果事件發生或0否則,這將導致所有可能的時刻有無限數量的元素。

對於那些更困難的數據,我們可以定義一些類別,並在每個時刻確定它屬於哪個類別。 我們還可以為系統添加其他公司股票的特徵,以了解不同公司股價之間的相關性。 此外,還有一種專門用於計算機視覺的神經網絡——卷積神經網絡——將其與循環層相結合併了解視覺特徵如何與某些公司的價格相關聯會很有趣。 也許我們可以使用來自擁擠火車站的攝像頭信息作為特徵,並將該信息附加到神經網絡,看看神經網絡所看到的是否與某些公司的股價相關——即使在其中也可能存在一些隱藏的知識平庸而荒謬的例子。

下圖顯示了平均訓練損失如何隨時間減少,這意味著神經網絡有足夠的容量來擬合訓練數據。 重要的是要對數據進行歸一化,這樣深度學習算法才能收斂。

顯示隨時間變化的平均損失的深度學習交易圖

下圖顯示了平均測試損失如何隨著時間的推移而減少,這意味著神經網絡有能力對看不見的數據進行泛化。

顯示隨時間變化的平均測試損失的深度學習交易圖

算法是貪心的; 如果它預測第二天價格會上漲,那麼算法立即購買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_predicted_{t5}] ,我們可以輸入具有該預測的神經網絡,因此下一個輸入是[X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{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}]等等。 這裡的問題是,我們引入了一個預測誤差,該誤差隨著每一步的增加而增加,最終導致非常糟糕的長期結果,如下圖所示。 一開始的預測遵循基本事實下降趨勢,然後隨著時間的推移停滯不前並變得越來越差。

顯示累積預測與份額值的基本事實對比的圖表

對谷歌股價進行了非常簡單的深度學習分析,但它可以包含幾乎任何一組財務數據,只要數據量足夠大且質量好。 數據必須具有區分性,並且必須很好地描述和代表問題。

包起來

如果它在廣泛的測試中運行良好並且推廣良好,那麼該系統可以允許對沖基金經理使用深度學習並依賴算法交易策略來推測公司股票的未來價格。

對沖基金經理可以給系統一筆錢,讓系統每天自動交易。 但是,讓自動交易算法在沒有任何監督的情況下進行交易將是非常糟糕的。 對沖基金經理應該具備一些深度學習技能,或者聘請具有必要技能的人來監督系統並確定係統何時失去了泛化和良好交易的能力。

If the system lost the ability to generalize, then it would be necessary to retrain it from the beginning and test it again (maybe by introducing more discriminative features or new knowledge—using new data from the past that didn't exist when the model was first trained).

Sometimes, the data is simply not good enough for the deep learning system to be trained and generalize well and, in that case, an experienced deep learning engineer should be able to detect and rectify such a situation. To build a deep learning trading system, you need hedge funds data scientists, machine learning/deep learning experts (both scientists and engineers), R&D engineers familiar with machine learning/deep learning, etc. No matter which part of an application of machine learning they are familiar with, whether it's computer vision or speech recognition, seasoned professionals will be able to put their experience to good use in the financial sector. At its root, deep learning has the same basics regardless of application or industry, and it should be easy for someone experienced to switch from theme to theme.

The system we presented is very basic and, to be applied in the real world, more R&D should be done in order to increase the returns. Possible improvements of the system could be in developing better trading strategies. Collecting more data for training, which is usually very expensive, will help. A smaller time interval between the points is better. Improvements can also surface in using more features (eg, news sentiments or important happenings corresponding to each point in the dataset, despite being hard to code for a neural network) and extensive grid search for hyperparameters and RNN architecture discovery.

Also, more computing power (powerful GPUs are a must) is needed to make a lot of extensive experiments in parallel and to process a large amount of data, provided that a large amount of data is collected.

參考:

  • https://www.datacamp.com/community/tutorials/finance-python-trading
  • http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  • https://en.wikipedia.org
  • https://www.investopedia.com/
  • https://finance.yahoo.com/
  • http://pytorch.org/

Author's Note: I would like to thank Ivan Capalija and Matej Paradzik for the constructive conversations and advice about deep learning in finance, which helped me in writing this blog.