當前位置:
首頁 > 知識 > 全解用Python建立能源市場演算法交易的機器學習框架

全解用Python建立能源市場演算法交易的機器學習框架

作者:SIMON KUTTRUF

翻譯:笪潔瓊

校對:馮羽

本文約4200字,建議閱讀14分鐘

本文將基於機器學習運用Python對歐洲碳排放證書市場建立演算法交易框架。

前言

人工智慧的新突破每天都成為頭條新聞。在金融領域,機器學習的廣泛運用和強大的應用,客戶們並不了解。事實上,很少有像金融行業那樣具有深厚歷史、清楚明了和結構化數據的領域——這使得它成為了「學習機器」的一個早期標誌,在這個領域取得了巨大的成功,而且還在繼續。

大約三年前,我參與了為能源市場的價格預測和演算法交易開發機器學習(ML)模型,特別是在歐洲的碳排放證書市場。在這篇文章中,我想要分享一些我在我的ML項目中發現的相關知識、方法和見解。

的重點不是在技術細節上,而是在模型選擇背後的一般考慮因素,在經典的學術教科書或新技術的在線教程中很少討論。

在演算法交易的例子中,我展示了一些「交易技巧」,你可能會發現,當你把機器學習應用到現實生活中的環境中,比如一個孤獨的求知者或者你的同事們,可能會覺得這是有用的。

能源交易市場

歐洲碳排放證書(EU ETS)的市場是在2005年京都議定書之後確立的,作為歐盟氣候政策的一個重要支柱,通過一項「總量控制和貿易」計劃對歐洲約一半的人為二氧化碳排放進行監管。這一機製為各國政府提供了控制溫室氣體排放總量的控制(「上限」),同時承認了對市場力量(「交易」)的排放權的有效分配。其基本理念是對污染定價:該計劃所涵蓋的每一個工業設施都必須被監測並報告其溫室氣體排放的確切數量,然後通過交付配額來抵消各自的排放量(以噸為單位)。

這些「污染權」被拍賣或免費發放給工業企業,然後可以在場外交易或在中央市場上進行交易,以便按需求和供應靈活定價。

由於環境政策的減排目標限制了每年的總供應量,一些污染者不得不選擇減少污染的措施(「減排」),比如在煙囪里安裝額外的過濾器。這些污染者的邊際減排成本低於目前許可證的市場價格(例如,由於他們的特定的過濾設備很便宜),他們可以將多餘的污染配額出售給那些面臨更高邊際減排成本的污染者,並獲取利潤。

在一個完全有效的排放交易市場中,許可證的均衡價格將以最終減排單位的邊際減排成本為基礎,以滿足限額供應上限設定的總體減排目標。

考慮到具體行業的減排成本的不確定性,該工具允許政府控制排放總量,而排放許可證的實際價格則根據需求方市場力量的變化而波動,包括:

市場對未來政策變化的預期

即將舉行的拍賣許可證的規模、價格和持續拍賣的覆蓋比率(見圖1)

市場參與者的投機

銀行行為(一年內發放的許可證在同一政策階段的所有年份都有效)

其他能源商品的價格關係

為了舉例說明後者,假設每個熱量單位的天然氣價格低於布倫特原油的價格。

電力生產商和公用事業公司將轉而使用這種更少碳的燃料,從而降低了對碳排放的需求。

因此,在這些時期,配額的價格也會下降(見圖2)。

圖1:下午2點的高覆蓋拍賣的看漲信號,很快打破了一個看跌的趨勢

圖2:2017年歐盟與英國天然氣的標準30日(絕對和標準化)

一個全面的模型需要反映所有這些因素。雖然我們可以安全地假定模式中觀察到豐富的歷史市場數據延續到現在,並將持續到未來(這是必要條件,不可或缺的假設,對於任何分析模型),很明顯,這個設置,對於任何試圖建立基於通用市場信念、基於經濟物理學基本的關係或狀態空間概念的模型,都過於複雜。

機器學習的應用

所以這是一個用來釋放機器學習力量的案例。如何利用機器學習呢?

下面是一個使用監督學習的交易系統的典型工作流程圖:

1.獲取數據

財務時間序列的良好來源是你想要交易的交易所的API,AlphaVantage或Quandl的API。

數據的規模至少應該和你想要建模並最終預測的規模相同。你的預測範圍是什麼?

長期的範圍將需要額外的輸入因素,比如市場公告、政策前景,基於twitter關聯數據的情緒分析等等。如果你在短期的遊戲,甚至基於純市場信號的高頻交易數據,您可能想要包括各種長度的平均值為模型提供歷史背景和趨勢,特別是如果你的學習演算法沒有像周期性神經網路或LSTMs那樣的顯式記憶單元。

技術分析中使用的所有常見的指標(如相對強弱指數(RSI),平均趨向指標(ADX),布林線(Bollinger Bands),MACD(平滑異同移動平均線))是基於某種數量(價格、成交量)的移動平均線——即使你不相信簡單的交易規則,該模型將幫助並反映了大多數市場參與者包括他們的交易行為。

您的計算能力可能是一個限制因素,特別是在您的ML模型將與硬編碼、快速且獨特的市場製造或套利者的演算法相抗衡的情況下。

部署專門的雲伺服器或像H2O和TensorFlow這樣的ML平台,可以讓您在不同的伺服器上進行計算。

清理數據(你如何插補空白?),繪製它,同它一起玩耍——你已經發現了交易機會,趨勢,異常嗎?

2. 監督模型訓練

將您的數據劃分為訓練、驗證(用於參數調優、特徵選擇等)和測試的補充集。這實際上比聽起來要複雜得多:最理想的情況是,測試集應該儘可能地與當前的市場狀態「相似」,驗證和測試集應該遵循相同的分布。

否則,您可能會浪費精力在驗證集上調整模型參數,結果卻發現它對測試集的泛化是很糟糕的。遵循「市場機制」的概念,也就是在特定的商品組合中,特定組合商品的延長期支配著你的目標工具價格動態——有必要首先有一個聚類演算法的無監督學習發現定義相關性數據,然後評估屬於同一集群的驗證集和測試集的模型性能(參見圖3——在這個項目中,集群使得預測性能提高了8%)。

圖3按照聚類演算法(彩色部分是EUA結算價格)確定的一致市場周期

在早期,決定並建立一個單一的評價指標。追逐太多不同的指標只會導致混亂。

在演算法交易的正文中,一個合適的衡量標準是「利潤和損失」(PnL),因為它用實際的動蕩大小(「相關性」)對分類精度(價格上升/下降)進行加權。它符合您可能考慮的交易策略的度量標準。觀察訓練和驗證集的模型性能,如果訓練集上的錯誤,即「模型偏差」,是很高的,你可能需要允許更多的模型參數(例如在深度學習模型中增加更多的層/神經元)。

如果模型缺乏泛化(「訓練集的模型過度擬合),也就是驗證集和訓練集上的性能差異(「模型方差」)很高,你可能需要添加更多的數據訓練集,減少最相關的特性,添加正則化(如L2,L1或中止)或早期停止(在梯度下降優化)。仔細檢查模型出錯的情況將有助於識別任何潛在的和可避免的模型偏差,參見圖4。

圖4錯誤分析——價格變動與預測信心(大於0.5:上升,

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

3. 交易策略

定義你的交易策略:一套根據模型輸出定義具體交易內涵的規則:如根據一個給定預測的模型置信度的閾值,設置你在市場上的頭寸,頭寸的大小,以及在給定的市場狀態下,你持有一個頭寸的時間。策略通常會附帶一些需要優化的自由參數(下一步)。

在本文討論的監督學習的背景下,這是一個相當於手動基於反向測試和網格搜索的過程(下面列出了一些缺點)。

4. 回溯測試&最優化

現在,我們可以看到這些數字——你的交易系統,或者預測模型和給定的交易策略之間的相互作用,在一套完整的歷史市場數據上表現如何?

在這裡,步驟2(模型訓練)中使用的測試集可以成為調優策略參數的驗證集。

遺傳演算法可以讓你探索政策空間,從第一代的100個隨機選擇的政策參數開始,迭代地剔除80個最差的執行者,讓20個倖存者每人產生4個後代。

或者,您可以在多維參數空間中使用網格搜索:從策略參數的一些看似合理的值開始,您可以通過逐一改變參數值來達到最優設置。

您在這裡的性能評價是您最終希望在交易策略中優化的,例如PnL或一些導出量,如投資回報、夏普比率(sharperation)、風險價值、Beta係數等等,參見圖5。

圖5 PnL和夏普比率用於各種交易策略

防止將參數過度擬合到驗證集的一個很好的方法是交叉驗證,它使用「向前測試」(WTF:Walk-Forward-Test)來驗證您方法的魯棒性:優化驗證段上的策略參數,在驗證段之後的數據上及時測試它們,將驗證段向前移動,以包含測試數據,重複。這裡的基本假設是,最近的過去比更遙遠的過去更能衡量未來。

5. 模擬和實盤交易

在您的策略上線之前,凍結所有系統參數和實時測試,就好像實際上是根據您的交易演算法的輸出來排列您的訂單一樣。這一重要步驟被稱為紙交易,是檢驗你方法有效性的關鍵試金石。

你可能會注意到,在你的歷史數據中,你實際上使用的值在給定的時間內是不可能達到的,例如計算移動平均值。如果你的策略看起來仍然很有希望,恭喜你——是時候去上線了!雖然您可以從手動下單開始,但不要低估了將您的策略與交易API結合在一起的管理和技術能力。

實際應用中存在的問題

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

對於衍生品合約,如基礎上的期貨,歷史數據通常會報告一天的收盤價或選擇的時間間隔和結算價格,這是在區間內實現的所有交易中合同的平均價格。但這不大可能是你可以通過購買或賣出訂單的價格,根據訂單數量的動態不同,在不同的價格/要價水平上有不同的交易量。所以你的模型預測從第2步開始,是指理論價格,但很可能不是你要下注的價格。

更詳細的建模方法需要考慮到訂單簿的實際結構和動態。

開發策略(步驟3)不是基於機器學習的模型的一部分,而是由直覺、經驗或簡單的啟發式指導的手工過程。當模型預測價格上漲時,你會下一個購買訂單(「長線」)。

但是你買了多少量?你使用什麼置信度閾值?面對不利的市場環境,你能堅持多久?

反饋來得很晚:在你第一次看到你的策略的表現之前,你需要經歷第1-3步。

預測模型和策略的參數是獨立優化的,即使模型和策略實際上是相互關聯的。

在這個框架中探索策略參數的空間是通過低效的數值優化來完成的,而不是通過對預測機器學習模型的強大梯度優化。

強化學習的框架整合了上面的步驟2和步驟3,將交易建模為一個代理(交易者)與環境(市場、訂單簿)的交互,通過其操作(下訂單)來優化獎勵(如返回)。

雖然還處於早期階段,但最近的研究表明,這是一個值得探索的途徑——「需要做進一步的研究」。

後記

參見維基百科,關於「限量及交易」機制的廣泛討論,以及關於歐盟市場框架的更具體信息的維基百科。史密斯,環境經濟學(牛津大學出版社,2011),對市場環境政策的歷史和影響進行了很好的介紹:

歐盟市場(EU ETS)維基鏈接:

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

排污權交易(Emissions Trading)維基鏈接:

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

Denny Britz的博客文章更詳細地介紹了訂單簿的機制,以及演算法交易中強化學習方法的前景:

Denny Britz』 博客地址 :

http://www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/

原文標題:A Machine Learning framework for Algorithmic trading on Energy markets

譯者簡介

笪潔瓊,中南財大MBA在讀,目前研究方向:金融大數據。目前正在學習如何將py等其他軟體廣泛應用於金融實際操作中,例如抓包預測走勢(不會預測股票/虛擬幣價格)。可能是金融財務中最懂建築設計(風水方向)的長腿女生。花式調酒機車沖沙。上賽場里跑過步開過車,商院張掖絲路挑戰賽3天徒步78公里。大美山水心欲往,凜冽風雨信步行。

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:datapi),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公眾號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。

發布後請將鏈接反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 數據派THU 的精彩文章:

開放數據平台、助力國家實驗室:盤點默默耕耘在數據科學領域的清華力量

TAG:數據派THU |