金融計算與建模(上)_第1頁
金融計算與建模(上)_第2頁
金融計算與建模(上)_第3頁
金融計算與建模(上)_第4頁
金融計算與建模(上)_第5頁
已閱讀5頁,還剩40頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、怎樣學習金融計算與建模全書分為4大模塊:1-9章為金融學基礎指標計算模塊;10-12為股票定價模塊;13-18為風險度量模塊;19-23為固定收益定價模塊。每一模塊的內容一般由三部分組成:金融理論與模型、算法實現和計算程序。其中,算法實現與計算程序全部以中國金融市場的實際問題為應用背景而設計。本書不僅展現了應用SAS軟件的技術,同時也會使讀者對相關的金融專題有一個徹底的了解,會使讀者的知識水平在金融理論、實務和統計模型的基礎上,更深入到如何實現和應用。本書有以下特點: 以解決金融研究和實際問題為出發點,并不僅僅以教學為目的,給出的許多算法和實現程序具有相當的應用和參考價值; 全方位、深層次地展

2、現了SAS編程技術。詳細閱讀本書,會使讀者的SAS編程技術水平躍上一個大臺階; 每章的計算程序精心設計,思路清晰,許多語句都加上了注釋,為閱讀和理解好本書內容提供了可靠的保證。 為讀者在今后學習和實際工作提供了大量的可參考程序,可以作為有關SAS編程技術和金融計算的字典使用。 專業金融數據網站的在線技術支持。本書得到了專業金融數據網站( resset )的在線技術支持,提供配套數據庫、程序下載與疑難問題解答等服務,方便讀者學習。在線教學支持網站RESSET銳思數據Resdat樣本數據: resset SAS論壇: resset 第1章 本書金融數據介紹清華大學經管學院 朱世武Zhushwsem

3、. Resdat樣本數據: resset SAS論壇: resset ResDat.為本書樣本數據庫,包括股票、固定收益等相關數據集。創建SAS邏輯庫ResDat目錄ResDat下為本書的全部樣本數據。運行本書程序前,需要創建以本書樣本數據庫(ResDat)為物理地址的SAS邏輯庫ResDat。股票類樣本數據表名中文全稱內容簡介Lstkinfo最新股票信息本表每一個股票為一個觀測,內容包括股票的最新基本信息,如股票代碼、股票類型及貨幣類型、最新股票名稱和上市狀態、股票所屬公司的基本信息及對應的可轉債基本信息等。本表沒有時間變量,顯示的是股票最新的信息,是計算股票市場許多

4、統計量指標的基礎數據集。Ex匯率本表按日期排序,記錄人民幣、港幣和美元之間的匯率值。變量包括日期、美元對人民幣匯率和港幣對人民幣匯率。由于有一段時期,港幣對人民幣沒有直接匯率,因而需要通過人民幣對美元匯率和港幣對美元匯率進行換算。Commtax傭金與印花稅本表按時間排序,記錄每日的傭金率和印花稅信息,可用于計算交易費用。Iissulst首次發行與上市記錄每只股票在發行和上市時的情況,發行信息包括發行日、發行市盈率,發行面值,發行股份數量,募集金額,發行費用和配售等;上市信息包括股票首次上市日及職工股上市日等。對于B股,發行價格,募集資金總額和發行費用等均分別用外幣和換算后的人民幣表示,可適用于

5、不同的研究需要。Dist分配記錄上市公司對股東進行的一系列分配活動。包括股票分割,送紅股,轉增,配股,增發和現金分紅等數量或比例,而且對于B股,其紅利,配股價格和增發價格等均同時用外幣和換算后的人民幣來表示。這些事件不僅影響總股本,也影響流通股本。本表是最重要的股票數據集之一,是計算股票市場許多統計量指標、各種指數等的基礎數據集。注: 增發有時沒有除權處理。所以,本表中,增發新股作除權處理時,除息除權日Exdt有值,不作除權處理時為空值。Shrhis股本變動歷史 記錄每只股票的總股本,流通股本,非流通股本,國有股和法人股等觀測的歷史。在下一個觀測日或摘牌日之前上一個股本觀測值都是有效的。本表是

6、最重要的股票數據集之一,是計算股票市場許多統計量指標、各種指數等的基礎數據集。DistDivshr股權分置分配記錄各公司進行股權分置改革時的分配情況,包括股改的起始日,結束日,以及送股比例,派息比例等各種對價支付的基本信息,是對股改情況的基本描述。delinfo退市信息記錄已退市股票的相關信息,包括股票代碼,最新股票名稱,上市日期,退市日期、股票類型等。Qttndist行情與分配本表由行情、股本、日歷和分配表等合并形成的數據集,便于校驗、各種收益指標和指數的計算。Dret個股日收益根據交易數據、除權(息)情況和股權分置改革情況計算得出的個股日收益率。Wkret個股周收益根據交易數據、除權(息)

7、情況和股權分置改革情況計算得出的個股周收益率。Monret個股月收益根據交易數據、除權(息)情況和股權分置改革情況計算得出的個股月收益率。Qtrret個股季收益根據交易數據、除權(息)情況和股權分置改革情況計算得出的個股季收益率。Yrret個股年收益根據交易數據、除權(息)情況和股權分置改革情況計算得出的個股年收益率。Dretm市場日收益不同交易市場中A股、B股按不同加權方法計算得到的市場日收益率。Wkretm市場周收益不同交易市場中A股、B股按不同加權方法計算得到的市場周收益率。Monretm市場月收益不同交易市場中A股、B股按不同加權方法計算得到的市場月收益率。Qtrretm市場季收益不同

8、交易市場中A股、B股按不同加權方法計算得到的市場季收益率。Yrretm市場年收益不同交易市場中A股、B股按不同加權方法計算得到的市場年收益率。Idxqttn指數行情主要股票指數行情。固定收益類樣本數據表名中文全稱內容簡介Bankir銀行存款利率本表提供3個月到8年整存整取銀行存款利率數據。可作為基準利率使用。數據自1988年9月1日至當前日。其中,d8y-八年及以上整存整取利率數據到1996年5月1日截止。BchmkIr基準利率本表提供回購利率日平均價、同業拆借市場利率日平均價利率數據、銀行間市場基準利率參考指標。本表數據可用于浮動利率債券的票面利率、無風險利率等。DRfRet日無風險收益率本

9、表提供用于研究的日無風險收益數據。數據選擇標準:1998年7月1日前用一年期銀行存款利率加10%為基準利率,1998年7月1日后使用七日回購利率兩周指數加權平均為基準利率B2W。本表已將年度化的基準利率轉化為以日為單位計量的收益數據,研究時可直接引用。MonRfRet月無風險收益率本表提供用于研究的月無風險收益數據。數據選擇標準:1998年7月1日前用一年期銀行存款利率加10%為基準利率,1998年7月1日后使用七日回購利率兩周指數加權平均為基準利率B2W。本表數據已作過月度化處理,即將年度化的基準利率轉化為月度數據,研究時可直接引用。BdId債券標識本表提供每只債券的標識編碼,以及在不同市場

10、的交易代碼。鑒于同一只債券可以在不同的市場上市交易,交易代碼也各不相同,本表設定了唯一的標識碼Bdid以識別每只債券。本表給出已發行債券的債券標識、上市標識和債券代碼之間的對應關系。當某只債券在多個市場交易時,一個Bdid會對應多個交易代碼Bdcd。若某只債券不在某個市場交易,則相應的債券代碼為空值。BdInfo債券信息本表記錄已發行債券的一些基本屬性,如債券名稱、票面利率、計息方式、票息類型、債券類型、年付息頻率、回售標識、贖回標識、可轉換標識等數據。用于計算債券的到期收益率、未來現金流、久期、凸性指標,同時本表數據也是許多計算與建模的基礎數據,如債券指數計算、利率期限結構建模等。Conve

11、rProv可轉債轉股條款本表記錄所有可轉債的相關轉股條款,包括可轉債對應的股票代碼、最新股票名稱、轉股價格、轉股價格比例、轉股類型、修正條款等數據。Converinfo可轉債轉股信息本表記錄所有可轉債的轉股信息,包括可轉債總額、累計轉股金額、累計轉股數量、可轉債剩余金額、轉股后總股本、本次轉股金額、本次轉股數量等數據。每只可轉債可能會涉及到多次轉股。BdIsslst債券發行與上市本表給出與債券發行、上市相關的一些信息。發行信息包含債券發行公告日期、發行量、承銷方式、發行相關機構等。債券上市交易的基本狀況包含上市日期、停止上市日期、交易市場等。在研究中本表信息用到的較少,因此從債券基本信息表分離

12、出來單列為一個表。本表可以通過債券代碼與基本信息等聯系起來。CoupRtHist票面利率變動歷史由于部分債券(主要是浮動利率債券和累進利率債券)的票面利率是不確定的,本表給出這些債券票面利率的變動情況(如浮動利率債券票面利率隨基準利率的變化而變化,累進利率債券票面利率隨債券的待償期限變化而變化)。本表包括計息開始與結束日期、付息序號、基準利率代碼、本期年利率、利率變動類型等數據。ExchQttn交易所債券行情本表記錄交易所市場每個交易日債券交易的價格、應計利息、成交量、開盤全價、開盤凈價、收盤全價、收盤凈價、交易量和交易金額等時序數據,以及由此計算得到的收益率、久期、凸性等分析指標。IboPu

13、bBid銀行間信用拆借公開報價本表記錄信用拆借市場的公開報價高頻數據,包含交易品種、利率、金額、交易期限、清算期限、起息日、還款日、占款天數等數據。本表可以用于信用拆借市場流動性等方面的研究。CBDDualBid銀行間現券買賣雙邊報價本表記錄現券買賣雙邊報價相關數據,即經中國人民銀行批準的銀行間做市商在進行現券買賣報價時,在中國人民銀行核定的債券買賣價差范圍內連續報出該券種的買賣實價,并同時報出該券種的買賣數量、清算速度等交易要素。本表中包括賣出凈價、賣出應計利息、賣出全價、賣出券面總額、賣出已交易金額、賣出凈價金額、賣出全價金額、賣出清算期限、賣出交割日、賣出到期收益率、賣出債券結算方式,以

14、及買入的相關數據。CBDDeal銀行間現券買賣成交本表記錄現券買賣成交的高頻數據,即記錄每一筆成交數據。包括成交狀態、前承報價類型、凈價、應計利息、全價、債券面值、凈價金額、全價金額、交易期限、交割日、到期收益率、債券結算方式等數據。CBDqttn銀行間現券買賣行情本表包括現券買賣的日行情,包括開盤價、收盤價、最新價、成交量,以及凸性久期等數據。給出的價格包含了全價和凈價。Bidxquot債券指數行情本表提供一組變量,用于記錄債券指數每日的價格和交易量等數據,如開盤價、收盤價、最高價、最低價、交易量和交易金額等。Ibidxquot銀行間債券指數行情記錄銀行間債券指數每日的指數值、久期、凸性、派

15、息率等Sampbdinfo樣本債券信息記錄擬合利率期限結構模型用到的樣本債券信息,包括債券種類、債券標識、債券代碼、銳思債券標識、債券價格、債券面值、計息方式、票面利率、年付息頻率、起息日、到期日、到期期限、修正久期、剩余期限。每天對每種類型的債券給出一組債券信息。第2章 股票收益計算清華大學經管學院 朱世武Z Resdat樣本數據: resset SAS論壇: resset 2.1 收益定義與加總2.2 單個股票收益計算2.3 多股票收益計算2.4 投資組合收益計算2.1.1 收益定義假定某支金融資產在時刻t的價格為 Pt 。 百分比收益和連續復利收

16、益的定義如下:單期百分比收益為k期百分比收益為2.1 收益定義與加總單期連續復利收益為其中, k期連續復利收益為2.1.2 收益加總對于百分比(復合)收益,單期收益一般比較小,于是,對年收益公式進行一階泰勒(Taylor)展開得近似的年收益公式, 年收益而對于投資組合的連續復利收益 我們有下面的近似公式,加和方式(Aggregation)時序(Temporal)截面(Cross-Section)百分比收益(Percent Returns)連續復利收益(Continuously Compound Returns)2.2 單個股票收益計算2.2.1 創建單期收益計算環境2.2.2 年收益計算2.2

17、.3 季收益計算2.2.4 月收益計算2.2.5 周收益計算2.2.6 日收益計算2.2.7 繪制收益圖2.2.8 多期平均收益率計算2.2.1 創建單期收益計算環境計算上證指數(Idx000001)和股票深發展(Stk000001)收盤價單期收益。這里要計算有收益有:年收益、季收益、月收益、周收益和日收益。 對期末收盤價加標識:data a;set ResDat.Idx000001;year=year(date);qtr=qtr(date);month=month(date);proc sort data=a;by year qtr month;run;data bb;set a;last_

18、y=last.year; /*標出某年的最后一個交易日 */last_q=last.qtr; /*標出某季的最后一個交易日 */last_m=last.month; /*標出某月的最后一個交易日 */by year qtr month;run;2.2.2 年收益計算計算上證指數(Idx000001)的相應收益時,不需要用調整后的收盤價。 data r_year(keep=date r_pct r_log label="年收益"); set bb;if last_y=1; /* 取各年最后一個交易日的數據 */r_pct=dif(clpr)/lag(clpr)

19、; /* 計算百分比收益 */r_log=log(clpr)-log(lag(clpr); /* 計算對數收益 */*函數log(x)是以e為底的自然對數,其它對數函數還有log2(x),log10(x)*/run;2.2.5 周收益計算程序一:data a;set ResDat.Idx000001;wd=weekday(date);dif=dif(wd);dif2=dif(date);if (dif<0 and dif=.)or dif2>=7 then index=1;/*第二天的星期日小于第一天的星期日,或第二天與第一天的時間間隔大于7天時,表示第二天為新的一

20、周*/else index=0;data a(keep=date clpr index);set a;date=lag(date);clpr=lag(clpr);if index=1;data r_week(keep=date r_pct r_log);set a;r_pct=dif(clpr)/lag(clpr);r_log=log(clpr)-log(lag(clpr);run;data b;set ResDat.Idx000001; wk=int(date-3)/7+2); /* wk為周序號,設定1960年1月1日為第一周。由于1960年1月1日為周五,所以第1周共有3天。注意該周(1

21、960年1月1日到3日)對應日期按SAS的標準分別為0, 1和2(于是(date-3)/7都等于-1)。由此可以理解為什么這樣設定表達式 */proc sort;by date;run;data b;set b;last_wk=last.wk;by wk;run;data b(keep=date r_pct1 r_log1);set b;if last_wk=1;r_pct1=dif(clpr)/lag(clpr);r_log1=log(clpr)-log(lag(clpr);run;程序二data c;set ResDat.Idx000001; last_wk= Wkflg; /* Wkfl

22、g;為周末交易日標識 */run;data c(keep=date r_pct2 r_log2);set c;if last_wk=1;r_pct2=dif(clpr)/lag(clpr);r_log2=log(clpr)-log(lag(clpr);run;程序三:data d;merge r_week b;by date;data d;merge d c;by date;if r_pct=r_pct1 and r_pct=r_pct2 then aa=1;else aa=0;/*最后一個不一樣*/run;data e;set d;if aa=0;run;檢測程序一、程序二和程序三的一致性:

23、注:方法二和三是完全一致的,雖然方法一與二、三的最后一個觀測不一致。因為方法一的最后一個觀測是缺失值。2.2.6 日收益計算data r_day (keep=date r_pct r_log label="日收益");set ResDat.Idx000001;r_pct=dif(clpr)/lag(clpr); /*dif(clpr)等價于clpr-lag(clpr)*/r_log=log(clpr)-log(lag(clpr);run;2.2.7 繪制收益圖計算收益后,可以繪制收益對時間的散點圖來發現其隨時間增長的發展趨勢。例如,對上面計算的相關收益,其對

24、時間的散點圖SAS程序如下。proc gplot data=r_day ;plot r_pct*date / vref=0;plot r_log*date / vref=0;run;quit;選項VREF要求在豎軸上的某個指定值處畫一條垂直于此軸的參照線,該例程中其值為0。2.2.8 多期平均收益率計算多期收益的度量包括計算多個單期收益的算術平均值和幾何平均值。計算上證指數(IDX000001)收盤價19952005年間年平均、月平均和日平均收益。/*建立滿足條件的數據集*/data a1;set r_year;where 1995 <= year(date) <=

25、 2005;proc print;run;/*對數據集轉置*/proc transpose data=a1 out=a2;var r_pct;proc print;run;/*計算年平均收益*/data a3(keep=am gm);set a2;c1=col1+1; c2=col2+1;c11=col11+1;gm=(c1*c2*c3*.*c11)*(1/11)-1;am=mean(of col1-col11);proc print;run;/*變量太多時,用數組的方法處理簡單些*/%let t=%eval(2005-1995+1); data a4(keep=am gm);set a2;a

26、rray col(&t) col1-col&t;array c(&t) c1-c&t;gm0=1;do i=1 to &t;c(i)=col(i)+1;gm0=gm0*c(i);end;gm=(gm0)*(1/&t)-1; am=mean(of col1-col&t); proc print;run;平均年收益:一般來說,平均收益用的是幾何平均收益,即上面程序中的GM。求幾何平均收益時,還有更簡單且更精確的方法,通過下面程序可以體會一下應用SAS編程的妙處。 data a5 ;set

27、 bb;if last_y=1 and 1997<= year(date) <= 2005;run;data a6;retain begin end;set a5 end=lastobs;if _n_=1 then begin=clpr; /* 將數據集第一個觀測值的價格賦給變量begin */if lastobs then do;end=clpr; /* 將數據集最后一個觀測值的價格賦給變量end */output;end;data a6(keep=gm);set a6;T=2005-1997+1;gm=(end/begin)*(1/t)-1;proc print

28、;run; /*該方法主要優點是精確*/其它多期平均收益的計算留為習題。2.3 多股票收益計算實際應用時,往往需要計算多個股票的收益并將這些收益放在一張數據表中。以下程序可以用于多股票日對數收益和百分比收益數據。2.3.1 由最新股票信息數據集創建宏文本2.3.2 由個股數據集目錄文件創建宏文本2.3.3 多股票收益計算程序2.3.4 收益SAS數據集轉換為EXCEL數據表2.3.1 由最新股票信息數據集創建宏文本利用最新股票信息數據集Lstkinfo創建多股票宏文本:Stk.txt.data _null_;set ResDat. Lstkinfo;a='%a(&#0

29、39;b=','c=');' ;file "Stk.txt" ; /* 這里輸出的宏文本存于默認的文件夾下,這樣存貯不需要查看和保留的中間文件、可以避免以后引用該文件或不同機器拷貝程序時,需要重新創建文件夾的問題。*/put a $ stkcd $ b $ lstknm $ c $ ;run;創建滬市股票宏文本:SHStk.txtData _null_ ;set ResDat. Lstkinfo;if substr(stkcd,1,1) in ('6'

30、,'9') or substr(stkcd,1,2)='99' ;a='%a('b=','c=');' ;file "SHStk.txt" ;put a $ stkcd $ b $ lstknm $ c $ ;run;創建深市股票宏文本:SZStk.txt"Data _null_ ;set ResDat. Lstkinfo;if substr(stkcd,1,1)

31、 ='0' or substr(stkcd,1,2)='20' ;a='%a('b=','c=');' ;file "SZStk.txt" ;put a $ stkcd $ b $ lstknm $ c $ ;run;2.3.2 由個股數據集目錄文件創建宏文本個股股票數據存在于目錄ResDat下。目錄ResDat下所有個股股票SAS數據集.SAS7BDAT文件列表與宏的形成過程如下

32、。DOS操作系統下進入ResDat執行列目錄文件命令:dir Stk*.*/b>outlist在相應的目錄下打開文件OUTLIST,可以看到文件前兩行的結果如下:stk000001.sas7bdatstk000002.sas7bdat這里DOS命令dir *.*/b中的參數/b表示只列出文件名。刪除文件名stkcdref.sas7bdat。data a;length files $9;infile "d:ResDatoutlist" input files $ ; if files='stkcdref.' t

33、hen delete;run;形成文件名數據集:Data _null_;set a;stkcd=substr(files,4,6);a='%a('c=');' ;file " Stk1.txt"put a $ stkcd $ c $ ;run;創建目錄ResDat下全部股票代碼的宏文本:Stk1.txt.:2.3.3 多股票收益計算程序方法一:一只股票的行情與分配形成一個SAS數據集。每個SAS數據集計算一只股票的收益。并將計算結果按適當的形式合并到一個數據集中。 滬市日對數收益計算程序

34、:options nodate nonotes nosource; /*不輸出時間、注釋和源程序到日志LOG上 */data ResDat.lg_shanghai(keep=date);set ResDat.Idx000001; where 1995<=year(date)<=2005; /* 全部交易日期通過上證指數的行情取得 */%macro a(x,y);/*求日對數收益率*/data a(keep=date r_1);set ResDat.stk&x;where 1995<=year(date)<=2005; ad

35、jclpr=clpr*Mcfacpr;/*用調整后的股價計算,Mcfacpr為累積股價調整乘子 */r_1=log(adjclpr)-log(lag(adjclpr); /*將所求的收益率合并到數據集ResDat.lg_shanghai中 */data ResDat.lg_shanghai(rename=(r_1=r&x);merge ResDat.lg_shanghai a;by date;data ResDat.lg_shanghai;set ResDat.lg_shanghai;if r&x=. then r&x=0;else r&

36、amp;x= r&x;%mend a;%include "SHStk.txt"run;滬市日百分比收益計算程序:options nodate nonotes nosource;data ResDat.r_shanghai(keep=date);set ResDat.Idx000001;where 1995<=year(date)<=2005;%macro a(x,y);/*求日百分比收益率*/data a(keep=date r_1);set ResDat.stk&x;where 1995&

37、lt;=year(date)<=2005; adjclpr=clpr*Mcfacpr; /*用調整后的股價計算*/r_1= (adjclpr-lag(adjclpr)/ lag(adjclpr); /*將所求的收益率合并到數據集ResDat.r_shanghai中 */data ResDat.r_shanghai(rename=(r_1=r&x);merge ResDat.r_shanghai a;by date;data ResDat.r_shanghai;set ResDat.r_shanghai;if r&x=. then r&amp

38、;x=0;else r&x= r&x;%mend a;%include "SHStk.txt"run;方法二:直接利用包括所有股票的行情分配數據集Qttndist。data return;set ResDat.Qttndist;by stkcd date;adjclpr=Mcfacpr*Clpr;lag_adjclpr =lag(adjclpr);if not first.stkcd then lagadjclpr =lag_adjclpr;return=(adjclpr-lagadjclpr)/lagadjclpr;keep

39、 stkcd lstknm date return;run;注意:方法一、二計算收益數據的存貯方式不同。以下各節內容以方法一計算的結果為基礎展開。proc transpose data=ResDat.lg_shanghai out= lg_shanghai_tr;run;data lg_shanghai_tr_1;set lg_shanghai_tr;if _n_<=220;run;proc transpose data= lg_shanghai_tr_1 out= lg_shanghai_1;data lg_shanghai_1;set lg_shanghai_1;format

40、 date yymmdd10.;run;data lg_shanghai_tr_2;set lg_shanghai_tr;if 221<=_n_<=440;run;proc transpose data= lg_shanghai_tr_2 out= lg_shanghai_2;data lg_shanghai_2;set lg_shanghai_2;run;2.3.4 收益SAS數據集轉換為EXCEL數據表data lg_shanghai_tr_3;set lg_shanghai_tr;if 441<=_n_<=660;run;proc

41、transpose data= lg_shanghai_tr_3 out= lg_shanghai_3;data lg_shanghai_3;set lg_shanghai_3;run;data lg_shanghai_tr_4;set lg_shanghai_tr;if 661<=_n_;run;proc transpose data= lg_shanghai_tr_4 out= lg_shanghai_4;data lg_shanghai_4;set lg_shanghai_4;run;proc export data= lg_shanghai_1 outfile=&

42、quot;d:ResDatlg_shanghai_1.xls"dbms=excel2000 replace;run;proc export data= lg_shanghai_2 outfile="d:ResDatlg_shanghai_2.xls" dbms=excel2000 replace;run;proc export data= lg_shanghai_3outfile="d:ResDatlg_shanghai_3.xls"dbms=excel2000 replace;run;proc expo

43、rt data= lg_shanghai_4outfile="d:ResDatlg_shanghai_4.xls"dbms=excel2000 replace;run;同樣,可以轉換其他收益SAS數據集為相應的EXCEL表。2.4 投資組合收益計算2.4.1 由最新股票信息數據集Lstkinfo創建宏文本挑選出1995年前上市的股票:%macro a(x);data a;set ResDat.Lstkinfo;if year(Lstdt)<&x; /* Lstdt為股票上市日期 */data y%eval(&x)

44、_list ;set a;a='%a('c=");"file "AlistedBefore%str(&x).txt"put a $ stkcd $ c $;%mend a;%a(1995);run;通過改變宏%a(1995)中的參數值1995,可以選擇任意年份前上市的股票。2.4.2 隨機抽股票在上面得到的1995年前上市A股票中隨機抽取20支,并創建包含這20支股票代碼的宏文本RANDOM1995.TXT。 %macro a(x);proc sql; /* sql過程創

45、建視圖 */ create view _tmp_ as select *, ranuni(5) as _ran_ from y%eval(&x)_list order by calculated _ran_;quit;data random;set _tmp_(obs = 20);drop _ran_;a='%a('c=");"file " random%str(&x).txt"put a $ stkcd $ c $;%mend a;%a(1995);ru

46、n;2.4.3 單個股票收益計算data ResDat.r_port20(keep=date);set ResDat.Idx000001;where 1995<=year(date)<=2005;%macro a(x);data a(keep=date r_1);set ResDat.stk&x;where 1995<=year(date)<=2005; adjclpr=clpr*Mcfacpr;/*用調整后的股價計算*/r_1= (adjclpr-lag(adjclpr)/ lag(adjclpr); 對上面隨機抽取20

47、支股票,計算19952005年的日百分比收益:data ResDat.r_port20 (rename=(r_1=r&x);merge ResDat.r_port20 a;by date;data ResDat.r_port20;set ResDat.r_port20;if r&x=. then r&x=0;else r&x= r&x;%mend a;%include "Random1995.txt"run;2.4.4 股票組合的隨機賦權重對抽取的20支股票隨機賦權重,構成投資組

48、合。產生均勻分布0, 1隨機數20個,然后將其標準化,使所有權重的和為1。方法一:data rv;id=1;retain _seed_ 3;do _i_ = 1 to 20;w= 0 + (1 - 0) * ranuni(_seed_);output;end;drop _seed_ _i_;data a(keep=sumw id);set rv end=obs_last;sumw+w;if obs_last=1;id=1;data b(keep=w);merge rv a;by id ;w=w/sumw;run;方法二:proc iml;rv=uniform(repeat(0,20,1); /

49、* 0為種子值,20為隨機數個數,1為隨機數列數 */sum=rv+,;b=rv/sum;sumb=b+,; /* 為驗證權數相加是否為1作準備 */print sumb; /* 看權數相加是否為1 */create b from b; /* 由矩陣b創建SAS數據集b */append from b;quit;2.4.5 組合收益計算由ResDat.R_PORT20得到數據集A,便于以后形成矩陣:data a(drop=date);set ResDat.r_port20;if _n_=1 then delete; /* 刪除全為0的第1個觀測 */array s _all_;do over

50、s;if s=. then s=0;end;proc iml;use a; read all var _num_ into xx; /* 由數據集a的所有數值變量的觀測創建矩陣xx */create xx from xx; /* 由矩陣xx創建數據集xx */append from xx;close xx;use b;read all into w;create w from w;append from w;close w;aaa=xx*w; /*矩陣xx乘向量w */create aaa from aaa; /* 由矩陣aaa創建數據集aaa */append from aaa;close

51、aaa;show names; quit;run;最后得到隨機抽取20支股票投資組合的收益數據集R_PORT20:data a;set ResDat.r_port20;if _n_=1 then delete; data r_port20;merge a aaa(rename=(col1=r_port20) ;run;第3章 固定收益證券計算清華大學經管學院 朱世武Z Resdat樣本數據: resset SAS論壇: resset 3.1 收益計算3.2 其它計算3.3 績效衡量3.4 二叉樹定價模型3.5習題收益計算內生收益率固定收益證券收益率是一

52、種利率,它能使現金流的現值等于初始投資的價格。內生收益率(Internal Rate of Return)計算公式如下:其中:P為價格($); 為第i期現金流($); y為內生收益率; n為期數。已知P,可以用試錯法求內生收益率。試錯法計算內生收益率步驟:1給出一個收益率;2用步驟1給出的收益率計算每筆現金流的現值;3加總步驟2得出的現金流現值;4將步驟3得出的現金流總現值與金融工具的價格作比較。當步驟3得出的現金流總現值比金融工具的價格大時,選擇一個比步驟1大的收益率重復以上步驟。反之,選擇一個更小的收益率進行重復。例3.1 假定一種金融工具有如表3.1的年金支付,金融工具的價格為7704美

53、元,試求它的內生收益率。表3.1 年金支付情況從現在算起的年數預計年金支付12342 0002 0002 5004 000%macro a(r);data;p=2000/(1+&r)+2000/(1+&r)*2+2500/(1+&r)*3+4000/(1+&r)*4;r=100*&r;put r= p=;%mend a;%a(0.1);%a(0.14);%a(0.12);run;本例計算程序:計算結果:r=10 p=8081.4152039r=14 p=7349.0709218r=12 p=7701.624974將

54、計算結果與7704相比較,得出12%為該金融工具的內生收益率注:上例也可以直接用SAS函數 yield=irr(1,-7704,2000,2000,2500,4000); 函數irr的用法:IRR(freq,c0,cl,.,cn),freq表示每年產生現金流次數,c0-cn為現金流。或用Excel函數IRR(A1:A5),這里A1:A5記錄現金流。計算結果一致。到期收益率到期收益率(Yield to Maturity)是與債券聯系在一起的術語,指投資者持有債券至到期日時所獲得的內生收益率。即到期收益率也是一種內生收益率。到期收益率的計算公式如下:其中:P為價格($);C為半年期的票息($);y

55、為到期收益率的一半;n為期數( );Par為面值(到期價值)。已知P,可以用試錯法求到期收益率。因此,試錯法計算到期收益率步驟:1給出一個收益率;2用步驟1給出的收益率計算每筆現金流的現值;3加總步驟2得出的現金流現值;4將步驟3得出的現金流總現值與金融工具的價格作比較。當步驟3得出的現金流總現值比金融工具的價格大時,選擇一個比步驟1大的收益率重復以上步驟。反之,選擇一個更小的收益率進行重復。試錯法計算到期收益率通用程序:data a;delete;Run;%macro a(r, n, d, par);data a1;p1=0;%do i=1 %to &n ;p1=p1+&am

56、p;amp;d/(1+&r)* &i;output;%end;data a1;set a1 end=lasobs;if lasobs;p2=&par/(1+&r)*&n;p=p1+p2;r=200*&r;r1=100*&r;n=&n;data a;set a a1;%mend a;/* %a(r, n, d, par)內的具體參數值 */proc print data=a ;run;例3.2 假定發行者每6個月支付1 000 000美元給證券持有者并連續支付30次,到期后的支付額為20 000 000美元。發行時,發行者籌得資金為19 696 024美元。計算得知,資金總成本率為5.10%(半年期)。利用通用程序,a(r, n, d, par)取值如下:%a(0.05, 30, 1000000, 20000000);%a(0.0505, 30, 1000000, 20000000);%a(0.051, 30, 1000000, 20000000);計算結果:

溫馨提示

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

評論

0/150

提交評論