<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
金融行業的Python學習,不同於IT系統開發,我們並不需要達到程式設計師的水平。然而,學會Python可以讓你實現一個人寫完一個交易系統的需求,真正的一個人當成一支軍隊。
在量化交易裡,Python是工具,金融是Sense,它可以讓你的想法快速實現並得到驗證。而在金融領域運用Python就必然會涉及資本市場最重要的部分——股票。“股市如此多嬌,引無數投資者競折腰”,用Python來分析股票投資組合收益率和波動率,是每個金融從業者都該掌握的本領。
我們缺少的,是在具體的金融場景下應用Python的經驗。今天就讓我們以金融股為分析物件,來一次Python金融實戰,希望對你有所啟發!
A公司是總部位於北京的一家公募基金管理公司,在公司對外發行的全部基金產品中,有一隻名為“新金融股票型基金”,該基金在投資策略上是精選具有核心競爭優勢、持續增長潛力且估值水平相對合理的A股市場金融股。
截止到2019年9月末,該基金重倉的股票包括浦發銀行、招商銀行、中信證券、海通證券、中國平安以及中國太保這6只股票,表7-2就列示了2014年1月至2019年9月末這6只股票的部分日收盤價,並且全部資料均存放於Excel檔案。
2014年1月至2019年9月期間A股市場6只金融機構股票的部分日收盤價。
資料來源:上海證券交易所。(單位:元/股)
假定你是A公司的一位基金經理助理,日常的工作就是協助“新金融股票型基金”的基金經理跟蹤並分析已投資的股票。根據基金經理的要求,你需要運用Python完成3項程式設計任務。
【任務 1】匯入存放表7-2中這些股票在2014年1月至2019年9月期間日收盤價的Excel檔案,計算每隻股票的日收益率、年化平均收益率、年化收益波動率,計算日收益率時需要用自然對數。
【任務 2】針對由這6只股票構建的投資組合,隨機生成包含每隻股票設定權重的一個陣列(權重合計等於1),並且計算以該權重設定的投資組合年化平均收益率、年化收益波動率。
【任務 3】隨機生成包含2000組不同的股票設定權重的陣列,以此計算出相對應的2 000個不同的投資組合年化平均收益率、年化收益波動率,並且以散點圖的方式繪製在橫座標為年化收益波動率、縱座標為年化平均收益率的座標軸中。
針對任務2,假定投資組合由N只股票組成,wi代表了投資組合中第i只股票所佔的權重(股票的市值佔投資組合整體市值的比例),E(Ri)代表了投資組合中第i只股票的預期收益率(用該股票過去收益率的均值代替),可以得到投資組合預期收益率E(RP)的表示式如下:
同時,假設σi表示第i只股票的收益波動率,Cov(Ri,Rj)表示第i只股票收益率與第只股票收益率之間的協方差,投資組合收益波動率的σp表示式如下:
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) #匯入外部資料 ...: 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)) #保留小數點後6位 2014年至2019年9月的年化平均收益率 浦發銀行 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月的年化收益波動率 浦發銀行 0.282428 招商銀行 0.296238 海通證券 0.396386 華泰證券 0.449228 中國平安 0.465064 中國太保 0.359268 dtype: float64
從下圖不難看出,由於6只股票均是金融類股票,因此在整體的走勢方面存在一定的趨同性。但是每隻股票的平均年化收益率則存在較大差異,其中,招商銀行的平均收益率最高,浦發銀行的收益率則最低。同時,從平均年化波動率來看,銀行股最低,中國平安則最高。
2014年1月至2019年9月期間6只金融股股價走勢圖(股價在2014年首個交易日做歸1處理)
In [7]: x=np.random.random(len(return_mean.index)) #從均勻分佈中隨機抽取6個從0到1的亂數 In [8]: w=x/np.sum(x) #生成隨機權重的一個陣列 ...: w #檢視生成的隨機權重陣列 Out[8]: array([0.24372614, 0.03925093, 0.20889395, 0.20843467, 0.23808734, 0.06160696])
需要注意的是,由於是通過隨機生成的陣列,因此每一次得到的隨機權重陣列是不相同的,但是權重的合計數是等於1。
In [9] : return_cov=stock_return.cov()*252 #計算每隻股票收益率之間的協方差 ...: return_cov Out[9] : 浦發銀行 招商銀行 海通證券 華泰證券 中國平安 中國太保 浦發銀行 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() #計算每隻股票收益率之間的相關係數 ...: return_corr Out[10]: 浦發銀行 招商銀行 海通證券 華泰證券 中國平安 中國太保 浦發銀行 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
從以上的相關係數輸出結果不難看出,由於都是金融股,因此不同股票之間的相關係數是比較高的,投資組合的分散化效應可能會不太理想。此外,根據隨機生成的權重數,得到投資組合的年化收益率為9.581 6%,波動率高達31.545 4%。
In [12]: x_2000=np.random.random((len(return_mean.index),2000)) #從均勻分佈中隨機抽取6行、2000列的0到1的亂數 In [13]: w_2000=x_2000/np.sum(x_2000,axis=0) #生成包含2000組隨機權重的陣列 ...: 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個不同收益波動率的初始陣列 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組不同投資權重所對應的投資組合收益率和波動率。通過對映至縱座標的數值,可以目測出投資組合的最高年化收益率超過16%,最低年化收益率則略低於7%;通過對映至橫座標的數值可以發現,投資組合的最高波動率接近37%,最低波動率則接近26%。
在隨機生成的2000組不同投資權重條件下投資組合的收益率與波動率的關係圖
以上就是基於Python實現股票收益率分析的詳細內容,更多關於Python股票收益率的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45