国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的投資組合收益率與波動(dòng)率的數(shù)據(jù)分析

2021-12-19 18:56:16陳麗華曾德生
電腦知識(shí)與技術(shù) 2021年32期
關(guān)鍵詞:數(shù)據(jù)分析收益率

陳麗華 曾德生

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

關(guān)鍵詞:數(shù)據(jù)分析;Python;投資組合模型;收益率;波動(dòng)率

中圖分類(lèi)號(hào):TP311 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):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 背景

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

2 投資組合理論基礎(chǔ)

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

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

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

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

3 投資組合數(shù)據(jù)分析

投資組合數(shù)據(jù)分析過(guò)程大概分為5個(gè)步驟:1)從財(cái)經(jīng)接口獲取股票歷史數(shù)據(jù);2)對(duì)初始數(shù)據(jù)進(jìn)行預(yù)處理,將處理好的數(shù)據(jù)存入文件;3)通過(guò)數(shù)據(jù)可視化觀察股票數(shù)據(jù)的基本走勢(shì);4)計(jì)算股票年化平均收益率、年化收益波動(dòng)率、股票收益率之間協(xié)方差、收益率相關(guān)系數(shù)等;5)構(gòu)建3000組投資組合,結(jié)合馬科維茨模型,計(jì)算并觀察最優(yōu)組合的年收益率、波動(dòng)率。

3.1 獲取股票歷史數(shù)據(jù)

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

# 1.設(shè)置Token

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

# 初始化接口

ts_api = ts.pro_api()

#2.定義列表,存儲(chǔ)你需要分析的股票代號(hào)

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

#3.遍歷每只股票、讀取相應(yīng)數(shù)據(jù)并進(jìn)行保存。

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)

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

3.2 股票數(shù)據(jù)預(yù)處理

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

3.3 股票走勢(shì)數(shù)據(jù)可視化

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

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)

最終實(shí)現(xiàn)的效果圖如圖3所示:

3.4 獲得投資組合的年化平均收益率和年化收益波動(dòng)率

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

#計(jì)算股票的日收益率

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

#股票平均年化收益率

return_mean=stock_return.mean()*252

#股票年化收益波動(dòng)率

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

#計(jì)算每只股票收益率之間的協(xié)方差

return_cov=stock_return.cov()*252

#計(jì)算每只股票收益率之間的相關(guān)系數(shù)

return_corr=stock_return.corr()

3.5 3000個(gè)投資組合的收益率與波動(dòng)率的對(duì)比

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

#從均勻分布中隨機(jī)抽取6行,3000列的0-1的隨機(jī)數(shù)

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

#生成包含3000組的隨機(jī)權(quán)重的數(shù)組

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

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

#計(jì)算投資組合不同的3000個(gè)收益率

Rp_3000=np.dot(return_mean,w_3000)

#生成存放投資組合3000個(gè)不同收益波動(dòng)率的初始化數(shù)組

Vp_3000=np.zeros_like(Rp_3000)

#通過(guò)for計(jì)算3000個(gè)不同收益波動(dòng)率

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])))

#繪制投資組合收益率與波動(dòng)率的關(guān)系圖

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

plt.scatter(Vp_3000,Rp_3000)

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

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

plt.xticks(fontsize=13)

plt.yticks(fontsize=13)

plt.title('投資組合收益率與波動(dòng)率關(guān)系圖',fontsize=13)

plt.grid('True')

plt.show()

4 結(jié)束語(yǔ)

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

參考文獻(xiàn):

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

[2] 林郁東.基于Python的財(cái)務(wù)指標(biāo)選股與投資策略探析——以2009—2019年我國(guó)股票市場(chǎng)為例[J].商訊,2020(1):1-2.

[3] 林溥真.資管新規(guī)下A公司理財(cái)產(chǎn)品投資組合方案優(yōu)化研究[D].廣州:廣東工業(yè)大學(xué),2019.

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

[5] Tushare大數(shù)據(jù)開(kāi)放社區(qū):數(shù)據(jù)接口[EB/OL]. [2020-12-28].https://tushare.pro/document/2.

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

【通聯(lián)編輯:謝媛媛】

收稿日期:2021-08-25

基金項(xiàng)目:2019年廣東省普通高校特色創(chuàng)新類(lèi)項(xiàng)目:基于Kubernetes的集群資源調(diào)度技術(shù)的研究與應(yīng)用(項(xiàng)目編號(hào):2019GKTSCX173);2020年廣東省教育科學(xué)“十三五”規(guī)劃課題:粵港澳大灣區(qū)背景下東莞高職信息類(lèi)專(zhuān)業(yè)人才培養(yǎng)改革研究(項(xiàng)目編號(hào):2020GXJK310)

作者簡(jiǎn)介:陳麗華(1985—),女,廣東東莞人,學(xué)士,主要研究方向?yàn)榻鹑跀?shù)據(jù)分析、教育教學(xué)管理;曾德生(1983—),男,福建龍巖人,副教授,碩士,研究方向?yàn)長(zhǎng)inux、云計(jì)算、職業(yè)教育。

猜你喜歡
數(shù)據(jù)分析收益率
1年期國(guó)債收益率跌至1%
銀行家(2025年1期)2025-02-08 00:00:00
Excel電子表格在財(cái)務(wù)日常工作中的應(yīng)用
淺析大數(shù)據(jù)時(shí)代背景下的市場(chǎng)營(yíng)銷(xiāo)策略
新常態(tài)下集團(tuán)公司內(nèi)部審計(jì)工作研究
淺析大數(shù)據(jù)時(shí)代對(duì)企業(yè)營(yíng)銷(xiāo)模式的影響
山西省| 昌平区| 肥城市| 永昌县| 彩票| 蒲城县| 仪陇县| 黄浦区| 龙江县| 东源县| 图木舒克市| 清河县| 新和县| 随州市| 南岸区| 杭锦旗| 汝阳县| 梅州市| 合川市| 遂昌县| 崇阳县| 资溪县| 阿拉善右旗| 潜江市| 靖宇县| 白沙| 哈密市| 工布江达县| 外汇| 曲松县| 平潭县| 丹阳市| 阿拉尔市| 三门峡市| 浦东新区| 河池市| 页游| 沁水县| 东港市| 溧水县| 东方市|