要建立一個量化策略,預測目標通常是什麼?

如果要建立一個量化策略,採用預測的方法,那麼預測目標是什麼? 我看了一些文獻,但是很少有談這個的,大部分的預測目標都是一個二分類(Binary Classification)問題,就是下一個時刻的漲還是跌,但是這樣的分類怎麼轉化成策略呢?當然最簡單的,就是下個時刻漲就買入或持有,跌就賣出或空倉,但是這樣會不會導致頻繁交易。其次,如果預測的是天級別或者時間跨度比較大的,那麼在這個時間區間內什麼時候執行呢?

最近看到有個文獻說,他用了多分類,就是大概把未來的價格時間序列分成幾種模式(就是幾種趨勢),大概六種,然後根據這幾種模式去操作。這個策略看上去還不錯,不過有幾個麻煩的事情,首先時間序列的模式這種東西是不是靠譜,然後如何篩選出6,7個元模式,相似性度量用什麼,序列的長短怎麼取。

前面看到nova avon說基於指標的系統可能不是正途,要基於模型去做,如果基於模型的話,那模型如何轉化成策略呢?


謝謝邀請,不過我很難幫得上你。你得在實踐中摸索出不同 objective 和實際策略 PnL 的關係。這絕對不是一個簡單直接的單向過程,而是需要反覆 iterate。

這是一個真正的 million dollar question,所以除非是你的導師、同事、合伙人,否則你問到的任何人都很不會給你更多細節了。


最近和一個做機器學習的朋友在交流。也就和題主類似的疑問做了些探討。這裡分享一下。

機器學習是運用一定的樣本集作為輸入對模型進行訓練後,達到可以對新的輸入做較為準確的判斷的效果。

誠如題主所說,很多時候為了學習的準確度和簡易讀,會做個分類,比如按收益率的大小劃分為1(漲:&>3%),0(震蕩-3%~3%),-1(跌&<-3%)。經過實證我們發現劃分的更為細緻是不利於機器學習的準確性的,因為中間的模糊地帶0是不太好判斷出來。

下一個問題是學習之後的模型對於新的輸入判斷準確率大概70%,但大部分都是0,屬於無法給出交易型號的這種。這也是我們所最為頭疼待解決的一個問題。

所以講到這,先回答第一個問題,預測目標是什麼?

通過準確率(勝率)來判斷預測效果。至少是50%的勝率,能說明運用預測模型比簡單猜測漲跌的準確概率要大。

分類後如何做成策略?

預測漲就買和預測跌就賣出,這種簡單策略沒有問題。交易頻繁本身也沒有問題,不影響策略的好壞。至於預測的周期時間跨度長短不一樣,比較長時間時期間如何執行交易,一般都是滾動做預測,所以即使周期長的策略也不會出現交易的空檔期。

多個分類如何選出元模式,相似性怎麼度量,序列長短選取?

之前做過一段時間HMM,隱馬爾科夫狀態轉換模型。元模式和序列長短的選取大致也對應了HMM模型的一些先定參數,混合正態的維度以及市場狀態(不同市場模式)的個數。序列長短也是一個可控可變的參數會影響模型效果。所以一個封閉模型先定的參數如何選取能達到最佳的模型效果,這個是不能一概而論,沒有標答的,甚至如果不在乎經濟含義的話,去fitting參數得出最優的解也未必不可。過擬合的風險在於模型運用一段時間可能會失效,但哪裡有HF真的只用一個模型而且一用十年的。短時間內或者IS一段時間能盈利,我覺得模型和參數就是ok的。

========================================================================

其實遇到問題更好的方式是自己去探索,哈哈碼農就要統治世界了,我之前也說過學點代碼是自帶工具,隨想隨用。

下面貼一下朋友寫的機器學習的研究,包含一些源代碼的分享。可以在此基礎上按照自己的思路去做些探索性的研究。

【機器學習方法研究】——思路整理、支持向量機

以上。


題主問了好多問題, 看俺來亂答!

1.量化策略如何評價?

既然是策略,請按評價策略的那一套東西:比如夏普率、年化收益率、最大回撤這些去評價。

2.預測目標是什麼?

這個具體問題具體分析。

如果是Regression,那麼目標函數就是均值、方差。。。

如果是Classification,那麼目標是準確率、敏感度、可靠性。。。。。

很可惜,上面的這2個方法是學術界搞的。在業界,還是用問題1裡面的方法來評價策略。

3.大部分的預測目標都是一個二分類(Binary Classification)問題?

沒人規定一定得用Classification,你可以用Regression。

只是你用了數學的方法,那麼就先得確定Regression的假設。數學公式不是拿來用就可以了,它們都有前提的。

4.分類怎麼轉化成策略呢?

這個簡單,預測是漲就買進,預測是跌就賣出。注意漲跌的分割線不一定是0,比如可以定義預測股票漲1.5%的,買進信號;或者期貨跌30點的,賣出信號。

5.「會不會導致頻繁交易。其次,如果預測的是天級別或者時間跨度比較大的,那麼在這個時間區間內什麼時候執行呢?」

這個問題俺也不知道怎麼回答了。

感覺就像有人問「怎麼隕石永遠都掉坑裡的?」

就像物理學解釋不了世界為什麼是這樣的,就拋出一個「人擇原理」一樣。

6.「首先時間序列的模式這種東西是不是靠譜,然後如何篩選出6,7個元模式,相似性度量用什麼,序列的長短怎麼取」

常用的時間序列的模型是學術界搞出來的東西,偏數學的,注意它們的前提條件。說句打擊人的話,在量化界基本沒用!

相似性度量這個也是見仁見智的。就像股市,怎麼定義一個熊市?或者說,2個點的距離,除了歐式距離,就沒別的法子了?

序列的長短怎麼取,這個只能說"少年,自己動手lu一發就有趕腳了" ^_^

7.最後一段還是丟給nova avon大神自己回答吧!


沒錯,貓我就是來唱反調的

收益是個分布,其信息是複雜的。用類似的二分法會忽略相當多的信息,其風險是不可估量的。分類起碼應考慮quantile是基本的風險常識。


感覺樓主的提問大概是這個意思,比方說通說機器學習深度學習等手段,預測了市場漲跌的概率,想要把預測的結果轉化成入場和出場信號。這個過程還有許多工作要做。

首先需要定義入場出場的方式,例如預測了下一天的方向是漲,那麼:

入場方式:

1. open即入場

2. open後在下方某個價位掛限價單,如果價格跌到此價位即入場,否則不入場

3. open後在open上方某個價位掛stop limit order,如果價格漲到此價位即入場,否則不入場

出場方式:

1. close前幾分鐘出場

2. 設置好固定的止損和止贏點數

3. 設置好動態的止損和止贏點數

以上這些做法排列組合之後,會有很多個方案,每個方案還有一些參數需要確定,比如在open下方多少處掛限價單。而且一旦出現需要確定參數的情形則非常容易過擬合。

然後可以把所有這些情況都用程序模擬出來,看PnL如何,sharpe多少,回撤多少,勝率多少,等等。

至於如何避免過擬合,這是一個很大很深的領域,幾句話就說不清楚了。我最近開了live準備講一些量化交易相關知識,感興趣的朋友可以關注我的live。

在定止贏,止損和掛單價位的時候,給樓主一個提示,主要從市場波動率入手,就像樓上有些答主題到的。推薦先閱讀一下J.P.Morgan的關於Riskmetrics的文檔,網上可以搜到一個版本叫做:J.P.Morgan/Reuters RiskMetrics -- Technical Document. 記得大概300頁左右。將此文檔深刻理解之後將有助於我以上提到的這些工作。

不過我個人感覺樓主提到的將時間序列做classification來分成幾種模式來預測漲跌,這個操作非常容易過擬合,至少我呆過的幾家對沖基金沒有這麼乾的。曾經在一家對沖基金工作的時候我們做過類似的事情,後來將這個方案否掉了。如果這麼做真的work,估計就不會有人拿出來發文章了。正是因為不賺錢,或者不是賺錢的核心因素,所以才拿出來發文章用來混學術路線。真正賺錢的策略,請參考樓上「抽象猴」網友的回答,我完全同意他說的。


垃圾: 從過去量價預測價格, 什麽模式不模式, 大量此類都是過擬合, 就算不是過擬合, 也沒辦法確定沒有過擬合, 通通是垃圾

還行: 從過去波動率預測波動率, 搞波動率期貨, 或期權對沖等

有用: 藉統計歸納外部因素, 例如天氣溫度對價格或波動率的影響, 你也可以自己思索有哪些因素能探討, 抓網路上的開放資料來回歸一番, 想法合理就不容易過擬合, 發揮空間比較大

我在用的: 不講, 留著自己溷飯吃


廣發證券有篇HMM研報中提到過

基於HMM周擇時策略研究

漲、跌擇時效果,準確率60.87%

漲、平、跌的擇時效果 準確率 47.37%

有個朋友用一日對數收益差、五日對數收益差、當日對數高低價差、當日成交量、對數融資餘額差 5個特徵向量進行了預測 樣本內回測10~16年,年華大約10倍~

基於隱馬爾可夫模型的市場擇時策略


單獨拎出來這個問題其實沒法回答,因為我們不知道你要做什麼交易。比如說你是做擇時,那可能你的分類就是簡單的二分類。因為二分類問題和三分類問題,所適用的模型並不能簡單推廣,所以很多時候二分類的結果會更有可推廣性。如果你做的是資產組合,那麼精確的優化方程是不可以只用分類問題的結果作為輸入的,這就是個預測問題了,那麼你就得預測一個值。量化策略的設計是要遵循一致性的,每一個環節你所採用的方法都要和整個交易匹配。


量化交易當中你可以有一個擇時策略,擇時的頻率也許小於你要做的分類模型中的輸出數據頻率。比如你的擇時在日級別或小時級別,而分類模型是用月級別的數據,那麼這裡你可以做的一件事是把模型輸出和測試數據outer merge,然後前向填充,然後把這一列的1或-1值當成擇時交易條件語句里的又一個條件。也就是說用大時間周期的方向判斷給擇時信號做過濾。本來擇時信號有多有空,但是如果模型輸出是1(漲),那麼只多不空,反之亦然。理論上這麼做不見得就一定效率高,因為即使一個月里價格最終是漲的,中間也不一定發生了什麼,難說只多不空就一定比即多又空更好。所以需要做些實驗檢驗效果,有待考證。

如果沒有擇時策略,也沒有其他的模型來參考,那就只能從期初持有到期末,這樣的效率親測比較低,可以得到正收益但收益曲線就很難提升。

碰巧,因為平時用IB做些外盤交易,我這裡有一個擇時策略,又有一個針對歐元的月度數據二分類模型。當只使用擇時策略交易時,有以下回測結果:收益67%,最大回撤5.2%,勝率46%,成交665筆(不知道pyalgotrade怎麼加槓桿,就沒加):

二分類模型在測試集上分類準確率曾高達81%,一度讓我比較興奮,然而移植到一些其他品種上效果並不好,就先放棄了,而且特徵選擇上我還有一些困惑,比如宏觀經濟變數是直接用變數數值即exact premium還是用因子模型里zero-investment portfolio計算的factor premium和factor exposure(貌似只針對股票?)還是對絕對數值做些處理比如變成對數增長率?(但有些已經是增長率變數了)總之這方面我也存在疑惑,等待大佬解答。那麼當時這個分類模型為原來的這個擇時系統做過濾,回測效果變成了下圖這樣,收益82%,最大回撤4.4%,勝率48%,成交529筆:

在這個例子中一個準確率比較高的分類模型就起到了過濾效率較低的擇時信號,優化收益曲線的作用,減少了交易次數,但收益和風險都得到了優化。不過,還是要吐槽一句,這樣準確的模型實在是很難找,缺乏靈感,從而這樣的實驗也不容易實現。。。

雖然理論上,預測目標沒有限制,對於提高量化交易系統表現有利即可。但實際上,的確大多數研究會直接以下一段時間的價格、收益率變化為response variable,這個時間段長度可以自己決定。問題設計本身就是一個需要發揮創造力的點,問題和特徵工程的質量決定模型的效用。

這裡可以變化的有兩點,一個是response variable是什麼,一個是時間跨度怎麼選。比如對於分類模型,response variable除了可以是漲、跌,漲、震蕩、跌,這樣簡單的分類。還可以複雜點,舉個栗子:價格在接下來的一段時間跨度里是否能創新高、新低,或是達到現在之前一段時間的最高最低間的百分之多少的分位點,定下這樣的規則從而可以用條件語句和循環給每個觀測貼上標籤,將這個標籤作為response variable。這個response variable是為了幫助系統盈利而設計的,畢竟你如果預測漲跌,也是為了漲的時候做多,跌的時候做空才這麼設計。那麼你知道會不會創新高、新低,或是達到現在之前一段時間的最高最低間的一個高的或低的分位點,也可以根據模型的輸出做出開什麼倉和如何調整倉位的判斷。

這個時間跨度可以改變,個人認為取決於交易標的和策略風格,畢竟如日線變化方向就比較隨機,不同品種走勢可能比一個月長也可能短(對於一些趨勢追逐類策略),要不要選一個月、要選幾個月為時間跨度需要自己決定,而且也會受限於特徵的頻率,如果用宏觀數據就很難小於一個月(多數都是每月發布一次),財報數據那就不能小於一個季度......目前還不知不知有沒有人做小於月級別的分類,又有什麼特徵可供選擇。

樓上的答主 @陳小米 有提到模糊地帶不容易劃分的問題,我之前的做法是取出要分類的變數用33.4%,66.7%分位點來劃分。這樣訓練數據更均衡,考慮到有些品種一段時間的收益分布不均衡,這樣模型最終輸出會趨向於向多數類收斂,識別少數類的能力差甚至基本等於沒有。比如,如果收益率的33.4%分位點是-3%,66.7%分位點是5%,那麼在這兩個之間的收益就劃分到0,剩下的分別是1和-1。當然這樣看起來也有上下不一致的問題,不知這種操作是否有參考性。不過從經驗上來看,多分類的準確率往往還不如二分類,還容易出現極端情況(1分到-1,對於多分類這種狀況算比較糟糕的)。

不知道題主看的文獻叫什麼名字,可否提供一下。我之前看過的一些量化投資應用機器學習的文獻就比較扯淡,比如扔進模型的特徵是不同的技術指標之類的,搞得我不太敢相信這類文章,反而摩根的報告還比較像樣。這裡也是想請大佬們推薦一波文獻~


具有反身性的系統還是用增強學習封裝成黑箱比較好,不要去預測;

市場的未來是不可知的,預測是搞自然科學的人做的事。


賺錢


預測太難,真正的定價因子估計只有上帝知道。我覺得最好是參考衍生品的做法玩相對定價。


簡單的問一般用什麼作為預測目標是無意義的。量化並不是簡單的用數學規律去套市場。而是把市場作為一個系統,通過數學手段試圖找出這個市場的一些特徵,並從這些特徵中找出實現盈利的方法。不同的市場有不同的特徵,有一些是跨市場的共同特徵,有的是個別市場或個別sector的專門特點。這些特點往往可以追溯到市場參與者,或市場制度,或交易標的特性上面。一個好的量化策略必然有其對應的市場特徵和其實現盈利的市場參與對手。如果是既定的普適策略,可以看看該市場是否有其實現的條件。如果是研發新策略,沒有對特定市場本質的了解是無從談起的。


推薦閱讀:

請簡明扼要地說明BARRA模型能用來做什麼?如果要用python實現,如何建立框架?
軟體工程專業女生想做Quant,本科出國後需要讀那個專業的Phd或master呢?
Quant 應該學習哪些 Python 知識?
在投行或券商當數據科學家 (Data Scientist) 是什麼體驗?
金融風險管理 (Financial Risk Management) 對編程的要求有多高?

TAG:投資 | 寬客Quant | 量化 | 量化研究 | 量化交易 |