金融衍生工具-实验指导书-2015-2016-1

发布时间:2020-06-05 01:35:33

金融衍生工具 》实验指导书

电子科技大学经济与管理学院 教师姓名 夏晖

201512

部分 实验教学概述

本课程实验总体介绍

1、实验教学要求:

本实验是《金融衍生工具》课程的实验课程,其目的是要求学生通过完成本实验,达到熟悉金融市场、理解和熟练掌握《金融衍生工具》中的期权定价原理和各种数值定价方法,培养学生编程独立解决问题的能力,为今后从事金融数量分析工作奠定基础。

2、实验内容简介:

本实验课程由3个实验项目组成

(1) 期权定价的蒙特卡罗模拟和有限差分方法为设计性实验

(2) 风险价值VaR的计算为设计性实验

(3) 资产组合保险策略模拟及分析为综合性实验

3、本课程适用专业:

本课程适用于金融学、金融工程专业。

4、考核方式:

编写的程序和实验结果以作业的方式提交给任课老师,实验完成情况计入《金融衍生工具》课程习题作业的考核

5、总学时:

本实验共计8学时。

6、教材名称及教材性质(统编):

本实验以“John C. Hull. Options, Futures and Other Derivatives. 4th Edition, Prentice-Hall, 2000; 清华大学出版社, 影印版, 2002.”为辅导教材。

7、参考资料:

1. Keith Cuthbertson, Dirk Nitzsche. Financial Engineering – Derivatives and Risk Management. John Wiley & Sons, Ltd, 2001. 中译本:张陶伟, 彭永江译. 金融衍生工具——衍生品与风险管理. 中国人民大学出版社, 2004.

第二部分 实验项目指导

实验项目1

一、基本情况

1、 实验项目名称:期权定价的蒙特卡罗和有限差分方法

2、 实验项目的目的和要求:

目的:使学生熟悉蒙特卡罗和有限差分方法的应用。

要求:

1)利用Matlab软件编写蒙特卡罗仿真程序求解期权价格;

2)利用Matlab软件编写有限差分程序求解期权价格。

3、实验内容:

根据实验作业的要求完成下面的实验内容:

1采用蒙特卡罗模拟方法编程计算回望期权的价格;

2采用有限差分方法编程计算奇异期权的价格;

3采用对偶变量技术和控制变量技术提高蒙特卡罗计算的精度,分析有限差分定价结果可能不收敛的原因,并尝试画出初始时刻(t = 0Delta随股票价格变动的图形。

4、项目需用仪器设备名称:计算机和MatlabExcel

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

有限差分方法:

根据BS偏微分方程:

内含有限差分法

,上式为:

外推有限差分方法:

,有

三、实验操作步骤

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个月,股票收益的波动率为40Matlab程序如下:

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、项目需用仪器设备名称:计算机MatlabExcel

5、所需主要元器件及耗材:无。

6、学时数:3

二、本实验项目知识点

VaR在正常市场条件下和一定的置信水平上,测算出给定时间内资产组合价值预期发生的最坏情况的损失。

假设W0为初始投资组合的价值,10后投资组合的价值为:,并且Ŵ10后投资组合在为置信水平为c的情况下的最小价值。为在置信水平上最小回报率,有

VaR可表示为:

其中,置信水平为资产组合价值分布密度函数。

由于未来数据尚未发生,历史模拟方法计算VaR的核心思想是历史将会重演,即利用过去的数据模拟市场变量的未来变化。然后根据市场变量的未来价格水平对头寸进行重新估计,计算出头寸的价值变化(损益)。最后,将组合的损益从最小到最大排序,得到资产组合未来价值的损益分布,通过给定置信度下的分位数求出VaR

采用模型构建方法计算VaR基本思想是利用证券组合的价值函数与市场变量间的近似关系,推断市场变量的统计分布(方差-协方差矩阵),进而简化VaR的计算。该方法的数据易于收集,计算方法简单,计算速度快,也比较容易为监管机构接受。模型构建方法的缺点是对未来资产组合价值的分布假设过强。

三、实验操作步骤

资产组合是总价值1000万的三只基金,包括400万博时主题行业(160505)、300万嘉实沪深300160706)以及300万南方绩优成长(202003历史数据是2007-2008年的基金日收盘价,数据文件名为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个为2007年数据,后2442008年数据

daynum=fix(length(Rate)/2);

%计算2008Var

funddata2008=[bszt(daynum+1:2*daynum) js300(daynum+1:2*daynum) nfjy(daynum+1:2*daynum)];

%计算日均收益期望、日收益率的标准差

BsPortReturn=mean(funddata2008(:,1));

BsPortRisk=std(funddata2008(:,1));

JsPortReturn=mean(funddata2008(:,2));

JsPortRisk=std(funddata2008(:,2));

NfPortReturn=mean(funddata2008(:,3));

NfPortRisk=std(funddata2008(:,3));

%计算资产组合的日均收益期望、日收益率的标准差

ExpReturn=[BsPortReturn JsPortReturn NfPortReturn];

ExpCovariance=cov(funddata2008);

PortWts=[0.4 0.3 0.3];

[PortRisk, PortReturn]=portstats(ExpReturn, ExpCovariance, PortWts);

%置信水平99%

RiskThreshold=0.01;

BsValueAtRisk2008 = portvrisk(BsPortReturn, BsPortRisk, RiskThreshold,400)

JsValueAtRisk2008 = portvrisk(JsPortReturn, JsPortRisk, RiskThreshold,300)

NfValueAtRisk2008 = portvrisk(NfPortReturn, NfPortRisk, RiskThreshold,300)

PortVar= portvrisk(PortReturn, PortRisk, RiskThreshold,1000)

Tenvar=sqrt(10).*PortVar

计算结果如下:

BsValueAtRisk2008 =

21.6607

JsValueAtRisk2008 =

21.8380

NfValueAtRisk2008 =

15.5779

PortVar =

58.2315

Tenvar =

184.1441

结果说明:“BsValueAtRisk2008=21.6607表示2008年博时主题在置信度阈值为1%VaR值,即每个交易日在99%置信水平下的单日最大损失为21.6607。另外,单独计算的三只基金的1天展望期置信水平99%VaR加总为59.0766,大于三只基金组成的资产组合的1天置信水平99%VaR58.2315),说明资产组合会造成部分风险被分散化解。最后,用模型构建法计算的VaR比历史模拟法计算的VaR偏大,是由于模型构建法只用了2008年数据,而2008年各只基金比2007年表现明显差,因此,计算的VaR较大。

实验作业:自行构造包括至少三种资产的投资组合,并收集最近2年相关历史数据,采用历史模拟法和模型构建法分别计算资产组合的10天展望期置信水平99%VaR,要体现通过资产组合投资可以分散化解部分风险,并分析两种方法计算结果差异的原因

四、对实验所需软件的熟悉和了解

重点:理解VaR的基本原理计算方法

难点:Matlab编程

教学方法在基于课堂教学的基础上,教师演示。

五、实验报告填写要求

掌握VaR概念和历史模拟方法和模型构建方法计算VaR明确实验目的,掌握实验内容和具体的实验步骤,Matlab编程完成本实验的具体内容,根据实验大纲的要求和标准实验报告书的内容及格式,按时提交实验报告。



实验项目3

一、基本情况

1、 实验项目名称:资产组合保险策略模拟及分析

2、 实验项目的目的和要求:

目的:使学生掌握固定比例投资组合保险策略CPPI设计方法分析过程

要求:

1使学生熟悉资产组合保险策略的基本原理;

2熟练掌握资产组合保险策略的设计及分析过程。

3、实验内容:

1编写正态分布的随机数发生程序

2估计波动率

3资产组合价值动态模拟。

4、项目需用仪器设备名称:计算机和MatlabExcel

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

无风险资产比例为:

随着时间tSt的变化,投资者可根据式(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个交易日)。

固定比例组合保险策略CPPI的Matlab函数CPPIStr.m

function [F,E,A,G,SumTradeFee,portFreez]=CPPIStr(PortValue,Riskmulti,GuarantRatio,TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData)

%2015-12-24

%intput:

%PortValue:产品组合初始价值;

%RiskmultiCPPI策略的风险乘数;

%GuarantRatio:产品的保本率;

%TradeDayTimeLong:产品期限,以交易日计算;

%TradeDayOfYear:模拟每年的交易日,大致为250天;

%adjustCycle:调整周期;

%RisklessReturn:无风险利率;

%TradeFee:风险资产的交易费用;

%SData is simulation index data

%output

%Ft时刻安全底线;Et时刻可投资于风险资产的上限;

%At时刻组合价值;Gt时刻可投资于无风险资产的上限。

%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%,其他参数如下:风险乘数可选:22.533.54五种;保本率可选:95%100%两种;调整周期可选151020四种,参数如何设置使得产品期望收益最大?(模拟1000次,取平均值)

四、对实验所需软件的熟悉和了解

重点:掌握固定比例投资组合保险策略CPPI

难点:Matlab编程

教学方法:在基于课堂教学的基础上,教师先演示,然后学生编程,让学生在分析过程中不断改进。

五、实验报告填写要求

熟悉资产组合保险策略的基本原理,掌握资产组合保险策略的设计及分析过程,明确实验目的,掌握实验内容和具体的实验步骤,用Matlab分析资产组合保险策略的模拟设计过程,并汇报结果。根据实验大纲的要求和标准实验报告书的内容及格式,按时提交实验报告。

金融衍生工具-实验指导书-2015-2016-1

相关推荐