亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Python實現(xiàn)股票收益率分析

 更新時間:2022年04月01日 16:06:58   作者:數(shù)據(jù)分析與統(tǒng)計學之美  
這篇文章主要為大家詳細介紹如何通過Python分析股票的收益率,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

前言

金融行業(yè)的Python學習,不同于IT系統(tǒng)開發(fā),我們并不需要達到程序員的水平。然而,學會Python可以讓你實現(xiàn)一個人寫完一個交易系統(tǒng)的需求,真正的一個人當成一支軍隊。

在量化交易里,Python是工具,金融是Sense,它可以讓你的想法快速實現(xiàn)并得到驗證。而在金融領域運用Python就必然會涉及資本市場最重要的部分——股票。“股市如此多嬌,引無數(shù)投資者競折腰”,用Python來分析股票投資組合收益率和波動率,是每個金融從業(yè)者都該掌握的本領。

我們?nèi)鄙俚?,是在具體的金融場景下應用Python的經(jīng)驗。今天就讓我們以金融股為分析對象,來一次Python金融實戰(zhàn),希望對你有所啟發(fā)!

案例詳情

A公司是總部位于北京的一家公募基金管理公司,在公司對外發(fā)行的全部基金產(chǎn)品中,有一只名為“新金融股票型基金”,該基金在投資策略上是精選具有核心競爭優(yōu)勢、持續(xù)增長潛力且估值水平相對合理的A股市場金融股。

截止到2019年9月末,該基金重倉的股票包括浦發(fā)銀行、招商銀行、中信證券、海通證券、中國平安以及中國太保這6只股票,表7-2就列示了2014年1月至2019年9月末這6只股票的部分日收盤價,并且全部數(shù)據(jù)均存放于Excel文件。

2014年1月至2019年9月期間A股市場6只金融機構股票的部分日收盤價。

數(shù)據(jù)來源:上海證券交易所。(單位:元/股)

假定你是A公司的一位基金經(jīng)理助理,日常的工作就是協(xié)助“新金融股票型基金”的基金經(jīng)理跟蹤并分析已投資的股票。根據(jù)基金經(jīng)理的要求,你需要運用Python完成3項編程任務。

編程任務

【任務 1】導入存放表7-2中這些股票在2014年1月至2019年9月期間日收盤價的Excel文件,計算每只股票的日收益率、年化平均收益率、年化收益波動率,計算日收益率時需要用自然對數(shù)。

【任務 2】針對由這6只股票構建的投資組合,隨機生成包含每只股票配置權重的一個數(shù)組(權重合計等于1),并且計算以該權重配置的投資組合年化平均收益率、年化收益波動率。

【任務 3】隨機生成包含2000組不同的股票配置權重的數(shù)組,以此計算出相對應的2 000個不同的投資組合年化平均收益率、年化收益波動率,并且以散點圖的方式繪制在橫坐標為年化收益波動率、縱坐標為年化平均收益率的坐標軸中。

編程提示

針對任務2,假定投資組合由N只股票組成,wi代表了投資組合中第i只股票所占的權重(股票的市值占投資組合整體市值的比例),E(Ri)代表了投資組合中第i只股票的預期收益率(用該股票過去收益率的均值代替),可以得到投資組合預期收益率E(RP)的表達式如下:

同時,假設σi表示第i只股票的收益波動率,Cov(Ri,Rj)表示第i只股票收益率與第只股票收益率之間的協(xié)方差,投資組合收益波動率的σp表達式如下:

參考代碼

任務1的代碼

In [1]:  import numpy as np
    ...: import pandas as pd
    ...: import matplotlib.pyplot as plt
    ...: from pylab import mpl 
    ...: mpl.rcParams['font.sans-serif'] = ['KaiTi']
    ...: mpl.rcParams['axes.unicode_minus'] = False

In [2]: stock_price=pd.read_excel('C:/Desktop/金融股(2014年—2019年9月).xlsx', sheet_name= "Sheet1",header=0,index_col=0)                                     #導入外部數(shù)據(jù)
    ...: stock_price=stock_price.dropna()                           #刪除缺失值的行

In [3]: (stock_price/stock_price.iloc[0]).plot(figsize=(9,6),grid=True)   #將股價按照2014年首個交易日進行歸1處理并且可視化
Out[3]:
In [4]: stock_return=np.log(stock_price/stock_price.shift(1))    #計算股票的日收益率
    ...: stock_return=stock_return.dropna()                          #刪除缺失值所在的行

In [5]: return_mean=stock_return.mean()*252                        #計算股票的平均年化收益率
    ...: print('2014年至2019年9月的年化平均收益率\n',return_mean.round(6))  #保留小數(shù)點后6位
2014年至2019年9月的年化平均收益率
浦發(fā)銀行    0.042824
招商銀行    0.211223
海通證券    0.043759
華泰證券    0.138177
中國平安    0.134000
中國太保    0.117563
dtype: float64

In [6]: return_volatility=stock_return.std()*np.sqrt(252)          #計算股票的年化收益波動率
    ...: print('2014年至2019年9月的年化收益波動率\n',return_volatility.round(6))
2014年至2019年9月的年化收益波動率
浦發(fā)銀行    0.282428
招商銀行    0.296238
海通證券    0.396386
華泰證券    0.449228
中國平安    0.465064
中國太保    0.359268
dtype: float64

從下圖不難看出,由于6只股票均是金融類股票,因此在整體的走勢方面存在一定的趨同性。但是每只股票的平均年化收益率則存在較大差異,其中,招商銀行的平均收益率最高,浦發(fā)銀行的收益率則最低。同時,從平均年化波動率來看,銀行股最低,中國平安則最高。

2014年1月至2019年9月期間6只金融股股價走勢圖(股價在2014年首個交易日做歸1處理)

任務2的代碼

In [7]: x=np.random.random(len(return_mean.index))  #從均勻分布中隨機抽取6個從0到1的隨機數(shù)

In [8]: w=x/np.sum(x)     #生成隨機權重的一個數(shù)組
    ...: w                #查看生成的隨機權重數(shù)組
Out[8]: 
array([0.24372614, 0.03925093, 0.20889395, 0.20843467, 0.23808734, 0.06160696])

需要注意的是,由于是通過隨機生成的數(shù)組,因此每一次得到的隨機權重數(shù)組是不相同的,但是權重的合計數(shù)是等于1。

In [9] : return_cov=stock_return.cov()*252               #計算每只股票收益率之間的協(xié)方差
     ...: return_cov
Out[9] : 
           浦發(fā)銀行    招商銀行    海通證券   華泰證券    中國平安   中國太保
浦發(fā)銀行  0.079765  0.054347  0.055693  0.065324  0.062048  0.056216
招商銀行  0.054347  0.087757  0.058148  0.066847  0.078228  0.072074
海通證券  0.055693  0.058148  0.157122  0.147365  0.092994  0.086569
華泰證券  0.065324  0.066847  0.147365  0.201806  0.102020  0.096885
中國平安  0.062048  0.078228  0.092994  0.102020  0.216285  0.110579
中國太保  0.056216  0.072074  0.086569  0.096885  0.110579  0.129074

In [10]: return_corr=stock_return.corr()                 #計算每只股票收益率之間的相關系數(shù)
      ...: return_corr
Out[10]: 
           浦發(fā)銀行    招商銀行    海通證券   華泰證券   中國平安    中國太保
浦發(fā)銀行  1.000000  0.649575  0.497483  0.514872  0.472398  0.554035
招商銀行  0.649575  1.000000  0.495191  0.502310  0.567816  0.677201
海通證券  0.497483  0.495191  1.000000  0.827580  0.504459  0.607889
華泰證券  0.514872  0.502310  0.827580  1.000000  0.488321  0.600306
中國平安  0.472398  0.567816  0.504459  0.488321  1.000000  0.661823
中國太保  0.554035  0.677201  0.607889  0.600306  0.661823  1.000000

In [11]: Rp=np.dot(return_mean,w)                            #計算投資組合的年化收益率
      ...: Vp=np.sqrt(np.dot(w,np.dot(return_cov,w.T)))     #計算投資組合的年化收益波動率
      ...: print('用隨機生成的權重計算得到投資組合的年化收益率',round(Rp,6))
      ...: print('用隨機生成的權重計算得到投資組合的年化收益波動率',round(Vp,6))
用隨機生成的權重計算得到投資組合的年化收益率     0.095816
用隨機生成的權重計算得到投資組合的年化收益波動率 0.315454

從以上的相關系數(shù)輸出結果不難看出,由于都是金融股,因此不同股票之間的相關系數(shù)是比較高的,投資組合的分散化效應可能會不太理想。此外,根據(jù)隨機生成的權重數(shù),得到投資組合的年化收益率為9.581 6%,波動率高達31.545 4%。

任務3的代碼

In [12]: x_2000=np.random.random((len(return_mean.index),2000))  #從均勻分布中隨機抽取6行、2000列的0到1的隨機數(shù)

In [13]: w_2000=x_2000/np.sum(x_2000,axis=0)      #生成包含2000組隨機權重的數(shù)組
      ...: w_2000
Out[13]: 
array([[0.19250103, 0.01845509, 0.01765565, ..., 0.33889512, 0.0463229 ,
            0.26199306],
           [0.07263106, 0.00973181, 0.13055863, ..., 0.03118864, 0.20474944,
            0.06271757],
           [0.09534805, 0.30004746, 0.18353861, ..., 0.13704764, 0.22151316,
            0.12965449],
           [0.09386134, 0.16068824, 0.212781  , ..., 0.02455051, 0.13288678,
            0.03435049],
           [0.25893945, 0.31725497, 0.14183784, ..., 0.00825204, 0.03630956,
            0.14306535],
           [0.28671907, 0.19382242, 0.31362827, ..., 0.46006606, 0.35821817,
            0.36821904]])

In [14]: Rp_2000=np.dot(return_mean,w_2000)    #計算投資組合不同的2000個收益率
      ...: Vp_2000=np.zeros_like(Rp_2000)       #生成存放投資組合2000個不同收益波動率的初始數(shù)組

In [15]: for i in range(len(Rp_2000)):           #用for語句快速計算投資組合2000個不同的收益波動率
      ...:     Vp_2000[i]=np.sqrt(np.dot((w_2000.T)[i],np.dot(return_cov,w_2000[:,i])))

In [16]: plt.figure(figsize=(9,6))
      ...: plt.scatter(Vp_2000,Rp_2000)
      ...: plt.xlabel(u'波動率',fontsize=13)
      ...: plt.ylabel(u'收益率',fontsize=13,rotation=90)
      ...: plt.xticks(fontsize=13)
      ...: plt.yticks(fontsize=13)
      ...: plt.title(u'投資組合收益率與波動率的關系', fontsize=13)
      ...: plt.grid('True')
      ...: plt.show()

下圖中的散點就是本次隨機生成2 000組不同投資權重所對應的投資組合收益率和波動率。通過映射至縱坐標的數(shù)值,可以目測出投資組合的最高年化收益率超過16%,最低年化收益率則略低于7%;通過映射至橫坐標的數(shù)值可以發(fā)現(xiàn),投資組合的最高波動率接近37%,最低波動率則接近26%。

在隨機生成的2000組不同投資權重條件下投資組合的收益率與波動率的關系圖

以上就是基于Python實現(xiàn)股票收益率分析的詳細內(nèi)容,更多關于Python股票收益率的資料請關注腳本之家其它相關文章!

相關文章

  • Python將運行結果導出為CSV格式的兩種常用方法

    Python將運行結果導出為CSV格式的兩種常用方法

    這篇文章主要給大家介紹了關于Python將運行結果導出為CSV格式的兩種常用方法,Python生成(導出)csv文件其實很簡單,我們一般可以用csv模塊或者pandas庫來實現(xiàn),需要的朋友可以參考下
    2023-07-07
  • python編程使用PyQt創(chuàng)建UE藍圖

    python編程使用PyQt創(chuàng)建UE藍圖

    這篇文章主要為大家介紹了python編程中如何使用PyQt創(chuàng)建UE藍圖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • pytorch多進程加速及代碼優(yōu)化方法

    pytorch多進程加速及代碼優(yōu)化方法

    今天小編就為大家分享一篇pytorch多進程加速及代碼優(yōu)化方法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Ubuntu18.04下python版本完美切換的解決方法

    Ubuntu18.04下python版本完美切換的解決方法

    這篇文章主要為大家詳細介紹了Ubuntu18.04下python版本完美切換的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • 教你用Python寫安卓游戲外掛

    教你用Python寫安卓游戲外掛

    本篇文章主要給教給大家如何用python這個語言寫出安卓游戲的輔助外掛以及思路講解,有興趣的朋友跟著學習下吧。
    2018-01-01
  • Python畫圖小案例之多啦A夢叮當貓超詳細注釋

    Python畫圖小案例之多啦A夢叮當貓超詳細注釋

    在看了很多Python教程之后,覺得是時候做點什么小項目來練練手了,于是想來想去,用python寫了一個童年記憶的卡通人物哆啦A夢,代碼注釋無比詳細清楚,快來看看吧
    2021-09-09
  • python3 http提交json參數(shù)并獲取返回值的方法

    python3 http提交json參數(shù)并獲取返回值的方法

    今天小編就為大家分享一篇python3 http提交json參數(shù)并獲取返回值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python中is和==的區(qū)別詳解

    Python中is和==的區(qū)別詳解

    這篇文章主要介紹了Python中is和==的區(qū)別詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Python實現(xiàn)的檢測網(wǎng)站掛馬程序

    Python實現(xiàn)的檢測網(wǎng)站掛馬程序

    這篇文章主要介紹了Python實現(xiàn)的檢測網(wǎng)站掛馬程序,需要的朋友可以參考下
    2014-11-11
  • numpy中的ndarray方法和屬性詳解

    numpy中的ndarray方法和屬性詳解

    這篇文章主要介紹了numpy中的ndarray方法和屬性詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05

最新評論