4 votos

Casco Blanco de Volatilidad Estocástica del Modelo en Matlab

Estoy tratando de código con el Casco Blanco de volatilidad estocástica del modelo de uso de matlab y en alguna parte de mi código parece un lío. He codificado el SABR modelo así y que está funcionando bien. Cuando comparo los precios obtenidos entre mis dos modelos, parece ser que hay una relación lineal (que es lo que puedo esperar si me he hecho el Casco Blanco correctamente). Hull White SABR price comparison

Cuando me producen volatilidad implícita de las sonrisas para el Casco Blanco, se ve algo como esto: enter image description here

Estoy usando la fórmula de fijación de precios para el Casco Blanco modelo:

enter image description here

Este es el procedimiento que sigo para mi código:

  1. Simular Trayectorias de sigma usando la Milstein esquema para discretising un SDE
  2. Promedio de puntos en cada momento incriment para todas las simulaciones y calcular \bar{V}.
  3. Encontrar el Black Scholes Precio
  4. Calcular La Volatilidad Implícita.

Es, definitivamente, va mal en algún lugar así que si alguien tiene el tiempo para mirar a través de mi código, yo estaría muy agradecido! gracias de antemano

function [Imp_Vol, Price] = Hull_White(S0, K, r, sigma0,gamma,alpha, T, M)


%   Monte Carlo European Call Option with Local Volatility using the Milstein Scheme. 
%   S0 - Underlying price at T=0
%   K - Strike Price
%   T - Time to Maturity in Years (please input uniform decimals ie 1.5,
%   2.9)
%   r - Interest rate
%   sigma0 - Volatility
%   gamma - Variable in Hull White model
%   alpha - Variable in Hull White model
%   M - Number of Monte Carlo Simulations 
%   Output price - corrosponding option price

N=floor(T*260); % Days to maturity

dt=1/260; % incriment for descretization

sigma_path = zeros(N,M);

for j=1:M % starting the Monte Carlo Simulations

    Z=randn(N,1);  % N random numbers to approximate dWi
    sigma=zeros(N,1); % initialising the volatility path vector

    sigma(1) = sigma0;

     for k=2:N % Calculating the volatility Path using the Milstein Scheme

            sigma(k) = sigma(k-1)*(1 + sqrt(dt)*gamma*Z(k-1) + dt*(alpha + 0.5*gamma*gamma*(Z(k-1)^2-1)));
     end
     sigma_path(:,j)=sigma;
end
sigma_integral = mean(sigma_path')';
sigma_integral_squared = sigma_integral.^2;
dt_vector = dt*ones(N,1);



V_bar = mean(sigma_integral_squared'*dt_vector); %numerical integration

[Call, Put] = blsprice(S0, K, r, T, V_bar, 0);
Imp_Vol = blsimpv(S0, K, r, T, Call, [],[], [], []);
Price = Call;
end

3voto

MayahanaMouse Puntos 71

Con el fin de calcular $$ P_0 = \mathbb {E}[C (\hat{V})] $$ donde $$ \hat{V} = \frac {1}{T} \int_0^T \sigma^2_s ds $$ y $$ d\sigma_t = \sigma_t (\alpha dt + \gamma dW_t) $$ usando Monte Carlo, usted debe:

  1. Generar volatilidad estocástica rutas de más de $[0,T]$ por discretising por encima de la SDE (que aquí se define una GBM, no un Casco Blanco y difusión)
  2. Calcular la integral en el tiempo $\hat {V}^{(j)} $ para cada simulado ruta $j=1,...,M$, usted puede utilizar un método de integración trapezoidal, por ejemplo.
  3. Aplicar el BS fórmula para calcular $C (\hat {V}^{(j)}) $
  4. La media de todas las de la última llamada de precios para obtener finalmente $$P_0=\frac {1}{M} \sum_{j=1}^M C (\hat {V}^{(j)})$$.

En lugar de lo que usted hizo es (ver puntos de bala en tu pregunta original): el promedio de todos los simulada de volatilidad estocástica caminos para derivar un "promedio de la volatilidad de ruta" de la que se calcula una media de volatilidad $\hat {V} $ más de $[0,T] $ y aplicar BS fórmula usando el último de la volatilidad de la figura.

Su enfoque es, pues, incorrecto. Recuerde que la expectativa de una función de una variable aleatoria no es en general la función de la expectativa de que la variable aleatoria (excepto para funciones lineales obviamente), ver la desigualdad de Jensen.

Es un error de novato, aunque, no te preocupes :)

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X