p=p+Ct/(Math.pow(1+r,t));
p=p+(Ct+100)/(Math.pow(1+r,T));
System.out.println(p);
}
}
测试结果
教师评价
《金融计算》实验报告
开课实验室:
实训楼B-206
年级专业班
2013级信息与计算科学
日期
20160325
实验项目名称
普通股定价算法
指导教师
李峰
一、实验目的
掌握普通股票定价公式,并能够进行实际应用。
二、实验内容
案例:
假设贴现率5%,每期的股息如下图所示,计算该股票的价格?
三、源程序清单
publicclassjisuan{
publicstaticvoidmain(String[]args){
doublev=0;//股票价格
intt;
doubler=0.05;//贴现率
doubleT=7;//期限
double[]Ct={0.1,0.2,0.5,0.5,0.8,0.6,0.7};//股息
for(t=1;t<=T;t++)
v=v+Ct[t-1]/(Math.pow(1+r,t));
System.out.println(v);
}
}
四、测试结果
教师评价
《金融计算》实验报告
开课实验室:
实训楼B-206
年级专业班
2013级信息与计算科学
日期
20160401
实验项目名称
个人房贷的两种还款算法
指导教师
李峰
一、实验目的
掌握等额本金和等额本息两种还款算法,并能够进行实际应用。
二、实验内容
案例:
韩女士打算在保定源盛嘉禾二期买一套三居室住房,已经看好的户型面积啊131平米,目前单价7300元/平米。
韩女士在某高校工作,个人月收入8000,每年有公积金收入25000,孩子上幼儿园开销15000,家庭开销30000。
首套房首付款比例30%,公积金贷款利率4%,最多贷40万;商业银行贷款利率5.9%,贷款额度不能超过100万,贷款期限30年。
给出你的购房建议以及还款方式!
三、源程序清单
等额本息还款:
#include"stdio.h"
#include"math.h"
voidmain()
{floats,p,V,R1,R2,B,r1,r2,m,m1=0.0,m2=0.0;
intT;
intG;
printf("住房面积:
");
scanf("%f",&s);
printf("单位面积价格:
");
scanf("%f",&p);
printf("公积金贷款额:
");
scanf("%d",&G);
printf("商业性贷款年利率:
");
scanf("%f",&R1);
printf("公积金贷款年利率:
");
scanf("%f",&R2);
printf("贷款时间(月):
");
scanf("%d",&T);
V=s*p*0.7;
B=V-G;
printf("贷款总额为%f元\n",V);
printf("公积金贷款额为%d元\n",G);
printf("商业性贷款额为%f元\n",B);
r1=R1/12;
r2=R2/12;
m1=B*r1*(pow((1+r1),T))/(pow((1+r1),T)-1);
m2=G*r2*(pow((1+r2),T))/(pow((1+r2),T)-1);
m=m1+m2;
printf("每月还款额为%f元\n",m);
}
等额本金还款:
#include"stdio.h"
#include"math.h"
voidmain()
{floats,p,V,R1,R2,B,r1,r2,m,Gpermoney,Bpermoney,Bperbenjin,Gperbenjin,ALLpermoney,Glefthuankuane,Blefthuankuane;
intT,t,G;
printf("住房面积:
");
scanf("%f",&s);
printf("单位面积价格:
");
scanf("%f",&p);
printf("公积金贷款额:
");
scanf("%d",&G);
printf("商业性贷款年利率:
");
scanf("%f",&R1);
printf("公积金贷款年利率:
");
scanf("%f",&R2);
printf("贷款时间(月):
");
scanf("%d",&T);
V=s*p*0.7;
Gperbenjin=G/T;
B=V-G;
Bperbenjin=B/T;
printf("贷款总额为%f元\n",V);
printf("公积金贷款额为%d元\n",G);
printf("商业性贷款额为%f元\n",B);
r1=R1/12;
r2=R2/12;
Glefthuankuane=G;
Blefthuankuane=B;
for(t=1;t<=T;t++){
Gpermoney=Gperbenjin+Glefthuankuane*r1;//Gpermoney公积金每月还款额Gperbenjin公积金每月还款本金额
Bpermoney=Bperbenjin+Blefthuankuane*r2;//Glefthuankuane公积金剩余还款本金额以B开头的同样的意思
ALLpermoney=Gpermoney+Bpermoney;
printf("每个月还款额为%f元\n",ALLpermoney);
Glefthuankuane-=Gperbenjin;
Blefthuankuane-=Bperbenjin;
}
}
测试结果
教师评价
《金融计算》实验报告
开课实验室:
实训楼B-206
年级专业班
2013级信息与计算科学
日期
20160408
实验项目名称
远期定价公式的算法
指导教师
李峰
一、实验目的
掌握无收益远期远期定价算法和有收益的远期定价算法,并能够进行实际应用。
二、实验内容
案例1:
考虑一个6个月的远期多头情况,标的资产是1年期贴现债券,远期的交割价为950元。
假设6个月的无风险利率为6%,债券的现价为930元。
试求远期的价值及远期合约生效时远期的价格分别是多少?
案例2:
考虑一种5年期债券,价格为900元。
假设这种债券的1年期远期的交割价格为910元。
在6个月后和12个月后,预计都将收到60元的利息。
第二个付息日正好在远期交割日之前。
已知6个月和12个月的无风险利率分别是9%和10%。
试计算这种远期的价值和价格?
三、源程序清单
案例一:
#include"stdio.h"
#include"math.h"
voidmain()
{
floatf,F,S,K,r,t;
printf("远期的现价:
");
scanf("%f",&S);
printf("远期的交割价格:
");
scanf("%f",&K);
printf("远期的期限(年):
");
scanf("%f",&t);
printf("远期的利率:
");
scanf("%f",&r);
f=S-K*exp(-r*t);
printf("远期的价值为%f\n",f);
F=S*exp(r*t);
printf("远期的价格为%f",F);
}
案例二:
#include"stdio.h"
#include"math.h"
voidmain()
{
floatf,F,S,K,r,r1,r2,t,t1,t2,I,I1,I2;
printf("远期的现价:
");
scanf("%f",&S);
printf("远期的交割价格:
");
scanf("%f",&K);
printf("远期的利息:
");
scanf("%f",&I);
printf("远期的期限(年):
");
scanf("%f",&t);
printf("远期的期限对应的利率:
");
scanf("%f",&r);
printf("远期的第一种付息时间(年):
");
scanf("%f",&t1);
printf("远期的第二种付息时间(年):
");
scanf("%f",&t2);
printf("远期的第一种付息时间对应的利率:
");
scanf("%f",&r1);
printf("远期的第二种付息时间对应的利率:
");
scanf("%f",&r2);
I1=I*exp(-r1*t1);
I2=I*exp(-r2*t2);
f=S-I1-I2-K*exp(-r*t);
printf("远期的价值为%f\n",f);
F=(S-I1-I2)*exp(r*t);
printf("远期的价格为%f",F);
}
四、测试结果
教师评价
《金融计算》实验报告
开课实验室:
实训楼B-206
年级专业班
2013级信息与计算科学
日期
20160408
实验项目名称
外汇期货的定价算法
指导教师
李峰
一、实验目的
掌握外汇期货的定价算法,并能够进行实际应用。
二、实验内容
案例1:
考虑一外汇期货,其标的资产价格是$100,交割价格是$99,本国无风险年利率是10%,外汇的无风险年利率是0.2%,到期时间是6个月,试计算该外汇期货的价格。
三、源程序清单
#include"stdio.h"
#include"math.h"
voidmain()
{
floatf,F,S,K,t,r1,r2;
printf("外汇期货标的资产的现价:
");
scanf("%f",&S);
printf("外汇期货标的资产的交割价格:
");
scanf("%f",&K);
printf("外汇期货的到期时间(年):
");
scanf("%f",&t);
printf("外汇期货的本国无风险利率:
");
scanf("%f",&r1);
printf("外汇的无风险年利率:
");
scanf("%f",&r2);
f=S*exp(-r2*t)-K*exp(-r1*t);
F=S*exp((r1-r2)*t);
printf("远期的价值为%f\n",f);
printf("远期的价格为%f",F);
}
四、测试结果
教师评价
《金融计算》实验报告
开课实验室:
实训楼B-206
年级专业班
2013级信息与计算科学
日期
20160415
实验项目名称
对数正态分布的算法
指导教师
李峰
一、实验目的
掌握对数正太分布的算法,并能够进行实际应用。
二、实验内容
案例1:
一只初始价格为40美元的股票,该股票的收益率期望为每年16%,波动率为每年20%,则6个月之后的股票价格的概率分布是什么?
三、源程序清单
#include"stdio.h"
#include"math.h"
voidmain()
{
doublea,b,r,k,S,qw,fc,T,bzc,min,max;
printf("股票的初始价格:
");
scanf("%lf",&S);
printf("期望收益率:
");
scanf("%lf",&r);
printf("波动率:
");
scanf("%lf",&k);
printf("周期:
");
scanf("%lf",&T);
qw=log(S)+(r-k*k/2)*T;
fc=k*k*T;
printf("股票的期望值为%lf,方差为%lf\n",qw,fc);
bzc=sqrt(fc);
a=qw-1.96*bzc;
b=qw+1.96*bzc;
min=exp(a);
max=exp(b);
printf("股票价格的概率分布为(%lf,%lf)\n",min,max);
}
四、测试结果
教师评价
《金融计算》实验报告
开课实验室:
实训楼B-206
年级专业班
2013级信息与计算科学
日期
实验项目名称
Black-Scholes期权定价模型的算法
指导教师
李峰
一、实验目的
掌握Black-Scholes期权定价的算法,并能够进行实际应用。
通过二分法,确定隐含波动率。
二、实验内容
案例1:
某金融机构卖出100000份无股息股票的欧式看涨期权,收入300000美元,假设股票价格49美元,期权执行价格为50美元,无风险利率5%,股票价格波动率每年20%,期权期限20周,股票的收益率期望为每年13%。
根据期权定价公式,该期权的理论价格应是多少?
案例2:
某欧式看涨期权价格1.875,标的资产价格21,执行价格20,无风险利率10%,期限3个月,计算隐含波动率?
三、源程序清单
案例一:
#include"stdio.h"
#include"math.h"
#definepi3.14
#defineR0.2316
doublen(doublex){
doublev1;
v1=1.0/sqrt(2*pi)*exp(-x*x/2);
returnv1;
}
doubleN(doublex){
doublea1=0.3194;
doublea2=-0.3566;
doublea3=1.7815;
doublea4=-1.8213;
doublea5=1.3303;
doublek,v2;
k=1/(1+R*x);
if(x>=0)
v2=1-n(x)*(a1*k+a2*k*k+a3*k*k*k+a4*pow(k,4)+a5*pow(k,5));
else
v2=1-N(-x);
returnv2;
}
voidmain()
{
doubled1,d2,X,S,r,k,T,c;
printf("看涨期权的价格:
");
scanf("%lf",&S);
printf("行权价格:
");
scanf("%lf",&X);
printf("无风险利率:
");
scanf("%lf",&r);
printf("价格波动率:
");
scanf("%lf",&k);
printf("周期:
");
scanf("%lf",&T);
d1=(log(S/X)+(r+k*k/2)*T)/(k*sqrt(T));
d2=d1-k*sqrt(T);
c=S*N(d1)-X*exp(-r*T)*N(d2);
printf("看涨期权的价格为%lf元",c);
}
案例二:
#include
#include
#include
usingnamespacestd;
//voidoption_price_partials_call_black_scholes(double&S,double&X,double&r,double&sigma,double&Delta,double&Gamma,double&Theta,double&Vega,double&time,double&Rho)
//{
//doubletime_sqrt=sqrt(time);
//doubled1=(log(S/X)+r*time)/(sigma*time-sqrt)+0.5*sigma*time_sqrt;
//doubled2=d1-(sigma*time_sqrt);
//Delta=N(d1);
//Gamma=N(d1)/(S*sigma*time_sqrt);
//Theta=-(S*sigma*N(d1)/(2*time_sqrt)-r*X*exp(-r*time)*N(d2));
//Vega=S*time_sqrt*N(d1);
//Rho=X*time*exp(-r*time)*N(d2);
//}
doubleN(constdouble&x)
{
if(x>6.0){
return1.0;
};
if(x<-6.0){
return0.0;
};
doubleb1=0.31938153;
doubleb2=-0.356563782;
doubleb3=1.781477937;
doubleb4=-1.821255978;
doubleb5=1.330274429;
doublep=0.2316419;
doublec2=0.3989423;
doublea=fabs(x);
doublet=1.0/(1.0+a*p);
doubleb=c2*exp((-x)*(x/2.0));
doublen=((((b5*t+b4)*t+b3)*t+b2)*t+b1)*t;
n=1.0-b*n;
if(x<0.0)n=1.0-n;
returnn;
}
doubleoption_price_call_black_scholes(constdouble&S,constdouble&X,constdouble&r,constdouble&sigma,constdouble&time)
{
doubletime_sqrt=sqrt(time);
doubled1=(log(S/X)+r*time)/(sigma*time_sqrt)+0.5*sigma*time_sqrt;
doubled2=d1-(sigma*time_sqrt);
doublec=S*N(d1)-X*exp(-r*time)*N(d2);
returnc;
}
doubleoption_price_impied_volatility_call_black_scholes_bisections(constdouble&S,constdouble&X,constdouble&r,constdouble&time,constdouble&option_price)
{
constdoubleACCURACY=1.0e-5;
constintMAX_ITERATIONS=100;
constdoubleERROR=-1e40;
doublesigma_low=1e-5;
doublesigma_high=0.3;
for(inti=0;i{
doublesigma=(sigma_low+sigma_high)*0.5;
doubleprice=option_price_call_black_scholes(S,X,r,sigma,time);
doubletest=(price-option_price);
//cout<if(fabs(test)returnsigma;
}
if(test<0.0){
sigma_low=sigma;
}
else{
sigma_high=sigma;
}
}
returnERROR;
}
intmain()
{doubleS=21;doubleX=20;doubler=0.10;doubletime=0.25;
doublec=1.875;
cout<<"隐含波动率:
";
cout<return0;
四、}测试结果
教师评价
《金融计算》实验报告
开课实验室:
实训楼B-206
年级专业班
2013级信息与计算科学
日期
20160429
实验项目名称
蒙特卡洛模拟算法的期权定价
指导教师
李峰