Как рассчитать стоимость коротких вариантов звонить с формулой черной колон?

StackOverflow https://stackoverflow.com/questions/3075633

Вопрос

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

конец

Спасибо, КП

Это было полезно?

Решение 2

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

Другие советы

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

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

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

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

Ты написал те? Как вы проверили их, прежде чем собрать их в эту большую функцию. Проверьте меньшие блоки, прежде чем собирать их в более крупную вещь.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top