最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

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

案例詳情

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

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

2014年1月至2019年9月期間A股市場6只金融機(jī)構(gòu)股票的部分日收盤價(jià)。

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

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

編程任務(wù)

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

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

【任務(wù) 3】隨機(jī)生成包含2000組不同的股票配置權(quán)重的數(shù)組,以此計(jì)算出相對應(yīng)的2 000個(gè)不同的投資組合年化平均收益率、年化收益波動(dòng)率,并且以散點(diǎn)圖的方式繪制在橫坐標(biāo)為年化收益波動(dòng)率、縱坐標(biāo)為年化平均收益率的坐標(biāo)軸中。

編程提示

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

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

參考代碼

任務(wù)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)                                     #導(dǎo)入外部數(shù)據(jù)
    ...: stock_price=stock_price.dropna()                           #刪除缺失值的行

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

In [5]: return_mean=stock_return.mean()*252                        #計(jì)算股票的平均年化收益率
    ...: print('2014年至2019年9月的年化平均收益率\n',return_mean.round(6))  #保留小數(shù)點(diǎn)后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)          #計(jì)算股票的年化收益波動(dòng)率
    ...: print('2014年至2019年9月的年化收益波動(dòng)率\n',return_volatility.round(6))
2014年至2019年9月的年化收益波動(dòng)率
浦發(fā)銀行    0.282428
招商銀行    0.296238
海通證券    0.396386
華泰證券    0.449228
中國平安    0.465064
中國太保    0.359268
dtype: float64

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

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

任務(wù)2的代碼

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

In [8]: w=x/np.sum(x)     #生成隨機(jī)權(quán)重的一個(gè)數(shù)組
    ...: w                #查看生成的隨機(jī)權(quán)重?cái)?shù)組
Out[8]: 
array([0.24372614, 0.03925093, 0.20889395, 0.20843467, 0.23808734, 0.06160696])

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

In [9] : return_cov=stock_return.cov()*252               #計(jì)算每只股票收益率之間的協(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()                 #計(jì)算每只股票收益率之間的相關(guān)系數(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)                            #計(jì)算投資組合的年化收益率
      ...: Vp=np.sqrt(np.dot(w,np.dot(return_cov,w.T)))     #計(jì)算投資組合的年化收益波動(dòng)率
      ...: print('用隨機(jī)生成的權(quán)重計(jì)算得到投資組合的年化收益率',round(Rp,6))
      ...: print('用隨機(jī)生成的權(quán)重計(jì)算得到投資組合的年化收益波動(dòng)率',round(Vp,6))
用隨機(jī)生成的權(quán)重計(jì)算得到投資組合的年化收益率     0.095816
用隨機(jī)生成的權(quán)重計(jì)算得到投資組合的年化收益波動(dòng)率 0.315454

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

任務(wù)3的代碼

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

In [13]: w_2000=x_2000/np.sum(x_2000,axis=0)      #生成包含2000組隨機(jī)權(quán)重的數(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)    #計(jì)算投資組合不同的2000個(gè)收益率
      ...: Vp_2000=np.zeros_like(Rp_2000)       #生成存放投資組合2000個(gè)不同收益波動(dòng)率的初始數(shù)組

In [15]: for i in range(len(Rp_2000)):           #用for語句快速計(jì)算投資組合2000個(gè)不同的收益波動(dòng)率
      ...:     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'波動(dòng)率',fontsize=13)
      ...: plt.ylabel(u'收益率',fontsize=13,rotation=90)
      ...: plt.xticks(fontsize=13)
      ...: plt.yticks(fontsize=13)
      ...: plt.title(u'投資組合收益率與波動(dòng)率的關(guān)系', fontsize=13)
      ...: plt.grid('True')
      ...: plt.show()

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

在隨機(jī)生成的2000組不同投資權(quán)重條件下投資組合的收益率與波動(dòng)率的關(guān)系圖

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

相關(guān)文章

  • 利用Python快速搭建Markdown筆記發(fā)布系統(tǒng)

    利用Python快速搭建Markdown筆記發(fā)布系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了使用Python生態(tài)的成熟工具,在30分鐘內(nèi)搭建一個(gè)支持Markdown渲染、分類標(biāo)簽、全文搜索的私有化知識發(fā)布系統(tǒng),感興趣的小伙伴可以參考下
    2025-04-04
  • 簡單介紹Python下自己編寫web框架的一些要點(diǎn)

    簡單介紹Python下自己編寫web框架的一些要點(diǎn)

    這篇文章主要介紹了簡單介紹Python下自己編寫web框架的一些要點(diǎn),示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • 使用keras2.0 將Merge層改為函數(shù)式

    使用keras2.0 將Merge層改為函數(shù)式

    這篇文章主要介紹了使用keras2.0 將Merge層改為函數(shù)式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python爬取百度春節(jié)祝福語并生成心形詞云

    Python爬取百度春節(jié)祝福語并生成心形詞云

    這篇文章主要介紹了利用Python爬蟲爬取百度的春節(jié)祝福語,并將其生成心形詞云,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起試試
    2022-01-01
  • Python實(shí)現(xiàn)壓縮與解壓gzip大文件的方法

    Python實(shí)現(xiàn)壓縮與解壓gzip大文件的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)壓縮與解壓gzip大文件的方法,分析了Python針對壓縮成gzip文件及解壓gzip文件的方法,并給出了相應(yīng)的封裝類,需要的朋友可以參考下
    2016-09-09
  • python如何使用raise拋出自定義異常

    python如何使用raise拋出自定義異常

    這篇文章主要介紹了python如何使用raise拋出自定義異常問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python中棧的詳細(xì)介紹

    Python中棧的詳細(xì)介紹

    這篇文章主要介紹的是Python中棧,棧(stacks)是一種只能通過訪問其一端來實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)與檢索的線性數(shù)據(jù)結(jié)構(gòu),具有后進(jìn)先出(last in first out,LIFO)的特征,下面來看看文章的具體舉例介紹,需要的朋友可以參考一下
    2021-11-11
  • Python3處理文件中每個(gè)詞的方法

    Python3處理文件中每個(gè)詞的方法

    這篇文章主要介紹了Python3處理文件中每個(gè)詞的方法,可實(shí)現(xiàn)逐個(gè)處理文件中每個(gè)詞的功能,需要的朋友可以參考下
    2015-05-05
  • python html2text庫將HTML文檔轉(zhuǎn)換為純文本格式使用示例探索

    python html2text庫將HTML文檔轉(zhuǎn)換為純文本格式使用示例探索

    這篇文章主要為大家介紹了python html2text庫將HTML文檔轉(zhuǎn)換為純文本格式使用示例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Python中l(wèi)ambda排序的六種方法

    Python中l(wèi)ambda排序的六種方法

    本文主要介紹了Python中使用lambda函數(shù)進(jìn)行排序的六種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01

最新評論

遂溪县| 大城县| 桃江县| 芜湖市| 合山市| 龙里县| 乐平市| 台前县| 扬州市| 南汇区| 巍山| 长海县| 衢州市| 东阳市| 黄骅市| 寿阳县| 纳雍县| 蒙山县| 垣曲县| 阳江市| 乾安县| 茂名市| 临漳县| 武穴市| 延川县| 卢氏县| 贵港市| 吐鲁番市| 榕江县| 丰县| 宝兴县| 通化市| 内乡县| 十堰市| 大渡口区| 响水县| 宁化县| 乡城县| 通海县| 海原县| 临城县|