股票收益計算金融計算與建模清華大學朱世武_第1頁
股票收益計算金融計算與建模清華大學朱世武_第2頁
股票收益計算金融計算與建模清華大學朱世武_第3頁
股票收益計算金融計算與建模清華大學朱世武_第4頁
股票收益計算金融計算與建模清華大學朱世武_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2.1.1收益定義假定某支金融資產在時刻t的價格為Pt

。百分比收益和連續復利收益的定義如下:單期百分比收益為k期百分比收益為2.1收益定義與加總當前第1頁\共有33頁\編于星期三\10點單期連續復利收益為其中,k期連續復利收益為當前第2頁\共有33頁\編于星期三\10點2.1.2收益加總對于百分比(復合)收益,單期收益一般比較小,于是,對年收益公式進行一階泰勒(Taylor)展開得近似的年收益公式,年收益而對于投資組合的連續復利收益我們有下面的近似公式,加和方式(Aggregation)時序(Temporal)截面(Cross-Section)百分比收益(PercentReturns)連續復利收益(ContinuouslyCompoundReturns)當前第3頁\共有33頁\編于星期三\10點2.2單個股票收益計算2.2.1創建單期收益計算環境2.2.2年收益計算2.2.3季收益計算2.2.4月收益計算2.2.5周收益計算2.2.6日收益計算2.2.7繪制收益圖2.2.8多期平均收益率計算當前第4頁\共有33頁\編于星期三\10點2.2.1創建單期收益計算環境計算上證指數(Idx000001)和股票深發展(Stk000001)收盤價單期收益。這里要計算有收益有:年收益、季收益、月收益、周收益和日收益。

對期末收盤價加標識:dataa;setResDat.Idx000001;year=year(date);qtr=qtr(date);month=month(date);proc

sortdata=a;byyearqtrmonth;run;databb;seta;last_y=last.year;/*標出某年的最后一個交易日*/last_q=last.qtr;/*標出某季的最后一個交易日*/last_m=last.month;/*標出某月的最后一個交易日*/byyearqtrmonth;run;當前第5頁\共有33頁\編于星期三\10點2.2.2年收益計算計算上證指數(Idx000001)的相應收益時,不需要用調整后的收盤價。

datar_year(keep=dater_pctr_loglabel="年收益");setbb;iflast_y=1;/*取各年最后一個交易日的數據*/r_pct=dif(clpr)/lag(clpr);/*計算百分比收益*/r_log=log(clpr)-log(lag(clpr));/*計算對數收益*//*函數log(x)是以e為底的自然對數,其它對數函數還有log2(x),log10(x)*/run;當前第6頁\共有33頁\編于星期三\10點2.2.5周收益計算程序一:dataa;setResDat.Idx000001;wd=weekday(date);dif=dif(wd);dif2=dif(date);if(dif<0anddif^=.)ordif2>=7thenindex=1;/*第二天的星期日小于第一天的星期日,或第二天與第一天的時間間隔大于7天時,表示第二天為新的一周*/elseindex=0;dataa(keep=dateclprindex);seta;date=lag(date);clpr=lag(clpr);ifindex=1;datar_week(keep=dater_pctr_log);seta;r_pct=dif(clpr)/lag(clpr);r_log=log(clpr)-log(lag(clpr));run;當前第7頁\共有33頁\編于星期三\10點datab;setResDat.Idx000001;wk=int((date-3)/7+2);/*wk為周序號,設定1960年1月1日為第一周。由于1960年1月1日為周五,所以第1周共有3天。注意該周(1960年1月1日到3日)對應日期按SAS的標準分別為0,1和2(于是(date-3)/7都等于-1)。由此可以理解為什么這樣設定表達式*/proc

sort;bydate;run;datab;setb;last_wk=last.wk;bywk;run;datab(keep=dater_pct1r_log1);setb;iflast_wk=1;r_pct1=dif(clpr)/lag(clpr);r_log1=log(clpr)-log(lag(clpr));run;程序二當前第8頁\共有33頁\編于星期三\10點datac;setResDat.Idx000001;last_wk=Wkflg;/*Wkflg;為周末交易日標識*/run;datac(keep=dater_pct2r_log2);setc;iflast_wk=1;r_pct2=dif(clpr)/lag(clpr);r_log2=log(clpr)-log(lag(clpr));run;程序三:當前第9頁\共有33頁\編于星期三\10點datad;merger_weekb;bydate;datad;mergedc;bydate;ifr_pct=r_pct1andr_pct=r_pct2thenaa=1;elseaa=0;/*最后一個不一樣*/run;datae;setd;ifaa=0;run;檢測程序一、程序二和程序三的一致性:注:方法二和三是完全一致的,雖然方法一與二、三的最后一個觀測不一致。因為方法一的最后一個觀測是缺失值。當前第10頁\共有33頁\編于星期三\10點2.2.6日收益計算datar_day(keep=dater_pctr_loglabel="日收益");setResDat.Idx000001;r_pct=dif(clpr)/lag(clpr);/*dif(clpr)等價于clpr-lag(clpr)*/r_log=log(clpr)-log(lag(clpr));run;當前第11頁\共有33頁\編于星期三\10點2.2.7繪制收益圖計算收益后,可以繪制收益對時間的散點圖來發現其隨時間增長的發展趨勢。例如,對上面計算的相關收益,其對時間的散點圖SAS程序如下。proc

gplotdata=r_day;plotr_pct*date/vref=0;plotr_log*date/vref=0;run;quit;選項VREF=要求在豎軸上的某個指定值處畫一條垂直于此軸的參照線,該例程中其值為0。當前第12頁\共有33頁\編于星期三\10點2.2.8多期平均收益率計算多期收益的度量包括計算多個單期收益的算術平均值和幾何平均值。計算上證指數(IDX000001)收盤價1995~2005年間年平均、月平均和日平均收益。當前第13頁\共有33頁\編于星期三\10點/*建立滿足條件的數據集*/dataa1;setr_year;where1995<=year(date)<=2005;proc

print;run;/*對數據集轉置*/proc

transposedata=a1out=a2;varr_pct;proc

print;run;/*計算年平均收益*/dataa3(keep=amgm);seta2;c1=col1+1;c2=col2+1;……c11=col11+1;gm=(c1*c2*c3*….*c11)**(1/11)-1;am=mean(ofcol1-col11);proc

print;run;/*變量太多時,用數組的方法處理簡單些*/%lett=%eval(2005-1995+1);dataa4(keep=amgm);seta2;arraycol(&t)col1-col&t;arrayc(&t)c1-c&t;gm0=1;doi=1to&t;c(i)=col(i)+1;gm0=gm0*c(i);end;gm=(gm0)**(1/&t))-1;am=mean(ofcol1-col&t);proc

print;run;平均年收益:當前第14頁\共有33頁\編于星期三\10點一般來說,平均收益用的是幾何平均收益,即上面程序中的GM。求幾何平均收益時,還有更簡單且更精確的方法,通過下面程序可以體會一下應用SAS編程的妙處。

dataa5;setbb;iflast_y=1and1997<=year(date)<=2005;run;dataa6;retainbeginend;seta5end=lastobs;if_n_=1thenbegin=clpr;/*將數據集第一個觀測值的價格賦給變量begin*/iflastobsthendo;end=clpr;/*將數據集最后一個觀測值的價格賦給變量end*/output;end;dataa6(keep=gm);seta6;T=2005-1997+1;gm=(end/begin)**(1/t)-1;proc

print;run;/*該方法主要優點是精確*/其它多期平均收益的計算留為習題。當前第15頁\共有33頁\編于星期三\10點2.3多股票收益計算實際應用時,往往需要計算多個股票的收益并將這些收益放在一張數據表中。以下程序可以用于多股票日對數收益和百分比收益數據。2.3.1由最新股票信息數據集創建宏文本2.3.2由個股數據集目錄文件創建宏文本2.3.3多股票收益計算程序2.3.4收益SAS數據集轉換為EXCEL數據表當前第16頁\共有33頁\編于星期三\10點2.3.1由最新股票信息數據集創建宏文本利用最新股票信息數據集Lstkinfo創建多股票宏文本:Stk.txt.data_null_;setResDat.Lstkinfo;a='%a(';b=',';c=');';file"Stk.txt";/*這里輸出的宏文本存于默認的文件夾下,這樣存貯不需要查看和保留的中間文件、可以避免以后引用該文件或不同機器拷貝程序時,需要重新創建文件夾的問題。*/puta$stkcd$b$lstknm$c$;run;當前第17頁\共有33頁\編于星期三\10點創建滬市股票宏文本:SHStk.txtData_null_;setResDat.Lstkinfo;ifsubstr(stkcd,1,1)in('6','9')orsubstr(stkcd,1,2)='99';a='%a(';b=',';c=');';file"SHStk.txt";puta$stkcd$b$lstknm$c$;run;創建深市股票宏文本:SZStk.txt";Data_null_;setResDat.Lstkinfo;ifsubstr(stkcd,1,1)='0'orsubstr(stkcd,1,2)='20';a='%a(';b=',';c=');';file"SZStk.txt";puta$stkcd$b$lstknm$c$;run;當前第18頁\共有33頁\編于星期三\10點2.3.2由個股數據集目錄文件創建宏文本個股股票數據存在于目錄ResDat下。目錄ResDat下所有個股股票SAS數據集.SAS7BDAT文件列表與宏的形成過程如下。DOS操作系統下→進入ResDat→執行列目錄文件命令:dirStk*.*/b>outlist在相應的目錄下打開文件OUTLIST,可以看到文件前兩行的結果如下:stk000001.sas7bdatstk000002.sas7bdat………這里DOS命令dir*.*/b中的參數/b表示只列出文件名。刪除文件名stkcdref.sas7bdat。當前第19頁\共有33頁\編于星期三\10點dataa;lengthfiles$9;infile"d:\ResDat\outlist";inputfiles$;iffiles='stkcdref.'thendelete;run;形成文件名數據集:當前第20頁\共有33頁\編于星期三\10點Data_null_;seta;stkcd=substr(files,4,6);a='%a(';c=');';file"Stk1.txt";puta$stkcd$c$;run;創建目錄ResDat下全部股票代碼的宏文本:Stk1.txt.:當前第21頁\共有33頁\編于星期三\10點2.3.3多股票收益計算程序方法一:一只股票的行情與分配形成一個SAS數據集。每個SAS數據集計算一只股票的收益。并將計算結果按適當的形式合并到一個數據集中。

滬市日對數收益計算程序:optionsnodatenonotesnosource;/*不輸出時間、注釋和源程序到日志LOG上*/dataResDat.lg_shanghai(keep=date);setResDat.Idx000001;where1995<=year(date)<=2005;/*全部交易日期通過上證指數的行情取得*/%macroa(x,y);/*求日對數收益率*/dataa(keep=dater_1);setResDat.stk&x;where1995<=year(date)<=2005;adjclpr=clpr*Mcfacpr;/*用調整后的股價計算,Mcfacpr為累積股價調整乘子*/r_1=log(adjclpr)-log(lag(adjclpr));當前第22頁\共有33頁\編于星期三\10點/*將所求的收益率合并到數據集ResDat.lg_shanghai中*/dataResDat.lg_shanghai(rename=(r_1=r&x));mergeResDat.lg_shanghaia;bydate;dataResDat.lg_shanghai;setResDat.lg_shanghai;ifr&x=.thenr&x=0;elser&x=r&x;%menda;%include"SHStk.txt";run;滬市日百分比收益計算程序:optionsnodatenonotesnosource;dataResDat.r_shanghai(keep=date);setResDat.Idx000001;where1995<=year(date)<=2005;當前第23頁\共有33頁\編于星期三\10點%macroa(x,y);/*求日百分比收益率*/dataa(keep=dater_1);setResDat.stk&x;where1995<=year(date)<=2005;adjclpr=clpr*Mcfacpr;/*用調整后的股價計算*/r_1=(adjclpr-lag(adjclpr))/lag(adjclpr);/*將所求的收益率合并到數據集ResDat.r_shanghai中*/dataResDat.r_shanghai(rename=(r_1=r&x));mergeResDat.r_shanghaia;bydate;dataResDat.r_shanghai;setResDat.r_shanghai;ifr&x=.thenr&x=0;elser&x=r&x;%menda;%include"SHStk.txt";run;當前第24頁\共有33頁\編于星期三\10點方法二:直接利用包括所有股票的行情分配數據集Qttndist。datareturn;setResDat.Qttndist;bystkcddate;adjclpr=Mcfacpr*Clpr;lag_adjclpr=lag(adjclpr);ifnotfirst.stkcdthenlagadjclpr=lag_adjclpr;return=(adjclpr-lagadjclpr)/lagadjclpr;keepstkcdlstknmdatereturn;run;注意:方法一、二計算收益數據的存貯方式不同。以下各節內容以方法一計算的結果為基礎展開。當前第25頁\共有33頁\編于星期三\10點proc

transposedata=ResDat.lg_shanghaiout=lg_shanghai_tr;run;datalg_shanghai_tr_1;setlg_shanghai_tr;if_n_<=220;run;proc

transposedata=lg_shanghai_tr_1out=lg_shanghai_1;datalg_shanghai_1;setlg_shanghai_1;formatdateyymmdd10.;run;datalg_shanghai_tr_2;setlg_shanghai_tr;if221<=_n_<=440;run;proc

transposedata=lg_shanghai_tr_2out=lg_shanghai_2;datalg_shanghai_2;setlg_shanghai_2;run;2.3.4收益SAS數據集轉換為EXCEL數據表當前第26頁\共有33頁\編于星期三\10點datalg_shanghai_tr_3;setlg_shanghai_tr;if441<=_n_<=660;run;proc

transposedata=lg_shanghai_tr_3out=lg_shanghai_3;datalg_shanghai_3;setlg_shanghai_3;run;datalg_shanghai_tr_4;setlg_shanghai_tr;if661<=_n_;run;proc

transposedata=lg_shanghai_tr_4out=lg_shanghai_4;datalg_shanghai_4;setlg_shanghai_4;run;當前第27頁\共有33頁\編于星期三\10點proc

exportdata=lg_shanghai_1outfile="d:\ResDat\lg_shanghai_1.xls"dbms=excel2000replace;run;proc

exportdata=lg_shanghai_2outfile="d:\ResDat\lg_shanghai_2.xls"dbms=excel2000replace;run;proc

exportdata=lg_shanghai_3outfile="d:\ResDat\lg_shanghai_3.xls"dbms=excel2000replace;run;proc

exportdata=lg_shanghai_4outfile="d:\ResDat\lg_shanghai_4.xls"dbms=excel2000replace;run;同樣,可以轉換其他收益SAS數據集為相應的EXCEL表。當前第28頁\共有33頁\編于星期三\10點2.4投資組合收益計算2.4.1由最新股票信息數據集Lstkinfo創建宏文本挑選出1995年前上市的股票:%macroa(x);dataa;setResDat.Lstkinfo;ifyear(Lstdt)<&x;/*Lstdt為股票上市日期*/datay%eval(&x)_list;seta;a='%a(';c=");";file"AlistedBefore%str(&x).txt";puta$stkcd$c$;%menda;%a(1995);run;通過改變宏%a(1995)中的參數值1995,可以選擇任意年份前上市的股票。當前第29頁\共有33頁\編于星期三\10點2.4.2隨機抽股票在上面得到的1995年前上市A股票中隨機抽取20支,并創建包含這20支股票代碼的宏文本RANDOM1995.TXT。

%macroa(x);procsql;/*sql過程創建視圖*/createview_tmp_asselect*,ranuni(5)as_ran_fromy%eval(&x)_listorderbycalculated_ran_;quit;datarandom;set_tmp_(obs=20);drop_ran_;a='%a(';c=");";file"random%str(&x).txt";puta$stkcd$c$;%menda;%a(1995);run;當前第30頁\共有33頁\編于星期三\10點2.4.3單個股票收益計算dataResDat.r_port20(keep=date);setResDat.Idx000001;where1995

溫馨提示

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

評論

0/150

提交評論