小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

5W字入門干貨:手把手教你用機(jī)器學(xué)習(xí)做金融交易(下)

 yhjbsl 2019-09-19

2017-06-27 14:23

作者:江海


上接量子位公眾號今日第5條2.4 Classification

接下來我們要介紹的就是Classification了。

classification跟regression的區(qū)別就是Y的類型不同,regression是Y的具體數(shù)值的預(yù)測,比如漲跌幅度,而classification是對于單純分類的預(yù)測,比如Y的漲(Y值取1)或者跌(Y值取0)。

但是classification里面有一個地方不好處理,那就是如果想要預(yù)測的Y不僅僅只有兩個分類怎么辦,比如當(dāng)Y有三個值甚至更多。因?yàn)槿绻笥趦蓚€值的話就不能簡單將Y設(shè)置為0,1,2,但是Y的這三個分類值在實(shí)際的意義上不一定是等距的,如果我們將其設(shè)置成0,1,2的話是默認(rèn)這三個分類之間的距離相等,但在實(shí)際過程中Y不同分類結(jié)果之間的距離很難用數(shù)字去衡量。

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

logistic regression

而classification里面最出名的一個方法就是logistic regression。這里不要被regression的名字所誤導(dǎo),之所以取的是regression的名字是因?yàn)橛玫氖穷愃苧egression的方法,但是由于這里Y是離散的(不是具體連續(xù)的數(shù)值,而是比如說二選一,漲或者跌),所以對于Y的處理上有一些變化。

下面就是logistic regression的公式推導(dǎo):

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

這里用的是maximum likelihood function的推導(dǎo),因?yàn)樯婕暗搅司仃囘\(yùn)算,所以這里為了讓讀者更輕松一點(diǎn)暫時省去~

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

先上一張圖,

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

左邊的圖呢,那一條藍(lán)線就是直接用linear regression來fit Y和X的結(jié)果。公式如下:

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

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

一個是可以看到預(yù)測非常不準(zhǔn),即使我們將縱軸probability of Default>0.5看做是,probability of Default<0.5看做否,這個fitting的結(jié)果在balance的整個橫軸跨度內(nèi)基本上都是屬于否這一類。

但實(shí)際上從圖中我們可以看到當(dāng)balance這個橫軸數(shù)值在2000左右的時候,其縱軸probability of Default大部分其實(shí)是1,也就是會違約。

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

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

我們需要經(jīng)過兩個步驟:

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

將其變?yōu)閑^(β0+β1·X),這樣所有的結(jié)果都會是0到正無窮。

但是這樣還不夠,因?yàn)槲覀兿胍氖菍⑵鋲嚎s在0到1之間。所以我們可以同時對上面linear model的右邊p(X)進(jìn)行如下操作:

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

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

然后我們可以看到數(shù)學(xué)中標(biāo)準(zhǔn)的logistic function的形式是這樣:

它的圖形是長這樣:

是不是發(fā)現(xiàn)正好符合我們想要的需求呢,隨著橫坐標(biāo)X的變化,Y永遠(yuǎn)都被限制在0和1之間。

并且我們把標(biāo)準(zhǔn)的logistic function中的x換成我們的linear function里面的β0+β1·X之后,就完全是我們推導(dǎo)出來的結(jié)果。一顆賽艇!

所以這里這個方法是把linear function的內(nèi)容β0+β1·X嵌入到了標(biāo)準(zhǔn)logistic function里面,自然這個方法就叫l(wèi)ogistic regression了。

經(jīng)過上面的介紹和推導(dǎo),我們用logistic regression的時候呢也只會關(guān)注這個最終形式:

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

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

接下來我們看一個金融中實(shí)際應(yīng)用的例子:

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

因?yàn)槭莝ell option,所以可以一直收取premium拿到期。至于為什么是ATM的call,因?yàn)樵赼t-the-money的時候,時間價值是最juicy的,也就是自己overwrite的時候可以收的premium會最大。如下圖我們可以看到100% at-the-money的時候是最大化收益的。

除之此外,我們還可以看到一個有意思的現(xiàn)象,整體來說102%的收益比98%的低,105%的比95%的低,原因是volatility surface其中一個維度的volatility skew現(xiàn)象導(dǎo)致在相同程度的moneyness情況下,ITM會比OTM的implied volatility更大。

還有一個現(xiàn)象就是102%的比98%波動更大,105%的比95%波動更大,原因是ITM的已經(jīng)包含了intrinsic value增加了緩沖區(qū),但trade-off就是雖然ITM的會風(fēng)險更小但是upside potential也會受到限制(我們可以看到102%和105%一開始其實(shí)是比98%和95%收益更高的,但當(dāng)?shù)粝氯サ臅r候也掉的更多,所以O(shè)TM的波動更大)。

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

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

當(dāng)然這里衡量股票強(qiáng)弱并不是直接預(yù)測股票的價格,而是JPM自己通過各個factor綜合構(gòu)造的一個分?jǐn)?shù)。 如下:

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

有些人可能會問了,這策略表現(xiàn)這么差,有啥用?

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

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

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

OK,現(xiàn)在開始解釋怎么用logistic regression來做這件事。

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

對于樣本數(shù)據(jù),由于金融的數(shù)據(jù)不是很多,所以想要減少model的對于數(shù)據(jù)本身的依賴程度variance,我們可以用前面bootstrap的方法來抽樣得到很多個不同的sample dataset,每一個sample dataset都用logistic regression來擬合,自然每一個sample dataset我們都可以得到一個logistic regression的方程,也就是每一個sample dataset我們都可以得到一套這10個因子的系數(shù),即他們每個因子分別對每一個logistic regression預(yù)測概率的貢獻(xiàn)程度(感覺自己好啰嗦,這樣的解釋比較白話了吧…)。

最終的結(jié)果就是對這些不同sample dataset擬合的model的結(jié)果取平均值。(如果對研究某一個系數(shù)感興趣就是將這個系數(shù)取平均值,如果是對最終的預(yù)測概率Y感興趣就用每一個sample dataset的預(yù)測概率Y取平均值,實(shí)際上也就是取感興趣東西的distribution的mean) 。

對于系數(shù)的理解可以參照linear regression,系數(shù)的正負(fù)就是這個因子對于預(yù)測結(jié)果的影響方向,系數(shù)的絕對值大小就是其影響的大小。

bootstrap其實(shí)是為了多次重復(fù)試驗(yàn)獲取Y或各個因子前面系數(shù)的distribution(或者quantile,因?yàn)閐istribution本身就含有quantile的信息),也可以用來降低variance。因?yàn)槭呛芏啻沃貜?fù)試驗(yàn)的平均值,因?yàn)閎ootstrap之后獲得分布的均值會比用全sample僅做一次regression的結(jié)果的variance更小。

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

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

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

上圖里面我其實(shí)有一個疑惑的地方,就是這個地方的score quantile(Model score from logistic regression)應(yīng)該跟前面提到的10個factor的Q-score是不一樣的。因?yàn)樯厦嬗覉D中隨著這個score的增大,“call OW策略”優(yōu)于單純做多這個股票的概率越大,也表示著預(yù)測的股票的表現(xiàn)會隨著這個score的增大而越來越差才對。

但實(shí)際上Q-Score的值越高,預(yù)測的收益率就越高。

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

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

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

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

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

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

logistic regression的缺點(diǎn)就是當(dāng)處理很多個變量Xi的時候,不能很好的解決Xi之間相關(guān)性的問題,這個需要很注意。

Support Vector Machine

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

首先我們可以看一張圖:

這張圖表示的東西呢,就是我們有一堆觀察點(diǎn),每一個觀察點(diǎn)都有Y和X1,X2的值。這里Y呢因?yàn)槭莄lassification,所以只有兩個值,一個藍(lán)色(我們分配的值給+1),一個是紅色(我們分配的值是-1)。X1的值就是橫軸,X2的值就是豎軸。

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

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

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

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

所以利用這樣一條線,我們就可以用來區(qū)分這一條線兩邊的點(diǎn)了。

當(dāng)一個點(diǎn)的坐標(biāo)(X1, X2)滿足 β0+β1·X1+β2·X2 > 0 的時候 ,就處于這條線的上方,也就是藍(lán)色(Y=+1)。反之,如果滿足 β0+β1·X1+β2·X2 < 0 的時候,這個點(diǎn)就在這條線的下方,也就是紅色(Y=-1)。

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

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

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

這個問題也很好解決,那就是我們希望這兩邊所有的點(diǎn)離這條線的距離盡可能的遠(yuǎn),因?yàn)檫@樣就說明這兩邊的點(diǎn)被這條線區(qū)分的最開,區(qū)分的結(jié)果自然也就更加可信,也就是使兩邊的點(diǎn)到這條線的垂直距離盡可能的大。

為了使得他們分得更開,我們可以將大于0這個條件更加嚴(yán)格一點(diǎn),使得

Y·(β0+β1·X1+β2·X2) > M,M是某一個正值,這樣也就給兩邊都增加了緩沖區(qū),使得兩邊的點(diǎn)距離這條線的距離全部都大于M,并且我們希望這個M的值越大越好。(因?yàn)镸的值越大,說明兩邊離這條線的距離最近的點(diǎn)越遠(yuǎn),也就保證了其他所有點(diǎn)都會離得更遠(yuǎn))

數(shù)學(xué)上的表達(dá)式是這樣(這里i是指的每一個點(diǎn),系數(shù)β的和被標(biāo)準(zhǔn)化為1,這樣normalize之后可以和M值作對比):

然后就變成了如下這張圖,中間那條黑色的實(shí)線就是之前M=0的情況,而兩條虛線就是方程加上某個正數(shù)M之后的效果((其實(shí)就是對中間這條黑線分別上下平移距離M)。

還需要注意的是,這里M并不是我們?nèi)藶榻o的一個值,而是上面的數(shù)學(xué)式對所有的點(diǎn)經(jīng)過一定的optimization之后得到的結(jié)果,各個Xi系數(shù)β的值也是一樣經(jīng)過optimization之后的結(jié)果。

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

那我們怎么辦呢?

這里我們就要進(jìn)入真正的Support Vector Machine的內(nèi)容了。

但具體應(yīng)該怎么做呢?

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

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

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

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

藍(lán)色一邊: 在緩沖區(qū)內(nèi),在緩沖區(qū)外

紅色一邊: 在緩沖區(qū)內(nèi),在緩沖區(qū)外

這樣我們就可以給予不同區(qū)域的點(diǎn)不同的penalty的值ε。

因?yàn)檫@實(shí)際上和前面一樣,都是optimization的問題,所以我們需要先給ε在不同區(qū)域內(nèi)不同的loop范圍求得其最佳值。

當(dāng)藍(lán)色的點(diǎn)在藍(lán)色這一邊的緩沖區(qū)之外,或者紅色的點(diǎn)在紅色這一邊的緩沖區(qū)之外的時候,我們將ε的值設(shè)置為0(因?yàn)檫@是最理想的情況,沒有penalty)。

當(dāng)藍(lán)色的點(diǎn)在藍(lán)色這一邊的緩沖區(qū)之內(nèi),或者紅色的點(diǎn)在紅色這一邊的緩沖區(qū)之內(nèi)的時候,我們將ε的值設(shè)置為0<ε<1(因?yàn)樵诰彌_區(qū)內(nèi)的話就開始有一定的分類錯誤風(fēng)險,我們設(shè)立緩沖區(qū)的目的就是為了使得所有的點(diǎn)分的越開) 。

當(dāng)藍(lán)色的點(diǎn)在紅色那一邊的時候,或者紅色的點(diǎn)在藍(lán)色那一邊的時候,我們將ε的值設(shè)置為1<ε(這里因?yàn)橐呀?jīng)形成了錯誤的分類,所以將ε的值設(shè)置的更大一點(diǎn),并且在錯誤的一端錯的越遠(yuǎn)這個penalty的值就越大,對整體分類效率的負(fù)面影響也就越大)

所以我們就有下面的數(shù)學(xué)表示:

這里中間那一條分類線其實(shí)和M還有penalty ε無關(guān),因?yàn)槠浔旧砭褪钱?dāng)M=0時候的結(jié)果。這里變化的只是最優(yōu)緩沖區(qū)的確定,并且這是整體所有點(diǎn)都考慮進(jìn)來之后的最優(yōu)緩沖區(qū)。

這里ε就是上面說的的penalty。第三個式子右邊的M·(1-ε)表示的是加入ε這個penalty之后改良過的每一個點(diǎn)距離中間那條線的“距離”,在不同的區(qū)域內(nèi)的時候由于ε的值不一樣,分類越錯誤,M·(1-ε)的值也就越小,錯誤分類的時候其值甚至是負(fù)數(shù)。但我們是想要其越大,因?yàn)槠浯砹怂悬c(diǎn)距離中間這條線的”距離”,所以我們需要將整體的ε之和控制在一定的范圍之內(nèi)。

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

同樣,我們希望的是通過這個數(shù)學(xué)式的optimization得到所有點(diǎn)共享的一個M值(因?yàn)榇嬖谟绣e誤分類的情況,所有這里的M就不是前面理想情況下距離中間那條線最近的那個點(diǎn)的距離了,而是一個真正使得整個分類最優(yōu)化的緩沖區(qū)域,我們稱作Margin)和Xi的β值,還有每一個點(diǎn)分別的ε值。ε進(jìn)行optimization逼近的時候的跨度取決于這個點(diǎn)在哪個區(qū)域,實(shí)際上也是取決于M的取值,因?yàn)镸代表的就是margin的范圍大小。

我們自然是希望M的值越大越好,因?yàn)槠浯淼氖欠诸惖挠行С潭?,又不能變得很大,因?yàn)榧尤毽胖螅?dāng)M越大的時候包括進(jìn)margin的點(diǎn)就越多,也使得ε不為0的點(diǎn)就越多,這樣分類的效率就越被侵蝕。所以這其實(shí)是一個M值和被包括進(jìn)margin區(qū)域的點(diǎn)的ε(還有本身就是錯誤分類的點(diǎn)的ε)總和C之間的一個平衡。

我們還可以從上面的式子看出來一個現(xiàn)象,那就是只有在緩沖區(qū)內(nèi)和錯誤分類的點(diǎn)才會對M的值(或者說優(yōu)化的緩沖區(qū)大小)產(chǎn)生影響。這些點(diǎn)其實(shí)就是被稱作support vector,他們的作用就是確定最優(yōu)的緩沖區(qū),我猜名字的來由也就是他們是用來support將兩邊區(qū)分開來的區(qū)域。因?yàn)槠鋵?shí)我們只需要保證這些點(diǎn)同時距離中間那條分類的直線最遠(yuǎn)即可,其他在緩沖區(qū)之外的點(diǎn)都比這些點(diǎn)離中間的分類線更遠(yuǎn),所以也同時保證了緩沖區(qū)外的點(diǎn)都更能被分類。

這里我們也可以想到,由于在緩沖區(qū)外面的點(diǎn)的penalty ε為0,所以對于緩沖區(qū)的大小其實(shí)沒有影響,有影響的僅僅只是ε不等于0的緩沖區(qū)內(nèi)和錯誤分類的點(diǎn)(當(dāng)然這里有一個feedback loop,因?yàn)橹挥写_定了緩沖區(qū)M的值之后才能知道哪些點(diǎn)在緩沖區(qū)外面,所以整體才是屬于全局優(yōu)化的問題)。

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

這里我們給予的參數(shù)C做的事情其實(shí)就是統(tǒng)計模型中最核心的bias和variance的tradeoff。

當(dāng)C很小的時候,我們對錯誤分類的容忍程度小(當(dāng)設(shè)置C=0的時候,其實(shí)是零容忍),緩沖區(qū)會很窄M的值很小,很少的點(diǎn)會在緩沖區(qū)內(nèi)或者被錯誤分類(即緩沖區(qū)被很少的點(diǎn)所決定),這樣其實(shí)是使得整體的分類效果更好(bias很小),但犧牲的就是model的靈活性,也就是variance很大,對于out-of-sample的數(shù)據(jù)的分類效率會很低。

直觀的理解上來說,如果我們將緩沖區(qū)內(nèi)的點(diǎn)稍微變一下,對于緩沖區(qū)的影響是非常大的,也就說明這個緩沖區(qū)對于數(shù)據(jù)的依賴是非常大的。

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

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

OK,經(jīng)過上面的過程,基于我們所有的數(shù)據(jù),還有設(shè)置合適的C值,就可以得到中間那條分類線和緩沖區(qū)了,然后就可以根據(jù)他們對于out-sample的點(diǎn)的X1,X2的值進(jìn)行Y的分類預(yù)測。

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

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

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

上面就是具體kernel來升維的數(shù)學(xué)推導(dǎo)過程,感興趣的童鞋可以仔細(xì)推敲。如果不感興趣的,也可以裝作懂了的樣子,繼續(xù)往下看其具體在外匯option上應(yīng)用的例子了~

這里的主角是外匯期權(quán),1M ATM EURUSD options。

我們來看看Y和變量Xi分別是什么。這里的Y是由rolling這個期權(quán)的long position產(chǎn)生的PnL(profit and loss)決定的,并且是分類的類型。

當(dāng)PnL<-20 bps的時候,Y的分類是”vol sell”,這里vol的意思是波動率volatility,后面的期權(quán)部分會詳細(xì)介紹。

當(dāng)PnL>20 bps的時候,Y的分類是”vol buy”

當(dāng)-20<PnL<20 bps的時候,Y的分類是”neutral”

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

然后對于數(shù)據(jù)呢,我們是取的過去10年daily的數(shù)據(jù),一共是2609個點(diǎn)。

為了防止overfitting,我們用Principle Component Analysis(PCA,后面也會詳細(xì)介紹)來對Xi進(jìn)行降維(因?yàn)檫@里的Xi有370個,過于多了),我們通過PCA選取最重要的60個,90個,180個變量Zi(這里的Zi是由全部的Xi線性合成的大因子,被稱作主成分因子)。如下圖:

PCA呢,是一種對變量Xi非常多的情況進(jìn)行降維的方式,下面unsupervised的統(tǒng)計方法里面我們會細(xì)致講這個方法是具體怎么降維的。主要的思路就是將所有的Xi線性組合成若干個主成分因子Zi,使得其能最大程度的代表所有的信息。

上圖表示的就是這些最主要貢獻(xiàn)的Xi積累起來對于Y的解釋程度,也就是這些選中的Xi所包含的信息能涵蓋Y的多少信息。橫坐標(biāo)就是由PCA選出來的主成分因子的數(shù)目,縱坐標(biāo)就是對Y的解釋程度。

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

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

我覺得有兩個原因:

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

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

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

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

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

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

然后得到如下的結(jié)果:

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

預(yù)測的結(jié)果跟現(xiàn)實(shí)的結(jié)果對比如下圖:

我們可以看到SVM的方法預(yù)測準(zhǔn)確率還是比較高的(也就是一般預(yù)測的都是對的),但是抓住機(jī)會的次數(shù)(或者說預(yù)測trigger開倉的次數(shù))不多。

所以策略的話可以著重利用高準(zhǔn)確率這方面,或者重倉。

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

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

2.5 Unsupervised Learning(包括期權(quán)相關(guān)科普)

Principal Component Analysis

Unsupervised方法和Supervised的區(qū)別呢,就是在應(yīng)用的過程中有沒有涉及到Y(jié)。

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

如果沒有Y,那就是屬于Unsupervised方法。因?yàn)闆]有Y,所以Unsupervised的方法僅僅操作因子Xi本身。

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

但是我們也要知道unsupervised方法有一個問題,正因?yàn)闆]有Y,所以我們沒有辦法像supervised方法那樣驗(yàn)證我們的結(jié)果是否正確。

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

好了,大概unsupervised方法的背景就介紹到這,現(xiàn)在介紹一下其具體內(nèi)容。

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

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

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

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

這里和前面lasso的方法有點(diǎn)不一樣,lasso是直接把因子Xi前面的系數(shù)變?yōu)?,也就是直接把這個因子剔除的方式來給因子Xi降維, 而PCA是將很多的因子Xi進(jìn)行線性組合,變成若干幾個Zi來代表盡量多的信息。(這里一定要注意,PCA并不是像lasso一樣將Xi的系數(shù)變?yōu)?的方式來降維,而是通過找到能最大代表數(shù)據(jù)信息的Zi,每一個Zi都含有所有Xi的信息,只不過他們前面的系數(shù)不一樣) 。

因?yàn)槿绻?dāng)因子非常多(有些fund的strategy pool里有上百萬個因子)的時候,我們可以通過PCA將這些因子構(gòu)造成若干個主因子來進(jìn)行操作。

并且在統(tǒng)計界有一個恐怖的傳說,叫做”curse of dimensionality”。

因?yàn)橐蜃覺i是我們?nèi)藶橹饔^判斷可能會跟Y有關(guān)系才加上去的,那么有些人會想,因子的數(shù)目不就越多越好?畢竟最怕的就是在預(yù)測Y的時候沒有將真正有貢獻(xiàn)的因子考慮進(jìn)來,前提錯了的話后面不管怎么弄fancy的model都是錯的,所以那如果把能想到的因子全部都加進(jìn)去這樣不就萬事大吉了么,一個都不能少!

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

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

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

這樣,通過PCA的降維方式,我們就更清楚數(shù)據(jù)信息背后的結(jié)構(gòu)和主要的貢獻(xiàn)來源,使得后續(xù)supervised方法的fitting更加有效率。

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

因?yàn)橥瑯訉τ诟呔S(Xi非常多)的情況,還有一個問題就是當(dāng)因子數(shù)目多了之后,因子之間的相關(guān)性問題會變得非常嚴(yán)重(我們可以想象因子足夠多的時候,他們之間的信息很難會是完全exclusive的,特別是像金融市場,不同因子之間基本上都會有一定的相關(guān)性)。

一個解決辦法就是將這些相關(guān)聯(lián)的因子結(jié)合起來變成一個因子,也就是這里PCA可以做的事情。并且PCA可以保證這些得到的大因子之間是線性不相關(guān)的,也就是在方向上是垂直的。PCA通過正交變換將一組可能存在相關(guān)性的變量(若干Xi)轉(zhuǎn)換為一組線性不相關(guān)的變量(變成Xi的線性組合Zi),除去對結(jié)果影響不大的特征,轉(zhuǎn)換后的這組變量叫主成分。

好了,接下來就是數(shù)學(xué)上的解釋了。為了避免公式的推導(dǎo),直接用上圖吧。

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

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

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

怎么解釋呢?

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

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

為啥要最遠(yuǎn)呢?因?yàn)樽钸h(yuǎn)可以表示有更豐富的信息落在這一條線上面,這些點(diǎn)的區(qū)分度也越大。舉個例子來說——

“舉個例子,比如現(xiàn)在有10個人的數(shù)據(jù),每條數(shù)據(jù)有兩個維:出生地,性別,10個人的出生地各不相同,5男5女。從感覺上看,哪一維所包含的信息量大一些?是不是出生地呢?如果我一說出生地,是不是馬上就可以找到那個人了呢?因此出生地各不相同嘛,而性別呢?因此性別只有2種,因此會有大量重復(fù)的值,也就是很多人的值都是一樣的,這個屬性對于人的刻畫效果不好,比如你找一個性別是男的人,可以找到5個,這5個人從性別這一維上看,是完全一樣的,無法區(qū)分。

從PCA的角度來看,出生地這個維的方差就要比性別這個維的方差要大,而方差大就說明包含的信息比較豐富,不單一,這樣的特征是我們希望留下的,因此就這個例子來看,PCA更傾向于保留出生地這個特征。

那么是不是簡單的就把需要保留的特征留下來,不需要保留的特征去掉就行了呢?比如說剛才那個人的數(shù)據(jù)的例子,是不是直接把性別這個特征去掉就完了?遠(yuǎn)遠(yuǎn)不止那么簡單,PCA是把原特征映射到一個低維空間上,使得特征在這個低維空間中的方差最大,如果是直接去掉特征維的話,那么剩下的特征不一定是低維空間中方差最大的。

這里要注意一個問題,繼續(xù)剛才那個人的數(shù)據(jù)的例子,有2維,性別和出生地,如果用PCA把它降成1維,那么這一維是什么?這是沒有定義的,也就是說,這一維既不是性別,也不是出生地,它已經(jīng)沒有定義了,我們只知道它是1維選擇出來的特征而已,但這并不影響我們對特征的使用。”

說了這么多,現(xiàn)在我們大概知道PCA是在干一件什么事情了,就是通過線性組合高維空間中Xi的方式構(gòu)造出若干個Zi來對數(shù)據(jù)進(jìn)行降維,并且找到盡量能代表所有點(diǎn)信息的幾個主方向(也就是幾個構(gòu)造的大因子,一般第一個大因子包含的信息最多,然后信息度濃度次遞減)。

好了,接下來說PCA的具體應(yīng)用。

這里PCA是應(yīng)用在期權(quán)的implied volatility surface上面。

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

什么?又一臉懵逼?

看來這里需要稍微介紹一下期權(quán)才行呢…

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

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

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

volatility是一個什么東西呢?volatility是波動率,也就是期權(quán)underlying的標(biāo)的價格的標(biāo)準(zhǔn)差。你如果問我標(biāo)準(zhǔn)差怎么算,我只能說去Google一下,計算講的太細(xì)節(jié)估計都看睡著了…

所以假如我們知道volatility呢,我們就可以知道這個Call的理論價格,也就可以衡量當(dāng)市場上Call的實(shí)際價格是高還是低,高了呢我們就可以賣,低了呢我們就可以買。

可惜天上不會掉餡餅,因?yàn)槲覀儾恢纕olatility…

接下來還得知道BS公式的假設(shè)前提:

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

這明顯是不符合實(shí)際情況的,因?yàn)槭袌鰰τ诓煌膕trike price和maturity有不同的預(yù)期和偏好,導(dǎo)致市場對于未來波動率的預(yù)期也會不一樣。

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

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

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

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

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

假設(shè)市場的每個參與者都使用BS模型定價,由于模型所需的其他輸入值比如執(zhí)行價格、所剩期限、標(biāo)的價格還有無風(fēng)險利率都是相對固定的,人跟人對于期權(quán)價格的看法就是取決于他們對于未來這個資產(chǎn)的波動率了。

假設(shè)有一個人巴菲特附體如有神助,對于未來資產(chǎn)波動率的預(yù)測百發(fā)百中如入無人之境,那么他(她)就可以根據(jù)自己預(yù)測的期權(quán)的價格跟實(shí)際的期權(quán)價格作對比來低買高賣,賺的就是別人對波動率的預(yù)測都很弱雞。

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

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

我們可以反其道而行之,利用將已經(jīng)是事實(shí)的市場的期權(quán)價格代入BS公式中算出來大家對于未來波動率的預(yù)期,也就是隱含波動率。因?yàn)槠跈?quán)價格是市場上供求關(guān)系平衡下的產(chǎn)物,是買賣雙方博弈后的結(jié)果,所以隱含波動率反映的是未來市場對標(biāo)的產(chǎn)品波動率的看法。

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

我們除了隱含波動率,還有一個波動率叫做歷史波動率。這個東西其實(shí)算出來也挺簡單的,只要我們有underlying標(biāo)的的價格變化歷史數(shù)據(jù),就可以用統(tǒng)計的公式算出來標(biāo)準(zhǔn)差,也就是波動率。而且我們發(fā)現(xiàn)一件什么事情呢,那就是歷史的年化波動率是處于一個區(qū)間,會有回歸均值的一個特性(做swing交易的同學(xué)應(yīng)該最熟悉了),并且離開越遠(yuǎn)回歸的速度就越快。

比如說有一個股票,歷史波動率都是在10%到30%之間,這樣我們就可以知道從現(xiàn)在期權(quán)市場價格算出來的隱含波動率在歷史上是處于高還是低的位置,同樣可以做到低隱含波動率的時候買期權(quán)高隱含波動率的時候賣期權(quán)。

但這里有一個問題就是歷史波動率的區(qū)間,不代表就真的不會飛出區(qū)間去,當(dāng)發(fā)生重大事件或者傳說中的黑天鵝的時候隱含波動率也會變很極端,比如Black Monday的時候飛到了150%,08年金融危機(jī)的時候也飛到了80%。

當(dāng)然,做均值回歸有點(diǎn)投機(jī)的感覺。有的同學(xué)可能覺得太low,我可是做價值投資的,只是想利用期權(quán)對沖一下風(fēng)險。

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

除此之外,對于直接交易u(yù)nderlying標(biāo)的的交易員,我們也可以利用期權(quán)來幫助自己對標(biāo)的的未來走勢做出一定的判斷。比如我們可以根據(jù)市場上對于同一個標(biāo)的的所有不同strike price和maturity的期權(quán)價格,算出來每一個strike price和maturity對應(yīng)的隱含波動率,其實(shí)也就是市場對于這個標(biāo)的未來波動預(yù)期。

然后,將這個算出來的隱含波動率代入比如說隱含波動率二叉樹模型,再算出來市場對于標(biāo)的未來走勢的預(yù)期,因?yàn)槠跈?quán)的價格本身就是已經(jīng)是集中了市場上所有的有效信息,所以隱含波動率其實(shí)也包括了所有的博弈信息,利用其推導(dǎo)出來的未來走勢就可以幫助我們對直接trade標(biāo)的有一個大概的方向和市場預(yù)判。

好了,對于基本的期權(quán)概念應(yīng)該有一個大概的sense了,接下來我們就來詳細(xì)解釋一下之前那張volatility surface的圖。

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

期權(quán)交易員對volatility surface都會非常熟悉,因?yàn)檫@一定程度上就是自己根據(jù)市場情況做trade和進(jìn)行風(fēng)險對沖的基礎(chǔ)。

volatility surface呢,是一個三維圖,Z軸是隱含波動率,X和Y軸分別是moneyness和term(也許不同的軟件會有不同的名字,這里借鑒Bloomberg的表示)。

moneyness的意思就是期權(quán)strike price和underlying標(biāo)的的價格的ratio,這里以call為例,分為in-the-money(strike price小于underlying標(biāo)的的價格,ratio小于100%的區(qū)間),at-the-money(strike price等于underlying標(biāo)的的價格,也就是圖中的ratio等于100%的位置)還有out-of-the-money(strike price大于underlying標(biāo)的的價格,ratio大于100%的區(qū)間)這三種狀態(tài)。如果是put的話strike price和underlying標(biāo)的價格的關(guān)系則是反過來。term的意思呢,就是不同的到期日。

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

既然volatility surface這么重要,那么如果我們可以預(yù)測未來的volatility surface是不是就相當(dāng)于我們可以預(yù)測implied volatility進(jìn)行交易了呢?

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

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

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

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

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

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

這里我們有的是implied volatility,moneyness還有term的信息。但我們并不能將他們?nèi)孔鳛閄i,因?yàn)殡m然volatility是連續(xù)的數(shù)值,但term和moneyness的信息是固定的點(diǎn)。

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

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

我們這里可以將所有的點(diǎn)都拉成一條線作為Xi,然后每天都有一列數(shù)據(jù)Xi。這樣處理我們就將整個volatility surface變?yōu)榱艘涣凶兞縓i,因?yàn)槊刻於加幸粋€volatility surface,所以每天可以作為一個observation。

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

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

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

所以這里我們就找到了前三個大因子的貢獻(xiàn)率分別是88%,4.8%和3.66%。

下圖就是這三個主成分大因子在歷史上不同時間的解釋能力??梢钥吹降谝粋€主成分的解釋能力保持恒定,并且?guī)缀醵荚?0%以上。

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

比如依據(jù)第一個主成分來判斷delta hedge ratio(這里delta是期權(quán)價格對于underlying標(biāo)的價格的一階導(dǎo),可以當(dāng)做期權(quán)的價格對underlying價格變化的靈敏程度),也就是hedge delta使得整個portfolio獨(dú)立于underlying標(biāo)的價格變化(但實(shí)際上delta hedge只能解決一階的hedge,二階gamma的hedge因?yàn)槭欠蔷€性所以只能依靠另外的期權(quán)來進(jìn)行hedge)。還可以把前幾個主成分單獨(dú)拿出來,對剩下的residual做均值0的回歸。

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

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

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

(2) 同時也是由于日本低息的環(huán)境,所以國際環(huán)境好的時候很多人是借入日元然后買入其他高息的貨幣進(jìn)行carry trader套利(就像美元QE的時候美國利息低大家會借入美元買入人民幣投資中國市場),但是一旦國際環(huán)境惡化,買入的貨幣國家會實(shí)行降息然后貶值,投資的風(fēng)險喜好也變?yōu)楸J兀@樣套利就沒有辦法繼續(xù)維持,大家就會賣出買入的其他國家貨幣然后買回日元還掉以前介入日元的債務(wù),這樣就進(jìn)一步推高日元和日本的匯率,同時也壓低其他國家的貨幣。

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

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

(5) 大家只要一出事就做多日元已經(jīng)是習(xí)慣了。。。所以形成了一個自我實(shí)現(xiàn)的循環(huán)。

其實(shí)上述對于固定maturity的情況下volatility隨著moneyness變化的現(xiàn)象就是有名的“volatility smile(skew)”。具體這里不詳細(xì)說,因?yàn)槟P图僭O(shè)的是underlying標(biāo)的的收益率并符合標(biāo)準(zhǔn)的正態(tài)分布,但實(shí)際上市場上由于不同的風(fēng)險偏好產(chǎn)生了期權(quán)的尖峰肥尾現(xiàn)象,肥尾的方向也就代表了implied volatility的smile(skew)方向。產(chǎn)生的原因也有很多paper探討,暫時沒有一個固定的說法。也許后面有時間的話我會寫一寫期權(quán)的notes,不過看老板push我科研的程度了…

對于期權(quán)有一點(diǎn)需要注意或者可以利用,因?yàn)闈q和跌并不是對稱的,漲的時候總是緩慢的波動率低的,跌的時候總是摧枯拉朽波動率高的,期權(quán)價格呢又跟波動率有關(guān),所以呢我們可以利用這一點(diǎn)。譬如說買put,一方面如果資產(chǎn)真的下跌,put本身由于moneyness和intrinsic value會增值;另一方面資產(chǎn)下跌的時候會引起恐慌增加波動率,也會使得期權(quán)增值,所以其實(shí)兩方面的動力會一起做貢獻(xiàn)讓put的價格飛起來很快。

還記得前段時間的50 cent先生么?大家一開始都嘲笑這哥們腦子有病每天給市場送錢,現(xiàn)在才發(fā)現(xiàn)這哥們真牛逼。其實(shí)吧,他就是利用了期權(quán)波動率不對稱這一點(diǎn),瘋狂在波動率低的時候掃貨買便宜的put,一旦市場有點(diǎn)風(fēng)吹草動導(dǎo)致哪怕一天的恐慌,向下的利潤是非常豐厚的,遠(yuǎn)遠(yuǎn)超過前期裸買put的成本投入。

當(dāng)然,別人是建立在對當(dāng)時整個市場情緒非常敏感的正確判斷前提下才敢這么單邊做期權(quán),還冒著成為各國基金經(jīng)理永遠(yuǎn)嘲笑的二逼的風(fēng)險,這種勇氣我還是很佩服的,實(shí)至名歸。對于不了解資本市場的同學(xué)呢,不要看了之后腦門一熱以為股神附體就all in了,成功了是big short不成功就變big idiot,老婆本都虧光了不要怪我,我代表華夏三千萬單身漢同志歡迎你的加入~

PCA除了在期權(quán)上面的應(yīng)用之外,最常見的做法是用來分解portfolio的risk,也就是找到不同主成分大因子的beta(就是市場系數(shù)那個beta…)進(jìn)行分配風(fēng)險。大概的結(jié)論如下:

具體細(xì)節(jié)參見JPM在2013年的一個報告:

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

好了,主要的統(tǒng)計方法和應(yīng)用就講完了。能讀到這兒的簡直真愛…么么噠!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多