2015-08-18 56 views
1

在測試算法的過程中,我使用MATLAB金融工具箱中實現的標準定價函數blsprice計算隨機輸入值的期權價格。MATLAB中某些輸入值的負面期權價格?

令人驚訝(至少對我來說)
功能似乎返回負期權價格的輸入值的某些組合。

作爲一個例子採取以下:

> [Call,Put]=blsprice(67.6201,170.3190,0.0129,0.80,0.1277) 

Call =-7.2942e-15 
Put = 100.9502 

如果更改時間到期到0.790.81,該值隨着我期望是非負的。

你們有沒有經歷過類似的事情,並能爲此提供一個簡短的解釋?

+1

這個問題可能更適合於[quant.se]?但是,由於值太小,我認爲這只是一個[浮點錯誤](http://floating-point-gui.de/),因爲在內部計算的某個點處截斷了。也許考慮四捨五入到合適的精度,比如4個小數點?然後,「通話」價格變爲「0」。 – Dan

+0

通過提交[服務請求](http://www.mathworks.com/support/contact_us/?s_tid=sp_ban_cs)來詢問MathWorks支持可能也是一個很好的問題。這可能是一個錯誤,或者他們可能只是不執行邊界條件。您也可以查看底層代碼(如果沒有編譯或編碼)以查看發生了什麼:在命令窗口中輸入「edit blsprice」。 – horchler

回答

1

有點遲了,但我遇到過這樣的事情。小的負值可以歸因於用於計算累積正態分佈的例程內的數字舍入誤差和/或截斷誤差。

如你所知,計算機並不完美,小數值錯誤總是存在於所有計算中,因此我認爲應該問的問題是 - 所使用的輸入參數的準確度是多少,因此誤差是多少對產出的容忍度。

我以前遇到過的方式是,在財務上,典型的年度股票價格收益差異約爲30%,這意味着平均收益率通常採用標準誤差約爲30%假設2年的數據(如此N = 260 x 2 = 520,你有另一個穩定性假設問題的數據),sqrt(N)約爲+/- 1%的數量級。因此,在此基礎上,您得到的答案可能已被解釋爲零給定的容錯。

此外,我們通常以一分錢精度工作,並在此基礎上再次將您的答案解釋爲零。

只是想我會給我的2c希望這在某些方面是有幫助的,如果你仍然在檢查答案!

+0

確實很高興你採取了一個步驟,+對模型假設(平穩性)的弱點以及所需要的觀察範圍展現出*「殘差」*的非隨機過程分佈特徵的可愛看法。幾乎所有的金融科技模型在這個意義上都是有缺陷的 - 使用**裸數學**,與問題領域的離散性的現實脫節(除非主要使用bottom-to-top離散(量子階梯)值和計算工具,充分尊重價值觀的主要不連續性,並在內部保持「跨步」(即使在梯度等方面))。很有趣! – user3666197

1

我不知道您正在使用的金融工具箱的版本,但對我來說(TB 2007b)它工作正常。

當運行:

[Call,Put]=blsprice(67.6201,170.3190,0.0129,0.80,0.1277)

我得到如下:

Call = 9.3930e-016 
Put = 100.9502 

這確實正