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