官术网_书友最值得收藏!

3.2 因變量的選擇

在機器學習領域,很多人把精力放在構建預測因子上,因為機器學習出現的很多都是分類問題,因變量是顯然的。比如手寫數字識別,因變量就是0~9這10個數字。還有一些圖像識別,因變量就是貓頭、狗頭等圖像,這些都是相當顯然的。既然因變量如此簡單,那么具有研究意義的就只有自變量了,因此就會花更多時間在構造因子上。

3.2.1 因變量的重要性

在金融領域,因變量就不那么顯而易見了,需要自己定義。很多人剛開始研究的時候喜歡套用分類模型,也就是把y變量分成上漲、不變、下跌3類,這樣顯然是不夠精確的。而且如果僅有價格變化的方向而沒有幅度,也不足以觸發交易。很多時候,價格只在很窄的區間里面震蕩,這個時候即便預測對了漲跌的方向,但由于價格波動強度不足以覆蓋交易成本,即使交易也很難賺到錢。

因變量的選擇多種多樣,不同因變量對應不同的策略,通過改變因變量來增加策略的數目相對于改變因子來說是有很多優勢的,比如改變因變量后不需要增加新的因子,模型計算量比較固定,特別是實盤中,如果需要開發新的因子和增加新的內存和計算時間的話,改變因變量則一般好很多,計算完就沒用了,不需要保存;另外,如果因變量固定,僅僅改變自變量的話,策略并沒有什么變化,因為擬合的目標變量沒有變化,只是預測的準確度改變了,而如果改變了因變量,則真正改變了策略,這樣得出的策略相關性更低。

3.2.2 價格未來變化的對數收益率

以下是較為常見的因變量,之前的研究也是用價格未來變化的對數收益率作為因變量。從數學的角度出發,對數收益率可以累加,方便處理,而且跟實際的收益率相似,因此常常用它來作為實際收益率的近似值。現在來研究一下對數收益率的性質。

平均值接近零,標準差是0.007 136 72,但如果觀察每個合約內部的均值和標準差,則有:

平均收益率如圖3-2所示。

圖3-2 價格平均收益率

由圖3-2可見價格變化的平均是基本平穩的,在零附近波動,畢竟短期來看價格上不會有明顯的趨勢,否則整體的趨勢會相當明顯,但實際上不會有這么明顯的趨勢。

對于價格波動的標準差,如圖3-3所示。

圖3-3 價格波動的標準差

由圖3-3可見,標準差呈現逐步上升的形態,這說明價格變化的時間序列整體上是不平穩的。

對于不平穩的y,使用回歸模型會不會有問題呢?實際上,對一些趨勢性很明顯的yx來說,有偽回歸的嫌疑,因此會對它們進行差分后再進行回歸。但現在y本身并沒有趨勢性,只是變化幅度逐漸變大。其實我們這里定義的y并不服從獨立同分布的假設,并且我們做最小二乘擬合也并沒有用到這些假設,我們本質上就是在預測因子所在的線性空間找一個跟因變量y距離最近的向量,這并不依賴獨立性、平穩性等假設,只要不用到與統計量相關的經典統計學內容,我們做的回歸分析都是可行的。

然而,正是由于y的幅度會隨著時間的變化而變化,而根據波動率聚類的原理,用近期數據做擬合或許會更有意義。因此,如果能更頻繁的更新模型,對我們其實是有幫助的。對于y的走勢,如圖3-4所示。

代碼為

可見,近期的價格波動確實比前面要大很多。

圖3-4 因變量的圖形

3.2.3 價格變化的點數

用價格變化的點數代替對數收益率也有一定的道理。首先,與對數收益率類似,價格實際點數的變化也是可加的,這跟實際收益率不大一樣。其次,在不考慮資金管理的情況下,研究期貨策略一般都是默認固定1手,這時本質上獲取的是單利而不是復利的收益,考慮到實際的盈虧跟實際的收益其實是一樣的,用實際盈虧或許更直觀一些。

y的各個合約的均值,如圖3-5所示。

圖3-5 各合約因變量均值

由圖3-5可見,價格變化的平均值基本不會有什么變化。對于標準差,如圖3-6所示。

圖3-6 各合約因變量標準差

與之前對數收益率類似,按實際價格變化的標準差計算的話也是呈現出最近上漲的趨勢,也不是平穩的。下面分析一下幾個指標在這個y值的表現。

之前對數收益對應的結果是-0.265 511 2,可見改變y之后兩者相差不大。我們再看一個例子:

之前對數收益的結果是0.787 369 1,可見相差也不大。因此,這兩個因變量的選擇區別不大。

由此可見,簡單改變一下y值或許并不會發生多大的變化。使用這種絕對金額的變化而不是對數收益率還有一個好處,就是對于做套利交易的策略,每次交易一個品種時,買一個賣一個,本質上就是交易價差合約。期貨的價格一定是大于零的,但價差卻可能是負數,負數沒有對數,不存在對數收益率,因此這時只能用價格本身的變化作為因變量。

3.2.4 小波等去噪方法

前面章節提到過,改變因變量是比改變自變量更好的選擇,其中另外一個好處在于無論因變量的構造如何復雜,在實盤中我們是不需要實現的,實盤中我們只需要把自變量線性相加,得到因變量的預測值,而不需要構造因變量的實際值,況且實盤中也得不到因變量的實際值。

因此,我們可以用一些更高級的方法來處理因變量,而不需要對自變量進行處理。如果我們對自變量也這么處理,那么我們也必須在實盤中對自變量進行相應的處理,這樣一來編程量會非常巨大,而得到的回報未必很多。

下面來看一下小波分析的影響。首先把原來的因變量y整理出來,如圖3-7所示。

圖3-7 因變量的值

其中用到的軟件包是wavelets,如果大家對小波分析在時間序列的應用感興趣,可以參考這本書《Wavelet Methods for Time Series》,作者是Donald B.Percival和Andrew T. Walden,這個軟件包跟這本書是相對應的。

小波算法本質上可以理解為濾波,即對信號進行過濾,希望把噪音過濾掉。對于簡單的時間序列,或許本身噪音就不多,因此使用小波基過濾之后恢復的序列可以跟原序列一樣。對于金融時間序列,噪音比較多,過濾后的序列或許會跟原來不一樣,我們可以詳細分析一下。下面的這條命令:

是把向量轉成時間序列,這樣才能用小波函數進行分析。

這里我們使用了dwt()這個函數進行分析,dwt()是discrete wavelet transform的縮寫,離散小波變換,這里使用的濾波是haar濾波,用了3層濾波,對邊界點的處理是reflection,它還有一個選項是periodic,我們可以試試:

原來reflection是0.907,現在periodic是0.727,效果差很多,畢竟原來的時間序列不是周期函數,所以還是用reflection比較好,它相當于用近期的數據進行填充。一般收益序列有波動性聚類,用近期的數據進行填充會比較好。

我們這里先用了dwt()得到小波基的各項系數,然后用idwt()把信號還原,得到的時間序列長度跟原來是一樣的,都是74565,后來的數據相當于過濾之后的收益序列,它們的相關性高達90%,我們希望的結果是把噪音過濾掉,保留信號。我們可以改變n.levels試一下:

可見多加一層濾波之后相關性下降了不少。我們現在只分析n.levels=3的情況。

可見,均值/標準差是-2.07,這是相當穩定的表現,比之前0.78的水平好很多。另外93%的數值都是負數。或許大家比較奇怪的是為什么原來是正數現在成了負數?要知道這兩個目標向量的相關性高達90%,為什么會出現這么大的差異?這也正是金融數據的特點,在極端高波動的情況下,往往跟低波動情況呈現出相反的特征,而波動太高的行情往往難以持續,而且風險也大,需要避免交易,而小波分析很好地考慮到了這點。

大家可以嘗試使用其他的濾波,由于只是改變了因變量,預測因子沒有改變,因此實盤程序不需要做任何修改,只需要保存系數的配置文件修改就可以了,這也是改變因變量的好處。低頻的因子和因變量就介紹到這,下面章節介紹高頻因子。

主站蜘蛛池模板: 沙洋县| 洪雅县| 陆良县| 深圳市| 洛隆县| 洛阳市| 高台县| 北票市| 黄梅县| 花垣县| 比如县| 游戏| 宁波市| 钦州市| 阳朔县| 宜州市| 双流县| 昌乐县| 霍山县| 巨野县| 嘉善县| 天津市| 霍城县| 渑池县| 华容县| 通许县| 额尔古纳市| 应城市| 南皮县| 麻城市| 渭源县| 醴陵市| 三河市| 邹平县| 靖边县| 宜春市| 汨罗市| 黄陵县| 满城县| 陕西省| 陈巴尔虎旗|