【天天阿爾法】教你Machine Learning玩轉金融,從入門到放棄(下)

量化投資大家學2020-02-17 20:52:39


(接上篇)


導讀:

?

宏觀系統本身非常復雜,變量因子多,即使邏輯線以線性關系為主,但因子和因子之間互相還有correlation和dependence使其結構更加復雜,況且還有人這個非理性的參與者randomly影響,摻入了很多有內部結構的噪音。最重要的是因子的權重還是不斷動態變化的,即使報告里說的理由都是對的,但是如果并不是當下主要的driver因子,那結論也會是錯的。


2.4 Classification


接下來我們要介紹的就是Classification了。
classification跟regression的區別就是Y的類型不同,regression是Y的具體數值的預測,比如漲跌幅度,而classification是對于單純分類的預測,比如Y的漲(Y值取1)或者跌(Y值取0)。

但是classification里面有一個地方不好處理,那就是如果想要預測的Y不僅僅只有兩個分類怎么辦,比如當Y有三個值甚至更多。因為如果大于兩個值的話就不能簡單將Y設置為0,1,2,但是Y的這三個分類值在實際的意義上不一定是等距的,如果我們將其設置成0,1,2的話是默認這三個分類之間的距離相等,但在實際過程中Y不同分類結果之間的距離很難用數字去衡量。


為了簡化,此處只考慮Y有兩類: 是(Y=1)或否(Y=0)的情況。

logistic regression

而classification里面最出名的一個方法就是logistic regression。這里不要被regression的名字所誤導,之所以取的是regression的名字是因為用的是類似regression的方法,但是由于這里Y是離散的(不是具體連續的數值,而是比如說二選一,漲或者跌),所以對于Y的處理上有一些變化。

下面就是logistic regression的公式推導:?



是不是看一圈之后懵逼了~


這里用的是maximum likelihood function的推導,因為涉及到了矩陣運算,所以這里為了讓讀者更輕松一點暫時省去~

我來用另一種不是那么準確但是更容易接受的方法解釋一下,舉個例子就明白了。

先上一張圖,?



我們現在呢,手上有信用卡的數據,知道每一個人有沒有違約還有他們信用卡欠款的數目,想要研究的問題呢就是違約概率(Y)和信用卡欠款數目(X)之間的關系。因為這里一個人是不是違約只有是或者否兩種結果,不可能存在第三種情況,所以正好適合我們這里分類classification的問題。

左邊的圖呢,那一條藍線就是直接用linear regression來fit Y和X的結果。公式如下:?

也就是基于一個人的信用卡欠款X,我們想要預測的這個人違約的概率p(X)。這里由于是用的regression,所以p(X)是一個連續的數值。

我們從上圖中可以看到明顯這個model對于實際非常不符合。


一個是可以看到預測非常不準,即使我們將縱軸probability of Default>0.5看做是,probability of Default<0.5看做否,這個fitting的結果在balance的整個橫軸跨度內基本上都是屬于否這一類。但實際上從圖中我們可以看到當balance這個橫軸數值在2000左右的時候,其縱軸probability of Default大部分其實是1,也就是會違約。


另一個問題就是由于linear model是一條線,所以這條線對于橫軸balance上的某些點,會使得縱軸probability of Default甚至有小于0和大于1的情況。我們這里討論的是概率,只會屬于0和1之間,所以小于0和大于1的預測在這里明顯是不對的。

所以為了解決這兩個問題,我們可以想辦法把左邊圖的那條linear曲線做一定的變換mapping到另一種形式,使得其只屬于0到1這個區間。

我們需要經過兩個步驟:


首先呢,我們要想辦法把linear function的????0+????1·X的值(負無窮到正無窮),變成全部是正數,也就是從0到正無窮。有些讀者肯定想到了,那就是利用指數函數exponential function。


將其變為e^(????0+????1·X),這樣所有的結果都會是0到正無窮。

但是這樣還不夠,因為我們想要的是將其壓縮在0到1之間。所以我們可以同時對上面linear model的右邊p(X)進行如下操作:?




這樣就保證了p(X)只會屬于0到1這個區間。如果對于這個推導過程不熟悉的,可以自行任意帶入負無窮到正無窮間的值取代上述方程中????0+????1·X的位置,檢查概率p(X)是否都是落在0到1這個區間。如果發現不是,那么恭喜你,你顛覆了數學,我請你吃飯,管飽~

至于為什么叫logistic regression,看下面這個式子就明白了(完全等同于上一個式子):?



然后我們可以看到數學中標準的logistic function的形式是這樣:?



它的圖形是長這樣:?



是不是發現正好符合我們想要的需求呢,隨著橫坐標X的變化,Y永遠都被限制在0和1之間。


并且我們把標準的logistic function中的x換成我們的linear function里面的????0+????1·X之后,就完全是我們推導出來的結果。一顆賽艇!


所以這里這個方法是把linear function的內容????0+????1·X嵌入到了標準logistic function里面,自然這個方法就叫logistic regression了。

經過上面的介紹和推導,我們用logistic regression的時候呢也只會關注這個最終形式:?



我們輸入進去的數據是因子X和相應的Y(也就是是1或者否0),fitting的結果得到的是????0和????1。這樣利用這個model,如果有任何的X,我們就可以預測出p(X)的值。如果當概率p(X)>0.5的時候我們就說Y屬于”是",當概率p(X)<0.5的時候我們就說Y屬于”否”。

至于怎么得到最合適的????0和????1,其實就是上面那個看得懵逼的maximum likelihood的推導圖。如果大家還有印象的話,前面linear regression確定參數時候用的是least square approach得到linear model的各個系數????0,????1,????2…,其本質上是maximum likelihood的一種特殊情況。區別就是least square approach比較好理解和表示,而變成non-linear model的情況需要變換成較為抽象的矩陣運算,也就是maximum likelihood的推導。

接下來我們看一個金融中實際應用的例子:

這里JP Morgan用到的是期權(后面我會詳細介紹期權是一個什么東西和volatility surface,如果想先弄清楚可以先跳到最后的科普期權部分),內容是對于某個股票一直sell 1M ATM(At The Money)的call,并且不斷rolling到下一個月。


因為是sell option,所以可以一直收取premium拿到期。至于為什么是ATM的call,因為在at-the-money的時候,時間價值是最juicy的,也就是自己overwrite的時候可以收的premium會最大。如下圖我們可以看到100% at-the-money的時候是最大化收益的。除之此外,我們還可以看到一個有意思的現象,整體來說102%的收益比98%的低,105%的比95%的低,原因是volatility surface其中一個維度的volatility skew現象導致在相同程度的moneyness情況下,ITM會比OTM的implied volatility更大。還有一個現象就是102%的比98%波動更大,105%的比95%波動更大,原因是ITM的已經包含了intrinsic value增加了緩沖區,但trade-off就是雖然ITM的會風險更小但是upside potential也會受到限制(我們可以看到102%和105%一開始其實是比98%和95%收益更高的,但當掉下去的時候也掉的更多,所以OTM的波動更大)。?



但是JPMorgan取的是1M的rolling,事實上tenor最小的weekly maturity會效果最好(如下圖),不知道為什么不用。具體的解釋是跟volatility surface的另一個維度term structure有關了,最后期權科普部分會詳細介紹。

?


雖然有那么多好處,但由于是單邊賣期權,所以存在的風險就是股票的價格會往反方向走。比如說這里如果股票價格一直猛漲的話,還這么賣期權會死的很慘。所以風險就在于預測這個股票的表現強弱。

當然這里衡量股票強弱并不是直接預測股票的價格,而是JPM自己通過各個factor綜合構造的一個分數。
如下:?



左邊的圖就是這個“call OW策略” VS sp500大盤的ETF(spy)的表現。

有些人可能會問了,這策略表現這么差,有啥用?


股票不一定都會瘋漲嘛,總會有不同sector輪轉的時候。而且要知道現在美股是超級大長牛,但是股票不會漲上天對吧,總會有經濟周期超過均衡太多而掉下來的時候。所以如果我們能用這個策略無縫切換的話那不是就都可以抓住了么?(當然,比較困難...)

右邊的圖就是形容JMP是怎么給股票打分來決定其表現好壞的。我們可以看到一共分為4大塊兒,Value,Momentum/Technical,Growth和Quality,分別在這個股票的得分里面有不同的權重。每一塊兒呢又是由其下面的小factor通過不同的權重構成。

比如對于每一個股票我們有這些10個小factors的數值,按照他們自己的權重可以算出這4個大的factor的數值,然后再按照這些大的factor的權重算出來一個最終的得分作為衡量股票表現強弱的標準。應該是得分越高,這個股票的表現越好。但由于我們的策略是不希望股票的表現過于強勢,所以當股票表現差的時候會trigger我們的策略(否則就單純long?或者加入其它的策略也可以)。

OK,現在開始解釋怎么用logistic regression來做這件事。


我們首先需要弄清楚我們的Y和Xi分別是什么。這里對于Y呢,我們想要預測的是“call OW策略”是否優于單純做多這個股票的概率,所以也就是當樣本數據中“call OW策略”的收益高于單純做多的時候Y的取值是1,低于單純做多的時候Y的取值就是0。對于Xi,這里每個股票的這10個小的factor作為不同的因子Xi。


對于樣本數據,由于金融的數據不是很多,所以想要減少model的對于數據本身的依賴程度variance,我們可以用前面bootstrap的方法來抽樣得到很多個不同的sample dataset,每一個sample dataset都用logistic regression來擬合,自然每一個sample dataset我們都可以得到一個logistic regression的方程,也就是每一個sample dataset我們都可以得到一套這10個因子的系數,即他們每個因子分別對每一個logistic regression預測概率的貢獻程度(感覺自己好啰嗦,這樣的解釋比較白話了吧...)。最終的結果就是對這些不同sample dataset擬合的model的結果取平均值。(如果對研究某一個系數感興趣就是將這個系數取平均值,如果是對最終的預測概率Y感興趣就用每一個sample dataset的預測概率Y取平均值,實際上也就是取感興趣東西的distribution的mean)對于系數的理解可以參照linear regression,系數的正負就是這個因子對于預測結果的影響方向,系數的絕對值大小就是其影響的大小。

bootstrap其實是為了多次重復試驗獲取Y或各個因子前面系數的distribution(或者quantile,因為distribution本身就含有quantile的信息),也可以用來降低variance。因為是很多次重復試驗的平均值,因為bootstrap之后獲得分布的均值會比用全sample僅做一次regression的結果的variance更小。


簡單來說,就是做無數次實驗,然后每一次實驗都得到一個結果,將這些結果全部扔進histogram里面,就變成了這個想要觀察結果的分布圖(這個結果可以是Y,也可以是各個因子前面的系數,下面Figure 57里面10個因子的系數應該就是取平均值之后的結果)。

下圖結果的意思是我們需要避免3M Realized Volatility這個因子高的股票,但是Earnings Certainty和12M Price Momentum這兩個因子是對股票有利的。

然后通過logistic regression,我們就通過這10個Xi和其系數可以預測出來“call OW策略”的收益優于單純做多這個股票的概率。并且可以自己自行定義,當概率超過某一個值(不一定是50%,可以更嚴格比如80%,90%都可以,其實這個也可以用統計的方法來求得最優的一個benchmark)的時候trigger這個“call OW策略”,如果小于這個概率值的話就單純做多這個股票。?


上圖里面我其實有一個疑惑的地方,就是這個地方的score quantile(Model score from logistic regression)應該跟前面提到的10個factor的Q-score是不一樣的。因為上面右圖中隨著這個score的增大,“call OW策略”優于單純做多這個股票的概率越大,也表示著預測的股票的表現會隨著這個score的增大而越來越差才對。


但實際上Q-Score的值越高,預測的收益率就越高。


Q-Score里面也有我們用到的這10個相同的因子(因為這10個因子就是從Q-Score的model里面來的),所以我們可以像前面Figure 56里表示的那樣根據權重算出來那4個大的factor,再把這些大的factor結合起來變成一個綜合的分數來衡量這個股票的強弱程度。但這里似乎沒有用到這個方法來衡量股票的強弱。


我稍微搜了一下JPMorgan以前的報告,Q-score具體是長這個樣子:?




The higher the Q-Score the higher the one month expected return。?

這里明顯和Figure 57右圖不符合。所以現在的問題就變成了Figure 57右圖中的橫軸"call OW score"是怎么計算的。但我也不知道...感興趣的讀者可以自行研究...可能在文章給的JPMorgan Market的link里,但如果沒有access的就看不到那個報告了。

這大概就是怎么運用logistic regression來處理是和否的問題。

當然,任何模型都有其適用范圍,logistic regression也不例外。


logistic regression的缺點就是當處理很多個變量Xi的時候,不能很好的解決Xi之間相關性的問題,這個需要很注意。?

Support Vector Machine

接下來我們可以看看另一個classification的方法,就是很著名的Support Vector Machine(SVM)。

首先我們可以看一張圖:?



這張圖表示的東西呢,就是我們有一堆觀察點,每一個觀察點都有Y和X1,X2的值。這里Y呢因為是classification,所以只有兩個值,一個藍色(我們分配的值給+1),一個是紅色(我們分配的值是-1)。X1的值就是橫軸,X2的值就是豎軸。


所以每一個觀察的點都有Y,X1,X2這三個屬性,畫在X1和X2的平面上面,Y的值用顏色來表示。


我們想要做的事情呢,就是用一條線把這些點區分開來(譬如圖上的三條黑線都可以把藍色的點和紅色的點分開了)。由于這是二維平面上面的一條線,所以其表示的方程就是:

????0+????1·X1+????2·X2 = 0?

這一條線確定之后,系數????0,????1,????2也就確定了,以為其只是用來確定這一條線的系數,并且在這條線上面的點的坐標(X1, X2)都滿足這個方程。

所以利用這樣一條線,我們就可以用來區分這一條線兩邊的點了。


當一個點的坐標(X1, X2)滿足 ????0+????1·X1+????2·X2 > 0 的時候 ,就處于這條線的上方,也就是藍色(Y=+1)。反之,如果滿足 ????0+????1·X1+????2·X2 < 0 的時候,這個點就在這條線的下方,也就是紅色(Y=-1)。

這樣我們就將這兩種情況合并成一個式子來表示這條線兩邊所有點需要滿足的條件:


Y·(????0+????1·X1+????2·X2) > 0

但是這里就出現了一個問題,圖中有三條線,這三條線都可以將藍色和紅色的點分開,那我們怎么對比這三條線的好壞呢~


這個問題也很好解決,那就是我們希望這兩邊所有的點離這條線的距離盡可能的遠,因為這樣就說明這兩邊的點被這條線區分的最開,區分的結果自然也就更加可信,也就是使兩邊的點到這條線的垂直距離盡可能的大。

為了使得他們分得更開,我們可以將大于0這個條件更加嚴格一點,使得Y·(????0+????1·X1+????2·X2) > M,M是某一個正值,這樣也就給兩邊都增加了緩沖區,使得兩邊的點距離這條線的距離全部都大于M,并且我們希望這個M的值越大越好。(因為M的值越大,說明兩邊離這條線的距離最近的點越遠,也就保證了其他所有點都會離得更遠)

數學上的表達式是這樣(這里i是指的每一個點,系數????的和被標準化為1,這樣normalize之后可以和M值作對比):?



然后就變成了如下這張圖,中間那條黑色的實線就是之前M=0的情況,而兩條虛線就是方程加上某個正數M之后的效果((其實就是對中間這條黑線分別上下平移距離M)。還需要注意的是,這里M并不是我們人為給的一個值,而是上面的數學式對所有的點經過一定的optimization之后得到的結果,各個Xi系數????的值也是一樣經過optimization之后的結果。?



但是,不要以為這樣就可以解決問題了,因為實際情況并非這么完美。很可能會產生如下的情況,藍色和紅色的點都混雜在一起,就無法再用一條直線完全將這些點都分開。?



那我們怎么辦呢?


這里我們就要進入真正的Support Vector Machine的內容了。

但具體應該怎么做呢?


也許就有人會想到,那如果我把M的值變成負數會怎么樣?


這個其實也就是下面要說的,我們可以在上面的數學式子里面加入一定的錯誤率(也就是那些錯誤被線分類的點,反應在式子里面就是M加上一個負數),也就是允許這條線兩邊的藍色區域允許有紅色的點,紅色區域允許有藍色的點,但是需要將這些錯誤率保持在自己能接受的一定的大小之內,畢竟我們希望其錯誤率越小越好(最理想的情況就是這條線兩邊的點完全沒有錯誤率,也就是最開始完全分開的情況,但是現實中基本上不存在),所以可以將其作為一個penalty ?加入上面數學的表達式中。

并且我們可以把這個penalty變得更加有效,使得其跟緩沖區結合起來。我們可以看如下的圖,?



上面的左圖中,和前面一樣,我們可以看到中間的那條實線代表的是M=0,虛線代表的是藍色和紅色兩邊的緩沖區。這樣所有的點就被劃分在了4個區域里面:


藍色一邊: 在緩沖區內,在緩沖區外


紅色一邊: 在緩沖區內,在緩沖區外


這樣我們就可以給予不同區域的點不同的penalty的值?。

因為這實際上和前面一樣,都是optimization的問題,所以我們需要先給?在不同區域內不同的loop范圍求得其最佳值。


當藍色的點在藍色這一邊的緩沖區之外,或者紅色的點在紅色這一邊的緩沖區之外的時候,我們將?的值設置為0(因為這是最理想的情況,沒有penalty)。


當藍色的點在藍色這一邊的緩沖區之內,或者紅色的點在紅色這一邊的緩沖區之內的時候,我們將?的值設置為0<?<1(因為在緩沖區內的話就開始有一定的分類錯誤風險,我們設立緩沖區的目的就是為了使得所有的點分的越開)當藍色的點在紅色那一邊的時候,或者紅色的點在藍色那一邊的時候,我們將?的值設置為1<?(這里因為已經形成了錯誤的分類,所以將?的值設置的更大一點,并且在錯誤的一端錯的越遠這個penalty的值就越大,對整體分類效率的負面影響也就越大)

所以我們就有下面的數學表示:?



這里中間那一條分類線其實和M還有penalty ?無關,因為其本身就是當M=0時候的結果。這里變化的只是最優緩沖區的確定,并且這是整體所有點都考慮進來之后的最優緩沖區。

這里?就是上面說的的penalty。第三個式子右邊的M·(1-?)表示的是加入?這個penalty之后改良過的每一個點距離中間那條線的“距離”,在不同的區域內的時候由于?的值不一樣,分類越錯誤,M·(1-?)的值也就越小,錯誤分類的時候其值甚至是負數。但我們是想要其越大,因為其代表了所有點距離中間這條線的”距離",所以我們需要將整體的?之和控制在一定的范圍之內。

這里的C就是我們自己設置用來控制所有在緩沖區甚至錯誤分類的點的?總和。我們想要整體的(潛在錯誤:緩沖區內 和實際錯誤: 在另一個相反區域內)錯誤率越小,也就是想要C的值越小。當我們設置C為0的時候,也就是讓所有的?都是0,也就是一開始最理想的情況,0容忍率。當C設置的越大,也就表示我們對于錯誤的容忍程度越來越大。

同樣,我們希望的是通過這個數學式的optimization得到所有點共享的一個M值(因為存在有錯誤分類的情況,所有這里的M就不是前面理想情況下距離中間那條線最近的那個點的距離了,而是一個真正使得整個分類最優化的緩沖區域,我們稱作Margin)和Xi的????值,還有每一個點分別的?值。?進行optimization逼近的時候的跨度取決于這個點在哪個區域,實際上也是取決于M的取值,因為M代表的就是margin的范圍大小。我們自然是希望M的值越大越好,因為其代表的是分類的有效程度,又不能變得很大,因為加入?之后,當M越大的時候包括進margin的點就越多,也使得?不為0的點就越多,這樣分類的效率就越被侵蝕。所以這其實是一個M值和被包括進margin區域的點的?(還有本身就是錯誤分類的點的?)總和C之間的一個平衡。

我們還可以從上面的式子看出來一個現象,那就是只有在緩沖區內和錯誤分類的點才會對M的值(或者說優化的緩沖區大小)產生影響。這些點其實就是被稱作support vector,他們的作用就是確定最優的緩沖區,我猜名字的來由也就是他們是用來support將兩邊區分開來的區域。因為其實我們只需要保證這些點同時距離中間那條分類的直線最遠即可,其他在緩沖區之外的點都比這些點離中間的分類線更遠,所以也同時保證了緩沖區外的點都更能被分類。這里我們也可以想到,由于在緩沖區外面的點的penalty ?為0,所以對于緩沖區的大小其實沒有影響,有影響的僅僅只是?不等于0的緩沖區內和錯誤分類的點(當然這里有一個feedback loop,因為只有確定了緩沖區M的值之后才能知道哪些點在緩沖區外面,所以整體才是屬于全局優化的問題)。

緩沖區的重要意義在于,在緩沖區之外的點,我們可以非常確信是這一邊的分類,所以我們是希望緩沖區外面的點越多越好,我們對于所有點的整體判斷成功率就越高。所以當我們將我們對于錯誤的容忍程度C的值降低的時候,緩沖區的大小也在收縮。如下圖我們可以看到隨著C的值減小,緩沖區的寬度也在一直變窄:?



這里我們給予的參數C做的事情其實就是統計模型中最核心的bias和variance的tradeoff。


當C很小的時候,我們對錯誤分類的容忍程度小(當設置C=0的時候,其實是零容忍),緩沖區會很窄M的值很小,很少的點會在緩沖區內或者被錯誤分類(即緩沖區被很少的點所決定),這樣其實是使得整體的分類效果更好(bias很小),但犧牲的就是model的靈活性,也就是variance很大,對于out-of-sample的數據的分類效率會很低。直觀的理解上來說,如果我們將緩沖區內的點稍微變一下,對于緩沖區的影響是非常大的,也就說明這個緩沖區對于數據的依賴是非常大的。


同理,當C很大的時候,錯誤的容忍程度大,緩沖區會很寬M的值很大,然后幾乎所有的點都被包括進了緩沖區,所以整體的分類效果會很差(bias大),但是對于數據的依賴性降低(variance小)。這里的直觀理解也類似,如果我們改變一些緩沖區內點的值,對緩沖區的影響非常小,因為緩沖區取決于其他更多的點,也就是對于數據的改變不是那么敏感。


這兩種情況我們都不希望發生,我們需要在bias和variance之間找一個平衡點,所以我們就需要用前面介紹的cross-validation的方式來確定最優的C的值。

OK,經過上面的過程,基于我們所有的數據,還有設置合適的C值,就可以得到中間那條分類線和緩沖區了,然后就可以根據他們對于out-sample的點的X1,X2的值進行Y的分類預測。

實際情況其實還經常會更加復雜。上面講的SVM是僅僅針對linear的情況(也就是直線就可以幫助進行分類)。但如果是如下的情況呢?很明顯這樣線性的預測就不再適用了。?



這里我們就需要將線性的空間拓展或者經過映射變成高維非線性的空間(圖中的例子是2維,因為只有X1和X2這2個變量,為了得到non-linear的關系,我們需要將X1和X2進行升維,譬如簡單的加入另外的因子X1和X2的平方值,開方值,log值等等形式,復雜的就是直接將每一對觀察值本身作為因子或者說kernel,將直線變成曲線甚至是圓等等形式),如下圖所示:?



我們可以看到,這樣non-linear的SVM分類方式對于上圖更為合適,在實際操作中kernel的具體形式可以自行在R中選擇(具體選擇哪一種更合適可能就取決于自己對于想要處理的dataset性質的了解了)。?



上面就是具體kernel來升維的數學推導過程,感興趣的童鞋可以仔細推敲。如果不感興趣的,也可以裝作懂了的樣子,繼續往下看其具體在外匯option上應用的例子了~?

這里的主角是外匯期權,1M ATM EURUSD options,我們來看看Y和變量Xi分別是什么。這里的Y是由rolling這個期權的long position產生的PnL(profit and loss)決定的,并且是分類的類型。


當PnL<-20 bps的時候,Y的分類是”vol sell”,這里vol的意思是波動率volatility,后面的期權部分會詳細介紹。


當PnL>20 bps的時候,Y的分類是”vol buy"


當-20<PnL<20 bps的時候,Y的分類是”neutral"

這里的Xi呢,是由如下377個不同的指標構成(由于這些指標的scale不一樣,所以依然需要對其normalization處理):?



然后對于數據呢,我們是取的過去10年daily的數據,一共是2609個點。為了防止overfitting,我們用Principle Component Analysis(PCA,后面也會詳細介紹)來對Xi進行降維(因為這里的Xi有370個,過于多了),我們通過PCA選取最重要的60個,90個,180個變量Zi(這里的Zi是由全部的Xi線性合成的大因子,被稱作主成分因子)。如下圖:?



PCA呢,是一種對變量Xi非常多的情況進行降維的方式,下面unsupervised的統計方法里面我們會細致講這個方法是具體怎么降維的。主要的思路就是將所有的Xi線性組合成若干個主成分因子Zi,使得其能最大程度的代表所有的信息。上圖表示的就是這些最主要貢獻的Xi積累起來對于Y的解釋程度,也就是這些選中的Xi所包含的信息能涵蓋Y的多少信息。橫坐標就是由PCA選出來的主成分因子的數目,縱坐標就是對Y的解釋程度。


例如在圖里我們可以看到,當我們選擇前60個最大貢獻主成分因子的時候,可以解釋86.1%的Y;當增加到前90個因子的時候,可以解釋91.9%;當選取前180個因子的時候,可以解釋98.6%,相當于我們用了180個主成分因子就代表了原始370個因子的91.9%的信息,使得計算和model復雜程度都大大減少。

有些盆友可能會覺得有疑惑,前面的linear regression的lasso方法似乎也可以用來降維,為什么這里要用PCA這個方法呢。


我覺得有兩個原因:


lasso方法需要利用連續的Y的值去做regression才能進行降維,而這里Y是分類不是數值,并且PCA的方法僅僅只需要Xi本身的信息就可以直接對Xi進行線性組合來降維。


第二個原因是這里的因子數目太多,有370個,如果用lasso的linear regression直接做回歸會使得模型不穩定和過擬合。

對于數據,我們將其分成兩部分,前8年的數據作為training sample,后2年的數據作為test sample,并且對于training sample用了10-fold cross-validation的方式去train model。

10-fold cross-validation其實是k-fold cross-validation中k=10的情況,其內容是將training sample隨機均分成10組。然后每次選出一組作為validation set(其實也就是用來做test sample),這一組選出來之后剩下的數據全部作為training set來train模型,模型確定之后再應用在那選出的一組上求得MSE(可以當做test error)。這是一次實驗。接著按照同樣的方式將這10組的每一組都作為validation set進行同樣的步驟,每一組都可以求得一個MSE的值。然后最終的結果就是將這10組MSE的值取平均,得到這個model最終的MSE。

但是這里為什么要用10-fold cross-validation我比較疑惑?;蛘哒f這里的10-fold cross-validation是用來得到10個Y的預測,然后平均一下得到最終的Y?


不太確定10-fold cross-validation是不是可以直接用來對Y求平均值。一般10-fold cross-validation只是用來求得平均的MSE,或者說根據某一個變化的參數畫出來最小MSE時候(一般由于這個參數是penalty因子,代表的是bias和variance之間的tradeoff,自然MSE的圖會是U型)這個最優參數的位置。

然后得到如下的結果:?



我們可以看到KNN,SVC(也就是SVM,kernel是三階的polynomial方程)還有SVC(kernel是線性的方程)這三種model表現最好。

預測的結果跟現實的結果對比如下圖:?



我們可以看到SVM的方法預測準確率還是比較高的(也就是一般預測的都是對的),但是抓住機會的次數(或者說預測trigger開倉的次數)不多。
所以策略的話可以著重利用高準確率這方面,或者重倉。

上面我們了解了兩種處理classification問題的方法,一個是logistic regression,一個是SVM。他們的比較是當分類的點非常分散的時候SVM的表現更好(圖上的表現就是相同類別的點會聚集在一起,并且不同類別的點盡量分開),當各個類的點混雜在一起的時候logistic regression更加合適(高度混雜在一起的時候SVM就無能為力了)。


SVM可以看作是一種空間上的mapping,所以當不同類的點被糅雜在一起而不是分團聚集在一起的時候(聚集在一起不一定是指在linear情況的在線的同一邊,也可以是聚集成圓等等形狀,通過mapping到另一個合適的更高維空間依然可以轉化成linear的情況來進行處理,繼而再mapping回去降維),會難以找到一個合適的映射空間處理問題。?

2.5 Unsupervised Learning(包括期權相關科普)


Principal Component Analysis

Unsupervised方法和Supervised的區別呢,就是在應用的過程中有沒有涉及到Y。


如果有Y,那就是supervised,更進一步如果Y的取值是連續的數值,比如漲跌幅度,那就是quantitative,比如regression的方法;如果Y的取值是discrete分立的類,那么就是qualitative,比如classification的方法。


如果沒有Y,那就是屬于Unsupervised方法。因為沒有Y,所以Unsupervised的方法僅僅操作因子Xi本身。

這里unsupervised由于沒有Y,所以并不像supervised一樣是用于預測某個值或者某個類,而是主要是用于研究Xi之間的關系。所以Unsupervised方法有一個好處就是可以作為應用supervised方法之前對數據本身的預處理,數據本身的信息對于后期我們選擇supervised方法進行預測Y有很大的幫助。所以unsupervised方法又起到exploratory data analysis的作用。


但是我們也要知道unsupervised方法有一個問題,正因為沒有Y,所以我們沒有辦法像supervised方法那樣驗證我們的結果是否正確。


相對于supervised方法,unsupervised方法還有一個好處就是可以處理當因子Xi非常多(比如成百上千個)但是數據量又不是那么多的時候的情況。如果直接用傳統的regression方法就會造成模型很不穩定,所以可以先利用unsupervised里面的Principal Component Analysis(PCA)方法將Xi進行降維,下面將會介紹到。

好了,大概unsupervised方法的背景就介紹到這,現在介紹一下其具體內容。

Unsupervised里面分為兩塊兒,一塊兒是Factor Analysis,另一塊兒是clustering。

首先呢,我們介紹Factor Analysis這一塊兒,其中比較重要的Principal Component Analysis(PCA)方法。

為了更好的理解PCA的應用,首先簡單介紹一下PCA的原理。


從名字Principal Component Analysis我們就可以大概看出來這個方法想干嘛,中文翻譯過來叫做主成分分析。自然,其想要研究的就是主要的成分,換句話說,就是用最少的變量描述最多的信息。


這里和前面lasso的方法有點不一樣,lasso是直接把因子Xi前面的系數變為0,也就是直接把這個因子剔除的方式來給因子Xi降維,而PCA是將很多的因子Xi進行線性組合,變成若干幾個Zi來代表盡量多的信息。(這里一定要注意,PCA并不是像lasso一樣將Xi的系數變為0的方式來降維,而是通過找到能最大代表數據信息的Zi,每一個Zi都含有所有Xi的信息,只不過他們前面的系數不一樣)因為如果當因子非常多(有些fund的strategy pool里有上百萬個因子)的時候,我們可以通過PCA將這些因子構造成若干個主因子來進行操作。

并且在統計界有一個恐怖的傳說,叫做"curse of dimensionality”。


因為因子Xi是我們人為主觀判斷可能會跟Y有關系才加上去的,那么有些人會想,因子的數目不就越多越好?畢竟最怕的就是在預測Y的時候沒有將真正有貢獻的因子考慮進來,前提錯了的話后面不管怎么弄fancy的model都是錯的,所以那如果把能想到的因子全部都加進去這樣不就萬事大吉了么,一個都不能少!


這樣的想法是沒錯,漏掉重要的因子很可能會對Y的預測效果產生巨大的影響。但是凡事都是一個平衡,如果在模型里面因子加入了太多的話,即使把真的有貢獻的因子加了進去,也會淹沒在茫茫的因子中(因為加入的沒有貢獻的因子更多,并且由于每一個因子都有一定的權重會一起影響這個model,相對來看,有貢獻的因子對于模型的解釋能力其實是被稀釋了)。


用統計的黑話來說就是,加入好的因子雖然會使得模型整體的bias下降(畢竟因子的信息更全面了),但是損失的是整個模型的variance會變大,也就是增加了其對于數據本身的依賴性,導致overfitting。特別是當因子的數目甚至大于我們數據點的數目的時候,那基本上無解了~(no kidding,是方程真的木有唯一解了…)?

所以這里對于Xi降維的重要性就體現出來了,一個就是像lasso做的只留下幾個能產生最多貢獻的因子,另一個就是將所有因子線性組合成若干個可以代表這些因子信息的大因子,雖然這樣同時也扔掉了沒有被包括進來的因子可能包含的真實的有效信息,但由于減少不那么重要的因子數目,降低整個模型的variance,雖然會一定程度上犧牲模型的bias,但是總體來看效率還是提高了。

這樣,通過PCA的降維方式,我們就更清楚數據信息背后的結構和主要的貢獻來源,使得后續supervised方法的fitting更加有效率。

除此之外,PCA還能將這些主要的因子線性組合起來,變成若干個大的因子(實際上這些大因子就叫做Principal Components,主成分),用這些大因子代替之前的單個小因子Xi來盡量解釋最多的Xi的信息。


因為同樣對于高維(Xi非常多)的情況,還有一個問題就是當因子數目多了之后,因子之間的相關性問題會變得非常嚴重(我們可以想象因子足夠多的時候,他們之間的信息很難會是完全exclusive的,特別是像金融市場,不同因子之間基本上都會有一定的相關性)。一個解決辦法就是將這些相關聯的因子結合起來變成一個因子,也就是這里PCA可以做的事情。并且PCA可以保證這些得到的大因子之間是線性不相關的,也就是在方向上是垂直的。PCA通過正交變換將一組可能存在相關性的變量(若干Xi)轉換為一組線性不相關的變量(變成Xi的線性組合Zi),除去對結果影響不大的特征,轉換后的這組變量叫主成分。

好了,接下來就是數學上的解釋了。為了避免公式的推導,直接用上圖吧。

祭出遇到PCA必拿出來的一張圖:?



這里的橫軸和縱軸分別是X1和X2兩個變量,然后所有的點都畫在這樣一個二維的平面內。


現在呢,我們想要用一個變量去盡量包括這些點最多的信息,PCA也就是做這件事,圖中的綠色哪條線就是PCA的結果。


怎么解釋呢?


可以這么看,一個理解是最小二乘法,也就是這些點距離這條直線的距離最短,就像regression一樣,最理想的情況就是這些點全部都在這條線上,自然這條線就能完全描述這些點的信息。

另一個理解就是最大方差理論,盡量使這些點在這條線或者說這個方向上的variance最大,也就是讓這些點向這條直線做投影,要盡量使得這些點的投影距離最遠。


為啥要最遠呢?因為最遠可以表示有更豐富的信息落在這一條線上面,這些點的區分度也越大。舉個例子,

“舉個例子,比如現在有10個人的數據,每條數據有兩個維:出生地,性別,10個人的出生地各不相同,5男5女。從感覺上看,哪一維所包含的信息量大一些?是不是出生地呢?如果我一說出生地,是不是馬上就可以找到那個人了呢?因此出生地各不相同嘛,而性別呢?因此性別只有2種,因此會有大量重復的值,也就是很多人的值都是一樣的,這個屬性對于人的刻畫效果不好,比如你找一個性別是男的人,可以找到5個,這5個人從性別這一維上看,是完全一樣的,無法區分。從PCA的角度來看,出生地這個維的方差就要比性別這個維的方差要大,而方差大就說明包含的信息比較豐富,不單一,這樣的特征是我們希望留下的,因此就這個例子來看,PCA更傾向于保留出生地這個特征。

那么是不是簡單的就把需要保留的特征留下來,不需要保留的特征去掉就行了呢?比如說剛才那個人的數據的例子,是不是直接把性別這個特征去掉就完了?遠遠不止那么簡單,PCA是把原特征映射到一個低維空間上,使得特征在這個低維空間中的方差最大,如果是直接去掉特征維的話,那么剩下的特征不一定是低維空間中方差最大的。這里要注意一個問題,繼續剛才那個人的數據的例子,有2維,性別和出生地,如果用PCA把它降成1維,那么這一維是什么?這是沒有定義的,也就是說,這一維既不是性別,也不是出生地,它已經沒有定義了,我們只知道它是1維選擇出來的特征而已,但這并不影響我們對特征的使用?!?br style="max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">
說了這么多,現在我們大概知道PCA是在干一件什么事情了,就是通過線性組合高維空間中Xi的方式構造出若干個Zi來對數據進行降維,并且找到盡量能代表所有點信息的幾個主方向(也就是幾個構造的大因子,一般第一個大因子包含的信息最多,然后信息度濃度次遞減)。

好了,接下來說PCA的具體應用。


這里PCA是應用在期權的implied volatility surface上面。

首先我們來看一張implied volatility surface的美圖:?



什么?又一臉懵逼??



看來這里需要稍微介紹一下期權才行呢...

首先,能讀到這兒的我充分相信大家的實力,就直接上傳說中的BS公式了(摘選自wiki)。?



期權定價的核心幾乎就是這兩個公式,Call的定價和put-call parity的問題。

我們看第一個式子Call的定價C(St, t),我們可以看到這個式子中有5個參數。對于固定某個時間T,我們知道這個call的strike price執行價格K,也知道這個call的maturity到期時間(T-t),也知道risk free rate無風險利率r,正態分布N(·)的形式自然也都知道,剩下的就是volatility ????不知道,所以現在我們就得到了一個volatility的方程來表示Call的價格C(St, t)。

volatility是一個什么東西呢?volatility是波動率,也就是期權underlying的標的價格的標準差。你如果問我標準差怎么算,我只能說去Google一下,計算講的太細節估計都看睡著了...

所以假如我們知道volatility呢,我們就可以知道這個Call的理論價格,也就可以衡量當市場上Call的實際價格是高還是低,高了呢我們就可以賣,低了呢我們就可以買。
可惜天上不會掉餡餅,因為我們不知道volatility...


接下來還得知道BS公式的假設前提:?



我們就可以看出BS模型的一個弊病了,那就是它假設underlying標的價格的波動率volatility是一個常數,跟strike price還有maturity沒有半毛錢關系。


這明顯是不符合實際情況的,因為市場會對對于不同的strike price和maturity有不同的預期和偏好,導致市場對于未來波動率的預期也會不一樣。

但是!


我們雖然不能用波動率來算出來期權的理論價格,可是我們可以反過來呀~


我們有期權的市場價格,還有BS公式里面其他一系列的變量,比如strike price K,期權的maturity(T-t),也知道risk free rate r等等,就可以反過來求出來理論上的波動率。這樣我們就可以知道市場對于未來的underlying標的的波動率預期了。

具體怎么算出來的,簡單一點說就是當其他變量已知也就是固定的時候,期權的價格和波動率是一個單調遞增的關系(如果對Greek有了解的,其實就是因為期權價格對波動率求一階導的Vega是正值),所以不斷試????的值就可以最終match到當下的期權價格上面,自然也就是對應的波動率的解了。

看到這兒,很多人心里是不是在想,“尼瑪,這貨說了這么多,implied volatility到底有啥用?”

首先呢,implied volatility對于期權玩家的重要性不言而喻。


假設市場的每個參與者都使用BS模型定價,由于模型所需的其他輸入值比如執行價格、所剩期限、標的價格還有無風險利率都是相對固定的,人跟人對于期權價格的看法就是取決于他們對于未來這個資產的波動率了。假設有一個人巴菲特附體如有神助,對于未來資產波動率的預測百發百中如入無人之境,那么他(她)就可以根據自己預測的期權的價格跟實際的期權價格作對比來低買高賣,賺的就是別人對波動率的預測都很弱雞。


但是可惜的是,這種外星人是不可能存在的,不然早就是世界首富了。當然如果有個人弄出來一個模型可以準確預測資產未來的波動率,那也超神了。

所以對于我們一般戰斗力只有5的地球人怎么辦呢?


我們可以反其道而行之,利用將已經是事實的市場的期權價格代入BS公式中算出來大家對于未來波動率的預期,也就是隱含波動率。因為期權價格是市場上供求關系平衡下的產物,是買賣雙方博弈后的結果,所以隱含波動率反映的是未來市場對標的產品波動率的看法。


但是,算出來有什么用呢?


我們除了隱含波動率,還有一個波動率叫做歷史波動率。這個東西其實算出來也挺簡單的,只要我們有underlying標的的價格變化歷史數據,就可以用統計的公式算出來標準差,也就是波動率。而且我們發現一件什么事情呢,那就是歷史的年化波動率是處于一個區間,會有回歸均值的一個特性(做swing交易的同學應該最熟悉了),并且離開越遠回歸的速度就越快。比如說有一個股票,歷史波動率都是在10%到30%之間,這樣我們就可以知道從現在期權市場價格算出來的隱含波動率在歷史上是處于高還是低的位置,同樣可以做到低隱含波動率的時候買期權高隱含波動率的時候賣期權。但這里有一個問題就是歷史波動率的區間,不代表就真的不會飛出區間去,當發生重大事件或者傳說中的黑天鵝的時候隱含波動率也會變很極端,比如Black Monday的時候飛到了150%,08年金融危機的時候也飛到了80%。?



當然,做均值回歸有點投機的感覺。有的同學可能覺得太low,我可是做價值投資的,只是想利用期權對沖一下風險。


同樣,隱含波動率也很有用的!因為當確認了自己想投資的標的方向之后,可以把隱含波動率跟歷史波動率作對比,權衡一下此時買入期權是不是劃得來。也可以對不同strike price和maturity的期權進行橫向比較,畢竟都是針對同一個資產,自然希望在滿足了自己的需求買(賣)的情況下期權的價格越低(高)越好咯。

除此之外,對于直接交易underlying標的的交易員,我們也可以利用期權來幫助自己對標的的未來走勢做出一定的判斷。比如我們可以根據市場上對于同一個標的的所有不同strike price和maturity的期權價格,算出來每一個strike price和maturity對應的隱含波動率,其實也就是市場對于這個標的未來波動預期。然后將這個算出來的隱含波動率代入比如說隱含波動率二叉樹模型,再算出來市場對于標的未來走勢的預期,因為期權的價格本身就是已經是集中了市場上所有的有效信息,所以隱含波動率其實也包括了所有的博弈信息,利用其推導出來的未來走勢就可以幫助我們對直接trade標的有一個大概的方向和市場預判。

好了,對于基本的期權概念應該有一個大概的sense了,接下來我們就來詳細解釋一下之前那張volatility surface的圖。?



(此圖是在之前讀伽瑪交易員一篇文章存下來,08年危機時候的volatility surface,感謝之~)


期權交易員對volatility surface都會非常熟悉,因為這一定程度上就是自己根據市場情況做trade和進行風險對沖的基礎。


volatility surface呢,是一個三維圖,Z軸是隱含波動率,X和Y軸分別是moneyness和term(也許不同的軟件會有不同的名字,這里借鑒Bloomberg的表示)。moneyness的意思就是期權strike price和underlying標的的價格的ratio,這里以call為例,分為in-the-money(strike price小于underlying標的的價格,ratio小于100%的區間),at-the-money(strike price等于underlying標的的價格,也就是圖中的ratio等于100%的位置)還有out-of-the-money(strike price大于underlying標的的價格,ratio大于100%的區間)這三種狀態。如果是put的話strike price和underlying標的價格的關系則是反過來。term的意思呢,就是不同的到期日。

所以呢,我們可以把未來每一個到期日的每一個strike price和其算出來的隱含波動率畫在一張3D的圖上,這個就是volatility surface了。上圖中右上角的是volatility VS term的二維橫截面曲線,右下角是volatility VS moneyness的二維橫截面曲線??梢哉fvolatility surface包含了絕大部分我們需要了解的volatility的信息,而上面也介紹了volatility又是期權的核心,自然volatility surface的重要性也就不言而喻了。

既然volatility surface這么重要,那么如果我們可以預測未來的volatility surface是不是就相當于我們可以預測implied volatility進行交易了呢??



因為如果僅僅根據歷史波動率進行交易,很明顯我們丟掉了其他的很多有用的東西,僅僅只留下了波動率大小這一個信息。如果根據整個volatility surface的歷史數據進行分析,對我們的預判的幫助會更大。在知乎上面看到說成功的期權交易,是做整個曲面的變化,這涉及的是曲面的smile/skew(下面會介紹),和曲面的整體高低位置,前者貢獻利潤的10%,后者貢獻利潤的90%。

好了,鋪墊了這么多,接下來介紹利用PCA來分析volatility surface的信息。

這里選擇的underlying標的是USDJPY(美元兌日元),至于為什么選這個,我感覺可能是想了解美日間carry trade的情況,而且日元是外匯市場非常重要的組成部分。

接著我們看看具體怎么將PCA應用在USDJPY的volatility surface上面。


volatility surface是一個三維的圖像,Z軸是隱含波動率implied volatility,X和Y軸分別是moneyness和term。


對于PCA我們知道它做的事情是將所有的變量Xi線性組合成幾個大的因子(主成分)Zi,所以問題就來了,我們的Xi到底哪些。


這里我們有的是implied volatility,moneyness還有term的信息。但我們并不能將他們全部作為Xi,因為雖然volatility是連續的數值,但term和moneyness的信息是固定的點。


所以我感覺這里有一個trick就是將每天的volatility的變化值作為Xi的值,而moneyness還有term的信息作為Xi的位置。

估計這么講會有點混亂,畫一張圖就清楚了。

?


我們這里可以將所有的點都拉成一條線作為Xi,然后每天都有一列數據Xi。這樣處理我們就將整個volatility surface變為了一列變量Xi,因為每天都有一個volatility surface,所以每天可以作為一個observation。


這樣就將volatility surface的問題轉化成了PCA的問題,我們想要找若干個由Xi線性組合成的大因子Zi,使得這些個Zi的方向最大程度的代表所有的點的信息(每天可以看做是這個Xi維空間上的一個點)。換做實際問題的解釋,這些Xi的信息其實就是每天的整個volatility surface的信息,然后找到的由Xi線性組合成的大因子Zi的volatility surface可以最大的程度代表歷史上所有天數的volatility surface的信息。

報告里面呢,選取了前三個主成分Z1,Z2和Z3,分別的圖如下:?



然后PCA還有一個好處呢,就是可以算出來每一個合成的大因子(主成分)對于所有點的解釋程度(上圖右下),也就是包含了數據中多少比例的信息。具體的方法叫做“proportion of variance explained(PVE)”,做法就是算出來這個大因子的variance和數據整體的variance之間的比例。


所以這里我們就找到了前三個大因子的貢獻率分別是88%,4.8%和3.66%,下圖就是這三個主成分大因子在歷史上不同時間的解釋能力??梢钥吹降谝粋€主成分的解釋能力保持恒定,并且幾乎都在80%以上。?



知道了能代表所有歷史上volatility surface的這3個主成分之后我們自然能做的事情就很多了。


比如依據第一個主成分來判斷delta hedge ratio(這里delta是期權價格對于underlying標的價格的一階導,可以當做期權的價格對underlying價格變化的靈敏程度),也就是hedge delta使得整個portfolio獨立于underlying標的價格變化(但實際上delta hedge只能解決一階的hedge,二階gamma的hedge因為是非線性所以只能依靠另外的期權來進行hedge)。還可以把前幾個主成分單獨拿出來,對剩下的residual做均值0的回歸。

并且從這三個主成分大因子得到的volatility surface圖中我們就可以看出來一些信息,對于固定maturity的情況下當moneyness是in-the-money的時候,implied volatility是很高的,說明了隨著in-the-money的程度市場對于USDJPY的看跌程度是越來越大的。如果對于外匯市場了解的盆友可能就知道了,這就是因為日元往往被當做避險貨幣。

為了避免觀眾對外匯市場不熟悉,這里講點日元這個特殊貨幣的背景,那就是日元具有避險功能。我大概總結了一下,僅作參考。


(1) 日本的常年低息政策,我們都知道在經濟不好的情況下就會降息,如果已經是低息的話降息的空間就有限,利率降的越多貨幣越弱勢,所以日元貶值的空間有限。


(2) 同時也是由于日本低息的環境,所以國際環境好的時候很多人是借入日元然后買入其他高息的貨幣進行carry trader套利(就像美元QE的時候美國利息低大家會借入美元買入人民幣投資中國市場),但是一旦國際環境惡化,買入的貨幣國家會實行降息然后貶值,投資的風險喜好也變為保守,這樣套利就沒有辦法繼續維持,大家就會賣出買入的其他國家貨幣然后買回日元還掉以前介入日元的債務,這樣就進一步推高日元和日本的匯率,同時也壓低其他國家的貨幣。


(3) 日本的不管政府或者民間的資本在國際環境好的時候喜歡投資海外的資產,譬如政府的養老金基金,當外部環境變差的時候,這部分資金也會賣出資產回流日本換成日元,即使不換回日元也會買入看多日元的衍生品(期權或者期貨等)來對沖風險,都會進一步推高日元。


(4) 日元的池子大,流通性好,外部環境變好之后隨時可以再賣掉。


(5) 大家只要一出事就做多日元已經是習慣了。。。所以形成了一個自我實現的循環。

其實上述對于固定maturity的情況下volatility隨著moneyness變化的現象就是有名的“volatility smile(skew)”。具體這里不詳細說,因為模型假設的是underlying標的的收益率并符合標準的正態分布,但實際上市場上由于不同的風險偏好產生了期權的尖峰肥尾現象,肥尾的方向也就代表了implied volatility的smile(skew)方向。產生的原因也有很多paper探討,暫時沒有一個固定的說法。也許后面有時間的話我會寫一寫期權的notes,不過看老板push我科研的程度了...

對于期權有一點需要注意或者可以利用,因為漲和跌并不是對稱的,漲的時候總是緩慢的波動率低的,跌的時候總是摧枯拉朽波動率高的,期權價格呢又跟波動率有關,所以呢我們可以利用這一點。譬如說買put,一方面如果資產真的下跌,put本身由于moneyness和intrinsic value會增值;另一方面資產下跌的時候會引起恐慌增加波動率,也會使得期權增值,所以其實兩方面的動力會一起做貢獻讓put的價格飛起來很快。還記得前段時間的50 cent先生么?大家一開始都嘲笑這哥們腦子有病每天給市場送錢,現在才發現這哥們真牛逼。其實吧,他就是利用了期權波動率不對稱這一點,瘋狂在波動率低的時候掃貨買便宜的put,一旦市場有點風吹草動導致哪怕一天的恐慌,向下的利潤是非常豐厚的,遠遠超過前期裸買put的成本投入。當然,別人是建立在對當時整個市場情緒非常敏感的正確判斷前提下才敢這么單邊做期權,還冒著成為各國基金經理永遠嘲笑的二逼的風險,這種勇氣我還是很佩服的,實至名歸。對于不了解資本市場的同學呢,不要看了之后腦門一熱以為股神附體就all in了,成功了是big short不成功就變big idiot,老婆本都虧光了不要怪我,我代表華夏三千萬單身漢同志歡迎你的加入~

PCA除了在期權上面的應用之外,最常見的做法是用來分解portfolio的risk,也就是找到不同主成分大因子的beta(就是市場系數那個beta...)進行分配風險。大概的結論如下:?



具體細節參見JPM在2013年的一個報告:


https://www.cmegroup.com/education/files/jpm-systematic-strategies-2013-12-11-1277971.pdf

對于clustering的方法呢,也就是聚類。報告里面講的應用細節不是很多,不知道具體金融領域是怎么應用的,而且里面直接進行對比的聚類方法太多,好多我也沒見過,就不贅述了...

好了,主要的統計方法和應用就講完了。能讀到這兒的簡直真愛...么么噠!?




三. 隨便結個尾


結尾就扯點最近的感受吧。


最近發現大家都越來越擔心自己的工作是不是以后會被機器人取代,特別是人類在圍棋上面被毫無懸念的橫掃之后。


不學習就直接被淘汰,譬如美國的工人階層就是一個最明顯的例子,即使trump將工業的工作機會強行弄回了美國,但長久以往人類對于工人技術的需求會越來越小,最終會成為書中的歷史。


但被機器人取代還是相對比較長期的趨勢,而短期更需要擔心的還是人和人之間的競爭。

有沒有人想過為什么現在社會競爭越來越激烈,我覺得可能分為兩部分,一部分是人和科技的競爭,另一部分就是人和人之間的競爭。


人和人之間的競爭加劇很大一個原因就是互聯網。因為互聯網降低了獲得知識的門檻,使得任何人都可以通過互聯網低成本地習得所需的知識參與競爭,而原地不動的人自然就會被淘汰掉。


在以前,一個人只能干一類事,因為技能被自己的生活環境局限住了,只能接觸到身邊力所能及的技能知識,所以一輩子可能都只接觸到這一個技能和行業,但這種原始的環境實際上也是一種護城河,保護了自己相對他人的優勢。但是現在互聯網打破了這種隔離,把所有人都放在了同一個平面靠實力直接競爭,所有想學習的人都可以輕而易舉的學習到感興趣的領域,譬如編程和machine learning等,技能的獲得幾乎沒有成本。這樣一來,競爭的就是每個人對于知識的理解深度和自身的努力程度了,不再具有之前由于生活圈子的局限而產生的護城河,只要利用好了互聯網資源,任何人都可以將自己PK下去。


這也是為什么每個人都會焦慮,因為沒有安全感,自己在工作上不再是不可取代,世界上任何一個人都有可能取代自己,甚至比自己要求的工資便宜得多,所以給自己所在公司一個理由,why me?


為什么興趣會越來越重要?因為大批對自己領域感興趣的人可以毫無阻礙的進入自己所在的領域,還比自己更加有興趣鉆研這個領域,長期以往自己積累的優勢自然就會逐漸消失。越覺得自己工作毫無挑戰性,那說明自己工作的進入門檻越低,自己在未來競爭中的優勢越小。


那怎么辦?除了不斷學習沒其他辦法,總不能怪別人太努力吧,特別對于中國這樣一個自古就強調努力的民族。


很多人不知道自己的興趣在哪兒,甚至進入社會之后依然在茫然。我覺得吧,其實想找到自己的的興趣只有唯一的一個辦法。那就是一個字,試!找不到興趣的原因無他,就是因為自己接觸的東西太少了,被自己畫的圈限制住了。只有保持好奇心不斷去嘗試沒有接觸過的東西,我們才能在對比中找到相對喜歡的東西,自己的視野也在尋找中變寬廣了。只有找到自己喜歡的東西才能真心投入時間進去,才能一直積極主動的保持競爭力。


互聯網降低學習成本不可阻擋,學習資源只會越來越廉價,知識也會在競爭中不斷快速進化,不進則退也只會愈演愈烈,我們能把握住的只有不斷學習的能力,找到自己的興趣和合理的定位,利用優勢建立相應的護城河,不然最終只有被取代的命運,無論是被人還是機器人。machine learning固然重要,learning machine似乎更為重要...

怎么建立起自己的優勢呢?


平時少看幾篇散亂的文章,多看幾篇系統闡述的書。


學一個領域最關鍵的是建立自己的理解系統,而不是死記硬背散落的知識點。只有真的把各個點通過自己理解的邏輯連成線和網才叫真的懂了,這個才是永遠不會忘的東西,也是真正的核心競爭力,具體每個點的細節并不是那么重要。
說實話不要覺得看看別人寫的文章自己就了解很多了,其實了解的都是皮毛和結果,并不是真正的內功。想要真的形成自己的一套東西,必須扎扎實實的思考出整個框架和邏輯,廣度都是建立在一定深度之后,沒有深度作為基礎的廣度就是空中樓閣,遇到實際難題一碰就散。

雖然現在崇尚學科交叉還有復合型人才,但說實話,我現在的體會是切忌把技能點加太多。


我自己就走了彎路,什么都想學,結果什么學的都是皮毛。


之前我是對于任何事情都是非常好奇,物理金融統計量化心理哲學甚至各種運動和做菜,什么都想學并且都想做好,后來發現任何技能點都是需要長時間全身心投入才能做到極致的,而人的精力是有限的,不可能真的什么都學會,反而會把自己僅有的時間碎片化。而我又是一個不喜歡事情只做一半的性格,結果就導致放在waiting list里面的領域越來越多,徒然給自己壓力。

對于絕大部分人來說,就像投資一樣,如果你把資金全部分散化,確實分散了風險,但永遠不可能有很好的收益。一個是深度,一個是廣度,也就是收益和風險一個硬幣的兩面性。從個人來說相當于自己把總量不變的時間分配給不同的技能,雖然確實讓自己更加有綜合能力,但同時損害的也是自己長久發展的潛力。


全部分散不好,但是集中在一個技能上面同樣也會有非常大的風險,時代畢竟一直在變化,誰也保不準自己的技能在未來是不是會被淘汰。當然不排除有人的edge就是重倉,但前提是你的深度可以超過大部分跟你同臺競爭的對手,如果不是,那只能說是無謂增加了風險。

很少有人既做到深入專研,又做到對領域外也了如指掌。即使在金融領域,也是在深度的基礎上不斷積累出的廣度,而不是一開始的目標就是廣度。不然只會懂得皮毛,并且三心二意。


所以人最重要的就是發現自己擅長的地方,并且從自己擅長的技能里面挑最擅長或者最喜歡的一兩個專注的去做,這樣才能扎扎實實的make a difference。這種balance的trade-off其實是生活里非常簡單的道理,但是往往最容易忽略。

“吾生也有涯,而知也無涯。以有涯隨無涯,殆已!”

與君共勉~?

下個月要做美國高能物理年會的報告,也還有好多quant的書和報告都沒來得及看,所以寫的略潦草請見諒哈~這只是我自己統計和金融學習過程中的一個總結,如果還能幫助到同樣對machine leanring應用在金融上面感興趣的童鞋那就最好咯,還是那句話,知識是少有的越分享越多的東西,希望大家也都樂于分享,對自己也是一個總結夯實的過程。想要一起討論的童鞋也非常歡迎呀,我的微信號是693960928~

最后附上一句話,

“讓你遇到麻煩的不是未知,而是你確信的事并非如你所想?” — 馬克吐溫

送給處在正開始深刻變革的歷史轉折點的我們。(來源:對沖筆記 作者:江海)


相關推薦:

1、【天天阿爾法】教你Machine Learning玩轉金融,從入門到放棄(上)

2、【天天阿爾法】多次拒絕中國A股的MSCI究竟是如何做投資的?

3、【天天阿爾法】雷?。毫炕顿Y新局面?提升基本面因子比重

注:點擊閱讀原文,進入量化掘金交流“源”地——量邦社區,帶你一同開啟量化世界的玄妙之門。若手機無法顯示策略源代碼,?用電腦打開可查看策略源代碼,網址:bbs.quanttech.cn。?




參考文獻與推薦書籍:

1.《Machine Learning and Alternative Data Approach to Investing》JP Morgan

2.《Systematic Strategies Across Asset Classes》JP Morgan

3.《Momentum Strategies Across Asset Classes》JP Morgan

4.《An Introduction toStatistical Learning》

5.《The Elements of Statistical Learning》

6.《Active Portfolio Management》

7.《Quantitative Equity Portfolio》

8.若干知乎問答

9.裂墻感謝身邊給予極大幫助的盆友們!

10.還有我自己...嘚瑟一個,哈哈!

Copyright ? 南京白銀投資培訓研習社@2017
一部手机也能赚钱吗 加拿大28走势图 华东地区15选5开奖结果 pk10安装 云南11选五任选走势 星悦山东麻将 免费单机捕鱼 福建36选7预测 各种漏洞赚钱论坛 湖北11选5任二遗漏表 qq二分彩