1

将来のさまざまな時点でのショートコールの損益を計算しようとしていますが、正しく計算されていません。満期時と比較して、残り時間のあるものは行使価格を超える利益は少なくなりますが、行使価格を下回るある時点で、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

終わり

ありがとう、CP

4

2 に答える 2

3

あなたの公式は正しくありません。なぜその先頭の-1が乗数として必要なのかわかりません。なぜなら、私がそれを配布するとき、「式」は単純なものだからです。

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

ものすごく単純。つまり、問題は通話料金でその機能に埋もれているということですよね?

私があなたの公式をウィキペディアの定義として見ているものと比較すると、私はまったく対応を見ていません。あなたのMATLABコードも役に立ちません。関数を掘り下げて、どこが間違っていたかを確認してください。

それらを書きましたか?これらをこのより大きな関数に組み立てる前に、どのようにテストしましたか。小さなブロックを大きなものに組み立てる前に、小さなブロックをテストしてください。

どのベースラインに対してテストしていますか?計算をどのような既知の状況と比較していますか?利用可能なBS計算機はたくさんあります。多分あなたはそれらの1つを使うことができます。

これはMATLABではなくコードのエラーだと思います。または、渡すパラメータの意味を誤解しています。自分のものをもっと注意深く見て、その関数のドキュメントを読み直して、ベースラインケースの良いセットを入手してください。

于 2010-06-19T14:10:48.937 に答える
1

私は問題を見つけました、それはRateSpec引数と関係がありました。金利を渡すと、オプションの価格に影響します。

于 2010-06-19T17:57:18.923 に答える