真格量化入門課程——①量化策略思路入門

<br>

真格量化入門課程——①量化策略思路入門

<br>
一、什麼是量化交易策略

量化交易策略,是採用數量化手段構建而成並進行決策的交易策略。是將人的投資思想規則化、變量化、模型化,形成一整套完整、可量化的操作思路,並且這個思路可以用歷史數據進行分析驗證。程序化交易並非量化策略必備,但是程序化交易可以讓策略執行中更少受人的要素影響。

量化交易員

在這樣的界定下,量化交易策略既可以藉助程序化的方式完成下單,也可以通過人工來執行。但交易頻率較高的量化交易策略更傾向於採用程序化全自動下單的方式來完成。

有了上面的定義,我們可以舉個簡單例子來認識量化交易策略。如果有一個投資者的交易策略是“移動平均線看起來很好時買入,看起來不好時賣出”,這裏就明顯不是一個量化交易策略,因爲這裏的“看起來很好”和“看起來不好”不是一個明確規則化變量化的手段。

如果把上面的策略變成“5日價格均線從下向上穿過10日價格均線時買開1手銅,5日價格均線從上向下穿過10日均線時賣平1手銅”,這裏的規則就大大接近明確而可量化的了。

二、當我們談量化交易策略時,我們在談什麼

在第一部分裏,我們知道了什麼是量化交易,那麼一個更完整精細的量化交易策略,不止上面的例子那麼簡單。

一個完整的策略構成,應該是包括交易信號、交易執行、資金管理三個方面。

量化策略

依然以上面的例子來類比——

2.1 交易信號

交易信號是一個策略的核心思想,人們常說的策略idea其實主要就是指這個部分。它又可以包含下面2部分內容:

2.1.1 交易什麼?

“均線上穿策略”案例中沒有涉及到選交易品種的步驟,所以品種很簡單,就是銅期貨。

但這還不夠。我們的例子是一個期貨策略,期貨是必須具體到合約的,而我們最常使用的是每個品種的主力合約。

於是我們清楚了,我們需要交易的是“銅期貨主力合約”。

ps:更復雜的情況是,有時我們需要選品種,比如要開倉所有向上突破的品種,這也可以歸入本部分討論的內容。

2.1.2 什麼時候交易?

這方面上面的案例寫的還不錯——“5日價格均線從下向上穿過10日價格均線時買開”、“5日價格均線從上向下穿過10日均線時賣平”,這都是非常明確的。

複雜一些的是加入止盈止損,當有持倉的情況下,盈利多少自動平倉,虧損多少自動平倉,乃至回落多少自動平倉。

更復雜的情況還有——“中證商品指數突破10日均線時才操作”、“美國非農指數公佈前的一個交易日不操作”等等,也可以屬於這個部分要包含的內容。

ps:股票策略常用的因子模型,會採用固定日期再平衡的模式,期貨/期權市場比較少用,因此我們會單開文章講述這種情況。

2.2 交易執行

交易執行往往被人們忽略,但我們作爲“真格量化”這個策略實盤平臺的設計者,可以負責任的說,這個部分纔是專業quant和民間小散的最大區分所在,我們看到很多非常好的策略idea因爲對這個部分的忽視,導致最終不賺錢的結果。這部分又包括:

2.2.1 用什麼價格交易?

對於期貨/期權類策略,尤其是偏日內的策略,什麼價格買,什麼價格賣,是個至關重要的問題。

比如掛單價、最新價容易不成交,對手價、對手價加1加2提高了成交概率同時也提高了交易成本,漲跌停價/市價下單則是不惜血本,極端情況會導致成本完全無法控制,所以專業的玩家會充分運用FOK、FAK等指令進行下單。

“均線上穿策略”案例中的策略描述完全沒涉及到具體價格的選擇,所以是不精準的。

2.2.2 交易成本是多少?

越是頻繁的交易,越要關注自己的交易成本。包括佣金、保證金以及回測中的滑點設置,上文的例子還不是日內策略,我們這裏可以不用考慮。

2.2.3 下單不成交怎麼辦?

隨着我們越來越深入專業量化機構的研究領域,我們會發現對實盤和回測差別的處理方法導致了專業機構和業餘量化愛好者投資表現的顯著區別。通常的回測引擎都是見價成交,如果在策略代碼中忽略這個部分,您很可能做出一條漂亮的回測曲線但在實盤交易中完全無法賺錢。

那麼,實盤中一個委託單發出後,接着會發生什麼呢?我們看看最常見的對話通訊模式:
通訊模式

真格量化的回測引擎並非見價成交的設計,而且我們API的最大特點就是基於事件驅動而設計。實際交易中會有非常多的事件場景,例如賬戶登錄、開盤、委託、成交、查詢、收盤等。交易所會發出各種通知和回報信息。

充分利用這些回報信息,可以寫出最專業的投資策略。比如上文所述的委託不成交的問題,我們提供了豐富的api來應對,包括拆單、撤單、追單、智能單等等,我們強烈建議投資者重視這些功能,把交易過程精細化,追上機構的腳步。

在上文“均線上穿策略”的簡單例子中,很遺憾,我們並沒有看到下單不成交的應對方案,這在實盤中就會遇到很多問題。

2.3 資金管理

資金管理聽起來高大上,但其實落地最重要的就是倉位。如果說交易信號、交易過程兩部分決定了策略是賺錢還是虧錢,那麼資金管理決定了最終是大賺大虧,還是小賺小虧。

2.3.1 下單數量

回到“均線上穿”的例子,我們終於看到了這部分的描述——“1手”,手數這個交易單位在期貨/期權類比較常用,但固定手數的做法並不精細,更精細的模式是根據自己的賬戶的實際資金情況,動態變動交易的數量。

我們發現,在這裏我們出現了“賬戶”的概念,構建策略尤其是實盤策略,賬戶中的可用資金、風險度、權益等各種信息是必須要關心的要素。策略實盤運行瞬息萬變,我們需要最快速度得到這些信息並根據當下的情況作出最恰當的應對。在真格量化,我們雲端實時計算這些信息,相比從櫃檯請求的速度快3000倍以上。

2.3.2 動態加減倉

期貨市場採用的是逐日盯市的模式,即每天的盈虧都是清算完畢的,那麼當策略運行良好,可以投入更多的資金,反之則需要減少投入的資金。

跟上面下單數量的區別是,動態調整交易手數往往是根據當時的可用資金的情況,而動態加減倉則是根據整個策略/賬戶的盈虧情況來設定。

OK,做好了這3個部分,我們也就建立了做量化策略的最基礎的思路,再複雜的策略,都可以由這3部分組合、變化得來。

三、當我們有了策略,我們還需要什麼

如第二部分,當我們已經有了自己的策略,交易信號、交易執行、資金管理三個部分都有了。

接下來需要做什麼呢?當然是做回測。

開始回測

正如我們第一部分提到的量化策略的定義,一個量化交易策略到底好不好,需要通過歷史數據來驗證。

去評估策略,我們需要關注這些因素:

3.1 樣本大小

既然量化策略是可以用歷史數據進行分析驗證的,那麼數據的樣本集合有多大直接決定了這個回測是不是靠譜的,一般來說,樣本小於200個,說服力是不夠的。所以千萬不要因爲看到前幾次交易賺到了錢就歡呼雀躍哦~

3.2 回測時間範圍

一個好的策略,應該能經受住各種市場狀況的考驗,如果回測週期太短,沒有經過單邊、振盪等各種場景的檢驗,也是比較危險的。當然,如果是用tick數據回測,回測歷史的要求就沒必要很久。

3.3 回測和實盤的區別

一個實盤賺錢的策略往往回測也不錯,但反之就未必成立了。回測中用的虛擬資金是無法像真實資金一樣去影響市場的。一定要注意的是,下面這些問題都可能導致您的回測表現是“×××水月”,空歡喜一場。比如:

A.用了未來數據。這是新手最常犯的錯誤。寫一個“當天最低點買入最高點賣出”的期貨策略,只需要幾分鐘就可以得到一條無比漂亮的曲線,但這是沒有用的,實盤中絕對無法預知當天的價格最高、最低點。真格量化作爲主打實盤交易的量化平臺可不推薦你這樣做。

B.實盤無法/很難成交。這個問題也經常發生。比如漲跌停的時候交易、用完全沒有對手盤的巨量下單、掛買一賣一價交易等等。這樣的代碼邏輯用於實盤的時候就會差別巨大。當然,真格量化的邏輯已經做到非常精細,並不是簡單的見價成交,幫投資者去掉了很多掉坑裏的可能。

C.過度擬合。有的時候,專業的quant也會犯這個錯誤,甚至如何避免過度擬合是量化分析師們一直追求的目標。過度擬合往往表現在單純追求最佳回測參數和完全拋棄金融邏輯方面。殊不知,參數的敏感性本來就是一個策略是否真正靠譜的重要衡量標準;而完全拋棄金融邏輯的後果,可能就是實盤交易的第一天,就是該策略失效,這個小概率、黑天鵝事件發生的日子。

好了,我們知道了在寫一個量化策略之前,要做哪些思路上的整理,那麼接下來的一篇,我們就看看如何在真格平臺上做到這一切,敬請期待!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章