MATLAB金融计算试题.docx
《MATLAB金融计算试题.docx》由会员分享,可在线阅读,更多相关《MATLAB金融计算试题.docx(27页珍藏版)》请在冰豆网上搜索。
MATLAB金融计算试题
MATLAB金融计算试题(2014级研究生用)
(上机操作使用)
、利率期限结构(20分)
已知国债面值是100美元,各期收益率为
国债品种
票息
到期日
当期收益
3个月
17-Apr-2013
1.15
6个月
17-Jul-2013
1.18
2年
1.75
31-Dec-2014
1.68
5年
3.00
15-Nov-2017
2.97
10年
4.00
15-Nov-2022
4.01
30年
5.375
15-Feb-2041
4.92
试分析其利率期限结构。
MATLAB命令:
bonds=[datenum('04/17/2013')0100;datenum('07/17/2013')0100;datenum('12/31/2014')0.0175100;datenum('11/15/2017')0.03100;datenum('11/15/2022')0.04100;datenum('02/15/2041')0.0537100];
yield=[0.01150.01180.01680.02970.04010.0492]';settle=datenum('01/17/2013');%结算日[zerorates,curvedates]=zbtyield(bonds,yield,settle)datestr(curvedates)plot(zerorates)运行结果:
zerorates=
0.055
0.05
0.045
0.04
0.035
0.03
0.025
0.02
0.015
0.01
11.522.533.544.555.56
0.0115
0.0118
0.0168
0.0302
0.0418
0.0550curvedates=
735341
735432
735964
737014
738840
745507
ans=17-Apr-2013
17-Jul-2013
31-Dec-2014
15-Nov-2017
15-Nov-2022
15-Feb-2041
二、期权定价(30分)若股票现在价格为$50,期权执行价格为$52,无风险利率为0.1,股票波动标准差为
0.4,期权的到期日为6个月,且若这一卖权在3.5月时有一次股息支付$2。
(1)使用Black-Scholes定价公式计算欧式卖权和买权的价值;
MATLAB命令:
price=50;
strike=52;
rate=0.1;
time=6/12;
volatility=0.4;[callprice,putprice]=blsprice(price,strike,rate,time,volatility)
运行结果:
callprice=
5.8651
putprice=
5.3290
(2)利用二项式期权定价(二叉树(CRR)模型定价数值解)计算看涨看跌期权价格MATLAB命令:
price=50;
strike=52;
rate=0.1;
time=6/12;
increment=1/12;
volatility=0.4;
flag=0;
dividentrate=0;
divident=2;
exdiv=3.5;[price,option]=binprice(price,strike,rate,time,increment,volatility,f
lag,dividentrate,divident,exdiv)
运行结果:
得出二叉树每个交点处的资产价格和期权价值.
price=
50.0000
55.8985
62.5172
69.9441
76.2699
85.6054
96.0836
0
44.7755
50.0326
55.9315
60.5420
67.9524
76.2699
0
0
40.1226
44.8084
48.0575
53.9398
60.5420
0
0
0
35.9790
38.1474
42.8167
48.0575
0
0
0
0
30.2809
33.9873
38.1474
0
0
0
0
0
26.9787
30.2809
0
0
0
0
0
0
24.0366
option=
6.7016
3.9308
1.7652
0.4598
0
0
0
0
9.6686
6.2275
3.1393
0.9412
0
0
0
0
13.3762
9.5132
5.4560
1.9263
0
0
0
0
17.5811
13.8526
9.1833
3.9425
0
0
0
0
21.7191
18.0127
13.8526
0
0
0
0
0
25.0213
21.7191
0
0
0
0
0
0
27.9634
由结果可知,option第一行第一列就是看跌期权价格,该期权价格为6.7016元。
MATLAB命令:
price=50;
strike=52;
rate=0.1;
time=6/12;
increment=1/12;
volatility=0.4;
flag=1;
dividentrate=0;
divident=2;
exdiv=3.5;
[price,option]=binprice(price,strike,rate,time,increment,volatility,flag,dividentrate,divident,exdiv)运行结果:
得出二叉树每个交点处的资产价格和期权价值.
price=
50.0000
55.8985
62.5172
69.9441
76.2699
85.6054
96.0836
0
44.7755
50.0326
55.9315
60.5420
67.9524
76.2699
0
0
40.1226
44.8084
48.0575
53.9398
60.5420
0
0
0
35.9790
38.1474
42.8167
48.0575
0
0
0
0
30.2809
33.9873
38.1474
0
0
0
0
0
26.9787
30.2809
0
0
0
0
0
0
24.0366
option=
4.9996
7.8792
12.0864
17.9441
25.1294
34.0369
44.0836
0
2.1193
3.6809
6.2599
10.3427
16.384024.2699
0
0
0.5473
1.0878
2.1622
4.2976
8.5420
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
由结果可知,option第一行第一列就是看涨期权价格,该期权价格为4.9996元。
(3)假设股票价格服从几何布朗运动,试用蒙特卡洛模拟方法计算该期权价格。
MATLAB命令:
s0=50;
K=52;
r=0.1;
T=0.5;
sigma=0.4;
Nu=1000;
randn('seed',0);%定义随机数发生器种子是0,%这样保证每次模拟的结果相同
nuT=(r-0.5*sigma^2)*Tsit=sigma*sqrt(T)discpayoff=exp(-r*T)*max(0,s0*exp(nuT+sit*randn(Nu,1))-K);%期权到期时的
现金流
[eucall,varprice,ci]=normfit(discpayoff)运行结果:
nuT=
0.0100sit=
0.2828eucall=
6.1478varprice=
10.2924ci=
5.5091
6.7865三、搜集数据并计算画图(50分)
按照自己的研究生学号后两位数,在锐思金融数据库中搜集4种股票信息,包括最高价、最低价、收盘价和开盘价,数据个数2个月左右,建立数据表格。
要求使用MATLAB编程解决以下问题:
(1)将4种股票的收盘价格转化为收益率,并画出收益率直方图
海虹控股
MATLAB命令:
TickSeries=[31.6332.1731.5830.7130.7730.9331.79
31.583233.9133.1234.9835.335.534.6535.4635.95
35.3937.6736.6436.7736.8536.5935.8135.1835.76
36.6638.3538.2638.3438.8541.2740.9940.742.28]';RetSeries=tick2ret(TickSeries)
bar(RetSeries)
xlabel('天数');ylabel('收益率');
title('海虹控股对数收益率直方图');运行结果:
RetSeries=
0.0171
-0.0183
-0.0275
0.0020
0.0052
0.0278
-0.0066
0.0133
0.0597
-0.0233
0.0562
0.0091
0.0057
-0.0239
0.0234
0.0138
-0.0156
0.0644
-0.0273
0.0035
0.0022
-0.0071
-0.0213
-0.0176
0.01650.0252
0.0461
-0.0023
0.0021
0.0133
0.0623
-0.0068
-0.0071
0.0388
盛达矿业
MATLAB命令:
TickSeries=[13.0712.8813.1912.9812.7812.4912.73
12.5112.9713.0612.6813.1713.9314.3914.0814.3414.1914.2413.7413.5713.813.7613.7613.5213.313.2813.4413.3713.2813.7413.9314.1613.9914.7314.7]';
RetSeries=tick2ret(TickSeries)bar(RetSeries)
xlabel('天数');ylabel(
'收益率');
title('盛达矿业对数收益率直方图');
运行结果:
RetSeries=
-0.0145
0.0241
0.06
-0.0159
0.05
-0.0154
0.04
-0.0227
0.0192
0.03
-0.0173
0.0368
0.0069
-0.0291
0.0386
0.0577
0.0330
-