如何使用Black-Scholes公式计算短期权的价值?

时间:2010-06-19 13:23:48

标签: matlab finance options quantitative-finance

我试图在将来的不同时间计算短暂的通话的利润/亏损,但它不是正确的。与到期时间相比,剩余时间的利润低于行使价格,但在低于行程的某一点,它们不会像t = 0那样快地失去价值。下面是伪代码中的公式,我做错了什么?

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

真正的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

谢谢, CP

2 个答案:

答案 0 :(得分:3)

你的公式不对。我不知道为什么你需要那个前导-1作为乘数,因为当我把它分发出来时,“公式”是一个简单的:

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

非常简单。所以这意味着问题被隐藏在该函数中以获得通话价格,对吗?

当我将你的公式与我在维基百科上看到的定义进行比较时,我根本看不到任何对应关系。您的MATLAB代码也没有帮助。挖掘功能,看看你哪里出错了。

你写的是吗?在将它们组装成这个更大的功能之前,你是如何测试它们的。在将较小的块组装到较大的块之前测试它们。

您测试的基准是什么?您比较计算的已知情况是什么?有很多B-S计算器可用。也许你可以使用其中之一。

我认为你的代码而不是MATLAB是一个错误。或者你误解了你传递的参数的含义。仔细查看您的内容,重新阅读该功能的文档,并获得一组良好的基线案例。

答案 1 :(得分:1)

我发现了问题,它与RateSpec参数有关。当您通过利率时,它会影响期权定价。