matlabfinancestockquantitative-finance

How to calculate value of short options call with Black-Scholes formula?


I am trying to calculate the profit/loss of a short call at various times in the future, but it isn't coming out correct. Compared to the time of expiration, the ones with time left have less profit above the strike price, but at some point below the strike they don't lose value as fast as the t=0 line. Below is the formula in pseudocode, what am I doing wrong?

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

Real matlab code:

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

Solution

  • I found the problem, it had to do with the RateSpec argument. When you pass in a interest rate, it affects the option pricing.