本書旨在展示機器學習如何以實用且全面的方式為演算法交易策略增加價值。它涵蓋了從線性回歸到深度強化學習的廣泛機器學習技術,並演示瞭如何構建、回測和評估由模型預測驅動的交易策略。
它分為四部分,共23 章和一個附錄,共 800 多頁:
該儲存庫包含150 多本筆記本,將書中討論的概念、演算法和用例付諸實現。他們提供了大量的例子顯示:
我們強烈建議您在閱讀本書時查看筆記本;它們通常處於已執行狀態,並且通常包含由於空間限製而未包含的附加資訊。
除了本儲存庫中的資訊之外,本書的網站還包含章節摘要和其他資訊。
為了方便讀者就本書的內容和程式碼範例以及自己的策略和產業發展的發展和實施提出問題,我們正在託管一個線上平台。
請加入我們的社區,與有興趣利用機器學習進行交易策略的其他交易者聯繫,分享您的經驗,並互相學習!
首先,本書示範如何使用各種監督、無監督和強化學習演算法從各種資料來源中提取訊號並為不同資產類別設計交易策略。它還提供相關的數學和統計知識,以方便演算法的調整或結果的解釋。此外,它還涵蓋了金融背景,可幫助您處理市場和基本數據、提取資訊特徵以及管理交易策略的績效。
從實踐的角度來看,第二版旨在為您提供概念理解和工具,以開發您自己的基於機器學習的交易策略。為此,它將機器學習視為流程中的關鍵元素,而不是獨立的練習,引入了從資料來源、特徵工程、模型優化到策略設計和回測的交易工作流程的端到端機器學習。
更具體地說,ML4T 工作流程首先為明確定義的投資領域產生想法,收集相關資料並提取資訊特徵。它還涉及設計、調整和評估適合預測任務的機器學習模型。最後,它需要開發交易策略來對模型的預測訊號採取行動,並使用回測引擎模擬和評估其在歷史資料上的表現。一旦您決定在真實市場中執行演算法策略,您會發現自己反覆迭代此工作流程以融入新資訊和不斷變化的環境。
第二版對 ML4t 工作流程的強調轉化為關於策略回測的新章節、描述 100 多個不同 alpha 因子的新附錄以及許多新的實際應用。為了清晰和可讀性,我們也重寫了大部分現有內容。
交易應用程式現在使用除每日美國股票價格之外更廣泛的資料來源,包括國際股票和 ETF。它還演示瞭如何將機器學習用於具有分鐘頻率股票數據的日內策略。此外,它還擴展了替代資料來源的覆蓋範圍,包括用於情緒分析和回報預測的 SEC 文件,以及用於對土地用途進行分類的衛星影像。
第二版的另一個創新是複製了最近在頂級期刊上發表的幾個交易應用程式:
所有應用程式現在都使用最新的可用(在撰寫本文時)軟體版本,例如 pandas 1.0 和 TensorFlow 2.2。還有一個定製版本的 Zipline,可以在設計交易策略時輕鬆包含機器學習模型預測。
這些程式碼範例依賴於資料科學和金融領域的各種 Python 程式庫。
沒有必要嘗試一次安裝所有庫,因為這會增加遇到版本衝突的可能性。相反,我們建議您在閱讀過程中安裝特定章節所需的庫。
2022 年 3 月更新:
zipline-reloaded
、pyfolio-reloaded
、alphalens-reloaded
和empyrical-reloaded
現已在conda-forge
頻道上提供。ml4t
頻道僅包含過時的版本,很快就會刪除。
2021年4月更新:隨著Zipline的更新,不再需要使用Docker。安裝說明現在引用了特定於作業系統的環境文件,這些文件應該可以簡化筆記型電腦的運作。
2021 年 2 月更新:程式碼範例版本 2.0 將 Docker 映像提供的 conda 環境更新為 Python 3.8、Pandas 1.2 和 TensorFlow 1.2 等; Zipline 回測環境現在使用 Python 3.6。
conda
環境的配置文件,如果您願意,也可以將筆記本中使用的軟體包直接安裝在您的電腦上(並且根據您的系統,準備好加倍努力)。如果您在安裝環境、下載資料或執行程式碼時遇到任何困難,請在儲存庫(此處)中提出GitHub 問題。此處描述如何處理 GitHub 問題。
更新:您可以在此下載本書中使用的algoseek資料。請參閱第 2 章中的預處理說明和第 12 章中的梯度增強模型的日內範例。
更新:圖形目錄包含書中使用的圖表的彩色版本。
本書分為四個部分,分別解決在獲取和使用市場、基本資料和替代資料來源時出現的不同挑戰,為交易環境中的各種預測任務開發機器學習解決方案,以及設計和評估依賴生成的預測訊號的交易策略。
每章的目錄都包含一個自述文件,其中包含有關內容、程式碼範例和其他資源的附加資訊。
第 1 部分:從數據到策略制定
第 2 部分:交易機器學習:基礎知識
第 3 部分:交易自然語言處理
第 4 部分:深度學習與強化學習
第一部分提供了一個用於開發由機器學習 (ML) 驅動的交易策略的框架。它重點關注為本書中討論的機器學習演算法和策略提供支援的數據,概述瞭如何設計和評估適合機器學習模型的功能,以及如何在執行交易策略時管理和衡量投資組合的表現。
本章探討了導致機器學習成為投資產業競爭優勢來源的產業趨勢。我們也將研究機器學習在投資流程中的應用,以實現演算法交易策略。
更具體地說,它涵蓋以下主題:
本章展示如何使用市場和基本數據,並描述它們所反映的環境的關鍵方面。例如,熟悉各種訂單類型和交易基礎設施不僅對於數據的解釋很重要,而且對於正確設計回測模擬也很重要。我們也說明如何使用 Python 存取和操作交易和財務報表資料。
實際範例示範如何使用 NASDAQ 逐筆報價資料和 Algoseek 分鐘柱資料的交易數據,以及一組豐富的屬性來擷取供需動態,我們稍後將使用這些屬性來建立基於 ML 的日內策略。我們也介紹了各種資料提供者 API 以及如何從 SEC 取得財務報表資訊。
本章特別涵蓋:本章概述了替代資料的類別和用例,描述了評估爆炸性成長的資料來源和提供者的標準,並總結了當前的市場格局。
它還示範如何透過抓取網站來建立替代資料集,例如收集財報電話會議記錄以與本書第三部分中的自然語言處理(NLP)和情緒分析演算法一起使用。
更具體地說,本章涵蓋:
如果您已經熟悉 ML,您就會知道特徵工程是成功預測的關鍵因素。它在交易領域至少同樣重要,學術界和產業研究人員幾十年來一直在研究驅動資產市場和價格的因素,以及哪些特徵有助於解釋或預測價格變動。
本章概述了這項研究的主要要點,作為您自己探索阿爾法因子的起點。它還提供了計算和測試alpha 因子的基本工具,重點介紹了NumPy、pandas 和TA-Lib 庫如何促進數據操作,並介紹了小波和卡爾曼濾波器等流行的平滑技術,有助於減少數據中的噪音。讀完後,您將了解:
Alpha 因子產生訊號,將演算法策略轉換為交易,進而產生多頭和空頭部位。由此產生的投資組合的回報和風險決定了策略是否滿足投資目標。
有多種方法可以優化投資組合。其中包括應用機器學習(ML)來學習資產之間的層次關係,並在設計投資組合的風險狀況時將它們視為補充或替代品。本章內容包括:
第二部分涵蓋了基本的監督和無監督學習演算法,並說明了它們在交易策略中的應用。它還介紹了 Quantopian 平台,讓您可以利用和結合本書中開發的數據和機器學習技術來實施在即時市場中執行交易的演算法策略。
本章是第 2 部分的開始,第 2 部分說明如何使用一系列監督和無監督的 ML 模型進行交易。在使用各種 Python 庫演示相關應用程式之前,我們將解釋每個模型的假設和用例。
許多這些模型及其應用程式有幾個共同點。本章涵蓋了這些常見方面,以便我們可以在後續章節中重點關注特定於模型的用法。它透過概述如何將 ML 模型的預測效能製定、訓練、調整和評估作為系統工作流程奠定了基礎。內容包括:
線性模型是迴歸和分類環境中推理和預測的標準工具。許多廣泛使用的資產定價模型都依賴線性迴歸。 Ridge 和 Lasso 迴歸等正則化模型通常可以透過限制過度擬合的風險來產生更好的預測。典型的迴歸應用程式識別驅動資產回報的風險因素,以管理風險或預測回報。另一方面,分類問題包括定向價格預測。
第 07 章涵蓋以下主題:
本章從端到端的角度介紹了設計、模擬和評估由機器學習演算法驅動的交易策略。我們將詳細示範如何使用 Python 函式庫 backtrader 和 Zipline 在歷史市場環境中回溯測試 ML 驅動的策略。 ML4T 工作流程的最終目標是從歷史資料中收集證據,幫助決定是否在即時市場中部署候選策略並將財務資源置於風險之中。策略的真實模擬需要忠實地反映證券市場的運作方式以及交易的執行方式。此外,需要注意幾個方法方面的問題,以避免有偏見的結果和錯誤的發現,從而導致錯誤的投資決策。
更具體地說,學完本章後,您將能夠:
本章重點介紹從時間序列歷史中提取訊號以預測同一時間序列的未來值的模型。由於交易固有的時間維度,時間序列模型被廣泛使用。它提供了診斷時間序列特徵(例如平穩性)和提取捕獲潛在有用模式的特徵的工具。它還引入了單變量和多元時間序列模型來預測宏觀數據和波動模式。最後,它解釋了協整如何識別時間序列中的共同趨勢,並展示瞭如何基於此關鍵概念開發配對交易策略。
特別是,它涵蓋:
貝葉斯統計使我們能夠量化未來事件的不確定性,並在新資訊到來時以有原則的方式完善估計。這種動態方法很好地適應了金融市場不斷變化的性質。機器學習的貝葉斯方法能夠對統計指標、參數估計和預測的不確定性提供新的見解。應用範圍從更精細的風險管理到包含市場環境變化的預測模型的動態更新。
更具體地說,本章涵蓋:
本章將決策樹和隨機森林應用於交易。決策樹從編碼非線性輸入輸出關係的資料中學習規則。我們展示瞭如何訓練決策樹來預測迴歸和分類問題,可視化和解釋模型學到的規則,以及調整模型的超參數以優化偏差-方差權衡並防止過度擬合。
本章的第二部分介紹了整合模型,該模型以隨機方式組合多個決策樹,以產生誤差較低的單一預測。最後得出了基於隨機森林模型產生的交易訊號的日本股票多空策略。
簡而言之,本章涵蓋:
梯度增強是一種替代的基於樹的整合演算法,通常比隨機森林產生更好的結果。關鍵的差異在於,Boosting 根據模型產生的累積誤差修改用於訓練每棵樹的資料。雖然隨機森林使用資料的隨機子集獨立地訓練許多樹,但提升會按順序進行並重新加權資料。本章展示了最先進的函式庫如何實現令人印象深刻的效能,並將提升應用於每日和高頻資料來回測日內交易策略。
更具體地說,我們將涵蓋以下主題:
降維和聚類是無監督學習的主要任務:
更具體地說,本章涵蓋:
文字資料內容豐富,但格式非結構化,因此需要更多預處理,以便機器學習演算法能夠提取潛在訊號。關鍵的挑戰包括將文字轉換為可供演算法使用的數字格式,同時表達內容的語意或意義。
接下來的三章介紹了幾種捕捉人類容易理解的語言細微差別的技術,以便機器學習演算法也可以解釋它們。
文字資料內容非常豐富,但高度非結構化,因此需要更多的預處理才能使機器學習演算法能夠提取相關資訊。一個關鍵的挑戰包括將文字轉換為數位格式而不失去其意義。本章介紹如何透過建立文件術語矩陣將文件表示為標記計數向量,該矩陣又可作為文字分類和情緒分析的輸入。它還介紹了樸素貝葉斯演算法,並將其性能與線性和基於樹的模型進行了比較。
特別是,本章涵蓋:
本章使用無監督學習來建模潛在主題並從文件中提取隱藏主題。這些主題可以產生對大量財務報告的詳細見解。主題模型可以自動創建複雜的、可解釋的文本特徵,從而有助於從大量文本集合中提取交易訊號。它們加快文件審查速度,實現相似文件的聚類,並產生對預測建模有用的註釋。應用包括識別公司揭露、財報電話會議記錄或合約中的關鍵主題,以及基於情緒分析或使用相關資產回報的註釋。
更具體地說,它涵蓋:
本章使用神經網路來學習單一語意單元(例如單字或段落)的向量表示。與詞袋模型的高維度稀疏向量相比,這些向量密集地包含數百個實值條目。結果,這些向量將每個語義單元嵌入或定位在連續向量空間中。
嵌入是透過訓練模型將標記與其上下文相關聯而產生的,其優點是相似的用法意味著相似的向量。因此,它們透過單字之間的相對位置來編碼語義方面,例如單字之間的關係。它們是我們將在接下來的章節中與深度學習模型一起使用的強大功能。
更具體地說,在本章中,我們將介紹:
第四部分解釋並示範如何利用深度學習進行演算法交易。深度學習演算法識別非結構化資料模式的強大功能使其特別適合圖像和文字等替代資料。
例如,範例應用程式展示如何結合文字和價格資料來預測 SEC 文件中的收益意外,產生合成時間序列以擴大訓練資料量,以及使用深度強化學習來訓練交易代理。其中一些應用程式複製了最近在頂級期刊上發表的研究成果。
本章介紹前饋神經網路(NN),並示範如何使用反向傳播有效地訓練大型模型,同時管理過度擬合的風險。它還展示瞭如何使用 TensorFlow 2.0 和 PyTorch 以及如何優化神經網路架構來產生交易訊號。在接下來的章節中,我們將在此基礎上將各種架構應用於不同的投資應用程序,並專注於另類資料。其中包括針對時間序列或自然語言等序列資料定制的循環神經網絡,以及特別適合影像資料的捲積神經網路。我們還將介紹深度無監督學習,例如如何使用生成對抗網路(GAN)創建合成資料。此外,我們將討論強化學習來訓練從環境中互動學習的代理。
特別是,本章將涵蓋
CNN 架構不斷發展。本章介紹了成功應用程式中常見的構建塊,展示了遷移學習如何加速學習,以及如何使用 CNN 進行物件檢測。 CNN 可以從影像或時間序列資料產生交易訊號。衛星資料可以透過農業區、礦場或運輸網路的航空影像來預測商品趨勢。攝影機鏡頭可以幫助預測消費者活動;我們展示瞭如何建構一個 CNN,對衛星影像中的經濟活動進行分類。 CNN 還可以利用其與圖像的結構相似性來提供高品質的時間序列分類結果,我們設計了一種基於圖像格式的時間序列資料的策略。
更具體地說,本章涵蓋:
循環神經網路 (RNN) 將每個輸出計算為先前輸出和新資料的函數,從而有效地創建一個具有記憶體的模型,該模型在更深的計算圖中共享參數。著名的架構包括長短期記憶 (LSTM) 和門控循環單元 (GRU),它們解決了學習長期依賴關係的挑戰。 RNN 旨在將一個或多個輸入序列對應到一個或多個輸出序列,特別適合自然語言。它們還可以應用於單變量和多元時間序列來預測市場或基本數據。本章介紹 RNN 如何使用第 16 章中介紹的詞嵌入對替代文字資料進行建模,以對文件中表達的情緒進行分類。
更具體地說,本章討論:
本章展示如何利用無監督深度學習進行交易。我們也討論了自動編碼器,即一種經過訓練可以再現輸入的神經網絡,同時學習由隱藏層參數編碼的新表示。自動編碼器長期以來一直用於非線性降維,利用我們在過去三章中介紹的神經網路架構。我們複製了最近的 AQR 論文,該論文展示了自動編碼器如何支援交易策略。我們將使用依賴自動編碼器的深度神經網路來提取風險因素並預測股票回報,以一系列股票屬性為條件。
更具體地說,在本章中您將了解:
本章介紹生成對抗網路(GAN)。 GAN 在競爭環境中訓練生成器和鑑別器網絡,以便生成器學習生成鑑別器無法與給定類別的訓練資料區分開來的樣本。目標是產生一個能夠產生代表此類的合成樣本的生成模型。雖然 GAN 在影像資料中最受歡迎,但它也被用來在醫學領域產生合成時間序列資料。隨後的金融數據實驗探討了 GAN 是否可以產生可用於 ML 訓練或策略回測的替代價格軌跡。我們複製 2019 年 NeurIPS 時間序列 GAN 論文來說明該方法並展示結果。
更具體地說,在本章中您將了解:
強化學習 (RL) 透過與隨機環境互動的代理來模擬目標導向的學習。強化學習透過從獎勵訊號中學習狀態和動作的價值來優化代理關於長期目標的決策。最終目標是導出一種對行為規則進行編碼並將狀態映射到行動的策略。本章展示如何制定和解決強化學習問題。它涵蓋了基於模型和無模型的方法,介紹了 OpenAI Gym 環境,並將深度學習與 RL 結合來訓練在複雜環境中導航的代理。最後,我們將向您展示如何透過對與金融市場互動的代理進行建模,同時嘗試優化目標函數,使強化學習適應演算法交易。
更具體地說,本章將涵蓋:
在最後一章中,我們將簡要總結整本書中的基本工具、應用程式和經驗教訓,以避免在這麼多細節之後忽略全局。然後,當您擴展我們介紹的許多機器學習技術並在日常使用中變得富有成效時,我們將確定我們沒有涵蓋但值得關注的領域。
總而言之,在本章中,我們將
在本書中,我們強調了特徵的智慧設計(包括適當的預處理和去噪)通常如何產生有效的策略。本附錄綜合了特徵工程的一些經驗教訓,並提供了更多有關此重要主題的資訊。
為此,我們將重點放在 TA-Lib(參見第 4 章)和 WorldQuant 的 101 Formulaic Alphas 論文(Kakushadze 2016)實施的廣泛指標,該論文提出了生產中使用的真實定量交易因子,平均持有期為0.6 -6.4天。
本章內容包括: