999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的投資組合收益率與波動率的數據分析

2021-12-19 18:56:16陳麗華曾德生
電腦知識與技術 2021年32期
關鍵詞:數據分析

陳麗華 曾德生

摘要:該文通過研究馬科維茨的投資組合模型,并將投資組合模型應用到包含6只金融股票的金融行業基金中。首先通過開源的財經接口Tushare獲取股票原始數據,接著利用數據分析的黃金組合庫:Pandas,Numpy,Matplotlib來進行股票數據的預處理、計算分析、數據可視化處理,最后通過分析得出對投資有價值的結論。它可以廣泛應用于其他任何基金投資組合的分析,對做好投資前股票分析具有一定的參考價值。

關鍵詞:數據分析;Python;投資組合模型;收益率;波動率

中圖分類號:TP311 ? ? ?文獻標識碼:A

文章編號:1009-3044(2021)32-0029-03

Data Analysis of Portfolio Returns and Volatility Based on Python Technology

CHEN Li-hua, ZENG De-sheng

(Information Engeering Institute, Guangdong Innovative Technical College, Dongguan 523960, China)

Abstract: In this paper, we study Markowitz's portfolio model and apply the portfolio model to a financial sector fund containing six financial stocks. Firstly, we obtain the raw stock data through the open source financial interface Tushare, then we use the golden combination libraries for data analysis: Pandas, Numpy, Matplotlib for stock data pre-processing, computational analysis, data visualization processing, and finally, we draw valuable conclusions for investment through analysis. It can be widely used in the analysis of any other fund portfolios, and has a certain reference value for ?pre-investment stock analysis.

Key words: data analysis; Python; portfolio selection model; rate of return; volatility

1 背景

近年來隨著我國居民收入不斷增長,投資意識和投資熱情不斷增強。股票、基金是普通居民參與投資的最常見方式,比起買一只股票,更多人傾向于投資基金,通過購買公司的基金,讓自己的資金分散投資到更多的股票上,既能降低投資風險,也能獲得較為可觀的收益。如何在風險可控下獲得更高的收益,就需要對資產做配置,也就是投資組合問題。近年來,在金融領域,量化投資技術越來越受到金融企業青睞,特別是隨著大數據分析技術、人工智能技術不斷發展,很多金融投資企業變為技術驅動性金融公司[1-3]。本文主要集中在股票投資組合的研究,以金融股為例,通過分析組合各個股票的歷史數據來構建最優的股票投資組合,采用開源的財經接口Tushare來獲取股票數據,利用Python數據分析的黃金組合庫:Pandas,Numpy,Matplotlib來進行數據的預處理、計算分析、可視化處理。最終得出有價值的數據分析結論。

2 投資組合理論基礎

投資組合理論是亨利·馬科維茨(Harry Markowitz)在1952年提出,目前在投資組合的研究與實踐中仍然被廣泛采用[4]。本文就是基于馬科維茨模型對股票進行分散投資,利用歷史數據計算機出最佳投資組合策略,可以使投資過程中有效避免投機行為帶來的非系統風險,獲得比較穩定收益。在馬科維茨的投資組合模型中,有兩個非常重要的變量用來評估一個投資組織,分別是投資組合的預期收益率和收益率的波動率。假設投資組合由N個股票組成,wi代表投資組合中第i只股票投資金額占投資組合總投資金額的比例,E(Ri)代表投資組合中第i只股票的預期收益率,這里采用該股票歷史數據中的收益率的均值代替,根據模型可以得到投資組合的預期收益率E(RP)公式如(1)所示。

[ERP=i=1NwiERi] ? ? ? ? ? ? ? ? ? ? (1)

假設[σi]表示第i只股票的收益波動率,Cov(Ri,Rj)表示第i只股票收益率與第j只股票收益率之間的協方差,那么投資組合收益波動率[σP]的公式如(2)所示。

[σP=i=1Nj=1NwiwjCov(Ri,Rj)] ? ? ? ? ? ?(2)

3 投資組合數據分析

投資組合數據分析過程大概分為5個步驟:1)從財經接口獲取股票歷史數據;2)對初始數據進行預處理,將處理好的數據存入文件;3)通過數據可視化觀察股票數據的基本走勢;4)計算股票年化平均收益率、年化收益波動率、股票收益率之間協方差、收益率相關系數等;5)構建3000組投資組合,結合馬科維茨模型,計算并觀察最優組合的年收益率、波動率。

3.1 獲取股票歷史數據

本文采用開源免費的財經數據接口Tushare來獲取股票歷史交易數據,Tushare提供了從數據采集、數據清洗加工到數據存儲的功能[5]。本文主要分析某個金融股票型基金,它包含6只金融股票:招商銀行(600036)、中國平安(601318)、工商銀行(601398)、中國太保(601601)、中國人壽(601628)中國光大(601788)。首先通過pip install tushare安裝所需要的Tushare第三方財經數據庫。接下來通過tushare接口獲取交易原始數據,本文通過獲取近五年的交易數據來進行數據分析。第二個步驟包含三個小步驟:1)到官網注冊賬號,并獲取對應的密鑰,并初始化接口;2)定義列表,存儲需要分析的股票代號,股票代號可以在官網查詢;3)遍歷每只股票,通過api接口的daily獲取股票的當天詳細數據,輸入參數:股票代碼、開始時間、結束時間;輸出參數:股票代號、交易日期、開盤價、最低價、最高價、收盤價等等,本項目我們只保存股票代號,交易日期,收盤價。共獲取6個股票從2016年6月1日至2021年7月23日期間的交易數據,共計7518條交易數據。核心代碼如下:

# 1.設置Token

ts.set_token('填寫獲取到的個人密鑰')

# 初始化接口

ts_api = ts.pro_api()

#2.定義列表,存儲你需要分析的股票代號

ts_codes = ['600036.SH','601318.SH','601398.SH','601601.SH','601628.SH','601788.SH']

#3.遍歷每只股票、讀取相應數據并進行保存。

for ts_code in ts_codes:

data = ts_api.daily(ts_code=ts_code, start_date='20160601', end_date='20210725')

if(ts_code=="600036.SH"):

data[['ts_code','trade_date','close']].to_csv('zuhe.csv',mode='a')

else:

data[['ts_code','trade_date','close']].to_csv('zuhe.csv',mode='a',header=False)

最終執行后保存在zuhe.csv文件的數據如圖1(截取其中10行數據)所示。

3.2 股票數據預處理

上一個步驟獲取到的股票原始數據不利我們進行數據分析,所以需要對數據進行預處理,數據預處理主要采用Pandas庫來進行處理[6],它分為四個步驟:1)利用df.drop(df.columns[0], axis=1, inplace=True)把上圖中表格數據中的第一列刪除;2)使用代碼:two_level_index_series = df.set_index(["trade_date", "ts_code "])["close"]將交易日期trade_date、股票代號ts_code設定位復合索引;3)應用unstack()函數進行“行轉列”操作,new_df = two_level_index_series.unstack();4)最后將處理好的數據存入新的文件,new_df.to_csv("new_zuhe.csv")。經過數據預處理后,數據整合成1253條數據,每條數據包含日期,跟6只股票當天收盤價。最終數據如圖2所示。

3.3 股票走勢數據可視化

利用Python數據可視化庫matplotlib來繪制2016年6月-2021年7月期間,本文所選6只股票的基本走勢圖[6],首先將股價按照20160601交易日進行歸1處理,然后利用matplotlib庫的plot()函數讀取上面預處理好的數據,并進行可視化展示,可以觀察到每只股票五年內的基本走勢,核心代碼如下。

import matplotlib.pyplot as plt

stock_price=pd.read_csv('new_zuhe.csv',parse_dates = ['trade_date'], index_col = ['trade_date']).iloc[:,:]

(stock_price/stock_price.iloc[0]).plot(figsize=(9,6),grid=True)

最終實現的效果圖如圖3所示:

3.4 獲得投資組合的年化平均收益率和年化收益波動率

利用Numpy數值計算庫來計算股票的各種參數,它提供了大量數學函數庫,比如log()、mean()、std()、sqrt()、cov()、corr()等函數,使用方便快捷[6]。下面我們利用函數庫計算出股票日收益率、股票年化平均收益率、股票年化收益波動率、股票收益率之間協方差、收益率相關系數。核心代碼如下:

#計算股票的日收益率

stock_return=np.log(stock_price/stock_price.shift(1))

#股票平均年化收益率

return_mean=stock_return.mean()*252

#股票年化收益波動率

return_volatility=stock_return.std()*np.sqrt(252)

#計算每只股票收益率之間的協方差

return_cov=stock_return.cov()*252

#計算每只股票收益率之間的相關系數

return_corr=stock_return.corr()

3.5 3000個投資組合的收益率與波動率的對比

為了更觀察投資組合不同配比的收益和波動情況,我們利用隨機函數生成3000組隨機權重系數,每一組包含6個值,每個值代表每只股票在總體投資中的占比。這里采用Numpy庫的random()函數來獲得股票權重數組。核心代碼如下:

#從均勻分布中隨機抽取6行,3000列的0-1的隨機數

x_3000=np.random.random((len(return_mean.index),3000))

#生成包含3000組的隨機權重的數組

w_3000=x_3000/np.sum(x_3000,axis=0)

接下來,利用馬科維茨模型中的投資組合預期收益率公式E(RP)(公式1)、投資組合收益波動率公式[σP](公式2),并采用Numpy豐富的函數庫,計算出3000組投資組合的收益率、波動率,最后使用matplotlib庫將3000組數據直接進行可視化顯示,可以直觀查看投資組合的效果,并進行必要的分析。通過圖4可以看出投資組合最高的年化收益率達到17%左右,最低年化收益率大概2%,投資組合的最高波動率接近29%,最低10%左右。核心代碼如下:

#計算投資組合不同的3000個收益率

Rp_3000=np.dot(return_mean,w_3000)

#生成存放投資組合3000個不同收益波動率的初始化數組

Vp_3000=np.zeros_like(Rp_3000)

#通過for計算3000個不同收益波動率

for i in range(len(Rp_3000)):

Vp_3000[i]=np.sqrt(np.dot((w_3000.T)[i],np.dot(return_cov,w_3000[:,i])))

#繪制投資組合收益率與波動率的關系圖

plt.figure(figsize=(9,6))

plt.scatter(Vp_3000,Rp_3000)

plt.xlabel('波動率',fontsize=13)

plt.ylabel('收益率',fontsize=13,rotation=90)

plt.xticks(fontsize=13)

plt.yticks(fontsize=13)

plt.title('投資組合收益率與波動率關系圖',fontsize=13)

plt.grid('True')

plt.show()

4 結束語

本文通過研究馬科維茨的投資組合模型,并將投資組合模型應用到包含6只金融股票的金融行業基金中。首先通過開源的財經接口Tushare獲取股票原始數據,接著利用數據分析的黃金組合庫:Pandas,Numpy,Matplotlib來進行股票數據的預處理、計算分析、數據可視化處理,最后通過分析得出對投資有價值的結論。它可以廣泛應用于其他任何基金投資組合的分析,只需要在本論文的基礎上,將新組合股票代碼傳入程序即可,具有一定的參考價值。

參考文獻:

[1] 王一凡.馬科維茨均值-方差理論在能源期貨投資組合優化中的運用[J].計算機與現代化,2020(7):11-15.

[2] 林郁東.基于Python的財務指標選股與投資策略探析——以2009—2019年我國股票市場為例[J].商訊,2020(1):1-2.

[3] 林溥真.資管新規下A公司理財產品投資組合方案優化研究[D].廣州:廣東工業大學,2019.

[4] Markowitz H. Portfolio selection[J].The Journal of Finance,1952,7(1):77-91.

[5] Tushare大數據開放社區:數據接口[EB/OL]. [2020-12-28].https://tushare.pro/document/2.

[6] Hilpisch Y. Python金融大數據分析[M].姚軍,譯.北京:人民郵電出版社,2015.

【通聯編輯:謝媛媛】

收稿日期:2021-08-25

基金項目:2019年廣東省普通高校特色創新類項目:基于Kubernetes的集群資源調度技術的研究與應用(項目編號:2019GKTSCX173);2020年廣東省教育科學“十三五”規劃課題:粵港澳大灣區背景下東莞高職信息類專業人才培養改革研究(項目編號:2020GXJK310)

作者簡介:陳麗華(1985—),女,廣東東莞人,學士,主要研究方向為金融數據分析、教育教學管理;曾德生(1983—),男,福建龍巖人,副教授,碩士,研究方向為Linux、云計算、職業教育。

猜你喜歡
數據分析
我校如何利用體育大課間活動解決男生引體向上這個薄弱環節
體育時空(2016年8期)2016-10-25 18:02:39
Excel電子表格在財務日常工作中的應用
淺析大數據時代背景下的市場營銷策略
新常態下集團公司內部審計工作研究
中國市場(2016年36期)2016-10-19 04:31:23
淺析大數據時代對企業營銷模式的影響
基于讀者到館行為數據分析的高校圖書館服務優化建議
科技視界(2016年22期)2016-10-18 14:37:36
主站蜘蛛池模板: 麻豆精品久久久久久久99蜜桃| 中日韩一区二区三区中文免费视频| 91久草视频| 国产小视频a在线观看| 亚洲欧美h| m男亚洲一区中文字幕| a级毛片免费网站| 国产在线拍偷自揄拍精品| 2048国产精品原创综合在线| 福利在线一区| 91久久偷偷做嫩草影院电| 国产偷国产偷在线高清| 亚洲欧美激情另类| 一本久道久综合久久鬼色| 亚洲视频一区| 亚洲国产精品美女| 久久这里只精品国产99热8| 成人欧美日韩| 中文字幕人妻av一区二区| 亚洲区欧美区| 午夜不卡视频| 国产精品美女自慰喷水| 91久久国产热精品免费| 在线色国产| 一级毛片免费播放视频| 亚洲第一成年网| 手机在线免费不卡一区二| 草草影院国产第一页| 精品亚洲国产成人AV| 午夜欧美理论2019理论| 欧美精品成人| 天天综合网色中文字幕| 久久这里只有精品免费| 国产99视频在线| 国产精品亚洲天堂| av大片在线无码免费| 人妻21p大胆| 久久成人免费| 色综合久久88| 一级做a爰片久久毛片毛片| 成人国产精品2021| 国产麻豆aⅴ精品无码| 久久天天躁夜夜躁狠狠| 亚洲一区第一页| 亚洲欧美日韩视频一区| 国产女人综合久久精品视| 成人午夜视频网站| 欧美区一区| 亚洲欧美成人在线视频| 亚洲国产日韩在线观看| 9久久伊人精品综合| 自拍偷拍欧美| 国产成人免费观看在线视频| 亚洲高清中文字幕在线看不卡| 毛片一级在线| 久久毛片基地| 国产啪在线| 91综合色区亚洲熟妇p| 国产一级无码不卡视频| 久久精品国产免费观看频道| 茄子视频毛片免费观看| 国产国产人免费视频成18| 国模沟沟一区二区三区| 国产精品专区第一页在线观看| 国产尹人香蕉综合在线电影| 99热这里只有精品免费| 美女内射视频WWW网站午夜| 午夜福利视频一区| 在线一级毛片| 欧美综合一区二区三区| 久久久久国产精品嫩草影院| 中文字幕中文字字幕码一二区| 欧美笫一页| 国产日韩欧美在线视频免费观看| 青青久视频| 免费观看国产小粉嫩喷水| 亚洲欧美日本国产综合在线| 91福利一区二区三区| 午夜少妇精品视频小电影| 国产呦精品一区二区三区网站| 欧美成人看片一区二区三区| 国产福利免费在线观看|