Frage

Ich versuche, den Gewinn / Verlust eines kurzen Anruf zu verschiedenen Zeiten in der Zukunft zu berechnen, aber es kommt nicht richtig raus. Im Vergleich zum Zeitpunkt des Ablaufs, links die, die mit der Zeit weniger Gewinn über dem Ausübungspreis, aber an einem gewissen Punkt unter dem Ausübungs sie nicht an Wert verliert so schnell wie die t = 0 Zeile. Unten ist die Formel in Pseudo-Code, was mache ich falsch?

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

Echt 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

Ende

Danke, CP

War es hilfreich?

Lösung 2

fand ich das Problem, es hatte mit dem RateSpec Argumente zu tun. Wenn Sie in einem Zinssatz passieren, beeinflusst es den Optionspreis.

Andere Tipps

Ihre Formel ist nicht richtig. Ich weiß nicht, warum Sie benötigen, dass führende -1 als Multiplikator für, denn wenn ich es aus der „Formel“ zu verteilen ist einfach:

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

Ganz einfach. Das heißt also das Problem ist in dieser Funktion für den Preis des Anrufs begraben, nicht wahr?

Wenn ich vergleichen Sie Ihre Formel zu dem, was ich als die Definition siehe Wikipedia, ich sehe keine Korrespondenz überhaupt. MATLAB-Code hilft nicht, auch nicht. Dig in die Funktionen und sehen, wo Sie falsch gelaufen ist.

Hast du die? Wie haben Sie sie testen, bevor Sie sie in diese größere Funktion zusammengesetzt. Testen Sie die kleineren Blöcke, bevor Sie sie in die größere Sache zusammenzustellen.

Was Baseline testen Sie gegen? Was bekannt Situation vergleichen Sie Ihre Berechnung? Es gibt viele B-S-Rechner zur Verfügung. Vielleicht können Sie einen von denen verwenden.

Ich würde davon ausgehen, dass es ein Fehler im Code statt MATLAB. Oder Sie haben die Bedeutung der Parameter falsch verstanden Sie vorbei sind. Schauen Sie sich Ihre Sachen mehr sorgfältig, wieder lesen Sie die Dokumentation für diese Funktion, und einen guten Satz von Baseline-Fälle erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top