sas金融计算清华朱世武数据集char14
- 格式:doc
- 大小:88.00 KB
- 文档页数:13
SAS中计算总和或者计算总数的方法在SAS中,计算数据总和或者计算数据总数有多种方法。
下面将介绍一些常用的方法:1. 使用PROC MEANS:PROC MEANS是用于计算数据统计指标的过程。
对于计算数据总和,我们可以使用SUM选项。
例如,以下代码将计算变量"var"的总和和总数:```proc means data=dataset sum n;var var;run;```其中,"dataset"是数据集名称,"var"是变量名称。
SUM选项用于计算总和,N选项用于计算总数。
2. 使用PROC SQL:PROC SQL是一种在SAS中进行SQL查询的过程。
通过使用SUM函数和COUNT函数,我们可以计算总和和总数。
例如,以下代码将计算变量"var"的总和和总数:```proc sql;select sum(var) as total_sum, count(var) as total_countfrom dataset;quit;```其中,"dataset"是数据集名称。
SUM函数用于计算总和,COUNT函数用于计算总数。
3.使用DATA步:可以使用DATA步编写SAS代码来计算数据总和和总数。
以下是一个示例代码:```data dataset_summary;set dataset;sum_var + var;count_var + 1;run;proc print data=dataset_summary;run;```在这个例子中,我们通过DATA步将数据集中的每个观测值的"var"变量加到"sum_var"变量中,并将每个观测值计数加到"count_var"变量中。
然后使用PROC PRINT将这些变量的结果输出。
4. 使用SUMMARY步:SUMMARY步是用于创建摘要报告的过程。
SAS金融计算清华朱世武数据集10r_1=r_1+r_2;if r_1=. Then r_1=0;else r_1=r_1;data stoindiv.r_shenzhen(rename=(r_1=r&x)); merge stoindiv.r_shenzhen a;by date;data stoindiv.r_shenzhen;set stoindiv.r_shenzhen;if r&x=. then r&x=0;else r&x= r&x;%mend a;%include "D:\基于SAS系统的金融计算光盘\Compufin\宏文本\深市全部A股.txt";run;2.3.4收益SAS数据集转换为EXCEL数据表proc transpose data=stoindiv.lg_shanghai out=stoindiv.lg_shanghai_tr; run;data stoindiv.lg_shanghai_tr_1;set stoindiv.lg_shanghai_tr;if _n_<200;run;proc transpose data= stoindiv.lg_shanghai_tr_1 out= stoindiv.lg_shanghai_1; data stoindiv.lg_shanghai_1;set stoindiv.lg_shanghai_1;format date yymmdd10.;run;set stoindiv.lg_shanghai_tr;if 201<=_n_<400;run;proc transpose data= stoindiv.lg_shanghai_tr_2 out= stoindiv.lg_shanghai_2; data stoindiv.lg_shanghai_2;set stoindiv.lg_shanghai_2;format date yymmdd10.;run;data stoindiv.lg_shanghai_tr_3;set stoindiv.lg_shanghai_tr;if 401<=_n_;11run;proc transpose data= stoindiv.lg_shanghai_tr_3 out= stoindiv.lg_shanghai_3;set stoindiv.lg_shanghai_3;format date yymmdd10.;run;proc export data=stoindiv.lg_shanghai_1outfile="d:\基于sas系统的金融计算光盘\compufin\lg_shanghai_1.xls"dbms=excel2000 replace;run;proc export data=stoindiv.lg_shanghai_2outfile="d:\基于sas系统的金融计算光盘\compufin\lg_shanghai_2.xls"dbms=excel2000 replace;run;proc export data=stoindiv.lg_shanghai_3 outfile="d:\基于sas系统的金融计算光盘\compufin\lg_shanghai_3.xls"dbms=excel2000 replace;run;同样,可以转换其他收益SAS数据集为相应的EXCEL表。
15.2.1 基础数据集/*创建数据集bonds03328 */data compufin.bonds03328(label='2003年3月28日上交所15只附息国债收盘价');input name $10. enddate fre coupond price du;informat enddate yymmdd10.;format enddate yymmdd10.;labelname='债券名称'enddate='到期日'fre='年付息频率'coupond='票面利息'price='市场价格'du='久期';cards;96国债08 2003-11-01 1 8.56 107.39 0.5896国债06 2006-06-14 1 11.83 138.17 2.5699国债05 2007-08-20 1 3.28 105.17 4.0097国债04 2007-09-05 1 9.78 135.51 3.6502国债14 2007-10-24 1 2.65 101.52 4.2101国债03 2008-04-24 1 3.27 106.17 4.5101国债15 2008-12-18 1 3.00 102.52 5.1702国债10 2009-08-16 1 2.39 100.19 5.7699国债08 2009-09-23 1 3.30 105.07 5.7002国债15 2009-12-06 1 2.93 102.27 5.9601国债10 2011-09-25 1 2.95 102.49 7.3201国债12 2011-10-30 1 3.05 102.96 7.3902国债03 2012-04-18 1 2.54 101.99 7.8102国债13 2017-09-20 2 2.60 100.07 11.7801国债07 2021-07-31 2 4.26 115.26 12.83;run;15.2.2 现金流分解将某一天(以2003年3月28日为例)债券的现金流进行分解,产生不同债券在以后不同时刻的现金流。
[考研外校] 清华大学金融专业课程设置(研究生)教师:裴宇红课程1:国际金融简介:在金融一体化及新信息技术条件下,建立分析现代金融宏观框架,充分了解外汇市场、货币市场、资本市场和金融衍生证券之间的关联性,掌握国际金融原理及我国在国际金融领域的具体实践。
着重培养学生独立思考、正确处理国际金融业务的能力。
内容:虚拟经济对金融的深远影响;外汇、国际结算、外汇交易等知识;货币市场、外汇期货、外汇期权、金融互换等基本衍生金融工具定价关系以及在外汇风险管理方面的运用;国际收支及不平衡调节;经济变量之间平价关系与汇率预测;国际金融市场、国际资本流动、国际货币体系及国际金融组织等。
教材:国际金融原理,张陶伟,清华大学出版社参考书:1.期权、期货及其他衍生产品,华夏出版社,2.Sercu, P., and R. Uppal, International Financial Markets and the Firm3:《国际金融市场》人大出版社教师:张丽宏课程2:应用随机过程简介:主要内容包括:概率论基础;Possion 过程;Markov过程;平稳过程;Brown运动;停时与鞅论;随机积分;随机微分方程等教师:陈涛涛课程3:国际经济学简介:《国际经济学》课程借鉴MIT斯隆商学院和哈佛商学院开设类似课程的方法,全程采用十几个真实的国家案例,试图通过全新的案例教学方式,为学生们提供一个体会国际经济基本原理在真实世界中的作用方式与机制的机会。
课程内容分为“宏观经济分析”“国际贸易”“发展中国家发展战略”“发达国家的经济问题”以及“国际经济一体化”五个部分。
所选案例既包括美国、德国、法国等发达国家,也包括中国、韩国和墨西哥等发展中国家。
课程旨在帮助参加学习的学生提高对国际经济形势及其变化的感悟能力和培养一定程度的分析能力。
1.本课程采用10余个哈佛案例展开教学工作2.理论知识可以参看:Paul Krugman and Maurice Obstfeld's International Economics, Theory and Policy, Addison-Wesley, 6th Edition.教师:宋逢明课程4:金融工程案例分析教师:王桂琴课程5:管理沟通简介:This course is practice-oriented and the class language is English so that students' Englishwriting and speaking ability hopefully can be improved. It is designed to help students think strategically about communication goals and practice the skills to carry out the goals. It will help students improve their communication skills and acquire the expertise to prepare memoranda and other forms of written communication. Students will learn how to deliver presentations effectively and understand them.教师:赵冬青课程6:商业银行管理简介:商业银行是重要的金融中介机构,商业银行从事业务获取收益的过程就是接受风险和管理风险的过程,所以商业银行管理的核心问题是风险以及进行风险管理的方法和工具。
清华大学经济管理学院硕士生导师简介-朱世武朱世武金融系副教授办公室伟伦楼321凯程教育是五道口金融学院和清华经管考研黄埔军校,在2014年,凯程学员考入五道口金融学院28人,清华经管11人,五道口状元武xy出自凯程, 在2013年,凯程学员考入五道口金融学院29人,清华经管5人,状元李少h出在凯程, 在凯程网站有很多凯程学员成功经验视频,大家随时可以去查看. 2016年五道口金融学院和清华经管考研保录班开始报名!个人简介研究成果研究项目朱世武,自2001至今,担任清华大学经济管理学院副教授。
1983年,他毕业于河南师范大学数学专业,并获得理学学士学位。
1987年,在武汉大学获得统计学专业的理学硕士学位。
1999年,赴上海财经大学学习,并获得该校数量经济学专业的博士学位。
1999年至2001年在清华大学经济管理学院作博士后研究。
他教授的主要课程包括:金融数据库、金融统计学、实证金融学、数据模型与决策、统计分析软件。
朱世武教授研究的主要领域是:固定收益、风险管理、金融计算与建模、金融数据库。
在从事的所有科研项目里,朱世武教授主要担任项目负责人。
他重点研究的项目包括:“随机边缘模型的统计分析”,“国家债务管理和利率研究”,“金融工程的理论,技术和方法”,“违约相关性度量与信用衍生工具定价研究”—国家自然科学基金委员会;“中国股票市场的证券模型”,“中国股票市场结构性指数设计”—中国证监会;“中信实业银行的私人金融模型”—中信实业银行;“基于微网格的网格计算研究,基础研究”,“度量违约相关性的研究”,“中国资本市场股权风险溢价的实证研究”—清华大学;“中国资本市场的股权风险溢价研究”—中国国家社会科学基金;“中国金融研究数据库”—清华211项目;“中国银行间债券市场期限结构最优化模型”—中国外汇交易中心和全国银行间同业拆借中心;“浙江财经学院金融实验室金融数据项目”—浙江财经学院;“浙江万里学院金融实验室金融数据项”—浙江万里学院;“人民币市场化利率中长期预测模型”—中国人寿资产管理有限公司;“农村金融市场风险管理研究”—香港汇丰银行;“青藏高原矿产资源开发利用战略研究”—中国地质大学(北京)地质调查研究院。
14.4.3 组合构建/*挑选1997年以前发行的A股股票,用到数据集:行情数据集compufin.quot和股本数据集compufin.shares*//*选择行情数据*/Data quot;length hexcd $6.;Set compufin.quot;Keep date clpr hexcd; /*选择保留变量, date为日期,clpr为收盘价*/if substr(hstocd,3,1)=6 or substr(hstocd,1,5)=21000;hexcd=substr(hstocd,3,6); /*将行情数据集中的股票代码转换为交易所最新代码*/ label hexcd='最新交易所代码';proc sort data=quot;by hexcd date;run;/*选择流通股本数据*/data shares;length hexcd $6.;set compufin.shares;keep date pubflt hexcd; /*选择变量,date为日期,pubflt为观测到的流通股本数*/ hexcd =substr(hstocd,3,6); /*转换股本观测数据集中的股票代码*/proc sort data=shares;by hexcd date;run;/*合并行情与股本数据*/data biao;merge quot shares;by hexcd date;run;/*对每个交易日都填上流通股本数据*/data a;set biao;if pubflt^=. then y=1;sumy+y; /*创建新变量sumy, 为变量y的累加变量,即对每支股票,每一次股本变动变量sumy都加上1, 后面要用到(实际上sumy还是起到了加标识的作用,它是站在整个数据集的角度上加的)*/data b;set a;keep sumy pubflt;if pubflt^=.; /*if保证了只保留数据集A中pubflt不等于.时的变量sumy和pubflt */run;data c;set a;drop pubflt; /*删除数据集A中的变量pubflt, 方便下面数据集c和b合并时,将股本填全,这是个很重要的技巧*/data biao2 (drop=y sumy);merge c b;by sumy;run;/*上面这里,在数据并不一一对应的情况下(同时c中没有pubflt这一变量),在新生成的biao2中,pubflt的值是对应于b中sumy相同的那个pubflt值。
这一过程实际上是为了用个别的pubflt填全整个数据集,这一实现方法需要注意。
同样的目的也可以通过retain等语句加以实现*//*生成最终表zongbiao*/data zongbiao;set biao2;where year(date)=1996; /*日期可以灵活控制,但最好用where语句*/proc sort data=zongbiao;by hexcd date;run;/*计算1996年每支股票的平均流通市值*/data mv(keep=clpr pubflt date hexcd mv);set zongbiao;mv=clpr*pubflt;proc means data=mv noprint;var mv;by hexcd;output out=mv mean=m_mv;run;/*由此得到的数据集mv, 其中有我们随机抽股票和按1996年平均流通市值抽股票需要的变量:股票代码hexcd和1996年各股票平均流通市值m_mv *//*选取股票方法一:随机抽取20支股票*/data mv;set mv;if substr(hexcd,1,1)^=0 and substr(hexcd,4,1)=6; /*只对复权价逻辑库stoindif中的股票抽取*/proc sql;create view _tmp_ asselect *, ranuni(1055) as _ran_ from mvorder by calculated _ran_;quit;data stocks;set _tmp_(obs = 20);drop _ran_;a='%a(';c=");";file " d:\genstock.txt";put a $ hexcd $ c $;run;/*选取股票方法二:按1996年股票平均流通市值m_mv均匀选取20只股票*/proc sort data= mv out=a;by m_mv;data b;set a nobs=nobs;n=round(nobs/20);t=_n_ - int( _n_ / n)*n;a='%a(';c=");";file " d:\genstock1.txt";put a $ hexcd $ c $;run;/* 将随机抽取的20支股票合并到一个数据集中*/data price;set stoindif.a1a0001;keep date;where 1997<=year(date)<=2000;%macro a(x);data a;set stoindif.a&x;where 1997<=year(date)<=2000;keep date clpr_r;data price;merge price a(rename=(clpr_r=p&x));by date;%mend a;%include "d:\genstock.txt";run;/*对抽取的20支股票随机赋权重:选择2000年最后一个交易日作为购买股票组合的日期,实际上是2000年12月29日*/data tprice;set price end=lastob; /*end为选项,lastob为自动变量*/if lastob=1; /*选择数据集price中的最后一个观测值,即2000年12月29日的数据*/drop date;run;proc iml;rv=uniform(repeat(0,20,1)); /*产生1列[0, 1]均匀分布的随机数20个*/sum=rv[+,]; /*向量rv列求和*/b=rv/sum; /*计算权重向量b */b=b#1000000; /*假设投资总额为100万元时,计算组合购买每去股票的金额*/use tprice;read all into tprice;b=b/t(tprice); /* t(tprice)为矩阵tprice转置,向量b为以2000年12月29日股票的收盘价为标准组合购买每支股票的股数*/create weight from b; /*由向量b创建的SAS数据集weight为购买每支股票的股数*/append from b;close weight;quit;/*计算1997~2000年3年间投资组合每一交易日的价值和对数收益率*/data dateinfo;set price;keep date; /*取数据集price中的日期变量作为下面计算出投资组合价值后的合并变量*/data return; /*去掉日期变量date,以便下面的矩阵运算*/set price;drop date;proc iml;use return;read all into clpr; /*创建组合中股票的价格矩阵clpr */close return;t=nrow(clpr); /*矩阵clpr的列数,实际上是交易日数*/do _i_=1 to t;do _j_=1 to 20;if clpr[_i_,_j_]=. then clpr[_i_,_j_]= clpr[_i_-1,_j_]; /*如果某支股票某一交易日没有交易的话,用前一个交易日的价格来替代该交易日价格*/end;end;use weight; /*创建组合中购买每支股票股数矩阵*/read all into weight;close weight;p_value = clpr * weight; /*计算组合的价值*/create p_value from p_value; /*创建组合价值SAS数据集p_value */append from p_value;close p_value;quit;data p_value (rename=(col1=p_value));merge dateinfo p_value; /* 为计算得出的组合价值添加交易日变量*/data compufin.return; /*计算各交易日组合的对数收益率*/set p_value;return=log(p_value)-log(lag(p_value));if return=. then delete;drop p_value;run;14.4.4 历史模拟法实现程序/* 创建宏变量nobs,其值为2000年的交易日数,即数据集a中的观测数*/data a;set compufin.return;where year(date)=2000;obs=_n_;keep date obs;run;data a;set a nobs=nobs;call symput('nobs', nobs); /* 创建宏变量nobs,其值为数据集a中的观测数*/%put &nobs; /* 显示宏变量nobs的值,这里为239 */run;data return;merge compufin.return a;by date;if obs=. Then obs=0;run;options nodate nonotes nosource; /* 系统选项:不在log窗口输出日期、注释和原程序*/ %macro calvar(days, prob, aa);%do i=1 %to &nobs; /* 计算2000年每个交易日的VaR值, 这里的宏变量nobs的值是前面得到的239 */data a;set return;if obs<&I; /* 计算某日的VaR时,选择该日(即2000年的第i日)前的历史数据*/ proc sort data=a out=b;by descending date;data b;set b;if _n_<=&days;/* 选择该日期(即2000年的第i日)前历史数据的数据,如480个或720个数据用于估计该日期的VaR */proc sort data=b;by return; /* 对选择的历史数据按收益率排序*/data c(keep=return rename=(return=var));set b;n=int(&days*&prob);if _n_ = n;/* 选择prob分位数,即为相应的VaR ,实际的VaR为相应的收变益率乘以100万元,这里为了简单起见,没有乘100万,但不影响结果*/data d;set return;where obs=&I; /* 选择所计算VaR值日期(即2000年的第i日)的实际收益率数据*/ data e;merge d c; /* 将用历史数据计算的风险值和该日的实际值合并到一个数据集中,以便后面的事后检验*/data e;set e;if return<var then flag=1; /* 如果实际值小于该日的VaR值时,设变量flag的值为1,否则为0 */else flag=0;proc append base=compufin.his&days&aa data=e;/* 将计算出2000年每个交易日的VaR值和实际值合并到同一个数据集his2000中。