金融中加入人工智能技術現(xiàn)在已經是很常見的事情了,但是人工智能總有和人比起來不好的地方。
今天金程教育小編就來和大家說一說量化投資和機器學習大家繞不過的那些事兒。
1. 波動率預測
1.1. 歷史波動率概述
從2016年中旬左右開始,全球的波動率就一直處于歷史的低位。中國波指更是非常穩(wěn)定的一路下探,從的63.79一直到了的7.95。
.png)
如此長時間的低波動率確實在中國市場上不常見。下面我們統(tǒng)計了一下中證500和滬深300指數分年度的波動率分布情況,可以看到2017年近的波動率確實是處在歷史位的。》》點擊學習量化交易策略
.png)
.png)
1.2. 文獻綜述
波動率預測的方式有下列幾種;
(1)移動平均
使用過去一段時間窗口的已實現(xiàn)波動率作為下一期波動率的預測值。
(2)時間序列
使用ARCH/GARCH等等模型,通過時間序列的自回歸,來預測下一期波動率。傳統(tǒng)上認為,波動率具有聚集效應,也即是,高波動率伴隨著高波動率,低波動率伴隨著低波動率。由于時間序列模型是回看近的過去一段時間的波動率,所以時間序列分析是波動率聚集假設的。
(3)隱含波動率
在中國市場,可以基于50ETF期權依賴期權定價模型來反推隱含波動率。
1.3. 策略簡介
1.3.1. 策略摘要
本篇報告我們提出用監(jiān)督式學習對日內波動率進行預測。結果表明,使用監(jiān)督式學習的預測效果超過簡單移動平均的效果。我們對日內波動率的預測為定義為每天240根分鐘線收盤價的標準差。
1.3.2. 策略細節(jié)
策略標的:中證500指數
預測生成:該策略的預測目標就是下一交易日的日內波動率。預測日內波動率有很大的意義,除了期權交易之外,大多數的中高頻CTA策略的收益也與日內波動率緊密相關。
考慮到波動率的聚集效應,我們使用過去一段時間的時間序列的日內波動率作為輸入變量。輸入的變量例如,過去30天的日內波動率的移動平均值,過去n日的日內波動率值,過去n日日內波動率的小值等等。
1.3.3. 策略表現(xiàn)
策略預測的R方為37.13%,顯示出策略監(jiān)督式學習對未來一日日內波動率的預測是有一定效果的。下圖是日內波動率的預測值和實際值之間的比較
.png)
.png)

可以看到,除了在股災中之外,歷史上其他時候預測都比較準確。
1.3.4. 與簡單移動平均的比較
簡單移動平均MA20,也即是過去20天的移動平均的日內波動率作為下期的預測值,R方是34.42%,比機器學習的預測要少3%左右。

2. 如何判斷策略失效
在以上幾篇報告中間,我們具體討論了一些策略,以及在研究一些機器學習策略時候常見的錯誤,但是我們迄今沒有討論如何判斷機器學習策略的失效。在本文中我們并不將具體給出策略失效的解決方案,但是將就這個問題給出一些討論。
2.1. 機器學習對數據的依賴更強
機器學習相對于傳統(tǒng)策略對數據依賴性更強,所以對未來市場結構的變化會更為敏感。
量化的本質是依賴于“已有之事后必再有,已行之事后必再行,日光之下并無新事”,而對于未來市場結構的變化通常是無能為力的。例如如果一個Alpha策略的樣本是從2009年到2016年,在不做市值中性的情況下,那么回測下來大概率小市值因子給的權重會很大。換句話說,因為歷史樣本中幾乎都是小市值相對于大市值占優(yōu)(除了2014年末這段短暫的時間內大市值占優(yōu)),所以模型對于2017年的大市值占優(yōu)是沒有準備的,這直接導致了大部分Alpha策略在2017年大規(guī)?;爻贰?br />
盡管所有量化策略都對未來市場結構的變化無能為力,傳統(tǒng)的量化策略在面對未來市場結構的變化還是會有一些天生的優(yōu)勢。因為傳統(tǒng)的量化策略往往是從假設出發(fā)的,這些假設可能是從自己經驗而來,也可能是從學術文獻上來的,數據只是用來驗證這些假設是否正確的。所以當傳統(tǒng)量化策略回撤的時候,策略研究人員大致能明白是自己的哪一條假設出錯了。
而在機器學習的世界中,事情卻不是這個樣子的,因為機器學習完全是數據驅動的(data driven)。事先我們對問題并沒有任何假設,我們不知道自變量和因變量之間有沒有關系,如果有,我們也并不知道它們之間的關系是否是線性的,我們也并不一定能假設自變量與因變量的統(tǒng)計分布。因此,總而言之,我們所得出的所有結論都是機器學習基于數據給我們的。在機器學習的世界中,人的作用被縮小,而數據的作用被放大。所以,一旦新的數據與原來的數據發(fā)生系統(tǒng)性的不同,整個模型以及模型給出的結論都會出現(xiàn)系統(tǒng)性的偏差。因此,機器學習模型相對于傳統(tǒng)的量化模型更容易受到市場變化的不利影響。
2.2. 判斷機器學習策略失效的一些想法
下面提出一類方法。簡而言之就是,基于過去一段足夠長的時間n,計算預測值和實際值的IC,并判斷這個IC是否顯著。具體舉例,如果模型的預測目標是T日到T+1日的收益,檢測天數是過去100天,那么我們顯然就可以得到這100個T日到T+1日的收益的預測值和實際值,然后根據計算出IC,y代表實際值, 代表預測值,兩者都是長度為100的向量。
,我們通過
來計算出t值,并且與進行比較,看是否顯著。這里,n=100。如果t值并不顯著,那么策略可能已經失效。
對n的選擇非常關鍵,對于一天幾百筆的高頻策略,可能一天就足夠達到統(tǒng)計顯著需要的量了。但對于低頻策略,可能需要天數數目非常大。
以波動率為例子,我們可以得到如下滾動的IC值,這里選取n=20
可以看到,在2016年7月到8月之間,有一次明顯的失效,t值小于-3,達到統(tǒng)計顯著水平。
3. 雜談
3.1. 計算落地相關:我們需要什么級別的計算力?
Apache Spark和Hadoop是兩個主流的大數據框架。大多數的科技公司都會或多或少用到這些框架,如今一些對沖基金也在考慮使用ApacheSpark或者Hadoop。
上圖是Hadoop里的服務器角色。Hadoop主要的任務部署分為3個部分,分別是:Client機器,主節(jié)點和從節(jié)點。主節(jié)點主要負責Hadoop兩個關鍵功能模塊HDFS、Map Reduce的監(jiān)督(HDFS是Hadoop Distributed File System的簡稱,Map Reduce是一種算法)。當Job Tracker使用Map Reduce進行監(jiān)控和調度數據的并行處理時,名稱節(jié)點則負責HDFS監(jiān)視和調度。從節(jié)點負責了機器運行的絕大部分,擔當所有數據儲存和指令計算的苦差。每個從節(jié)點既扮演者數據節(jié)點的角色又沖當與他們主節(jié)點通信的守護進程。守護進程隸屬于Job Tracker,數據節(jié)點歸屬于名稱節(jié)點。
Client機器集合了Hadoop上所有的集群設置,但既不包括主節(jié)點也不包括從節(jié)點。取而代之的是客戶端機器的作用是把數據加載到集群中,遞交給Map Reduce數據處理工作的描述,并在工作結束后取回或者查看結果。在小的集群中可能會面對單物理設備處理多任務,比如同時Job Tracker和名稱節(jié)點。作為大集群的中間件,一般情況下都是用獨立的服務器去處理單個任務。




