一千萬個為什麽

搜索

如何使用Black-Scholes公式計算短期權的價值?

我試圖在將來的不同時間計算短期通話的利潤/虧損,但它並不正確。與到期時間相比,剩余時間的利潤低於行使價格的利潤,但在低於行程的某個點,它們不會像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, '結束Dates',...
        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);
結束

結束

謝謝, CP

最佳答案

你的公式不對。我不知道為什麽你需要那個前導-1作為乘數,因為當我把它分發出來時,“公式”是一個簡單的:

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

很簡單。所以這意味著問題被隱藏在該功能中,因為電話的價格對吧?

當我將你的公式與我在維基百科上看到的定義進行比較時,我根本看不到任何對應關系。您的MATLAB代碼也沒有幫助。挖掘功能,看看你哪裏出錯了。

你寫的那些嗎?在將它們組裝成這個更大的功能之前,你是如何測試它們的。在將較小的塊組裝到較大的塊之前測試它們。

你測試的基準是什麽?您比較計算的已知情況是什麽?有很多B-S計算器可用。也許你可以使用其中之一。

我認為這是你的代碼而不是MATLAB的錯誤。或者你誤解了你傳遞的參數的含義。仔細查看您的內容,重新閱讀該功能的文檔,並獲得一組良好的基線案例。

轉載註明原文: 如何使用Black-Scholes公式計算短期權的價值?