基于基本面因子的量化交易模型解析
投研機構對商品期貨價格變化的研究,無不是以商品基本面分析作為出發點,但通常沒有給出明確的交易建議,所以效果難以被觀測。本文以經濟學基本原理為基礎,賦予基本面數據的合理算法,結合對期貨交易過程中的量化控制,設計成集基本面分析和交易于一體的量化交易模型,以模擬交易效果證明基本面分析的有效性。?
[量化交易的基本概念]
投資者參與期貨交易的目的并不相同,有投機、套保、套利或者其他,雖然投資者也可以運用其他金融工具實現自己的目的,但所有的工具都是中性的,金融工具的多樣化、復雜化,只不過給了投資者更多的選擇,以滿足他們不同的需求偏好。然而,無論投資者追求大概率的小回報,還是追求小概率的大回報,都必須在價格運行方向或區間判斷上具有優勢,使交易結果的數學期望值為正才能獲利。雖然加大杠桿倍數會使可能的收益放大,但同時也會使可能的虧損放大,對增加收益的數學期望值于事無補。
一般而言,行情分析方法大致分為三類:基本面分析、盤面技術分析以及兩者的結合。投資者在做分析時考慮的因素和具體方法各不相同,但效果到底如何呢?投資者可以用真金白銀去試,從實踐中去總結。不過,對量化交易者來說,總是要把影響價格變化的各種因素進行量化(數字化、指標化)分析,用歷史數據來模擬交易,檢驗其交易結果,評估其可行性。
量化交易是在量化分析的基礎上,建立標準化的交易策略或規范,對實時接收到的數據信息進行運算,給出明確交易指令的交易模式,其中還包括對交易過程和交易結果的量化控制。量化交易策略可以很簡單,也可以很復雜,其特點是可測量、可復現、可預期等。量化交易不一定是自動化(程序化)交易,也可以手動下單,重點是分析要量化,交易要系統化、標準化,形成不被人情緒所左右的規范。
[宏觀對商品價格的影響]
下面重點說明基于供需基本面量化交易模型的研究思路,并展示其驗證過程和模擬效果。量化交易本身是一種研究方法,量化分析和模擬交易結果的統計,能夠幫助我們了解各種分析方法的效果,提高我們對交易的認識。
在這里有必要談一下宏觀面對商品價格的影響,因為宏觀面對商品價格的影響最大,包括持續時間長久、影響范圍寬廣。宏觀經濟分析中最重要的理論之一是周期論,我們生活在周期中,大的周期長達幾十年甚至上百年,而在有生之年,我們的生活會怎么樣,是越來越好,還是停滯不前,甚至越來越差,這除了與我們的自身努力以及各種機緣巧合相關外,更重要的是我們生活在什么地方、生活在什么年代,處于什么樣的大經濟周期中。由于小的經濟周期是5—10年(當然這個時間跨度是難以被準確測量的),疊加在大的經濟周期上,所以即便是經濟持續增長,增長速度也有快有慢,整體呈現周期性的波動。長期經濟增長由生產力提高決定,生產力提高包括技術革新、資本設備投入增加、勞動力人口增加等。
下面用同比指標過濾掉經濟長期增長趨勢,可以清晰看到小經濟周期的波動,如圖所示:
圖為名義GDP增長與GDP增長同比
圖中灰色曲線是名義國內生產總值(GDP),顯示我國經濟長期增長;黑色曲線是GDP季度同比增長,反映經濟增長速度的變化。
重要的經濟周期有信貸周期、庫存周期、產能周期和房地產周期等。其中,最重要的是信貸周期,被稱為“周期之父”,其他周期都與之有關聯。下面重點看一下信貸周期對商品價格的影響。
如下圖所示,商品價格同比波動較M1同比稍微滯后,但步調基本保持一致,除了圖中圈標的那一段時間,橡膠和銅的價格波動與M1出入較大。這可能是外部原因造成的,因為這兩種商品生產所需的原材料都嚴重依賴進口。另外,橡膠既是工業原材料,同時又是農產品,所以橡膠的周期可能與其農產品特性有關。?
?
圖為M1變化與商品價格變化
由此可以得出,宏觀經濟增長、資產價格、商品價格都呈周期性波動。無論是投資還是投機,我們尤其要關注信貸周期和房地產周期。除了制度性改革外,政府和央行為實現宏觀經濟增長各項指標,會通過財政和貨幣政策對宏觀經濟周期進行調控。因此,金融機構在做宏觀經濟分析時,會密切關注和預測世界各國政府及央行的舉動。
周期如此重要,但應用起來卻很困難,因為周期的拐點難以被準確預測,而且期貨交易是杠桿交易,交易者難以忍受大周期中的次級反向波動。筆者認為,周期在交易中的應用,可以體現在對交易品種凈頭寸以及產品或資產賬戶整體頭寸配置的管理方面。
[微觀對商品價格的影響]
如果說宏觀研究能描繪出商品價格波動的大致輪廓,那么要想提高分辨率把這個輪廓看得更清楚一些,就要研究商品的供需關系,這是微觀經濟的范疇。決定一種商品價格的因素非常復雜,我們只能先進行簡化,找到其中最關鍵的三個要素——價格、供給量、需求量。
圖為供給曲線變化
商品供給量是價格的函數,供給曲線S的線性函數表達式為QS=-δ+γ×P。其中,QS是商品供給量,P為商品價格,δ、γ為常數。供給函數描述的是價格越高,商品供給量越大,所以供給曲線是一條向右上傾斜的曲線。我們也可以用非線性函數來描述供給量和價格之間的關系,不過無論是線性函數還是非線性函數,都不能準確計算其數值,這里面有大量的假設和無法確定數值的參數。不過,我們只需要表達因變量跟隨自變量是正向變動關系還是反向變動關系,不影響分析結果。
商品需求量也是價格的函數,表達式為Qd=α-β×P。其中,Qd為商品需求量,P為商品價格,α、β為常數。需求函數描述的是價格越高,需求量越小,所以需求曲線D是一條向右下傾斜的曲線。供給曲線和需求曲線所表達的供給量和需求量與價格之間的關系,與我們的經驗和直覺完全一致。
供給曲線S和需求曲線D相交于E點,此處QS=?Qd,則-δ+γ×P=α-β×P,解方程求價格為Pe=(α+δ)/(β+γ)。Pe即為均衡價格,是商品的市場需求量和市場供給量相等時的價格,此時市場出清。通常市場并不知道均衡價格是多少,市場價格是買方和賣方交易的結果,偏離均衡價格是常態,但市場價格會有自動向均衡價格回歸的傾向。當均衡價格不變時,市場價格以均衡價格為中心,上下振蕩。
上述是一個商品定價的靜態模型,?α、β、δ、γ都被設定為常數不變,用靜態分析方法,可以得到商品的均衡價格。實際上α、β、δ、γ這幾個參數是可變的,可以稱之為可變的常數,是外生變量。當商品的供給和需求(注意不是供給量和需求量,這是內生變量)發生變化時,至少會改變α和δ的值,即改變供給曲線和需求曲線的截距,使供給曲線和需求曲線發生平移。
比如,價格變化影響鋼廠的利潤,進而影響鋼材的供給量,此時供給曲線不會移動,價格變化可以解釋供給量的變化,但如果是技術進步、設備投入造成產能擴張,此時供給增加不能被價格變化解釋,是δ值發生改變,供給曲線整體向右平移。同時,房地產開發投資對鋼材需求量的價格彈性也很小,它的變化使α值發生變化,需求曲線整體向右或者向左平移。供給曲線移動和需求曲線移動會在新的位置發生交叉,如上圖中虛線所示,這個交叉點所對應的價格就是新的均衡價格,均衡價格運動,市場價格也會隨著進行趨勢運動。
[靜態定價模型初級檢驗]
綜上所述,商品價格波動可以解釋為,跟隨均衡價格變化的趨勢和圍繞均衡價格振蕩的疊加。行情研究的重點在于商品均衡價格的運動方向,即市場價格變化趨勢。道理很簡單,現在我們用歷史數據來驗證,根據上述分析方法模擬商品價格的變化,與實際價格變化是否吻合。事實上,大部分有關商品基本面的研究,最后都會歸集在商品的供需變化之上,如果供需原理不能得到實際價格的驗證,那問題就大了。首先來看螺紋鋼價格走勢:
?圖為線材模型價格與現貨價格
這張圖的數據長達17年,其中用線材現貨價格代替了螺紋鋼現貨價格,因為線材現貨價格數據的歷史更長,并且和螺紋鋼價格的變化幾乎完全一致。可以看到,除了受2008年金融危機及之后4萬億元投資托底經濟政策的影響,螺紋鋼實際價格變化領先于模型價格(因為模型沒有表達金融危機對價格的影響)外,其他時間段模型的價格變化與實際價格變化的步調一致。
再來看鐵礦石的靜態定價模擬情況:
圖為鐵礦石模型價格與現貨價格
基本上,模型價格變化和進口鐵礦石實際價格變化步調一致,區別在于波動幅度不同。鐵礦石比螺紋鋼復雜得多,而且其供給基本上被寡頭壟斷,模型在計算時對數據進行了篩選,才有了圖中這個效果。
?接下來看動力煤的靜態定價模擬情況:?
?圖為動力煤模型價格與現貨價格
圈標的那一段時間,模型無法解釋現貨實際價格走勢,模型價格變化與實際價格走勢嚴重背離,但如果把模型這一段由向上改為向下,就會發現模型整體的價格變化與實際價格變化極為相似。
最后來看橡膠的靜態定價模擬情況:
圖為橡膠模型價格與期貨價格
結果如上,有兩處明顯不一致,其他時間段在變化方向和轉折時點上基本吻合。變化幅度沒辦法對比,因為模型算不出絕對價格。
從以上分析可以看到,在用不同商品對模型算法進行驗證的過程中,模型的價格變化多少都出現了與實際價格不符的情況,這可能與數據質量有關系,也可能有更深層次的原因。在微觀上,不同行業、不同商品有不同的基本面特點,所謂隔行如隔山,這就要求我們對不同商品的基本面做到足夠專業,才能找到有效的數據和合理的算法,尤其是農產品的生產周期很長,用靜態定價模型來解釋其波動可能是行不通的。
不過,雖然我們無法算出商品均衡價格的絕對值(這個對理論和數據質量都是巨大挑戰,但也不是不可以研究),但可以大致推算出其變化方向、模型的價格變化方向以及上述商品實際價格變化方向和關鍵轉折點基本吻合。由此可以證明,商品供需變化對價格趨勢變化起著決定性的影響,模型算法基本合理。
[靜態定價模型測試效果]
有了對基本面的量化研究和預測,我們就對價格變化方向有了基本的判斷,不會漲時看漲、跌時看跌,這樣就可以解決交易問題了。
雖然上述用供需因子變化來解釋商品實際價格變化軌跡,采用的是月頻數據,分辨率仍然不高,難以滿足期貨交易的要求,同時基本面的數據大多滯后很長時間才能公布出來,這些數據只能做歷史分析和檢測,而要做交易必須對這些數據進行預估,這對量化交易來說有點麻煩,因為量化交易是以客觀事實為基礎的,而對未來數據進行預估則存在很強的主觀性,但我們可以通過得到的高頻數據,比如,周頻甚至日頻數據,提前推算出我們所需要的低頻數據,這種方法不僅可行,而且是必須的。
此外,期貨交易不是只有漲跌邏輯,還有預期和現實的拉鋸,以及成本、利潤、期現、跨期、上下游及相關品種的關系等邏輯,不同的邏輯決定了不同的交易行為,由此對期貨價格構成了影響。這些因子和邏輯都屬于理性范疇,可以納入模型進行計算,提高模型對價格波動的解釋能力。
不過,價格是交易的結果,人們完全可能對信息產生誤判,加上資金的博弈、群眾心理的變化,這些都會使市場價格出現錯誤或非理性波動。因此,假設存在完美正確的理論和模型,由于它是理性的,所以必定不能解釋錯誤的、非理性的價格波動。
對于解釋不了的東西,我們還有最后一道防線——對虧損的控制。以上種種分析都是在尋找影響價格變化的原因,以此來預測價格運動方向,但所有模型最終都必須把市場實際價格變化考慮在內,因為如果模型預測是正確的,但被錯誤的市場價格運動消滅了或損失慘重,那么對這種正確的堅持,就是錯誤的,何況我們又何以斷定模型預測一定是正確的呢?因此,在價格實際運動方向與模型判斷相反時,等待;在交易出現虧損時,離場。于是,模型在交易過程中為控制風險,會不可避免地產生損耗(保護性止損),這便是量化交易的成本。主觀交易同理。
下面來展示一下基于供需基本面和數據挖掘的交易模型的測試業績圖,以螺紋鋼期貨為例:
?
圖為螺紋鋼基本面因子交易模型業績曲線1、2
需要說明的是,雖然我們是自上而下設計模型,但沒辦法一蹴而就,不可避免地要對算法和參數進行調試,這便產生了擬合。為避免過度擬合,先在一個商品上做實驗和調試,然后照搬到其他商品上進行樣本外檢測,最后要求算法和參數對同類商品普遍適用,或者與行業基本面分析習慣保持一致。
雖然看上去資金曲線不錯,但實際上這是用時間堆積起來的效果。可以放大看一下2019年的交易信號,如下圖所示:
?
圖為螺紋鋼基本面因子交易模型信號片段
資金曲線馬上就不平滑了,我們利用這個圖來說明交易過程中的資金損耗。2019年春節后,模型以看空螺紋鋼為主,但也發生了幾次反復,這實際上說明了價格往上和往下的驅動都不足,市場情緒對價格的影響更大,模型在交易過程中出現了大量損耗,利潤回吐。在2019年6月下旬短暫做多略有盈利后,又在7月試空幾次終獲成功,資金曲線再創新高。因此,量化交易模型并非通過神奇而又恰到好處地捕捉到最佳交易時點而獲利,而是通過長時間的堅持和重復試錯,才能發揮其判斷上的優勢,取得正收益。總之,確定性的交易機會,主觀交易做不到,量化交易更做不到。??
注:本文轉載自? ??期貨日報
推薦閱讀:
1.一個量化策略師的自白(好文強烈推薦)
2.股票期貨經典的量化交易策略都在這里了!(源碼)
3.期貨/股票數據大全查詢(歷史/實時/Tick/財務等)
4.當真躺著賺錢?量化交易的十大難題
5.從量化到高頻交易,不可不讀的五本書
6.如何有效的規避量化交易中的滑點?
總結
以上是生活随笔為你收集整理的基于基本面因子的量化交易模型解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中final使用
- 下一篇: LeetCode 258 Add