matlab期权风险评估算法,matlab程序优化 (期权计算为例)

F=x-f(x)的零点解.

说起来容易做起来难,大家还是慢慢体会吧........

把书从少看多,再从多到少...., 现在说的少..怎么说多呢, 当然具体问题还要具体解决....

下面一black shols的计算,(1)..(2)...(3)计算效率都有不同的提高,当然(1)不是我写的

(2),(3)是我修改的..... 结果能出还行..

///(1)

%N表示总股本,M表示认股权证数量

N=64.553;

M=12.65;

stk_price=45;%('股票现价');

strick_price=40;%('执行价格');

m_time=5;%('年化存续期');

vol=0.30;%('波动率');

pchange=0.05;%('敏感性分析中的价格变化幅度');

vchange=0.05;%('敏感性分析中的隐含波动率变化幅度');

result=[0 vol-1*vchange:vchange:vol+10*vchange];

for stk_temp=stk_price-5*pchange:pchange:stk_price+5*pchange

result_temp=[stk_temp];

for

vol_temp=vol-1*vchange:vchange:vol+10*vchange

[stk_temp,vol_temp]

temp=[];

bls=blsprice(stk_temp,strick_price,0.0252,m_time,vol_temp);

for w=bls*0.8:0.001:bls*1

temp_bls=blsprice(stk_temp+(M/N)*w,strick_price,0.0252,m_time,vol_temp)*N/(M+N);

temp=[temp;[w,temp_bls abs(w-temp_bls)]];

end

% sort(temp,3)

temp1=min(abs(temp(:,3)));

n=find(temp(:,3)==temp1);

result_temp=[result_temp temp(n,1)];

end

result=[result;result_temp];

end

result

(2)//

%[Call, Put] = blsprice(Price, Strike, Rate, Time, Volatility,

Yield)

%N表示总股本,M表示认股权证数量

N=64.553;

M=12.65;

stk_price=45; %('股票现价');

strick_price=40;%('执行价格');

m_time=5; %('年化存续期');

vol=0.30; %('波动率');

rate=0.0252; %Annualized, continuously compounded risk-free rate of

%return over the life of the option, expressed as a positive

decimal number.

pchange=0.05; %('敏感性分析中的价格变化幅度');

vchange=0.05; %('敏感性分析中的隐含波动率变化幅度');

%分析区间

stk_temp=stk_price-5*pchange:pchange:stk_price+5*pchange;

stk_temp_num=size(stk_temp,2);

vol_temp=vol-1*vchange:vchange:vol+10*vchange;

vol_temp_num=size(vol_temp,2);

%结果是一个stk_temp_num X vol_temp_num的表;

result=zeros(stk_temp_num,vol_temp_num);

for

i=1:stk_temp_num %stk_temp=stk_price-5*pchange:pchange:stk_price+5*pchange

%result_temp=[stk_temp];

for

j=1:vol_temp_num

%vol_temp=vol-1*vchange:vchange:vol+10*vchange

%temp=[];

[i,j]

bls=blsprice(stk_temp(i), strick_price, rate, m_time, vol_temp(j)

);

%find min result start

w=bls*0.8:0.001:bls*1;

w_num=size(w,2);

temp_bls=zeros(1,w_num);

for k=1:w_num

temp_bls(k)=blsprice(stk_temp(i)+(M/N)*w(k), strick_price, rate,

m_time, vol_temp(j))*N/(M+N);

%temp=[temp;[w,temp_bls abs(w-temp_bls)]];

end

% sort(temp,3) sort的计算复杂性比较高,在这里只取最大用sort没有意义;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值