Как рассчитать стоимость коротких опционов по формуле Блэка-Шоулза? - PullRequest
1 голос
/ 19 июня 2010

Я пытаюсь рассчитать прибыль / убыток от короткого звонка в разное время в будущем, но это не получается правильно.По сравнению с временем истечения, те, у кого осталось время, имеют меньшую прибыль над ценой страйка, но в какой-то момент ниже страйка они не теряют ценность так быстро, как линия 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

end

Спасибо, CP

Ответы [ 2 ]

3 голосов
/ 19 июня 2010

Ваша формула не верна.Я не знаю, зачем вам нужен этот ведущий -1 в качестве множителя, потому что, когда я распространяю его, «формула» проста:

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

Довольно просто.Так что это означает, что проблема скрыта в этой функции по цене звонка, верно?

Когда я сравниваю вашу формулу с тем, что я вижу как определение в Википедии, я не вижу соответствия вообще.Ваш код MATLAB тоже не помогает.Покопайтесь в функциях и посмотрите, где вы ошиблись.

Вы их написали?Как вы проверили их, прежде чем собрать их в эту большую функцию.Протестируйте блоки меньшего размера, прежде чем собирать их в более крупную.С какой известной ситуацией вы сравниваете свои расчеты?Есть много доступных калькуляторов BS.Может быть, вы можете использовать один из них.

Я бы предположил, что это ошибка в вашем коде, а не MATLAB.Или вы неправильно поняли значение передаваемых вами параметров.Посмотрите на свои вещи более внимательно, перечитайте документацию по этой функции и получите хороший набор базовых вариантов.

1 голос
/ 19 июня 2010

Я нашел проблему, это было связано с аргументом RateSpec.Когда вы передаете процентную ставку, это влияет на цену опциона.

...