资源描述
《金融衍生工具 》实验指引书
电子科技大学经济与管理学院 教师姓名 夏晖
12月
第一某些 实验教学概述
本课程实验总体简介
1、实验教学规定:
本实验是《金融衍生工具》课程实验课程,其目是规定学生通过完毕本实验,达到熟悉金融市场、理解和纯熟掌握《金融衍生工具》中期权定价原理和各种数值定价办法,培养学生编程独立解决问题能力,为此后从事金融数量分析工作奠定基本。
2、实验内容简介:
本实验课程由3个实验项目构成:
(1) 期权定价蒙特卡罗模仿和有限差分办法为设计性实验
(2) 风险价值VaR计算为设计性实验
(3) 资产组合保险方略模仿及分析为综合性实验
3、本课程合用专业:
本课程合用于金融学、金融工程专业。
4、考核方式:
编写程序和实验成果以作业方式提交给任课教师,实验完毕状况计入《金融衍生工具》课程习题作业考核。
5、总学时:
本实验共计8学时。
6、教材名称及教材性质(统编):
本实验以“John C. Hull. Options,Futures and Other Derivatives. 4th Edition,Prentice-Hall,;清华大学出版社,影印版,.”为辅导教材。
7、参照资料:
1. Keith Cuthbertson,Dirk Nitzsche. Financial Engineering – Derivatives and Risk Management. John Wiley & Sons,Ltd,. 中译本:张陶伟,彭永江译. 金融衍生工具——衍生品与风险管理. 中华人民共和国人民大学出版社,.
第二某些 实验项目指引
实验项目1
一、基本状况
1、 实验项目名称:期权定价蒙特卡罗和有限差分办法
2、 实验项目目和规定:
目:使学生熟悉蒙特卡罗和有限差分办法应用。
规定:
(1)运用Matlab软件编写蒙特卡罗仿真程序求解期权价格;
(2)运用Matlab软件编写有限差分程序求解期权价格。
3、实验内容:
依照实验作业规定,完毕下面实验内容:
(1)采用蒙特卡罗模仿办法编程计算欧式回望期权价格;
(2)采用有限差分办法编程计算欧式奇异期权价格;
(3)采用对偶变量技术和控制变量技术提高蒙特卡罗计算精度,分析有限差分定价成果也许不收敛因素,并尝试画出初始时刻(t = 0)Delta随股票价格变动图形。
4、项目需用仪器设备名称:计算机和Matlab或Excel。
5、所需重要元器件及耗材:无。
6、学时数:3
二、本实验项目知识点
蒙特卡罗模仿办法:
依照几何布朗运动公式:
或
对无股息股票,可令,r为无风险利率,,依照如下环节进行模仿计算。
1. Simulate 1 path for the stock price in a risk neutral world
2. Calculate the payoff from the stock option
3. Repeat steps 1 and 2 many times to get many sample payoff
4. Calculate mean payoff
5. Discount mean payoff at risk free rate to get an estimate of the value of the option
有限差分办法:
依照B—S偏微分方程:
内具有限差分法
令,上式为:
ƒi +1,j
ƒi ,j
ƒi ,j –1
ƒi ,j +1
外推有限差分办法:
令,有
ƒi ,j
ƒi +1,j
ƒi +1,j –1
ƒi +1,j +1
三、实验操作环节
(1)蒙特卡罗模仿:考虑标物资产为某股票欧式亚式期权,股票当前价格为50,波动率为40%,无风险利率为5%,期权到期期限为1年,期权发行到当前已经3个月了,剩余期限尚有9个月,且期权发行到当前为止股票平均价格为55。求该期权价格。股票平均价格由每天收盘价平均值来计算。
用蒙特卡罗办法生成股价样本途径。程序如下:
function s=my_monto_carlo_path(s0,sigma,T,r,N_T,N_path)
deltaT=T/N_T;
s=zeros(N_path,N_T+1);
s(:,1)=s0;
eta=randn(N_path,N_T);
for i=2:N_T+1
s(:,i)=s(:,i-1).*exp((r-0.5*sigma^2)*deltaT+sigma*sqrt(deltaT)*eta(:,i-1));
end
:主程序如下
s=my_monto_carlo_path(50,0.4,3/4,0.05,round(250*3/4),200);
h=figure;
set(h,'color','w')
plot(s')
计算成果如下:
求解以上亚式期权价格:
function price=my_asian_option_mc(ASt,r,sigma,t,T,K,St,N_T,N_path)
s=my_monto_carlo_path(St,sigma,T-t,r,N_T,N_path);
AST=t/T*ASt+(T-t)/T*mean(s,2);
f_T=max(AST-K,0);
price=mean(f_T)*exp(-r*(T-t));
end
在MATLAB命令窗口输入:
price=my_asian_option_mc(55,0.05,0.4,0.25,1,50,50,round(250*3/4),1e5)
得到期权价格为:
price =
3.8897
欧式回望看涨期权在到期日钞票流为max(ST-Smin,0),而欧式回望看跌期权在到期日钞票流为max(Smax-ST,0)。
实验作业:考虑标物资产为某股票欧式回望期权,股票当前价格为50,波动率为40%,无风险利率为5%,期权到期期限为1年,期权发行到当前已经3个月了,剩余期限尚有9个月,且期权发行到当前为止股票最低价格为45,最高价格为55。分别求欧式回望看涨和看跌期权价格。尝试使用对偶变量技术和控制变量技术来减小期权价格原则误差。
(2)采用显式(外推)有限差分办法求美式看跌期权价值,有关参数如下:股票现价为50,执行价格为50,无风险利率为10%,期限为5个月,股票收益波动率为40%。Matlab程序如下:
clear all
ds=5;
dt=1/24;
sigma=0.4;
r=0.1;
x=50;
for j=1:21
f(11,j)=max(x-ds*(j-1),0);
end
for i=1:11
f(i,21)=0;
end
for i=1:11
f(i,1)=x;
end
for i=10:-1:1
for j=20:-1:2
a=[1/(1+dt*r)]*(0.5*sigma^2*dt*(j-1)^2-0.5*r*(j-1)*dt);
b=[1/(1+dt*r)]*(1-sigma^2*dt*(j-1)^2);
c=[1/(1+dt*r)]*(0.5*r*(j-1)*dt+0.5*sigma^2*dt*(j-1)^2);
f(i,j)=a*f(i+1,j-1)+b*f(i+1,j)+c*f(i+1,j+1);
f(i,j)=max(f(i,j),x-(j-1)*ds);
end
end
rotf=f'
s=(0:ds:100)';
value=interp1(s,rotf(:,1),50)
delta=diff(rotf(:,1))/ds;
h=figure;
set(h,'color','w')
plot(s(2:end),delta)
计算成果如下:
实验作业:考虑标物资产为某购票欧式期权,股票当前价格为50,波动率为40%,无风险利率为5%,期权到期期限为1年,到期日期权钞票流入下:
求该欧式期权理论价格。通过增长时间阶段数N和股价阶段数M来提高计算精度,并分析计算成果也许不收敛因素。尝试画出初始时刻(t = 0)该期权价格Delta随股票价格变动图形。
四、对实验所需软件熟悉和理解
重点:蒙特卡罗仿真和有限差分办法
难点:Mablab编程
教学办法:教师先对实验所需基本知识(编程技术、随机数产生)进行解说和演示,由学生完毕实验。
五、实验报告填写规定
掌握蒙特卡罗模仿办法和环节,以及有限差分办法基本原理,明的确验目,掌握实验内容和详细实验环节,用Mablab编程实现期权定价,并依照实验大纲规定和原则实验报告书内容及格式,按期提交实验报告。
实验项目2
一、 基本状况
1、 实验项目名称:风险价值VaR计算
2、 实验项目目和规定:
目:使学生掌握VaR计算办法
规定:
(1)理解VaR基本概念
(2)掌握历史模仿法
(3)掌握模型构建法
3、实验内容:
依照教师提供资产组合VaR计算过程,计算资产组合10天展望期置信水平99%VaR,规定:
(1)通过历史模仿法计算组合VaR;
(2)通过模型构建法计算组合VaR;
(3)分析两种办法计算成果差别因素。
4、项目需用仪器设备名称:计算机、Matlab和Excel。
5、所需重要元器件及耗材:无。
6、学时数:3
二、本实验项目知识点
VaR指在正常市场条件下和一定置信水平上,测算出给定期间内资产组合价值预期发生最坏状况损失。
假设W0为初始投资组合价值,10天后投资组合价值为:,,并且;Ŵ为10天后投资组合在为置信水平为c状况下最小价值。为在置信水平上最小回报率,有。
VaR可表达为:。
其中,置信水平,为资产组合价值分布密度函数。
由于将来数据尚未发生,历史模仿办法计算VaR核心思想是历史将会重演,即运用过去数据模仿市场变量将来变化。然后依照市场变量将来价格水平对头寸进行重新预计,计算出头寸价值变化(损益)。最后,将组合损益从最小到最大排序,得到资产组合将来价值损益分布,通过给定置信度下分位数求出VaR。
采用模型构建办法计算VaR基本思想是运用证券组合价值函数与市场变量间近似关系,推断市场变量记录分布(方差-协方差矩阵),进而简化VaR计算。该办法数据易于收集,计算办法简朴,计算速度快,也比较容易为监管机构接受。模型构建办法缺陷是对将来资产组合价值分布假设过强。
三、实验操作环节
资产组合是总价值1000万三只基金,涉及400万博时主题行业(160505)、300万嘉实沪深300(160706)以及300万南方绩优成长(20)。历史数据是-基金日收盘价,数据文献名为funddata.xls。计算该资产组合在10天展望期,置信水平99%条件下VaR。
(1) 数据准备
%读取数据
[data,textdata,raw]=xlsread('funddata.xls');
funddata=data;
%将数据保存在funddata.mat文献中
save funddata funddata
%载入数据
load funddata
%funddata数据序列
%'Hs300','博时主题','嘉实300','南方绩优'
(2) 历史模仿法
bszt=funddata (:,2);
js300=funddata (:,3);
nfjy=funddata (:,4);
daynum=length(funddata);
%计算模仿情境下资产组合明天也许损失
for i=1:daynum-1
num(i)=i;
loss(i)=400.*bszt(i+1)./bszt(i)+300.*js300(i+1)./js300(i)+ 300.*nfjy(i+1)./nfjy(i)-1000;
end
ascend=sort(loss);
onevar=-interp1(num,ascend,(daynum-1).*0.01)
tenvar=sqrt(10).*onevar
计算成果如下:
onevar =
56.2933
tenvar =
178.0151
(3) 模型构建法
%将资产价格转换为资产收益率
Rate=price2ret(funddata);
bszt=Rate(:,2);
js300=Rate(:,3);
nfjy=Rate(:,4);
%每年交易日数量,
%若一共488个数据,假设前244个为数据,后244为数据
daynum=fix(length(Rate)/2);
%计算Var值
funddata=[bszt(daynum+1:2*daynum) js300(daynum+1:2*daynum) nfjy(daynum+1:2*daynum)];
%计算日均收益盼望、日收益率原则差
BsPortReturn=mean(funddata(:,1));
BsPortRisk=std(funddata(:,1));
JsPortReturn=mean(funddata(:,2));
JsPortRisk=std(funddata(:,2));
NfPortReturn=mean(funddata(:,3));
NfPortRisk=std(funddata(:,3));
%计算资产组合日均收益盼望、日收益率原则差
ExpReturn=[BsPortReturn JsPortReturn NfPortReturn];
ExpCovariance=cov(funddata);
PortWts=[0.4 0.3 0.3];
[PortRisk,PortReturn]=portstats(ExpReturn,ExpCovariance,PortWts);
%置信水平99%
RiskThreshold=0.01;
BsValueAtRisk = portvrisk(BsPortReturn,BsPortRisk,RiskThreshold,400)
JsValueAtRisk = portvrisk(JsPortReturn,JsPortRisk,RiskThreshold,300)
NfValueAtRisk = portvrisk(NfPortReturn,NfPortRisk,RiskThreshold,300)
PortVar= portvrisk(PortReturn,PortRisk,RiskThreshold,1000)
Tenvar=sqrt(10).*PortVar
计算成果如下:
BsValueAtRisk =
21.6607
JsValueAtRisk =
21.8380
NfValueAtRisk =
15.5779
PortVar =
58.2315
Tenvar =
184.1441
成果阐明:“BsValueAtRisk=21.6607”表达博时主题在置信度阈值为1%VaR值,即每个交易日在99%置信水平下单日最大损失为21.6607。此外,单独计算三只基金1天展望期置信水平99%VaR加总为59.0766,不不大于三只基金构成资产组合1天置信水平99%VaR(58.2315),阐明资产组合会导致某些风险被分散化解。最后,用模型构建法计算VaR比历史模仿法计算VaR偏大,是由于模型构建法只用了数据,而各只基金比体现明显差,因而,计算VaR较大。
实验作业:自行构造涉及至少三种资产投资组合,并收集近来2年有关历史数据,采用历史模仿法和模型构建法分别计算资产组合10天展望期置信水平99%VaR,要体现通过资产组合投资可以分散化解某些风险,并分析两种办法计算成果差别因素。
四、对实验所需软件熟悉和理解
重点:理解VaR基本原理、计算办法;
难点:Matlab编程;
教学办法:在基于课堂教学基本上,教师演示。
五、实验报告填写规定
掌握VaR概念和历史模仿办法和模型构建办法计算VaR,明的确验目,掌握实验内容和详细实验环节,用Matlab编程完毕本实验详细内容,依照实验大纲规定和原则实验报告书内容及格式,准时提交实验报告。
实验项目3
一、基本状况
1、 实验项目名称:资产组合保险方略模仿及分析
2、 实验项目目和规定:
目:使学生掌握固定比例投资组合保险方略CPPI设计办法及分析过程
规定:
(1)使学生熟悉资产组合保险方略基本原理;
(2)纯熟掌握资产组合保险方略设计及分析过程。
3、实验内容:
(1)编写正态分布随机数发生程序;
(2)预计波动率;
(3)资产组合价值动态模仿。
4、项目需用仪器设备名称:计算机和Matlab和Excel。
5、所需重要元器件及耗材:无。
6、学时数:2学时
二、 本实验项目知识点
组合保险方略按构成重要分为基于期权投资组合保险方略(Option-Based Portfolio Insurance,OBPI)和固定比例投资组合保险方略(Constant Proportion Portfolio Insurance,CPPI),这是两种广泛应用投资组合保险方略。
基于期权投资组合保险产品使用债券和期权组合构建产品,这样构建办法与股票挂钩产品中保本票据构建办法一致。在利率较低或者期权价格较高状况下,基于期权投资组合保险方略较难实现。
OBPI方略原理:假定市场无磨擦(即无交易成本和税收)、资产无限可分、无卖空限制、可以相似无风险持续复利rf借贷。在一种无套利分析框架,欧式看跌期权(Put Option)Black-Scholes定价模型为:
(1)
其中,
式中,St是当前t时刻股票价格,X是期权执行价格;rf是持续复利下无风险利率,T期权到期时间,σ是股票价格波动率。N (·)是累积正态分布函数。
式(1)等式两边同步加St可得:
(2)
式(2)意义是,期初拥有数量为资金投资者,把资金投入风险资产(股票或指数基金),把投入无风险资产(国债),等价于把所有资金投入风险资产St和购买了一种以St为标资产卖权,卖权具备对风险资产保险作用,其中风险资产比例为:
(3)
无风险资产比例为:
随着时间t和St变化,投资者可依照式(3)动态调节风险资产比例wt,即,当风险资产价格上涨时,增大投资于风险资产比例wt;当风险资产价格下跌时,减少投资于风险资产比例wt。
另一种通用保本方略是固定比例投资组合保险方略CPPI,它也是通过动态调节投资组合无风险品种与风险品种投资比例,达到既规避高收益投资品种价格下跌风险,又享有到其价格上涨收益。
CPPI方略基本公式如下:
(4)
(5)
(6)
式中,At表达t时刻投资组合资产价值;Et表达t时刻可投资于风险资产上限;Gt表达t时刻可投资于无风险资产下限;Mt表达t时刻风险乘数;Ft表达t时刻组合安全底线;λ为初始风险控制水平(保本线);(T-t)为产品剩余期限;r为无风险收益率。
CPPI方略模型涉及风险控制水平(保本线)、风险乘数、资产配备调节周期等各种核心参数。
波动率预计:普通使用股价历史资料求得收益率原则差(历史波动率)作为风险资产波动率。历史波动率基本假设是相信过去波动性会延续到将来,且不会产生大幅变动,因而用过去资料算出波动率可视为将来股价波动率。惯用估算历史波动率办法有GARCH类模型、移动平均法、指数平滑法等。本实验采用历史数据样本原则差来预计波动率,参见B_S公式关于波动率小节。
三、实验操作环节
假设某金融产品采用组合保险方略CPPI进行资产投资:
(1)风险资产为沪深300指数组合;
(2)无风险资产为国债,国债利率为3%;
(3)产品保本率为100%;
(4)调节周期为10天;
(5)调节组合单位交易成本为c = 0.0002;
(6)初始资金W = 1,000百万元;
(7)产品期限为1年(250个交易日)。
固定比例组合保险方略CPPIMatlab函数CPPIStr.m:
function [F,E,A,G,SumTradeFee,portFreez]=CPPIStr(PortValue,Riskmulti,GuarantRatio,TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData)
%-12-24
%intput:
%PortValue:产品组合初始价值;
%Riskmulti:CPPI方略风险乘数;
%GuarantRatio:产品保本率;
%TradeDayTimeLong:产品期限,以交易日计算;
%TradeDayOfYear:模仿每年交易日,大体为250天;
%adjustCycle:调节周期;
%RisklessReturn:无风险利率;
%TradeFee:风险资产交易费用;
%SData is simulation index data
%output
%F:t时刻安全底线;E:t时刻可投资于风险资产上限;
%A:t时刻组合价值;G:t时刻可投资于无风险资产上限。
%SumTradeFee:总交易费用
%portFreez default is 0, if portFreez=1,portfolio freez there would have no risk--investment
%%
SumTradeFee=0;
F=zeros(1,TradeDayTimeLong+1);
E=zeros(1,TradeDayTimeLong+1);
A=zeros(1,TradeDayTimeLong+1);
G=zeros(1,TradeDayTimeLong+1);
A(1)=PortValue;
F(1)=GuarantRatio*PortValue*exp(-RisklessReturn*TradeDayTimeLong/TradeDayOfYear);
E(1)=max(0,Riskmulti*(A(1)-F(1)));
G(1)=A(1)-E(1);
%%
portFreez=0;%if portFreez=1,portfolio freez there would have no risk--investment
%%
for i=2:TradeDayTimeLong+1
E(i)=E(i-1)*(1+(SData(i)-SData(i-1))/(SData(i-1)));
G(i)=G(i-1)*(1+RisklessReturn/TradeDayOfYear);
A(i)=E(i)+G(i);
F(i)=GuarantRatio*PortValue*exp(-RisklessReturn*(TradeDayTimeLong-i+1)/TradeDayOfYear);
if mod(i-1,adjustCycle)==0
temp=E(i);
E(i)=max(0,Riskmulti*(A(i)-F(i)) );
SumTradeFee=SumTradeFee + TradeFee*abs(E(i)-temp);
G(i)=A(i)-E(i)-TradeFee*abs(E(i)-temp);
end
if E(i)==0
A(i)=G(i);
portFreez=1;
end
end
函数RandnPrice.m:生成均值方差为mu,sigma正态分布随机收益率。
function Price=RandnPrice(Price0,mu,sigma,N)
Rate=normrnd(mu,sigma,N,1);
%使用cumprod函数进行累乘
Price=Price0*cumprod(Rate+1);
CPPI方略模仿:
%%初始参数设立
%set value
PortValue=100;%Portfoilo Value
Riskmulti=2;
GuarantRatio=1.00;
TradeDayTimeLong=250;
TradeDayOfYear=250;
adjustCycle=10;
RisklessReturn=0.03;
TradeFee=0.0002;
%%依照参数生成符合布朗运动收益率序列
%to generate random number
Mean=1.2^(1/TradeDayOfYear)-1;
Std=0.4/sqrt(TradeDayOfYear);
Price0=100;
SData=RandnPrice(Price0,Mean,Std,TradeDayOfYear);
SData=[Price0;SData];
%%调用CPPIStr函数
%to computer
[F,E,A,G,SumTradeFee,portFreez]=CPPIStr(PortValue,Riskmulti,GuarantRatio,... TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData);
%%成果以及画图显示
%to plot
figure;
subplot(2,1,1)
plot(SData)
xlabel('t');
ylabel('price')
legend('Hs300-Simulation')
subplot(2,1,2)
plot(A,'-.')
hold on
%plot(E,'-x')
plot(F,'-k')
plot(G,'--')
legend('PortValue','RiskAssect','GuarantLine','RisklessAssect')
xlabel('t');
ylabel('price')
SumTradeFee
SumTradeFee = 0.0013
A(251) = 100.9913
实验作业:某金融产品采用组合保险方略CPPI进行资产投资,产品组合初始价值为1亿,期限为1年,无风险资产收益率为3%,投资标是沪深300指数组合,风险资产交易费用为0.02%,其她参数如下:风险乘数可选:2,2.5,3,3.5,4五种;保本率可选:95%,100%两种;调节周期可选1,5,10,20四种,参数如何设立使得产品盼望收益最大?(模仿1000次,取平均值)
四、对实验所需软件熟悉和理解
重点:掌握固定比例投资组合保险方略CPPI;
难点:Matlab编程;
教学办法:在基于课堂教学基本上,教师先演示,然后学生编程,让学生在分析过程中不断改进。
五、实验报告填写规定
熟悉资产组合保险方略基本原理,掌握资产组合保险方略设计及分析过程,明的确验目,掌握实验内容和详细实验环节,用Matlab分析资产组合保险方略模仿设计过程,并报告成果。依照实验大纲规定和原则实验报告书内容及格式,准时提交实验报告。
展开阅读全文