戴政煬 李 程
(湖南科技大學,湖南湘潭 411100)
大數據的發展推動了我國資本市場的不斷進步,把數據分析這種繁雜的任務交給計算機編程語言,大大提高了工作效率。可以看到各類計算機編程語言對于數據的讀取、數據的可視化呈現以及基于歷史數據對波動變化的預期無疑讓分析員的工作變得更加高效。股票市場的數據繁瑣復雜且數量極其龐大,怎么把這些龐大的數據量通過圖形等形式呈現出來,又如何對這些歷史數據進行分析從而預測未來的可能趨勢成為了當下金融科技的熱點。本文的撰寫基于Python語言,運用其獲取了滬深兩市的部分個股近三年的數據并進行正態分布檢驗、預期波動率、預期的投資組合收益和方差、聯合走勢的分析,并且對疫情前后股市的偏度與峰度變化進行了測度及可視化呈現,同時從新的視角——可視化呈現對股市變化進行了描述,通過可視化的方式簡單直接地將結果呈現了出來。
個股數據的獲取是進行金融數據分析及可視化的第一步,python獲取歷史數據的方式多種多樣,來源也十分廣泛,如:東方財富網、Yahoo、新浪財經等,本文的數據來源于雅虎財經網站,在滬深兩市中挑選了五只各行業中具有代表性的股票:中國電影、中順潔柔、東阿阿膠、贛鋒鋰業、貴州茅臺,除了五只股票外還加上了上證指數和深證成指做整體比照。

表2 -1 個股部分數據
表中數據很好的展示出了每個交易日的數據變化,為分析員提供了便利的幫助。在本節中我們成功獲取了股票數據,在接下來的幾個章節我們將會對獲取的數據進行可視化呈現以及正態分布檢驗,同時進行收益預測分析。
在上一章節獲取了數據后便需要對數據可視化呈現,通過matplotlib包的圖像處理功能對數據進行圖像呈現, matplotlib是python中的一個包,主要用于繪制2D圖形。在數據分析領域它有很大的地位,而且具有豐富的擴展,能實現更強大的功能,在現階段一般的股票數據走勢都會運用到matplotlib這個包進行可視化呈現。
在運用繪圖包進行數據處理后我們得到了從2017年初開始到現在的股票趨勢圖,這種趨勢圖把股票從繁瑣的數據變成了清晰明了的圖像形式呈現在了分析師的眼中,且該包還可以根據不同股票趨勢線進行著色,分析師可以十分快捷方便的根據自己的想法選取若干只股票使用matplotlib包進行數據可視化呈現,從圖像上直觀地對這些股票與大盤指數、同行業其他股票橫向進行對比,進而挑選出表現良好的股票并作深入研究。這種圖像的處理雖然較為基礎,但很大程度上減少了工作人員的工作量。
圖3 -1中左上角股票代碼從上到下依次為:中順潔柔、中國電影、東阿阿膠、贛鋒鋰業、貴州茅臺、上證指數、深證成指。這些趨勢在圖中清晰的呈現出來了,可以看到在選取的五只個股中,有三只個股的收益趨勢明顯好于大盤,其中貴州茅臺和贛鋒鋰業兩只股票的表現十分搶眼,值得注意的是從2020年下半年到2021年年初,這兩只股票一直處于上漲階段且漲勢猛烈,而反觀中國電影和東阿阿膠這兩只股票,他們的表現甚至沒能超過大盤,在過去三年時間內處于不溫不火的狀態。

圖3-1 五只個股與指數的走勢圖
接下來我們需要通過借助python中的pandas包計算對數收益率,并且做正態分布檢驗,我們先假設這些股票嚴格服從正態分布的,那么接下來我們將要對股票的偏度是否正態和峰度是否正態進行結合來檢驗正態性。對于正態分布的檢驗在python中有多種方式:1.通過對數收益率的柱狀圖進行觀測。研究股市收益分布不僅有利于我們認識資本市場的內在運行規律,從而采取相應的有效的監管手段,還能通過此分析幫助市場參與者進行資產定價與投資組合,從而更好的度量風險、分散風險;2.運用QQ圖(Quantile-quantile plot,分位數-分位數圖),也稱正態概率圖(normal probability plot),是常用的統計分析用圖。如果這組實數服從正態分布,正態概率圖就是一條直線。
通過對對數收益率的柱狀圖觀測,發現其分 布顯示五只股票均不符合標準正態分布,因為它們存在不同程度的右偏或是左偏現象,從表3-1中獲得的數據我們可以進一步證實,中順潔柔和贛鋒鋰業都呈現右偏現象,而其余三只股票和上證指數深證成指都有左偏的現象,值得注意的是在數據選取時間段中上證指數和深證成指的偏度都達到了-0.6以上,這提醒了我們需要注意股票市場存在的尾部風險可能,為了探究這段偏度在新冠疫情發生前后的變化,利用python爬取了疫情發生前后的五只股票數據以及上證指數和深證成指,并同上文所述進一步做了正態分布檢驗,測算個股與指數的偏度。

表3 -1 2017年至今個股與指數的樣本統計量

表3 -2 2019年12月—2021年6月,疫情發生后的個股與指數樣本統計量

表3 -3 2018年6月—2019年12月,疫情發生前的個股與指數樣本統計量
做出的結果中正態分布檢驗結果在疫情發生前后并未發生改變,但從表3-2和表3-3的對比可以看出疫情前后的個股偏度發生變化①表3-2,3-3中數據為python計算生成,偏度峰度等數據也可從wind數據庫獲取,其中指數(大盤)的偏度更為明顯,疫情發生前上證指數和深證成指的偏度分別為-0.25994和-0.32811,而疫情發生后上證指數和深證成指的偏度分別為-0.88852和-0.97524,顯然疫情發生后股票市場的偏度遠遠超過了疫情發生前,其偏度超出了疫情發生前的兩倍左右,這也直接反映了新冠疫情發生加劇了市場的尾部風險,尤其是左尾風險。
這與很多國內外學者對于新冠肺炎影響金融市場的研究結果較為一致,如陳林和曲曉輝(2020)認為不同行業和不同類型股票市場受到的影響也存在差異,新冠肺炎疫情對公司的股價存在負面影響,向前容等(2020)認為在新冠疫情爆發前至爆發期,新冠疫情在短期內對中國股市的波動造成了顯著的影響。
接下來我們從QQ-plot的角度進一步檢驗正態分布情況,從圖3-1可以看出,雖然統計數據大部分落在或靠近這條紅色的參照線,但仍然有小部分的數據偏離這條參照線,說明這五只股票和指數的數據擬合并不好。進一步通過python進行p值計算得到表3-4數據,從p值上可以看出選取的五只股票與上證指數和深證成指均不嚴格服從正態分布。

圖3 -2 個股與指數的QQ圖

表3 -4 正態分布檢驗值
在這個章節里我們根據開始的數據進行投資組合收益分析并對投資組合從資本資產定價的角度做出相關的優化,得出最優的投資組合權重。
在上一章節我們對五只股票和上證指數深證成指做了正態分布檢驗,在這一章我們將進行投資收益分析與投資組合優化,繼續使用上面得到的對數收益率數據得到年化收益率(見表4-1)。進一步我們可以得到協方差矩陣,協方差矩陣是投資組合選擇過程的核心部分,根據協方差矩陣我們依靠python可以計算出一個投資權重:中順潔柔、中國電影、東阿阿膠、贛鋒鋰業、貴州茅臺分別對應0.01841974、0.02340192、0.19381737、0.07023924、0.36970651。但該權重僅僅是作為一個參考, python在這里給出的這組投資組合僅僅是基于歷史數據的基礎上遵循了最小方差的原則,因為在方差為0.05在該投資組合下,投資者能獲得年化20%的收益。這種基于歷史數據的投資組合收益分析給出了一種最基礎的投資組合方案,能為分析師從不同角度提供數據上的支撐幫助。

表4 -1 年化收益率

(—表4-1續)
當然,python的投資組合分析并不是單一的組合,其基于蒙特卡洛模擬判斷其收益與形態,并對投資比重進行隨機組合得到一系列的投資組合收益和波動率(如圖4-1,其中縱坐標為期望收益,橫坐標為波動率);蒙特卡洛模擬現階段在金融領域的運用主要是分析投資組合的收益與波動,在圖4-1中每一個點都代表了不同的投資組合權重下所得到的期望收益與波動率,每一個投資組合都是相對獨立的。越下方的點說明其收益越小波動越大。蒙特卡洛模擬的投資組合形成了一個可行集,在這個可行集里存在著各類投資組合,python會對投資組合根據不同的角度進行優化。

圖4 -1 預期投資組合收益與方差
1.最大夏普指數的情況下最優投資比例為:中順潔柔13.9%;贛鋒鋰業13.9%以及72.2%投資于貴州茅臺,而剩余的兩只股票權重為0。在這種最大夏普指數情況下按此比重投資,在28.6%的波動率情況下能夠獲得42.2%的年收益率,此時的最優夏普指數為1.476,對于投資者來說是一個較為優秀的組合。
2.最小波動率的情況下最優投資比例為:中順潔柔1.1%;東阿阿膠0.1%;另外三只股票權重為0。此時的波動率為17.3%,最優夏普指數為0.196??梢钥闯鲞@種情況下python給出的信息側面表示了為避免投資股票市場帶來的波動,個人投資者可以將極少量資金投資股市,而將剩余的極大部分資金用于投資其他波動性小的金融產品,在這里python給出的結果是98.7%的資金用于投資標的資產是上證指數的基金。我們通過這兩種情況的比較發現雖然最小波動的情況下波動率降低了11.3%,但是收益率也同樣降低了。
由于每次選取的個股不同,這兩種情況下的個股投資比重也會不同,最后帶來的兩種方式估算出的收益、波動率和夏普比率都會是不同的。因此本文的分析是基于目前所選取的股票進行的,對兩種方式呈現的數據進行比較分析不難得出一個結論:雖然股票市場上很多投資者都屬風險厭惡型,但是最大夏普指數的投資組合收益明顯高于最小波動率的投資組合,盡管最小波動率的投資組合極大的減少了投資波動(即不確定性),但是其獲得的收益甚至無法超過一家銀行的大額存單,作為投資者,顯然不會選擇第二種投資組合,因為它能從銀行獲取更高的無風險收益。第一種投資組合雖然波動率較高,但其風險補償收益達到了42.2%,所以說最大夏普指數的投資組合是最優的。
運用python還能做出資本市場線和有效邊界,python在很大程度上方便了馬科維茨投資組合理論中預期收益率、投資組合方差的計算,并能快速找出最優投資組合,對于馬科維茨投資組合理論在中國金融市場中的應用有重要價值。
Python進行數據可視化、數據分析是人工智能與金融的又一次碰撞,是金融科技的進一步融合,三十年前金融是金融,科技歸科技,三十年后科技為金融賦能??萍冀o金融帶來的不僅僅是便利,更為金融市場的發展提供了新的思路和方向,同時也為從業者帶來了更大的挑戰和機遇。本文的撰寫借助這些方法對數據做了一系列的模擬,最終達到了可視化的目的。近年來,隨著券商量化交易系統的出現,市場對于數據分析的需求更加突出,金融數據分析作為量化交易的一個核心環節,一直以來都備受關注。除此之外,對金融數據的分析有助于提取出海量信息背后無法直觀表現的規律,這對于個人、企業、國家都至關重要。通過本文四個章節的分析我們能得出python對投資組合分析的促進,在整個數據的可視化過程中python的內嵌包都發揮了極大的作用。雖然python做出的投資組合權重不可能完全按部就班的用于投資中,但其能給出的參考價值是毋庸置疑的,如果在代碼中加入投資者的風險偏好,python還能做出不同的投資組合權重,這些都值得進行深入的研究。第三章我們分析了疫情發生前后股票市場的尾部風險變化并作出了可視化圖形,非常直觀的把疫情前后的個股和上證指數與深證成指的風險變化呈現出來。
利用計算機程序對金融數據進行分析有利有弊,使用者需要根據自身需要做出權衡,程序雖然嚴格遵循數據、算法等進行數據的處理與分析,但始終無法站在投資者的角度考慮,與投資行為多少會存在一些偏差,所以應當充分考慮多種因素對投資組合的影響,最后再給出嚴謹的投資建議。同時python對于偏度的測算可以當作是一個較好的風險測度工具,能夠在重大衛生事件或者國際事件發生前后對偏度和峰度進行分析,風險管理部門可以針對性的進行事后風險管理,同時監管機構也可以針對個股按半年度、年度的方式測算峰度與偏度的變化,從而提前做出風險警示與風險控制。