1. 程式人生 > 其它 >CTA策略之商品期貨黑色系多頭擇時策略

CTA策略之商品期貨黑色系多頭擇時策略

最近大宗商品開始史無前例瘋狂上漲模式,成為期貨圈熱門話題,不管是媒體還是國家監管層均有極大關注。對於交易者來說,在全球大宗商品持續通脹的情況下,擇時做多就顯得更有意義。本篇文章就以國內商品期貨黑色系為標的,開發一個多頭擇時策略。

一、摘要

最近大宗商品開始史無前例瘋狂上漲模式,成為期貨圈熱門話題,不管是媒體還是國家監管層均有極大關注。對於交易者來說,在全球大宗商品持續通脹的情況下,擇時做多就顯得更有意義。本篇文章就以國內商品期貨黑色系為標的,開發一個多頭擇時策略。

二、大宗商品上漲原因

為何最近大宗商品瘋狂上漲,尤其是黑色系頻繁上演漲停潮?綜合各方觀點來看,主要有以下幾方面原因:
1、美元指數持續下跌
2020年新冠肺炎疫情暴發以來,美元指數持續下跌,而大宗商品是以美元計價的,持續的弱美元走勢,間接推動了商品價格的上漲。

2、貨幣供應量
2020年疫情之後,全球主要經濟體央行集體放水,尤其是美歐日三國M2同比增速超過20%,在各國央行寬鬆政策不變的情況下,市場通脹預期仍然強烈。

3、全球經濟復甦
隨著各國疫苗接種順利,經濟回暖,大宗商品需求反彈,全球製造業採購經理指數(PMI)持續擴張,製造業的復甦對工業品價格形成支撐。

三、美元指數與大宗商品

2021年與我們日常生活息息相關的上游物資,不知不覺均出現明顯上漲。正如巴菲特所言這一切都拜美聯儲寬鬆的貨幣和財政政策所賜,由於疫情期間美國出臺的一系列天量刺激措施,全球的經濟復甦已經裹挾著通脹奔湧而來。

圖片來源:新浪財經、東方財富

如圖所示,上圖是美元指數從2018年5月至今的資料,下圖是大宗商品指數從2018年8月至今的資料,從圖中可以看出,美元指數和大宗商品指數始終呈相反的走勢。

大宗商品上漲是全球性問題,並不只是只有國內大宗商品價格上漲。而美元作為大宗商品標價用貨幣,兩者關係大致上類似價格和需求量的關係,即大宗商品價格的變化通常與美元相反,通常美元指數下跌,大宗商品上漲。

四、貨幣供應量與費雪方程式

費雪方程式可以解釋貨幣供應量、物價水平、國民收入之間的數量關係,公式如下:

MV=PQ

其中:

  • M:貨幣總量
  • V:貨幣週轉速率
  • P:商品價格
  • Q:商品數量

由於疫情的出現,導致產品滯銷,進而導致企業貸款需求減少,那麼貨幣週轉速率(V)就會降低,費雪方程式(MV=PQ)就會失去平衡(左邊變小),如果不加以控制就會出現通貨緊縮的風險,為了減緩費雪方程式左邊的MV下降速度,全球主要央行採取的方法是開啟印鈔機,增大貨幣總量(M)應對。

而如今,疫情過後經濟復甦,貨幣週轉率(V)已經接近正常,但超發的貨幣(M)一時半會收不回來,導致費雪方程式(MV=PQ)又失去平衡(左邊變大)。

那麼既然費雪方程式(MV=PQ)是等式,相應的方程式右邊也會變大,不是商品價格(P)變大,就是商品數量(Q)變大,或者同時變大。但是我們知道商品數量變大是需要一個過程的,是需要一定時間的,那麼市場會啟動自我修復,在商品數量(M)不可能立刻變大的情況下,只能是商品價格(P)變大。

綜上儘管市場種種短期波動具有不確定性,但2021年可能是大宗商品牛市真正開始的一年。好了,話不多說,接下來我們就以國內商品期貨黑色系為標的,開發一個多頭擇時策略。

五、策略邏輯及實現

商品期貨黑色系多頭擇時策略是通過有針對性的對標歷史資料、市場規律、交易模式等方面的分析,採用固定的、數量化的交易模式,來發掘其中的交易機會並實現盈利。該策略以發明者(FMZ.COM)量化的MY語言來實現交易策略的具體實施。具體策略邏輯為:

  • 計算前4根K線最高價與開盤價的差的均值
  • 計算HO1、HO2、HO3、HO4均值
  • 計算多頭開倉訊號
  • 計算多頭平倉訊號
  • 下單交易

第1步:計算前4根K線最高價與開盤價的差的均值

HO1 := REF(H, 1) - REF(O, 1);
HO2 := REF(H, 2) - REF(O, 2);
HO3 := REF(H, 3) - REF(O, 3);
HO4 := REF(H, 4) - REF(O, 4);
HTO := (HO1 + HO2 + HO3 + HO4) / 4;

第2步:計算HO1、HO2、HO3、HO4均值

LINE := O - HTO * N;

第3步:計算多頭開倉訊號

D1 := REF(C, 1) < REF(C, 2);
D2 := REF(C, 2) < REF(C, 3);
D3 := REF(C, 3) < REF(C, 4);
D := D1 && D2 && D3 && C > LINE;

第4步:計算多頭平倉訊號

K1 := REF(C, 1) > REF(C, 2);
K2 := REF(C, 2) > REF(C, 3);
K3 := REF(C, 3) > REF(C, 4);
K := K1 && K2 && K3 && C <= LINE;
T1 := BARSLAST(BARSLAST(K) < BARSLAST(D));
DT := IFELSE(T1 <= REF(T1, 1), 0, (C - VALUEWHEN(T1 = 1, C)));

第5步:下單交易

D, BK;
T1 < 5 && T1 > 3 && DT < 7, SP;

六、策略回測

  • 回測開始日期:2015-02-22
  • 回測結束日期:2021-05-12
  • 資料品種:螺紋鋼指數
  • 資料週期:日線
  • 滑點:開平倉各2跳

回測配置

回測績效

資金曲線

七、完整策略程式碼

(*backtest
start: 2015-02-22 00:00:00
end: 2021-05-07 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
args: [["ContractType","rb000",126961]]
*)

HO1 := REF(H, 1) - REF(O, 1);
HO2 := REF(H, 2) - REF(O, 2);
HO3 := REF(H, 3) - REF(O, 3);
HO4 := REF(H, 4) - REF(O, 4);
HTO := (HO1 + HO2 + HO3 + HO4) / 4;
LINE := O - HTO * N;
D1 := REF(C, 1) < REF(C, 2);
D2 := REF(C, 2) < REF(C, 3);
D3 := REF(C, 3) < REF(C, 4);
D := D1 && D2 && D3 && C > LINE;
K1 := REF(C, 1) > REF(C, 2);
K2 := REF(C, 2) > REF(C, 3);
K3 := REF(C, 3) > REF(C, 4);
K := K1 && K2 && K3 && C <= LINE;
T1 := BARSLAST(BARSLAST(K) < BARSLAST(D));
DT := IFELSE(T1 <= REF(T1, 1), 0, (C - VALUEWHEN(T1 = 1, C)));
D, BK;
T1 < 5 && T1 > 3 && DT < 7, SP;

上面附上完整策略程式碼以及回測配置,也可以點選下方連結複製完整策略程式碼:
https://www.fmz.com/strategy/279278