1. 程式人生 > >JQData | 基於python的股票收益的偏度研究

JQData | 基於python的股票收益的偏度研究

轉自 https://www.joinquant.com/post/15553?tag=algorithm

 

資產定價模型CAPM中假設投資標的收益率是正態分佈,即大部分關注其均值---方差。但市場中的標的收益率不一定符合,也會出現尖峰厚尾、不對稱性等現象。非對稱的一個重要研究即是偏度(偏態)。表徵概率分佈密度曲線相對於平均值不對稱程度的特徵數。直觀看來就是密度函式曲線尾部的相對長度。

圖片1.png
上圖即是非對稱的,一即是左偏,眾數>中位數>平均數,資料位於均值左邊的比位於右邊的少,直觀表現為左邊的尾部相對於與右邊的尾部要長。 二即是右偏,算術平均數>中位數>眾數,資料位於均值右邊的比位於左邊的少,直觀表現為右邊的尾部相對於與左邊。
偏度產生的原因在學界研究較少,一種說法是通過槓桿效應和波動反饋效應解釋偏度的產生。
從傳統的CAPM到Fama和French的三因子模型、各種市場異象、流動性溢價現象、動量效應等,關於影響收益的特徵因子的研究一直以來都是金融領域的重點內容。資產收益的波動是特徵因子之一,因此關於波動與收益之間的關係的研究也不少。較早進行研究的有Black(1976)、Christie(1982),結果發現股票的收益與波動之間呈負相關。Engle和Ng(1993)研究則發現資產收益波動呈現不對稱性,即正的收益一般伴隨著條件方差向下的減少,而負的收益則伴隨著條件方差向上的增大。這一現象在市場大跌時比較明顯,因為市場波動會因股票價格大幅下跌而加劇。波動不對稱性說明利空訊息引起的波動大於利好訊息引起的波動。
對波動不對稱性的解釋有“槓桿效應”和“波動反饋效應”。槓桿效應是指公司價值下降引起的股票價格下跌會提高公司的財務槓桿,公司股票的投資風險增大從而增加股票價格的波動性。而波動反饋效應則認為,如果在定價過程中考慮波動因素,那麼對股票價格波動性預期的增加會提高投資者相應的收益補償要求,這會導致股票價格的下降。而這兩種效應只能解釋收益分佈的左偏現象,即“波動不對稱性”只反應了收益分佈的左偏現象,對於市場上廣泛存在的收益分佈的右偏現象則無法解釋。
個股偏度能夠解釋股票收益的橫截面變動,與股票收益之間呈顯著的負向關係,投資者往往偏好收益分佈右偏的證券。有一定概率獲得較大的收益,即以小博大。

偏度的定義:3階中心距與標註差的比值
圖片2.png

在一般情形下,當統計資料為右偏分佈時,S_k > 0,且S_k值越大,右偏程度越高;當統計資料為左偏分佈時,S_k < 0,且S_k值越小,左偏程度越高。當統計資料為對稱分佈時,顯然有S_k = 0。

偏度在A股市場中的分佈:
圖片3.png
A股57.29%左偏,出現極端偏右值比偏左值要高5.18%。

在行業中分佈:
圖片4.png

原始碼:

import numpy as np
import pandas as pd

#if __name__=='__main__':
dfall = get_all_securities(types=[], date='2018-12-04')
stocks = list(dfall.index)
skewcount2 = []
for stock in stocks:
    if stock[0] != '6':
        df = get_price(stock,start_date=dfall['start_date'][stock],end_date='2018-12-04',frequency = 'daily',fields = ['close'])
        df = df.where(df.notnull(), df['close'][1])
        price = list(df['close'])
        report2 = []
        for i in range(len(price)-1):
            report2.append(price[i 1]-price[i])
        dfreport2 = pd.DataFrame(report2)
        skewcount2.append(dfreport2.skew())

left2 = sum([int(xi>0) for xi in skewcount2])
right2 = sum([int(xi<0) for xi in skewcount2])
rate2 = left2/(left2 right2)