我對某些風險執行蒙特卡羅操作,系統正常工作,但標準偏差完全關閉。當我模擬這個值時,系統是100%準確的。蒙特卡洛標準偏差方程
我有危險性的輸入變量是最好的情況下,成本價值,最壞情況下的成本價值,最可能的成本價值,風險發生和估計值的概率(平均概率*)。
我的當前的實現是本(在Java/APEX):
public static Double calculateStandardDeviation(Decimal max, Decimal min, Decimal mostLikely, Decimal eV, Decimal prob){
Double sum = 0,
probability = prob;
//uses standard SD calculation
sum += (min - eV) * (min - eV);
sum += (max - eV) * (max - eV);
sum += (mostLikely - eV) * (mostLikely - eV);
//if the probability is not 100%, apply it to the calculation
if(prob != 0){
sum *= prob;
}
return Math.sqrt(sum);
}
此外例如:
如果我有值的風險:(最大值= 300,最小值= 100,mostLikely = 200,eV = 150,Prob = 75%)。如果我通過我的系統運行這個風險,那麼標準偏差是26.2。我知道的值是正確的是94(儘管這需要/ 2才能正常工作)。我如何得到這個值?
任何幫助更準確的方程將不勝感激! :)
你在這裏建模什麼樣的分佈?我原本以爲你在描述一個三角形分佈,但只需要最小值,最大值和模式來計算標準偏差。 – andand
我正在使用三角形,然後應用概率。我在這裏應用了這個概率作爲一個測試,所以如果你認爲它不應用在這裏,請忽略這個概率。 –
仍然不確定你在哪裏想出了你所做的等式,但是我已經發布了一個我希望能夠幫助的答案。如果計算三角形分佈的標準偏差有不同的來源,請提供;否則,我不會立即看到您的代碼是如何計算stdev所需的。 – andand