SAS在金融中的应用一

第一题:
采用恰当的input语句输入数据。如下数据集。

data a;
length b$22 ;
infile 'D:\mySASDATA\2-3zhou\1.txt' encoding=utf8;
input a b$ c d$;
run;
proc print data=a;
var a b c d;
run;

第二题:

data shuju11;
set Mylib.shuju1;
rename var1=code var2=name var3=date var4=close;
label var1="编号" var2="简称" var3="日期" var4="收盘价";
run;
data shuju12;/*计算日百分比收益率*/
set shuju11;
closelag=lag(close);
closedif=dif(close);
d_return=(closedif/closelag)*100;
label closelag="上期收盘价" closedif="价差" d_return="日百分比收益率%";
run;
data shuju21;
set Mylib.shuju2;
rename var1=code var2=name var3=date var4=zdf var5=scu var6=volume;
label var1="编号" var2="简称" var3="日期" var4="涨跌幅" var5="成交额" var6="持仓量";
run;
data shuju3;/*使用drop语句保存日收益率,日期*/
set shuju12;
drop code name closelag close closedif;
run;
data shuju4;/*使用keep语句保存日收益率,日期*/
set shuju12;
keep date d_return;
run;
data shuju5;/*使用merge 语句将两个数据集合并*/
merge shuju11 shuju21;
run;
data shuju6;/*提取每个月末的数据*/
set shuju11;
y=year(date);
m=month(date);
week=week(date);
run;
proc sort data=shuju6;
by y m;
run;
data shuju7;
set shuju6;
by y m;
if last.m;
run;
data shuju8;/*计算月度收益率*/
set shuju7;
closelag=lag(close);
closedif=dif(close);
m_return=(closedif/closelag)*100;
run;

第三题

data a;  /*利用内含报酬率法*/                                                                                                                          rA=intrr(1,-1000,100,100,300,300,400,400);
rB=intrr(1,-1000,250,300,300,300,400);                                                                                                  
better="A";                                                                                                                               
label better="较好的方案";                                                                                                              
	if rA>rB then better="A";                                                                                                               
 	else better="B"; 
run;
 data b;/*利用净现值法*/ 
 NPVA=netpv(0.08,1,-1000,250,300,300,300,400); 
 NPVB=netpv(0.08,1,-1000,100,100,300,300,400,400);
 better="A";                                                                                                                               
label better="较好的方案";                                                                                                              
	if NPVA>NPVB then better="A";                                                                                                               
 	else better="B"; 
run;                                       

第四题:

data c1;
PV=compound(.,20,0.06,10);
PMT=saving(200000,.,0.055/12,120);
run;

第五题:

data a;
do i=0 to 100 by 1;
x=normal(i);
y=uniform(i);
n=i+1;
x1=normal(n);
y1=ranpoi(i,abs(x));
z=uniform(n);
x2=abs(x);
x3=log(x2);
x4=floor(x);
x5=ceil(x);
x6=x-lag(x);
x7=round(x,0.1);
x8=probnorm(x);
output;
end;
run;

第六题:

data wangquan;
do n=2 to 1000;
sum=0;
	do m=1 to n;
		if mod(n,m)=0  and m<n then do;
	         sum=sum+m;
		end;
	end;
	if sum=n then output;
end;
label sum="完全数";
run;

文章内容仅供参考

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值