Python金融數據分析與挖掘(微課版) 課件 8-1.基于總體規(guī)模與投資效率指標的綜合評價_第1頁
Python金融數據分析與挖掘(微課版) 課件 8-1.基于總體規(guī)模與投資效率指標的綜合評價_第2頁
Python金融數據分析與挖掘(微課版) 課件 8-1.基于總體規(guī)模與投資效率指標的綜合評價_第3頁
Python金融數據分析與挖掘(微課版) 課件 8-1.基于總體規(guī)模與投資效率指標的綜合評價_第4頁
Python金融數據分析與挖掘(微課版) 課件 8-1.基于總體規(guī)模與投資效率指標的綜合評價_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第8章

上市公司綜合評價指標選擇、數據處理主成分分析與綜合排名投資組合收益率計算與量化投資策略設計基于總體規(guī)模與投資效率指標的綜合評價(指標選擇)第8章

字段名稱字段中文名稱字段說明Stkcd股票代碼Accper會計年度2013-12-31、2014-12-31、2015-12-31、2016-12-31、2017-12-31B001101000營業(yè)收入企業(yè)經營過程中確認的營業(yè)收入B001300000營業(yè)利潤與經營業(yè)務有關的利潤B001000000利潤總額公司實現的利潤總額B002000000凈利潤公司實現的凈利潤A001000000資產總計資產各項目之總計A001212000固定資產凈額固定資產原價除去累計折舊和固定資產減值準備之后的凈額F050501B凈資產收益率凈利潤/股東權益余額F091001A每股凈資產所有者權益合計期末值/實收資本期末值F091301A每股資本公積資本公積期末值/實收資本期末值F090101B每股收益凈利潤本期值/實收資本期末值總體規(guī)模指標包括上市公司的營業(yè)收入、營業(yè)利潤、利潤總額、凈利潤、資產總計、固定資產凈額,投資效率指標包括凈資產收益率、每股凈資產、每股資本公積、每股收益,共10個指標包括2013年—2017年的數據,綜合評價按年進行,本案例以2016年為例?;诳傮w規(guī)模與投資效率指標的綜合評價(數據處理)第8章

(1)讀取2016年的數據,其中第0列為標識列(股票代碼)

importpandasaspd

data=pd.read_excel('data.xlsx')

data2=data.iloc[data['Accper'].values=='2016-12-31',[0,2,3,4,5,6,7,8,9,10,11]](2)篩選指標值大于0的數據以及去掉nan值。

data2=data2[data2>0]

data2=data2.dropna()(3)數據標準化,注意標準化需要去掉第0列,這里數據標準化方法采用均值-方差法。

fromsklearn.preprocessingimportStandardScaler

X=data2.iloc[:,1:]

scaler=StandardScaler()

scaler.fit(X)

X=scaler.transform(X)基于總體規(guī)模與投資效率指標的綜合評價(主成分分析)第8章

對標準化之后的指標數據X做主成分分析,提取其主成分,要求累計貢獻率在95%以上。fromsklearn.decompositionimportPCApca=PCA(n_components=0.95)#累計貢獻率為95%以上Y=pca.fit_transform(X)

#滿足累計貢獻率為95%的主成分數據gxl=pca.explained_variance_ratio_

#貢獻率通過主成分分析,可以獲得其主成分,接下來就可以根據獲得的主成分計算每個上市公司的綜合得分了。根據綜合得分,可以獲得上市公司的綜合排名?;诳傮w規(guī)模與投資效率指標的綜合評價(綜合排名)第8章

1.計算綜合得分#綜合得分等于提取的各個主成分與其貢獻率的加權求和。

importnumpyasnp

F=np.zeros((len(Y)))#預定義綜合得分數組F

foriinrange(len(gxl)):

f=Y[:,i]*gxl[i]

#第i個主成分與第i個主成分貢獻率的乘積

F=F+f

#數組累積求和2.整理排名結果#第1種方式如下:fs1=pd.Series(F,index=data2['Stkcd'].values)#構建序列,值為綜合得分F,index為股票代碼Fscore1=fs1.sort_values(ascending=False)#結果排名,降序第2種方式如下:co=pd.read_excel('TRD_Co.xlsx')Co=pd.Series(co['Stknme'].values,index=co['Stkcd'].values)Co1=Co[data2['Stkcd'].values]#主成分分析指標數據對應的上市公司名稱fs2=pd.Series(F,index=Co1.values)Fscore2=fs2.sort_values(ascending=False)基于總體規(guī)模與投資效率指標的綜合評價(綜合排名)第8章

得到兩種方式的排名結果基于總體規(guī)模與投資效率指標的綜合評價(投資組合收益率計算)第8章

以排名前30的上市公司股票代碼構建投資組合作為計算舉例,持有期為2017年5月1日至2017年12月31日,計算其收益率單只股票的收益率計算方法為:以該股票持有期內首個交易日考慮現金紅利再投資的收盤價可比價p1買入,持有期內最后交易日的考慮現金紅利再投資的收盤價可比價p2賣出,收益率計算公式為(p2-p1)/p1。投資組合的收益率為該組合內所有股票收益率之和StkcdTrddtClsprcAdjprcwdAdjprcnd6032272017-03-2910.9822.1616621.9599916032282017-03-2948.0548.0548.056032382017-03-2943.0243.0243.026032392017-03-2998.6698.6698.666032582017-03-2953.7753.7753.776032662017-03-2944.3744.3744.37…………………………2017年交易數據,字段依次表示股票代碼、交易日期、收盤價、考慮現金紅利再投資的收盤價可比價、不考慮現金紅利再投資的收盤價可比價基于總體規(guī)模與投資效率指標的綜合評價(投資組合收益率計算)第8章

投資組合收益率計算示例代碼:trd=pd.read_excel('trd_2017.xlsx')r_list=[]foriinrange(30):code=Fscore1.index[i]dt=trd.iloc[trd.iloc[:,0].values==code,:]I1=dt['Trddt'].values>='2017-05-01'I2=dt['Trddt'].values<='2017-12-31'dtt=dt.iloc[I1&I2,:].sort_values('Trddt')iflen(dtt)>1:

#首個和最后一個交易日的考慮現金紅利再投資的收盤價可比價p1=dtt.iloc[0,3]p2=dtt.iloc[len(dtt)-1,3]r_list.append((p2-p1)/p1)r_total=sum(r_list)該組合只有28只股票代碼,不足30只,這是因為存在2只股票在計算持有期內沒有交易??偟氖找媛蕿椋簉_total=4.54296132786基于總體規(guī)模與投資效率指標的綜合評價(量化投資策略設計)第8章

將數據處理、主成分分析與綜合排名過程,定義為一個函數Fr;將收益率計算,也定義為一個函數Re。defFr(data,year):

#輸入:

#data--財務指標數據

#year--排名年度

#輸出:

#Fscore1--排名結果(股票代碼形式)

#Fscore2--排名結果(股票名稱形式)return(Fscore1,Fscore2)defRe(Fscore1,s_trd1,s_trd2,num):

#輸入:

#Fscore1--排名結果(股票代碼形式)

#s_trd1--持有期開始日期

#s_trd1--持有期結束日期

#num--排名數

#輸出:

#r_list--股票代碼收益率列表

#r_total--總收益率

return(r_list,r_total)importpandasaspdimportfunimportfun2data=pd.read_excel('data.xlsx')r1=fun.Fr(data,2016)Fscore1=r1[0]Fscore2=r1[1]r2=fun2.Re(Fscore1,'2017-05-01','2017-12-31',30)r_list=r2[0]r_total=r2[1]其結果Fscore1、Fscore2、r_list、r_total同前面所述基于總體規(guī)模與投資效率指標的綜合評價(量化投資策略設計)第8章

量化投資策略:以2013年~2016年的財務指標數據為基礎計算股票的綜合排名,并取排名前20和前40的股票構建投資組合,以下一年的5月1日—6月30日、5月1日—9月30日、5月1日—12月31日作為持有期,分別計算其投資組合的收益率,并與同期的滬深300指數收益率進行對比。持有期內指數收益率=(期末收盤指數?期初收盤指數)/期初收盤指數。importpandasaspdimportfun#導入自定義的函數文件importfun2#導入自定義的函數文件data=pd.read_excel('data.xlsx')ind300=pd.read_excel('index300.xlsx')list1=[]#存放年度list2=[]#存放持有期list3=[]#存放投資組合收益率list4=[]#存放滬深300指數收益率foryearin[2013,2014,2015,2016]:

fortimein['06-30','09-30','12-31']:

r1=fun.Fr(data,year)

r2=fun2.Re(r1[0],str(year+1)+'-05-01',

str(year+1)+'-'+time,40)

r_total=r2[1]

list1.append(year)

list2.append(str(year+1)+'-05-01'+'--'+str(year+1)+'-'+time)

list3.append(r_total)

td1=str(year+1)+'-05-01'

td2=str(year+1)+'-'+time

I1=ind300.iloc[:,1].values>=td1

I2=ind300.iloc[:,1].values<=td2

dt=ind300.iloc[I1&I2,[1,2]].sort_values('Idxtrd01')

p=dt.iloc[:,1].values

list4.append((p[len(p)-1]-p[0])/p[0])#將結果轉化為數據框,并導出到ExcelD={'year':list1,'time':list2,'r_total':list3,'index':list4}D=pd.DataFrame(D)D.to_excel('D.xlsx')基于總體規(guī)模與投資效率指標的綜合評價(量化投資策略設計)第8章

ID會計年度/年持有期總收益率滬深300收益率020132014-05-01—2014-06-300.5103040.004011120132014-05-01—2014-09-304.103380.136575220132014-05-01—2014-12-3119.109720.638655320142015-05-01—2015-06-30?1.76119?0.06574420142015-05-01—2015-09-30?5.61932?0.33101520142015-05-01—2015-12-31?4.04831?0.22072620152016-05-01—2016-06-30?0.13978?0.01855720152016-05-01—2016-09-300.8015320.01237

溫馨提示

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

評論

0/150

提交評論