隨機過程
CIR 模型中的負值
我很難理解 CIR 模型的眾所周知的屬性,即它不能低於零。維基百科說這是因為當 r 接近於零時,速率的隨機衝擊會變得非常小,但漂移項不也會這樣做嗎?特別是如果波動率項很高,即使 r 變為零,隨機衝擊的負值是否可能大於漂移為正值?
我目前正在嘗試在 matlab 中實現該方法,但如果我增加波動性,我碰巧 r 變為負數。這可能是離散化的問題嗎?如果感興趣,程式碼片段如下。
theta=0.5; %Long run mean sigma=14; %Volatility of drawdowns k = 7.326; %Mean reversion constant n = 100; %number of time steps, t. dt = T/n; %time step M=10^3; %Number of realizations d0 = theta; d=ones(M,1).*d0;%Starting value for d for i = (j-1:n) dW = sqrt(dt)*randn(M,1); % Wiener increments d(:,i+1) = d(:,i) + k.*(theta-d(:,i)).*dt + sigma.*sqrt(d(:,i)).*dW; %drawdown rate end
如果您不希望您的 CIR 過程低於零,則應滿足此條件: $$ 2k\theta>\sigma^2 $$ 因此,您不能為波動率選擇一個非常大的值。受此條件限制。
解析 Feller 條件 ( $ 2 \kappa \theta > \sigma ^2) $ 保證過程不會變成負數,但這在您模擬時還不夠。即使您選擇滿足 Feller 條件的參數,您仍然可能會遇到在平方根內得到負值的問題,從而產生不好的結果。這是離散化的結果。解決該問題的最簡單方法是在程式碼中將 sqrt(d(:,i)) 替換為 sqrt(max(d(:,i),0))。還有其他更複雜的方法可以解決這個問題,您可以在此處查看https://www.deriscope.com/docs/Andersen_Jaeckel_Kahl_2010.pdf