量化研究 | 策略在指数与主连复权的差异化分析(最终篇)
?量化策略開發,高質量社群,交易思路分享等相關內容
作者簡介
呂洋洋?
某大型資管公司在職量化策略研究員,熟悉數據清洗工作,擅于運用宏觀因子、行業因子等進行對期貨品種價格影響建模與相關性分析,理解機器學習多元回歸法,SVM,XGboost,金融時間序列等底層算法邏輯,部分算法可自定義函數封裝。掌 握各種機器學習包與數據計算分析包的運用。包括不限于:Alphalens,pandans,爬蟲技術,sklearn,statsmodels 等。
『正文』
ˇ
該篇是指數和主連復權差異化分析的最后終結篇。前兩篇中,我們提出了該篇文章分析的必要和背景,分別在一些量化公眾號和論壇上發表,也收到了很多人的想法和建議以及疑問。在這里先感謝大家的關注和閱讀。
本篇將把前兩篇內的遺留問題統統的梳理完畢;其次,筆者本人將主連復權的原理和算法寫出來,供大家參考借鑒和討論;再次,本人會將主連復權完畢后的回測細節在進一步推進完善。最終讓我們的回測真正實現所測即所得的目標,真正崛起指數回測和實盤的虛無縹緲。
在之前兩篇中,大家的問題主要集中在“如何復權,以及采取什么方式復權最合理”,“主連復權的績效比指數波動大,甚至還比指數績效好的原因”,“主連復權回測的跟實盤一樣嗎”,“真實價格映射后就完事兒了嗎”等這么幾個接近實盤的問題。下面我就來帶著這些問題來一一回復給大家。
問:主連復權回測的跟實盤一樣嗎?
答:不一樣,具體請看下一問。
問:主連復權的績效比指數波動大,甚至還比指數績效好的原因
答:因為主連后復權的原因,除了一直保持升水結構品種以外,基本上復權到現在所有品種基數都很大了,所以導致了回測績效曲線收益也大,回撤也大,因為價格里面包括了rollover的倍數。這里我沒有說是因為我要放在這一期介紹后復權原理后,揭曉答案的,沒想到還是有研究過的人看出來了。另外,這種收益和回撤理論是倍數關系,但是孰大孰小隨著行情和止盈止損條件并不一定清楚。
因此我們在回測和實盤中采用的是真實價格映射,也就是rolloverRealPrice這個函數,將發單價格再次根據“復權價格”=真實價格*復權因子這個公式,再次反推真實價格,用來計算開平倉的績效。這樣我們計算的就是真實的績效(在不考慮滑點兒情況下)而不是被動按照后復權價格計算。目前初步測試看,真實價格映射計算出來的反而還要比直接用主連復權的要好一些。
問:真實價格映射后就完事兒了嗎?
答:并不是,因為開平倉的價格是通過在初始化時候,對復權價格進行了反運算。也就是說我們信號的計算是復權價格,但是開平倉的價格是真實的實盤合約價格。我們腦補一下,如果你的策略里面有用到將進場價格賦值給某個變量的,而后計算例如止盈止損等變量值的時候,那么這里面就肯定會有錯。
問:如何復權,以及采取什么方式復權最合理
答:這里我多寫一些前因后果,請耐心閱讀
眾所周知,在主連復權出來之前,我們基本上都用的000的指數價格進行“規則型”策略的研發,這種000商品指數合約的常見算法,是將一個品種所有合約的開倉合約市值相加,再除以這個品種所有合約總數,最后得到一個加權平均價格,這就是000商品指數。
舉例說明:
| 合約 | 價格 | 持倉量 | 市值(價格*持倉量) |
| XX01 | 200 | 1000 | 200000 |
| XX05 | 220 | 7000 | 1540000 |
| XX10 | 240 | 2000 | 480000 |
| 合計 | 10000 | 2220000 |
000指數 = ∑(合約價格*合約持倉量)/∑合約持倉量
也就是說,000指數?= 2220000?/ 10000?= 222,其實大家都看得出來,這是一個加權平均。這種例子只是為大家說明指數合約的由來和算法,當然了,某些行情軟件的跟這個并不完全一樣,但是大同小異。
下面我舉一個指數失真的例子:
假設某品種所有合約T時刻的狀態如下
| 合約 | 價格 | 持倉量 | 市值(價格*持倉量) |
| XX01 | 200 | 2000 | 400000 |
| XX05 | 220 | 10000 | 2200000 |
| XX10 | 240 | 8000 | 1920000 |
| 合計 | 20000 | 4520000 |
指數價格 = 4520000/20000 = 226
假設某品種所有合約T+1時刻的狀態如下
| 合約 | 價格 | 持倉量 | 市值(價格*持倉量) |
| XX01 | 240 | 2000 | 480000 |
| XX05 | 260 | 10000 | 2600000 |
| XX10 | 180 | 8000 | 1440000 |
| 合計 | 20000 | 4520000 |
指數價格 = 4520000/20000 = 226
顯然我們可以看到,指數的價格在兩個時間點是相同的,都是226。但是我們注意主力合約時,便會發現05合約的價格從220上漲到了260,漲幅達到了260/220-1=0.18(18%)。另外,次主力合約10,跌幅達到了180/240-1 =?-0.25。合約上這樣強烈的波動,指數為什么巋然未動?
原因主要有兩點,其實也是我前兩篇文章中一直總結的兩點。
第一,主力合約和次主力的持倉量非常接近,05合約有10000,占總持倉的50%,而10合約有8000,占總持倉的40%,從占比來說相差并不懸殊。
第二,主力合約和次主力合約的價格發生了反向變動。在常規情況下這種變化是很少發生的,但是假如市場出現重大變動導致影響市場近期供需,而對遠期供需基本不產生影響,這時便會產生價格反向變動。例如我們今年的疫情,導致了很多機構在2-3月份出現了做空近月,做多遠月的情況。以及雞蛋行情結構等等。說明在實盤過程中,這種情況是比較常見的。
我們退一萬步來說,即使行情結構沒有問題,屬于同漲同跌,那么當換月發生過程點的時候,主次合約的權重占比接近,兩者的升貼水是有的,因此也直接導致了對升貼水的加權平均。
在我們上述的例子中,主次合約的權重比重接近,對指數的影響正好被對沖掉,導致指數基本沒有變化。
指數既然沒有變化,顯然不可能觸發任何交易信號,然而實際行情很有可能已經天翻地覆。如果說錯過的是開倉信號,風險還是可控的。如果錯過的是平倉信號,甚至是止損信號,這個風險就不可控了。
當然以上例子是為了方便說明,條件設定較為夸張,但是我們講藝術來源生活,真實這種例子筆者本人可以100%負責跟大家說,也得卻是發生過的。這也是筆者本人曾經一直擔驚受怕,心有所念迅速切換主連復權的原因。
因此基于以上的真實場景,我們發現了指數合約的致命核心點所在。所以我們接下來考慮的就是復權的類型和方式。復權類型指的是:前復權和后復權,方式指的是:差值復權和比例復權。
如下圖所示,前復權就是將紅框之前所有數據往下移對標后面的紅框,后復權反之亦然。
由于程序化模型的運行機制是從左到右運行,那么前復權會導致歷史數據被修改,之前模型留下的信號記錄就必須重算,等于說運行到一個復權節點,就要回頭把之前的數據重新復權一下再運行計算一遍。我們先不談系統設計復雜性和效率性,我們就談歷史數據的不斷迭代變化,這本身就是一個違背正常人邏輯的一件事兒,怎么能隨著新合約進入,然后歷史數據就不斷的變化了呢?
其次,如果是后復權那么只需要后復權一個新主力合約價格即可,但是前復權是所有合約和數據,設想一下:100年后你是否也愿意面對當切換新合約后,你要把歷史百年甚至數十年的數據進行重新計算迭代呢?
因此,在復權類型上面我們采用的是后復權。
接下來,就是差值復權和比例復權,這個邏輯也很簡單,如果某個品種主次合約一直是屬于圣水結構,那么每次后復權都要減掉升水,到最后這個價格肯定是負數。所以,后復權差值復權不能用。
因此,在后復權基礎上我們只能用比例復權。
綜三篇文章所述,筆者將該系列文章的背景,研究的基本路徑步驟,發現的問題,心得,實盤細節等一切所有的問題和解決都分享給了大家,雖然沒有做到所謂的手把手,但是我相信期貨人的智商是至上的,于大者難,吾以智與勇戒之。
以該背景的文章目前告一段落,后續筆者計劃將CTA的風險平價組合進行研究,真正從風險平價組合的邏輯出發,而非某個波動率倒數的資金管理角度,來研究這一投資界長存的“免費的午餐”。
?
本策略僅作學習交流使用,實盤交易盈虧投資者個人負責。
總結
以上是生活随笔為你收集整理的量化研究 | 策略在指数与主连复权的差异化分析(最终篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸡兔只数
- 下一篇: 上市公司9月23日晚间公告速递