深度|用於能源市場算法交易的機器學習框架

點擊上方關注,All in AI中國

人工智能領域的新突破總會成為新聞的頭條。與直接面向客戶相比,機器學習在金融領域的應用鮮為人知。事實上,幾乎沒有哪個行業像金融業那樣有那樣多幹淨的、結構化的數據,這也是金融業成為機器學習"寵兒"的原因。

深度|用於能源市場算法交易的機器學習框架

大約三年前,作者參與開發了機器學習(ML)模型用於能源市場的價格預測和算法交易,特別是針對歐洲碳排放許可證市場。在本文中,作者想分享一些他在所有ML項目中發現的相關方法和見解,而不是在技術細節上。作者的重點將放在建模背後需要考慮的一般因素,而這在經典學術教科書或新技術的在線教程中很少討論。在後面算法交易的例子中,作者將對"交易技巧"進行討論,並表示將機器學習應用於現實生活環境中,可能會對你的研究有所幫助。

簡述

歐洲碳排放許可證(簡稱 ETS)市場是在2005年《京都議定書》之後建立的,該議定書是歐盟氣候政策的主要支柱,通過"總量限額與排放交易"計劃管制歐洲大約一半的人為二氧化碳排放量。該機制是政府控制溫室氣體排放總量,同時承認了市場力量("貿易")對排放權的有效分配。其基本思路是對汙染定價:即對計劃中涉及的每個工業設施監測並向主管部門報告其確切的溫室氣體排放量,然後通過交付一定配額來抵消相應的數量(以噸計)。這些"汙染權"被拍賣或免費提供給工業企業,然後可以在場外交易或在中央市場交易,以便按需求和供應來靈活地設定價格。

由於環境政策的減排目標限制了每年的排放總量,一些汙染者不得不採取減少汙染("減排")的措施,例如在其煙囪中安裝額外的過濾器。這些汙染者的減排成本低於當前市場價格(例如,因為他們的特定過濾器更加便宜)。然後可以在市場上出售他們多餘的汙染限額以獲取利潤,從而使汙染者面臨更高的邊際減排成本。在完全有效的排放交易市場中,許可證的平均價格將以滿足由許可證供應上限設定的總體減排目標所需的減排成本來確定。

深度|用於能源市場算法交易的機器學習框架

鑑於具體行業特定減排成本的不確定性,該工具允許政府控制排放總量,而排放許可的實際價格根據需求側市場力量波動,即:

  • 市場對未來政策變化的預期
  • 即將進行的拍賣的規模,拍賣的價格和覆蓋率(見圖1)
  • 市場參與者的猜測
  • 銀行業務(一年內發放的許可證適用於同一政策階段的所有年份)
  • 其他能源商品的價格關係。

以後者為例,假設每個熱量單位的天然氣價格低於布倫特原油的價格。電力生產商和公用事業公司將轉而使用這種碳密度較低的燃料,從而降低對碳排放配額的需求。因此,在這些時期內,配額價格也會下降(見圖2)。

深度|用於能源市場算法交易的機器學習框架

圖一

深度|用於能源市場算法交易的機器學習框架

圖二

一個全面的模型需要反映所有這些因素。雖然我們可以假設在豐富的歷史市場數據中觀察到的模式延續到現在並將持續到未來(這實際上是必要的,這是任何分析建模不可或缺的假設),很顯然,這個設置對於任何基於基本關係或來自經濟物理學的狀態空間概念來模擬市場的方法而言,過於複雜。

我們的確需要用一個例子來幫助你瞭解機器學習的力量。

以下是使用監督學習的交易系統工作流程:

深度|用於能源市場算法交易的機器學習框架

1. 數據

獲取數據。獲取金融時間序列的最佳來源是你想要進行交易的交易所的API,比如說AlphaVantage或Quandl的API。數據的規模至少應該與你想要建模和最終預測的規模一樣好。你的預測範圍是多少?較長期的範圍將需要考慮額外的因素,如市場出版物、政策前景、Twitter潮流等等。

如果你是基於短線數據的市場信號進行短期或高頻交易,你可能需要包括各種長度的滑動平均值,以便為你的模型提供歷史背景和趨勢,特別是如果你的學習算法沒有像Recurrent Neural Networks或LSTM這樣的顯示記憶體時。技術分析中使用的所有常用指標(例如RSI,ADX,Bollinger波段,MACD)均基於某種數量(價格,交易量)的某種移動平均線,即使你不相信交易規則,也不相信它們將幫助模型反映大多數市場參與者的交易行為。

你的計算能力可能是一個限制因素,尤其是在你的ML模型將面臨市場營銷或套利尋求者的硬編碼,在快速且獨特的算法進行競爭的情況下。部署專用雲服務器或ML平臺(如H2O和TensorFlow)可以允許你在各種服務器上進行計算。

2. 監督模型訓練

將數據拆分為互補集,以進行訓練、驗證(參數調整,特性選擇等)和測試。這實際上比聽起來更復雜:你最好讓測試集與當前的"市場狀態"儘可能"相似",並且驗證和測試集都應該遵循相同的分佈規律。否則,你可能會在驗證集上浪費很多精力來調整模型參數。但卻發現它很難推廣到測試集。遵循"市場制度"的概念(即商品的特定組合支配目標工具的價格動態的延長期),你有必要使用無監督學習的聚類算法發現定義數據中的相關性,然後評估模型內屬於相同聚類的驗證和測試集中的數據性能(參見圖3在此項目中,聚類將預測性能提高了8%)。

深度|用於能源市場算法交易的機器學習框架

圖三

在早期,決定並建立一個評估指標。追逐太多不同的指標只會導致混亂。在算法交易的背景下,合適的衡量標準是"盈虧"(PnL),因為它將分類精度(價格上/下)與實際的擺動大小("相關性")進行加權。它符合你可能考慮的交易策略指標。觀察訓練和驗證集的模型性能。如果訓練集中的錯誤(即"模型偏差")很多,則可能需要考慮更多的模型參數(例如,通過在深度學習模型中添加更多層/神經元)。如果模型很難概括('模型過度擬合到訓練集'),那就是驗證集和訓練集('模型方差')的性能差異很大,你可能需要向訓練集添加更多數據,減少最相關的特性數量,添加正則化(例如L2,L1或丟失)或提前停止(在梯度下降優化中)。仔細檢查模型出錯的情況將有助於識別任何潛在的和可避免的模型偏差,見圖4。

深度|用於能源市場算法交易的機器學習框架

圖四

建立你的目標性能:對於市場預測,75%的分類精度實際上非常好——它比隨機猜測(50%精度)要好50%。該基線與諸如物體或語音識別之類的其他ML應用非常不同,它們在封閉的環境中運行,在這個環境中,可以清楚地識別影響建模目標的因素(圖像像素的RGB通道,聲音樣本的波頻率)。

3. 交易政策

定義你的交易策略:你可以定義模型輸出的具體交易影響的一組規則:例如,取決於給定預測的模型信心的閾值,你在市場上的什麼位置,多長時間你在市場的給定狀態下持有一個位置等等。一個政策通常帶有一些需要優化的更多自由參數(下一步)。在這裡討論的監督學習的背景下,這是一個基於回溯算法和網格搜索算法的手動進行的過程(下面概述了一些缺點)。

4.回溯和優化

現在我們來看看數據——你的交易系統,在一組歷史市場數據上表現如何?在這裡,步驟2(模型訓練)中使用的測試集可以成為調整策略參數的驗證集。遺傳算法允許你探索策略空間,從第一代100個隨機選擇的策略參數開始,迭代地消除80個最差表現者並使20個倖存者各自產生4個後代。或者你可以在多維參數空間中使用網格搜索算法:從策略參數的某些合理值開始,你可以通過逐個改變參數值來實現最佳性能設置。此處的性能指標是你最終要在交易策略中優化的指標,例如PnL或某些衍生數量,如投資回報率,SharpeRatio(每波動率風險回報率),風險價值,beta等,請參見圖5。

深度|用於能源市場算法交易的機器學習框架

圖五

5.模擬和實時交易

在你的策略生效之前,凍結所有系統參數並實時測試,就像根據你的交易算法的輸出實際下訂單一樣。這一重要步驟被稱為紙張交易,是你檢驗方法有效性的關鍵試金石。你可能會注意到,在歷史數據中,你實際上使用的是在特定時間間內不可用的值,例如在計算移動平均值時。

這裡介紹的典型工作流程有一些嚴重的缺點:

對於衍生合約,例如基礎的期貨,歷史數據通常會報告一天或一個選定時間間隔的開盤價和收盤價以及結算價,該結算價約為在該區間內實現的所有交易中的合約平均價格。但這不太可能是你可以清算買入或賣出訂單的價格,具體取決於在不同買入/賣出價格水平下具有不同交易量的訂單的動態。因此,你從第2步開始的模型預測確實是指理論價格,但可能不是你所押注的價格。更詳細的建模方法需要考慮訂單的實際結構和動態。

制定策略(步驟3)不是基於機器學習的建模的一部分,而是由直覺,經驗或簡單的啟發式指導的手動過程。例如,當模型預測價格上漲時,你會下一個購買訂單。但是你會購買多少份額?面對複雜的市場環境,你將持有多長時間?

姍姍來遲的反饋:在獲得關於策略性能的第一個指示之前,你需要執行步驟1-3。即使模型和策略實際上相互作用密切,預測模型和策略的參數也是獨立優化的。在這個框架中探索政策參數的空間是通過低效的數值優化來完成的,而不是通過預測機器學習模型的強大梯度優化。

強化學習的框架集成了上面的步驟2和3,將交易建模作為一個代理(交易者)與環境(市場,訂單)的交互,以通過其動作(下訂單)來優化獎勵(例如回報)。雖然仍處於早期階段,但最近的研究表明這是一條值得探索的途徑——需要進行進一步的研究。

深度|用於能源市場算法交易的機器學習框架


分享到:


相關文章: