MATLAB金融计算试题.docx
《MATLAB金融计算试题.docx》由会员分享,可在线阅读,更多相关《MATLAB金融计算试题.docx(27页珍藏版)》请在冰豆网上搜索。
![MATLAB金融计算试题.docx](https://file1.bdocx.com/fileroot1/2022-11/18/a5d14a86-38c4-483b-b8e2-dc12da1c3039/a5d14a86-38c4-483b-b8e2-dc12da1c30391.gif)
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.0115
0.0118
0.0168
0.0302
0.0418
0.0550
curvedates=
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,flag,dividentrate,divident,exdiv)
运行结果:
得出二叉树每个交点处的资产价格和期权价值.
price=
50.000055.898562.517269.944176.269985.605496.0836
044.775550.032655.931560.542067.952476.2699
0040.122644.808448.057553.939860.5420
00035.979038.147442.816748.0575
000030.280933.987338.1474
0000026.978730.2809
00000024.0366
option=
6.70163.93081.76520.4598000
09.66866.22753.13930.941200
0013.37629.51325.45601.92630
00017.581113.85269.18333.9425
000021.719118.012713.8526
0000025.021321.7191
00000027.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.000055.898562.517269.944176.269985.605496.0836
044.775550.032655.931560.542067.952476.2699
0040.122644.808448.057553.939860.5420
00035.979038.147442.816748.0575
000030.280933.987338.1474
0000026.978730.2809
00000024.0366
option=
4.99967.879212.086417.944125.129434.036944.0836
02.11933.68096.259910.342716.384024.2699
000.54731.08782.16224.29768.5420
0000000
0000000
0000000
0000000
由结果可知,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)*T
sit=sigma*sqrt(T)
discpayoff=exp(-r*T)*max(0,s0*exp(nuT+sit*randn(Nu,1))-K);%期权到期时的现金流
[eucall,varprice,ci]=normfit(discpayoff)
运行结果:
nuT=
0.0100
sit=
0.2828
eucall=
6.1478
varprice=
10.2924
ci=
5.5091
6.7865
三、搜集数据并计算画图(50分)
按照自己的研究生学号后两位数,在锐思金融数据库中搜集4种股票信息,包括最高价、最低价、收盘价和开盘价,数据个数2个月左右,建立数据表格。
要求使用MATLAB编程解决以下问题:
(1)将4种股票的收盘价格转化为收益率,并画出收益率直方图
海虹控股
MATLAB命令:
TickSeries=[31.6332.1731.5830.7130.7730.9331.7931.583233.9133.1234.9835.335.534.6535.4635.9535.3937.6736.6436.7736.8536.5935.8135.1835.7636.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.0165
0.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.7312.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.0159
-0.0154
-0.0227
0.0192
-0.0173
0.0368
0.0069
-0.0291
0.0386
0.0577
0.0330
-0.0215
0.0185
-0.0105
0.0035
-0.0351
-0.0124
0.0169
-0.0029
0
-0.0174
-0.0163
-0.0015
0.0120
-0.0052
-0.0067
0.0346
0.0138
0.0165
-0.0120
0.0529
-0.0020
恒逸石化
MATLAB命令:
TickSeries=[9.439.148.998.678.68.428.498.48.538.978.618.919.119.129.069.149.04