量化分享-OI 出場策略搭配波動度濾網
前言
我是這一屆的量化負責人 邱政揚,對量化交易有極大的興趣,所以創辦了交大的量化讀書會,希望能集結學校對這方面有興趣的人才,一起激發出優質的量化交易策略。這篇文章主要是在講述我這學期開發的策略流,希望這篇文章能幫助到對CTA策略有興趣,卻不知如何下手的人!
一、研究與發現
這部分我會先做一些專有名詞的解釋,並透過實盤觀察與文獻探討來發現市場中的特殊現象,再透過自己攥寫的指標來捕捉市場的這些現象,作為後續策略進出場的判斷。
1. 未平倉量
什麼是未平倉量(Open Interest)
未平倉合約量是指尚未結算仍在期貨市場上流通的某種商品的期貨合約數量,也稱為Open Interest(OI)。由於每筆期貨交易都由買方和賣方組成,因此,未結算的買方合約量和未結算的賣方合約量是相等的。未平倉量也只是計算未結算的買方合約量或未結算的賣方合約量,而不是二者之和。每一筆未平倉量即代表一筆買空或賣空的交易。未平倉合約數量的增減取決於交易者在期貨市場的買賣活動。
在一定時期內,透過對平倉合約量變化的分析可以推測出資金在期貨市場流向的變化,當未平倉合約量增加時,說明資金湧入期貨市場。反之,當未平倉合約量減少時,說明資金從期貨市場流出。
未平倉量與價格的關係
對於未平倉量與價格關係的說法有千千百百種,我認為沒有對錯,很可能只是在不同市場與不同時間維度下所造成的差異,以下論述均為我在BTC永續合約15m時間級別的實盤觀察。我發現到,趨勢的到來通常都伴隨著未平倉量的增長,而趨勢的結束則是伴隨著未平倉量的急遽下跌,不管是多頭趨勢還是空頭趨勢,都有類似的現象。
由上方兩張圖可以解釋我發現到的現象,圖片的上半部為價格走勢的K線圖,下方為未平倉量的走勢圖。從左圖可以發現當BTC合約價格呈現下降趨勢時,未平倉量呈上升趨勢,而下降趨勢結束時則伴隨著未平倉量的急遽下跌。在左圖中也可以發現類似現象,當BTC合約價格呈現上升趨勢時,未平倉量也呈上升趨勢,而上升趨勢結束時也伴隨著未平倉量的急遽下跌。上述二圖屬多數案例中的其中兩個,並非特例,所以我認為我們可以用這個現象作為交易決策的輔助。
OI出場指標建構
基於上述觀察,我製作了一個未平倉量的MA(OIMA)來捕捉此現象。利用OIMA快線與慢線交叉來判斷OI的趨勢,黃金交叉為上升趨勢,死亡交叉則為下降趨勢的訊。因為利用OIMA的黃金交叉作為進場訊號會有過多的雜訊,所以我只利用OIMA的死亡交叉作為出場訊號的判斷,再搭配它技術指標作為進場訊號的判斷。下圖的下半部即為OI,藍色現為OIMA快線,紅色線為OIMA慢線。
2. 波動度
如何衡量波動度
顧名思義,波動率衡量的是資產價格的波動。運用最簡單的標準差的概念,我們就可以定義一個波動率:
其中 P 為價格,這一波動率實際上就是對數收益率的標準差,在量化研究的領域,它被稱為已實現波動率(Realized Volatility,簡稱 RV)。它可以定義一個時間窗口內的波動率。
波動度對CTA策略的影響
根據TokenInsight在BLOCK TEMPO 的文章『五分鐘學堂|什麼是「波動率 Volatility」?如何在數位資產策略中應用』寫道,經過他們的回測發現CTA 策略的賺錢能力並非隨著波動率的增加而增強,而是呈現出倒 U 形,中等程度的波動更有利於 CTA 策略發揮特長。如截至文章中的下圖所示,CTA策略在極端波動下的收益表現都不盡理想,並非大家所認為的高波動度都有利於CTA策略表現。詳細文章內容可以點擊reference中的連結。
波動度濾網建構
利用已實現波動度(RV)作為濾網的依據,但因為RV的震盪過於激烈,所以我透過percentage rank的方式來平滑RV,此指標我稱為pctrank_RV。percetage rank 是將一個時間窗口內的RV值做百分比排序,在這時間窗口內最大的值即表示為100,最小值則表示為0,所以所有值都會界在0–100之間。我會設定極端值的門檻,例如:90為上界10為下界,當pctrank_RV超出上下界時,則認定為極端波動度。下圖為此濾網的示意圖,可以發現此濾網可以濾掉極端的插針狀況,但可能也會損失其他可以賺錢的波段。經過多種CTA策略的回測發現,雖然此策略可能會錯失波段,但可以過濾掉大部分上下插針的狀況,能夠大幅降低Drop Down(DD)。
二、策略建構
策略發想
這次想要建構的策略屬於順勢策略,是一種勝率低但盈虧比高的策略,也就是每次虧錢都虧少少的,但只要賺錢都是賺大的意思。進場的部分則利用布林通道的突破與波動度濾網做為進場訊號的判斷,布林通道的突破通策略通常用於捕捉股票市場中厚尾的現象,也就是發生機率低的極端報酬,很符合順勢策略的特性。基於上個段落的觀察,可以發現OIMA指標在盤整期間沒有明確的走勢,但價格出現趨勢時會有顯著的上升,且趨勢結束時OIMA會有顯著的下滑,所以想利用OIMA指標做為出場訊號的判斷。
市場與時間選擇
市場:BTC/USDT的永續合約
時間維度:15分K
手續費:0.0005
進出場條件
多單進場:close上穿布林通道上軌&OIMA快線大於慢線&pctrank_RV界於上下軌之間
多單出場:OIMA快線下穿慢線
空單進場:close下穿布林通道下軌&OIMA快線大於慢線&pctrank_RV界於上下軌之間
空單出場:OIMA快線下穿慢線
三、回測與反思
回測樣本:2023/05/02–2023/08/02(樣本內資料)
2023/08/02–2023/11/02(樣本外資料)
尋找參數高原:利用Optuna與Hiplot套件尋找參數高原,可以發現下圖密集的紅色區域即為可能的參數高原,再利用樣本外資料確認此參數高原。
樣本內回測結果:利用vectorbt套件做回測,可以發現樣本外的數據表現雖然略輸於大盤,但整體DD與sharpe ratio皆符合預期,這顯示此策略在承擔較小的風險下也能獲得不錯的報酬。
全樣本回測結果:紅線前屬於樣本內回測結果,紅線後屬於樣本外回測結果,整體績效略勝於大盤且sharp ratio 高達3符合預期,但可以發在震盪期間虧損較多,這部分可以透過震盪策略來做互補。
由下圖可以發現盈利模式符合原先預設的虧小錢賺大錢的想法。
改進方向
1.因為整體策略的EV為正,所以可以透過加倉策略來降低DD時間。
2.加上互補的逆勢策略來補足震盪期間的損失,將累積報酬曲線平滑化。
3.增加回測時長,與實盤交易測試,來證明策略的有效性。
這策略還有許多需要加強的地方,如果有大神看到歡迎聯繫我們來一起討論!