第9章 股票數(shù)據(jù)量化分析_第1頁
第9章 股票數(shù)據(jù)量化分析_第2頁
第9章 股票數(shù)據(jù)量化分析_第3頁
第9章 股票數(shù)據(jù)量化分析_第4頁
第9章 股票數(shù)據(jù)量化分析_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第9章股票數(shù)據(jù)量化分析

本章內(nèi)容9.1股票數(shù)據(jù)量化分析背景與功能9.2程序設(shè)計思路9.3程序設(shè)計的步驟9.1股票數(shù)據(jù)量化分析背景與功能股票市場在金融投資領(lǐng)域占據(jù)越來越重要的地位。隨著人工智能及大數(shù)據(jù)時代的到來,利用先進(jìn)的計算機(jī)技術(shù)編寫程序創(chuàng)建合適的數(shù)學(xué)模型快速準(zhǔn)確地處理與分析大規(guī)模股票市場數(shù)據(jù),從數(shù)據(jù)中洞悉更多事件,減少投資者情緒波動影響,判斷市場走勢、風(fēng)險和盈利,從而盡可能作出理性的投資決策。本案例基于Tushare平臺利用Python語言對股票市場上證指數(shù)及個股進(jìn)行數(shù)據(jù)分析、進(jìn)行盈利率計算,利用Matplotlib及seaborn庫對股票數(shù)據(jù)、走勢等進(jìn)行可視化展示,以消除量化投資技術(shù)障礙,更有效專注于市場本身。9.2程序設(shè)計思路步驟1:數(shù)據(jù)獲取

本程序數(shù)據(jù)來源于Tushare大數(shù)據(jù)開放平臺。Tushare是一個開放的,免費的平臺。其提供的數(shù)據(jù)內(nèi)容包含股票、基金、期貨、債券、外匯、行業(yè)大數(shù)據(jù),同時包括了數(shù)字貨幣行情等區(qū)塊鏈數(shù)據(jù)的全數(shù)據(jù)品類的金融大數(shù)據(jù)平臺。Tushare返回的數(shù)據(jù)格式絕大部分都是pandas的DataFrame類型,非常便于使用Pandas、NumPy、Matplotlib、seaborn等進(jìn)行數(shù)據(jù)分析和可視化。步驟2:大盤指數(shù)分析

本案例使用seaborn庫對上證指數(shù)及深證指數(shù)數(shù)據(jù)進(jìn)行可視化展示,直觀了解大盤“收盤價”和“成交量”走勢。步驟3:個股分析本案例選擇了“中國電信”“建業(yè)股份”“新華聯(lián)”及“南山鋁業(yè)”4支股票對其進(jìn)行收益計算、風(fēng)險評估,并對各數(shù)據(jù)進(jìn)行可視化展示。9.3程序設(shè)計的步驟1.安裝tushare庫tushare庫為第三方庫,使用前必須先安裝此第三方庫,可使用pipinstalltushare命令進(jìn)行安裝。2.導(dǎo)入所需第三方庫導(dǎo)入本案例所需第三方數(shù)據(jù)庫,包括Pandas,Numpy,Matplotlib的pyplot庫,seaborn庫,日期時間datetime庫以及tushare庫,并為后續(xù)統(tǒng)計圖中能夠正確顯示中文及符號進(jìn)行相關(guān)設(shè)置。9.3程序設(shè)計的步驟3.獲取上證及深證指數(shù)數(shù)據(jù)(1)get_k_data接口本案例使用Tushare的get_k_data接口,獲取上交所及深交所自1990年開市日至2021年底的所有指數(shù)數(shù)據(jù)、展示數(shù)據(jù)、了解數(shù)據(jù)屬性。get_k_data,是一個統(tǒng)一的行情數(shù)據(jù)接口,是tushare最常用的接口之一,目的是為了獲取k線數(shù)據(jù)。get_k_data(code=None,start='',end='',ktype='D',autype='qfq',index=False,retry_count=3,pause=0.001)其常用參數(shù)說明如表9-1所示。9.3程序設(shè)計的步驟9.3程序設(shè)計的步驟3.獲取上證及深證指數(shù)數(shù)據(jù)獲取數(shù)據(jù)說明:4.保存數(shù)據(jù)集至csv文件5.大盤指數(shù)數(shù)據(jù)預(yù)處理(1)讀取數(shù)據(jù)集并查看簡要信息(2)轉(zhuǎn)換數(shù)據(jù)類型9.3程序設(shè)計的步驟9.3程序設(shè)計的步驟6.大盤指數(shù)總體分析fig=plt.figure(figsize=(12,5))#創(chuàng)建畫布,尺寸為12*5axes1=fig.add_subplot(1,2,1)#添加子圖axes1axes2=fig.add_subplot(1,2,2)#添加子圖axes2axes1.set_title('1990-2021上證-深證指數(shù)每日收盤價走勢圖')sns.lineplot(x=data.date,y=data.close,hue=data.code,ax=axes1)axes2.set_title('1990-2021上證-深證每日成交量走勢圖')sns.lineplot(x=data.date,y=data.volume,hue=data.code,ax=axes2)plt.show()9.3程序設(shè)計的步驟9.3程序設(shè)計的步驟9.3程序設(shè)計的步驟sh_2015=data[(data.date.dt.year==2015)&(data.code=='sh')]#提取2015年上證數(shù)據(jù)sh_2015.set_index(sh_2015.date,inplace=True)#將“交易日期”設(shè)為索引#對2015年數(shù)據(jù)按“月”重采樣,并對個數(shù)據(jù)進(jìn)行相應(yīng)聚合統(tǒng)計sh_2015_M=sh_2015.resample('M').agg({'open':np.mean,'close':np.mean,'high':np.max,'low':np.min,'volume':np.sum})sns.lineplot(data=sh_2015_M['volume'])#繪制2015上證月成交量走勢圖plt.title('2015年上證指數(shù)月成交量走勢圖')plt.show()sns.lineplot(data=sh_2015_M[['open','close','high','low']])#繪制2015上證其余指數(shù)走勢圖plt.title('2015年上證指數(shù)開盤價、收盤價、最高價、最低價走勢圖')plt.show()9.3程序設(shè)計的步驟7.個股分析(1)獲取股票數(shù)據(jù)stocks={'中國電信':'601728','建業(yè)股份':'603948','新華聯(lián)':'000620','南山鋁業(yè)':'600219'}df=pd.DataFrame()#創(chuàng)建DataFrame用以存儲股票數(shù)據(jù)forstock_codeinstocks.values():df_stock=ts.get_k_data(code=stock_code,start='2021-01-01')#讀取單支股票數(shù)據(jù)(2021年至代碼運行時)df=df.append(df_stock,ignore_index=True)#將獲取的數(shù)據(jù)“追加”至dfdf.to_csv('stocks.csv')#保存股票數(shù)據(jù)至csv文件df.head()9.3程序設(shè)計的步驟(2)日收益率計算股票收益率是反映股票收益水平的指標(biāo)。股票收益率分為算術(shù)收益率和對數(shù)收益率兩種,其中算術(shù)收益率計算公式為:R=其中,Pt為t時刻的股票收盤價,Pt-1為t-1時刻的收盤價。即某股票的日收益率(算術(shù))為其相鄰兩天的價格差除以其中前一天的價格。而在金融領(lǐng)域的實際應(yīng)用中,經(jīng)常使用對數(shù)收益率來計算收益率。其計算公式為:R=即某股票的日收益率(對數(shù))為其相鄰兩天的價格比的對數(shù)。9.3程序設(shè)計的步驟(3)累積日收益率、平均年化收益率計算累積日收益率有助于定期確定投資價值。其計算公式為:使用每日收益率+1,并計算其累乘積。平均年化收益率可由日收益率轉(zhuǎn)化而來,(一般)假設(shè)一年有252個交易日,則平均年化收益率=(1+平均年化收益率)^252-1。9.3程序設(shè)計的步驟9.3程序設(shè)計的步驟(4)個股風(fēng)險分析現(xiàn)代投資理論創(chuàng)始人Markowitz假定投資風(fēng)險可視為投資收益的不確定性,這種不確定性可用統(tǒng)計學(xué)中的方差或標(biāo)準(zhǔn)差來度量,也可以通過平均差、極差、四分位差、離散系數(shù)、偏度和峰度等統(tǒng)計量來衡量。其中:平均差:是表示各個變量值之間差異程度的數(shù)值之一。指各個變量值同平均數(shù)的離差絕對值的算術(shù)平均數(shù)。平均差異大,表明各標(biāo)志值與算術(shù)平均數(shù)的差異程度越大,說明數(shù)據(jù)離散程度越大;反之,離散程度越小。極差:最大值與最小值之差,計算公式為:M=Max-Min它是標(biāo)志值變動的最大范圍,是最基本的衡量數(shù)據(jù)離散程度的方式,受極值影響較大。四分位差:是上四分位數(shù)(Q3,75%分位)與下四分位數(shù)(Q1,25%分位)的差。計算公式為:Q=Q3-Q1。四分位差反映了中間50%數(shù)據(jù)的離散程度,其數(shù)值越小,說明中間的數(shù)據(jù)越集中;其數(shù)值越大,說明中間的數(shù)據(jù)越分散。四分位差不受極值的影響。離散系數(shù):即變異系數(shù),為一組數(shù)據(jù)的標(biāo)準(zhǔn)差與平均數(shù)之比。計算公式為:C=std/mean。離散系數(shù)主要用于比較不同樣本數(shù)據(jù)的離散程度。離散系數(shù)大,說明數(shù)據(jù)的離散程度也大;離散系數(shù)小,說明數(shù)據(jù)的離散程度也小。9.3程序設(shè)計的步驟defMeanDeviation(series):'''平均差計算'''d=np.abs(series-series.mean()).mean()returnddefMaxMinDeviation(series):'''極差計算'''d=series.max()-series.min()returnddefQuantileDeviation(series):'''四分位差計算'''d=series.quantile(0.75)-series.quantile(0.25)returnddefVariationCoef(series):'''離散系數(shù)計算'''d=series.std()/series.mean()returnddefSkewness(series):'''偏度系數(shù)計算'''returnseries.skew()defKurtosis(series):'''峰度系數(shù)計算'''returnseries.kurt()df.groupby('code')[['log_return_daily']].agg([np.mean,np.std,np.var,MeanDeviation,MaxMinDeviation,QuantileDeviation,Skewness,Kurtosis])9.3程序設(shè)計的步驟偏態(tài)(Skew)分布相對于“正態(tài)分布”,偏態(tài)系數(shù)一般可理解為均值相對于中位數(shù)、眾數(shù)的偏離程度,如圖9-15所示,偏態(tài)系數(shù)>0,正偏,或稱為右偏;偏態(tài)系數(shù)<0,負(fù)偏,或稱為左偏。在金融領(lǐng)域,人們更傾向于正的偏度,因為這意味著高盈利的概率更大,如上圖9-14運行結(jié)果中的Skewness,“601728”負(fù)偏較大,意味著虧損的概率較大;“000620”相對于“600219”有更高概率的盈利可能。圖9-15偏態(tài)分布示意圖峰態(tài)系數(shù)/峰度(kurtosis),表征概率密度分布曲線在平均值處

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論