⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svjdprocess.m

📁 Neural Network in Finance (神经网络在金融界:赢得预言性的优势)全部原码。内容包括预测与估计
💻 M
字号:
function [yhats, theta, yhat] = svjdprocess(betab,hh,rr);
%  Inputs:  beta, hh, rr
%  Simulation of a SVJD process
%  beta(1) = alpha
%  beta(2) = beta
%  beta(3) = delta
%  beta(4) = kbar
%  beta(5) = lambda
%  beta(6) = mu
%  beta(7) = sigmav
%  beta(8) = rho
%  Output:  yhats, theta, yhat
%  dS/S = (mu-lambda*kbar)dt + sqrt(V)dZ + k dq
%  dV = (%alpha-beta*V)dt + sigmav *sqrt(v) dZv
%
%  cov(dZ,dZv)=corr(dZ,dZv)=rho dt
%  prob(dq=1) = lambda dt,   ln(1+k) ~ N(ln(1+kbar) - 0.5 delta^2,delta^2
% ___________________________________________________________________
% The risk neutral process is given as follows:
% dS/S = (b-lambdastar*kbarstar) dt + sqrt(V) dZstar + kstar dqstar
% dV = (alpha-betastar*V) dt + sigmav *sqrt(v) d Zv
% cov(dZ,dZv)=corr(dZ,dZv)=rho dt
% prob(dqstar=1) = lambdastar dt,   E(kstar)=kbarstar, var(kstar)=delta

h = 1/hh;
z = randn(rr,1);
zk = randn(rr,1);
poiss1 = poissrnd(h, rr,1);
poiss2 = poissrnd(2*h, rr,1);
poiss3 = poissrnd(3*h, rr,1);
poiss4 = poissrnd(4*h, rr,1);
v(1,1) = .00001;
k(1,1) = 0;
alpha = abs(betab(1));
beta = abs(betab(2));
if beta > 1, beta = .95; else beta = beta; end;
delta = abs(betab(3));
kbar = abs(betab(4));
lambda = round(abs(betab(5)))+1;
if lambda > 4, lambda = 4; else lambda = lambda; end;
mu = betab(6);
sigmav = abs(betab(7));
rho = betab(8);
h = 1/12;
for i = 2: rr,
   kx(i,1) =  zk(i,1)* delta + log(1+kbar) - .5 * delta ^ 2;
   k(i,1) = kx(i,1);
   if lambda == 1, poissz(i,1) = poiss1(i,1); elseif lambda ==2, poissz(i,1) = poiss2(i,1);
      elseif lambda == 3, poissz(i,1) = poiss3(i,1); else poissz(i,1) = poiss4(i,1); end
   yhat(i,1) = (mu - lambda * kbar) * h + sqrt(v(i-1,:)) * z(i,1)+ k(i,1) * poissz(i,1);
   if ~ isreal(yhat(i,1)), yhat(i,1) = 1000; else yhat(i,1) = (yhat(i,1));  end
   v(i,1) = v(i-1,1) + (alpha - beta * v(i-1,1)) * h + sigmav * sqrt(v(i-1,1)) * rho * z(i,1);
   if v(i,1) < 0, v(i,1) = .001; else v(i,1) = v(i,1); end;
end
[yhats, f1hat] = ker(yhat);
f1hat = f1hat / sum(f1hat);
jump = k .* poissz;
junk1 = 1 + mean(jump);
junk2 = cov(k, jump); 
junk3 = junk2(1,2);
lambdastar = lambda * junk1;
kbarstar = kbar + junk3 / junk1;
theta = [lambdastar kbarstar delta alpha beta sigmav rho mu];
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -