Question

Je suis en train de calculer le bénéfice / la perte d'un court appel à plusieurs reprises à l'avenir, mais il ne sort pas correcte. Par rapport à l'heure d'expiration, ceux avec du temps ont moins de profit au-dessus du prix d'exercice, mais à un moment donné en dessous de la grève, ils ne prisent pas la perdre aussi vite que t = 0 ligne. Voici la formule en pseudocode, qu'est-ce que je fais mal?

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

réel code 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

Merci, CP

Était-ce utile?

La solution 2

Je trouve le problème, il fallait voir avec l'argument RateSpec. Lorsque vous passez un taux d'intérêt, il affecte le prix de l'option.

Autres conseils

Votre formule ne va pas. Je ne sais pas pourquoi vous avez besoin que leader -1 comme un multiplicateur pour, parce que quand je le distribue la « formule » est simple:

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

Assez simple. Donc, cela signifie que le problème est enterré dans cette fonction pour le prix de l'appel, droit?

Quand je compare votre formule à ce que je vois que la définition sur Wikipedia, je ne vois pas une correspondance du tout. Votre code Matlab ne aide, que ce soit. Dig dans les fonctions et voir où vous êtes allé mal.

Avez-vous écrit ces? Comment les avez-vous tester avant de les assemblez dans cette fonction plus grande. Testez les plus petits blocs avant de les assembler dans la plus grande chose.

Quelle base testez-vous contre? Quelle est la situation connue vous comparez votre calcul? Il y a beaucoup de calculatrices B-S disponibles. Peut-être que vous pouvez utiliser un.

Je suppose que c'est une erreur dans votre code plutôt que Matlab. Ou vous avez mal compris la signification des paramètres vous passez. Regardez vos trucs plus attentivement, relire la documentation de cette fonction, et d'obtenir un bon ensemble de cas de référence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top