SAS在金融中的应用七
第14-15周作业
1、当前市场的利率为:一年期平价债券的票面利率5%,二年期平价债券的票面利率6%,三年期平价债券的票面利率7%,假设所有的债券都是一年付息一次。给出如下计算 的sas程序。
a.试计算1、2、3年期即期收益率(假设面值为1)。
因为此三支债券都为平价债券,则这些债券现在的价格就等于面值,即为1,又易知一年期平价债券的票面利率就是1年即期利率,为5%
data a;
array b (3) b1-b3 (1 1 1);
array c (3) c1-c3 (0 0.06 0.07);
array r (3) r1-r3 (0.05 0 0);
do t=2 to 3;s=0;do n=1 to t-1;s=s+c(t)/((1+r(n))**n);end;r(t)=((1+c(t))/(b(t)-s))**(1/t)-1;
end;
proc print data=a;
var r1-r3;
run;
运行结果:
可知1、2、3年期即期收益率分别为0.05,0.060303,0.070969。
b. 假设现在有一个票面利率为5%面值为100的三年期债券,试根据即期收益率和内生收益率求出价格。
根据即期收益率求出价格为:94.6882。
data a1;
array jqr (3) jqr1-jqr3(0.05 0.060303 0.070969);
b=0;
do n=1 to 3;if n<3 then c=100*0.05;else c=100+100*0.05;b=b+c/(1+jqr(n))**n;
end;
proc print data=a1;
var b;
run;
运行结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y6PRqPsm-1630667730581)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20210604085812141.png)]
根据内生收益率求出价格为:94.7514。
/*由题意可知该债券的内生收益率就是三年期平价债券的票面利率,即为7%*/
data a4;
b=0;
do n=1 to 3;if n<3 then c=100*0.05;else c=100+100*0.05;b=b+c/(1+0.07)**n;
end;
proc print data=a4;
var b;
run;
c.试计算一年后发行的一年期息票债券的远期利率和二年后发行的一年期息票债券的远期利率。
一年后发行的一年期息票债券的远期利率:为8.118%
data a2;
array r(3) r1-r3 (0.05 0.060303 0.070969);
b1=1/(1+r1)-1/(1+r3)**3;
b=0;
do n=2 to 3;b=b+1/(1+r(n))**n;
end;
yqr=b1/b;
proc print data=a2;
var yqr;
run;
运行结果:
二年后发行的一年期息票债券的远期利率:为9.2624%。
data a3;
array r(3) r1-r3 (0.05 0.060303 0.070969);
b1=1/(1+r2)**2-1/(1+r3)**3;
b=1/(1+r(3))**3;
yqr=b1/b;
proc print data=a3;
var yqr;
run;
运行结果:
- Excel数据集sjk6-3给出银行客户的财务指标数据x1-x12、以及客户是否违约的记录y,其中y=1表示客户违约、y=0表示客户不违约。试利用这个数据集构建信用风险度量模型,要求在模型构建时,预测变量的选择至少采用两种方法,模型构建要求采用判别分析、Logistic回归和朴素贝叶斯分类法三种方法,并比较所构建模型的预测准确率。给出所用到的SAS程序。
proc import out=cwzbsjDatafile='D:\mySASDATA\第14-15周\sjk6-3.xls'DbmS=xls replace;getnames=yes;
run;/*导入数据*/
/*预测变量的选取:t检验法*/
proc ttest cochran data=cwzbsj ;class y;
run;
/*根据程序运行结果,t检验出的在违约企业和非违约企业之间有良好区分度的变量有x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11*/
proc corr data=cwzbsj;
var x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11;
run;
/*通过相关系数矩阵的初步分析,这些变量之间的相关系数均较小,都不超过0.15,且基本小于0.1,
说明通过ttest过程对变量的筛选达到的效果还是比较好的*/
/*预测变量的选取:信号的噪音差方法*/
/*由上表易知x1为负指标,x2-x11为正指标*/
data a;
set cwzbsj;
do x0=-207.9 to 31.7 by 0.1;/*循环变量初值取x1的最小值,终值取x1的最大值,步长取0.1,因为数据量较大,阈值只保留一位小数*/output;
end;
data a1;
set a;
if x1>x0 and y=1 then xh=1;/*若对违约企业发出警报,记作一个信号*/
if x1>x0 and y=0 then zy=1;/*若对非违约企业发出警报,记作一个噪音*/
run;
data a2;
set a1;
if xh=1;
proc sort data=a2;
by x0;
proc freq data=a2;
table x0*xh/out=b1;
run;
data c1;
set b1;
xhb=count/228;/*计算指标的信号比*/
keep x0 xhb;
run;
data a3;
set a1;
if zy=1;
proc sort data=a3;
by x0;
proc freq data=a3;
tables x0*zy/out=b2;
data c2;
set b2;
zyb=count/6467;/*计算指标的信号噪音差*/
keep x0 zyb;
data a4;
merge c1 c2;
by x0;
xhzyc=xhb-zyb;/*计算指标的信号噪音差*/
proc sort data=a4;
by descending xhzyc;
data a5;
set a4;
if _n_=1;/*只保留数据a4中信号噪音差最大的那个观测*/
proc print data=a5;
var x0 xhb zyb xhzyc;
run;
%macro xhzyf(sjj,zb,min,max,wyzs,fwyzs);
data a1&sjj.;
set cwzbsj;
do x0&zb.=&min. to &max. by 1;output;
end;
data a1&sjj.;
set a1&sjj.;
x00&zb.=x0&zb./10;
if x&zb.<=x00&zb. and y=1 then xh=1;/*若对违约企业发出警报,记作一个信号*/
if x&zb.<=x00&zb. and y=0 then zy=1;/*若对非违约企业发出警报,记作一个噪音*/
run;
data a2&sjj.;
set a1&sjj.;
if xh=1;
proc sort data=a2&sjj.;
by x00&zb.;
proc freq data=a2&sjj.;
table x00&zb.*xh/out=b1&sjj.;
run;
data c1&sjj.;
set b1&sjj.;
xhb=count/&wyzs.;/*计算指标的信号比*/
keep x00&zb. xhb;
run;
data a3&sjj.;
set a1&sjj.;
if zy=1;
proc sort data=a3&sjj.;
by x00&zb.;
proc freq data=a3&sjj.;
tables x00&zb.*zy/out=b2&sjj.;
data c2&sjj.;
set b2&sjj.;
zyb=count/&fwyzs.;/*计算指标的信号噪音差*/
keep x00&zb. zyb;
data a4&sjj.;
merge c1&sjj. c2&sjj.;
by x00&zb.;
xhzyc=xhb-zyb;/*计算指标的信号噪音差*/
proc sort data=a4&sjj.;
by descending xhzyc;
data a5&sjj.;
set a4&sjj.;
if _n_=1;/*只保留数据a4中信号噪音差最大的那个观测*/
proc print data=a5&sjj.;
var x00&zb. xhb zyb xhzyc;
run;
%mend xhzyf;
%xhzyf(2,2,-399,1106,228,6467);
%xhzyf(3,3,-335,2051,228,6467);
%xhzyf(4,4,-2656,1261,228,6467);
%xhzyf(5,5,-5512,337,226,6433);
%xhzyf(6,6,-437,1338,228,6467);
%xhzyf(7,7,-726,-18,228,6467);
%xhzyf(8,8,-3659,5240,228,6467);
%xhzyf(9,9,-1455 ,712,228,6467);
%xhzyf(10,10,-136,2537,228,6467);
%xhzyf(11,11,-331,2165,228,6467);
run;
相关系数图:
指标表格:
指标 | Y | 个数 | 均值 | 标准差 | 标准误差 | 最小值 | 最大值 | 指标属性 |
---|---|---|---|---|---|---|---|---|
x1 | 0 | 6467 | -13.8333 | 77.6957 | 0.9662 | -207.9 | 31.717 | 负指标 |
x1 | 1 | 228 | 35.82 | 91.8797 | 6.0849 | -207.9 | 31.717 | 负指标 |
x2 | 0 | 6467 | -8.5341 | 52.0477 | 0.6472 | -39.942 | 110.6 | 正指标 |
x2 | 1 | 228 | -15.8295 | 45.6717 | 3.0247 | -39.942 | 110.6 | 正指标 |
x3 | 0 | 6467 | -7.1326 | 53.9233 | 0.6705 | -33.519 | 205.1 | 正指标 |
x3 | 1 | 228 | -15.9612 | 41.7351 | 2.764 | -33.519 | 205.1 | 正指标 |
x4 | 0 | 6467 | 16.1294 | 61.1958 | 0.761 | -265.6 | 126.1 | 正指标 |
x4 | 1 | 228 | -0.8547 | 81.5155 | 5.3985 | -265.6 | 126.1 | 正指标 |
x5 | 0 | 6433 | -77.4337 | 199.6 | 2.4887 | -551.2 | 33.721 | 正指标 |
x5 | 1 | 226 | -117.5 | 229.4 | 15.2584 | -551.2 | 33.721 | 正指标 |
x6 | 0 | 6467 | 11.8526 | 64.4133 | 0.801 | -43.77 | 133.8 | 正指标 |
x6 | 1 | 228 | 0.3308 | 58.2332 | 3.8566 | -43.77 | 133.8 | 正指标 |
x7 | 0 | 6467 | -16.7364 | 17.111 | 0.2128 | -72.6267 | -1.7587 | 正指标 |
x7 | 1 | 228 | -22.0489 | 22.3903 | 1.4828 | -72.6267 | -1.7587 | 正指标 |
x8 | 0 | 6467 | 90.4248 | 318.2 | 3.9567 | -365.9 | 524 | 正指标 |
x8 | 1 | 228 | -51.8633 | 302.4 | 20.0245 | -365.9 | 524 | 正指标 |
x9 | 0 | 6467 | 39.9497 | 72.2066 | 0.8979 | -145.5 | 71.1395 | 正指标 |
x9 | 1 | 228 | -51.0004 | 105.7 | 6.9999 | -145.5 | 71.1395 | 正指标 |
x10 | 0 | 6467 | 19.4053 | 84.1508 | 1.0464 | -13.6113 | 253.7 | 正指标 |
x10 | 1 | 228 | -9.3904 | 27.3118 | 1.8088 | -13.6113 | 253.7 | 正指标 |
x11 | 0 | 6467 | 25.1507 | 65.9662 | 0.8203 | -33.174 | 216.5 | 正指标 |
x11 | 1 | 228 | 11.7831 | 55.8199 | 3.6968 | -33.174 | 216.5 | 正指标 |
各指标的阈值和信号噪音差:
指标 | 指标阈值 | 信号比 | 噪音比 | 信号噪音差 |
---|---|---|---|---|
x1 | -173.5 | 0.77193 | 0.84846 | -0.076532 |
x2 | -3.3 | 0.78509 | 0.73048 | 0.05461 |
x3 | -33.5 | 0.7807 | 0.70744 | 0.073264 |
x4 | -24.2 | 0.51316 | 0.45245 | 0.060707 |
x5 | -0.3 | 0.80088 | 0.71568 | 0.0852 |
x6 | -21.1 | 0.8114 | 0.73434 | 0.07706 |
x7 | -40 | 0.22368 | 0.12077 | 0.10292 |
x8 | -135.2 | 0.4386 | 0.23798 | 0.20062 |
x9 | -145.5 | 0.55263 | 0.12896 | 0.42367 |
x10 | -13.6 | 0.96491 | 0.84212 | 0.12279 |
x11 | -15.7 | 0.57018 | 0.44333 | 0.12685 |
根据此表发现x1-x11这些指标对区分企业是否违约时效果都不太好。
将数据集cwzbsj随机地分成训练样本组cwzbsjxl和检验样本组cwzbsjjy:
data m;
set cwzbsj;
k=uniform(131);
proc sort data=m;by y k;
data cwzbsjxl cwzbsjjy;
set m;
drop k;
if int(_n_/2)-_n_/2=0 then output cwzbsjxl;
else output cwzbsjjy;
run;
采用判别分析构建模型:
proc discrim data=cwzbsjxl testout=w testdata=cwzbsjjy;
class y;
var x1-x11;
run;
/*利用逐步判别分析法,选择建立判别分析模型的指标*/
proc stepdisc data=cwzbsjxl method=sw;class y;
run;
/*此方法发现x11作用不大*/
结果图:
此模型对非违约企业进行判断出错的概率为18.41%,对违约企业判断出错的概率为31.86%。
Logistic回归构建模型:
/*Logistic回归*/
proc logistic descending data=cwzbsjxl;
model y=x1-x11;/* output out=u DFBETAS=ALL*/
run;
修正的朴素贝叶斯方法:
/*由之前的噪音差法,勉强选出x2,x3,x5,x9x10这几个指标*/
data bys;
set cwzbsjxl;
if x2<=-3.3 then x2p1=0.785;
else x2p1=0.215;
if x2<=-3.3 then x2p0=0.73;
else x2p0=0.27;
if x3<=-33.5 then x3p1=0.781;
else x3p1=0.219;
if x3<=-33.5 then x3p0=0.707;
else x3p0=0.293;
if x5<=-0.3 then x5p1=0.8;
else x5p1=0.2;
if x5<=-0.3 then x5p0=0.716;
else x5p0=0.284;
if x9<=-145.5 then x9p1=0.553;
else x9p1=0.447;
if x9<=-145.5 then x9p0=0.129;
else x9p0=0.871;
if x10<=-13.6 then x10p1=0.965;
else x10p1=0.034;
if x10<=-13.6 then x10p0=0.842;
else x10p0=0.158;
p1=228*x2p1*x3p1*x5p1*x9p1*x10p1/6755;
p0=6467*x2p0*x3p0*x5p0*x9p0*x10p0/6755;
chap=p0-p1;
run;
data byszy;
set bys;
if y=0 and chap>0 then zyjg=1;
if y=0 and chap<=0 then zyjg=0;
if y=1 and chap>0 then zyjg=0;
if y=1 and chap<=0 then zyjg=1;
run;
proc print data=byszy;
var y chap zyjg;
run;
/*由结果可知其对一个企业是否违约判断的总正确率为93%左右*/
lse x10p0=0.158;
p1=228x2p1x3p1x5p1x9p1x10p1/6755;
p0=6467x2p0x3p0x5p0x9p0x10p0/6755;
chap=p0-p1;
run;
data byszy;
set bys;
if y=0 and chap>0 then zyjg=1;
if y=0 and chap<=0 then zyjg=0;
if y=1 and chap>0 then zyjg=0;
if y=1 and chap<=0 then zyjg=1;
run;
proc print data=byszy;
var y chap zyjg;
run;
/由结果可知其对一个企业是否违约判断的总正确率为93%左右/
这三个模型中,总的来说,修正的朴素贝叶斯分类法效果较好。
SAS在金融中的应用七相关推荐
- SAS在金融中的应用六
1.某种债券的期限为2年,面值1000元,票面利率5%,每月支付一次利息,假设投资者要求的必要收益率为从2%变化到10%, 请求出不同情况下的债券价格,并作出债券价格随利率变化的图形,写出sas程序. ...
- SAS在金融中的应用四
1.导入上证综指.csv,计算上证综指的单期日对数收益率,做两张图: 一是日收益率随时间变化的图; 二是日收益率数据的经验累积概率分布图与正态分布累积概率分布图.判断日收益率数据的波动特征,以及日收益 ...
- SAS在金融中的应用二
作业1 某人需贷款300万元,银行固定利率贷款的名义年利率为4.4%,复利时间单位为月,如果每月最多还款12500元,那么贷款期限应多长? proc loan start=2015;fixed amo ...
- SAS在金融中的应用五
根据穷举法 (选择3只股票,做穷举法)和二次规划(7只股票)两种方式求给定收益情况下的最优投资组合,并做出最优投资组合均值和方差的有效前沿边界. /*根据穷举法 (选择3只股票,做穷举法)和二次规划( ...
- SAS在金融中的应用三
第一题: 导入数据上证综指,试计算2020期间各月上证综指的单期百分比收益率,算术平均收益率 和几何平均收益率,以及财富指数.(要求:采用retain语句和transpose语句两种形式) /*导入数 ...
- SAS在金融中的应用一
第一题: 采用恰当的input语句输入数据.如下数据集. data a; length b$22 ; infile 'D:\mySASDATA\2-3zhou\1.txt' encoding=utf8 ...
- 关于计算机类的SAS论文,浅析SAS软件教学中内容与形式的结合论文
浅析SAS软件教学中内容与形式的结合论文 摘要:SAS统计软件强大的数据管理和统计分析功能,在社会实践和科研领域得到了广泛地应用.熟练应用SAS软件成为统计师等专业技术人员的基本要求,也是各统计专业大 ...
- 好书推荐《R语言在定量金融中的应用》
给大家推荐一本R语言在定量金融方面的好书,是我老师编写的,我也非常有幸参与到这本书的编写过程中.这本书2015年5月份正式上线,其实从2013年底开始写的,经历大约两年的时间.这本书一出来就收到了很大 ...
- linux六种进程状态,Linux操作系统中进程的七种状态
Linux操作系统中进程的七种状态 发布时间:2018-05-07 20:43, 浏览次数:741 , 标签: Linux 1 Linux中进程的七种状态(1)R运行状态(runing):并不意味着进 ...
最新文章
- torch view view_as
- JSP简单练习-EL获取表单数据
- Five bugs in five minutes...
- Android NFC读取电子标签
- 使用Spring跟踪应用程序异常
- [渝粤教育] 江西科技师范大学 旅行社经营管理 参考 资料
- Mapper XML Files详解
- flume---2中channel file和memory
- [转贴]SQL2005数据类型
- 使用Presto SQL一些常见问题总结
- redis做几十万待办列表_用待办规划我的一天 | 指南 x 待办清单
- Unity3D视图介绍
- 水经注全球离线地图数据3.0即将发布
- (2)香橙派+apache2与php+天猫精灵=自建平台语音支持--香橙派操作系统安装
- vba手机号码归属_手机号码归属地查询
- 蒸汽流量计算软件_网上难得学到的知识!涡街流量计选型设计有诀窍
- Echarts 用GeoJson数据绘制地图
- 计算机的了解以及组装
- 青年是科学的未来:JGG诚聘青年编委
- 顶点片元Shader(Unity)