2010-06-19 11 views
1

J'essaie de calculer le bénéfice/la perte d'un appel à court terme à divers moments dans le futur, mais cela ne se fait pas correctement. Par rapport au temps d'expiration, ceux qui ont le temps restant ont moins de profits au dessus du prix d'exercice, mais à un moment donné, ils ne perdent pas de valeur aussi vite que la ligne t = 0. Voici la formule en pseudocode, qu'est-ce que je fais de mal?Comment calculer la valeur de l'appel d'options à court terme avec la formule de Black-Scholes?

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 

fin

Merci, CP

Répondre

1

J'ai trouvé le problème, il s'agissait de l'argument RateSpec. Lorsque vous transmettez un taux d'intérêt, cela affecte le prix de l'option.

3

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, non?

Lorsque je compare votre formule à ce que je vois comme la définition sur Wikipedia, je ne vois pas du tout de correspondance. Votre code MATLAB n'aide pas non plus. Creuser dans les fonctions et voir où vous avez mal tourné.

Les avez-vous écrites? Comment les avez-vous testés avant de les assembler dans cette fonction plus grande? Testez les plus petits blocs avant de les assembler dans la plus grande chose.

Sur quelle base testez-vous les tests? Dans quelle situation comparez-vous votre calcul? Il y a beaucoup de calculatrices B-S disponibles. Peut-être que vous pouvez en utiliser un.

Je suppose que c'est une erreur dans votre code plutôt que dans MATLAB. Ou vous avez mal compris la signification des paramètres que vous passez. Regardez vos affaires plus attentivement, relisez la documentation pour cette fonction et obtenez un bon ensemble de cas de base.

+0

La fonction optstockbybls fait partie d'une boîte à outils matlab. – CptanPanic

+0

Je suppose que c'est une erreur dans votre code plutôt que MATLAB. Regardez vos affaires plus attentivement, et obtenez un bon ensemble de cas de base. – duffymo

+0

Voici une calculatrice Black-Scholes http://www.seleno.us/options.php. Essaye celui-là. – JTHouseCat

Questions connexes