Pregunta

Estoy tratando de calcular la ganancia / pérdida de una llamada corta en varias ocasiones en el futuro, pero no está saliendo correcta. En comparación con el momento del vencimiento, los que tienen tiempo restante tiene menos beneficios por encima del precio de ejercicio, pero en algún punto por debajo de la huelga no lo hacen pierden valor tan rápido como el t = 0 línea. A continuación se muestra la fórmula en pseudocódigo, ¿qué estoy haciendo mal?

profit(stockprice) = -1 * (black_scholes_price_of_call(stockPrice,optionStrike,daysTillExpiration) - premium);

real código de MATLAB:

function [ x ] = sell_call( current,strike,price,days)  
if (days > 0)  
    Sigma = .25;  
    Rates = 0.05;  
    Settle = today;  
    Maturity = today + days;  

    RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, 'EndDates',...
        Maturity, 'Rates', Rates, 'Compounding', -1);

    StockSpec = stockspec(Sigma, current);

    x = -1 * (optstockbybls(RateSpec, StockSpec, Settle, Maturity, 'call', strike) - price);
else
    x = min(price,strike-current-price);
end

end

Gracias, CP

¿Fue útil?

Solución 2

Me encontrado el problema, que tenía que ver con el argumento RateSpec. Cuando se pasa de un tipo de interés, que afecta a la valoración de opciones.

Otros consejos

Su fórmula no es correcto. No sé por qué es necesario que conduce -1 como un multiplicador para, porque cuando yo lo distribuyo a cabo la "fórmula" es simple:

profit(stockprice) = premium - black_scholes_price_of_call(stockPrice,optionStrike,daysTillExpiration);

Bastante sencilla. Por lo que significa que el problema está enterrado en esa función por el precio de la llamada, ¿verdad?

Cuando comparo su fórmula a lo que veo como la definición en la Wikipedia, no veo una correspondencia en absoluto. Su código MATLAB no ayuda, tampoco. Adéntrate en las funciones y ver dónde salió mal.

¿Usted escribió eso? ¿Cómo se prueba antes de que los ensamblados en esta función más grande. Prueba de los bloques más pequeños antes de que las ensambla en la cosa más grande.

¿Qué línea de base está realizando pruebas en contra? ¿Qué situación conocida estás comparando el cálculo de? Hay un montón de calculadoras B-S. Tal vez se puede utilizar uno de ellos.

Me asumir que se trata de un error en el código en lugar de MATLAB. O usted ha entendido mal el significado de los parámetros estás pasando. Vistazo a sus cosas con más cuidado, vuelva a leer la documentación para esa función, y obtener un buen conjunto de casos de referencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top