蒙特卡洛模擬在軟體上如何操作?
例如在excel中如何實現,有沒有具體的例子,請大神們指點
蒙特卡洛(Monte Carlo)模擬法 一 ( EXCEL 舉例)__觀復__新浪博客蒙特卡羅模擬方法的Excel實現
How To Add Monte Carlo Simulation to your Spreadsheet Models
Monte Carlo Simulation in Excel: A Practical GuideIntroduction to Monte Carlo simulation單說蒙特卡洛的話,感覺用編程語言會比較方便。像Matlab, R, Python等,都有很多包可以直接生成各種各樣的隨機數,然後直接進行運算。運算的核心思想就是把一個概率分布具體化成數據,然後對數據進行直接的操作,最後再通過大樣本計算,得出新分布的信息。這樣的好處是顯而易見的,就是對於一些難以計算的概率問題,可以變得有辦法計算(比如說,對於一些超級複雜的分布,或者路徑依賴的數據等等)然而,問題就是需要大量的運算次數。
舉個例子而言,對於路徑依賴的美式期權,是沒有精確的解析解的。但是,我們可以通過蒙特卡洛模擬,得到它的近似解。
第一步,模擬標的股票的價格。用的方法就是蒙特卡洛模擬,可以模擬20000組股票價格的路徑。因為股票價格是服從對數正態分布,所以,需要把從標準正太中得到的數據進行一定的變換,得到對數正太分布的數據。對數正態分布的數據可以看成是真實的股票數據。第二步,對於每一個路徑進行分析,得到美式期權的最優執行時間點。並依據該時刻點的股票價格算出期權的支付。第三步,對於所有的路徑的支付進行折現並取平均。從而得到對於美式期權的價格的估計。這樣做的好處就是極大的簡化了數學運算,因為是在一個具體的數值上進行計算。比如還有其他更複雜的期權,亞式期權,回望期權,障礙期權等等都可以通過這樣的方法計算。當然也有很多可以提高計算速度的方法,比如控制變數法,對偶變數法,擬隨機序列法等等,都可以提高精度,加快收斂速度。
更多的知識,在各種概率論和數理統計中都有詳細的講解。教你個簡單的mc過程,完全用excel實現。第一再excel中用rand()函數生產0-1之間的隨機數。第二步,生產服從標準正太分布的隨機數。利用函數normsinvers(rand())即可生成相應隨機數。
來點簡單好玩的,蒙特卡洛的兩個小遊戲,Matlab實現,其他軟體應該大同小異
%% A.一個栗子:隨機遊走
%產生10000個均值為0,方差1的隨機數
a1=normrnd(0,1,1,10000);
a2=cumsum(a1);
%產生10000個均值為0,方差為10的隨機數
a3=normrnd(0,4,1,10000);
a4=cumsum(a3);
%畫圖
figure;plot(a2,b);hold on;plot(a4,r);
title(不同波動率下的隨機遊走序列);legend(sigma=1,sigma=4)
%% B.布豐投針
%隨機數個數
num=1e4;
%落在圓內的個數
circleNum=0;
%產生在1000*2個[-1,1]之間均勻分布的隨機數
b1=rand(num,2).*2-1;
%投針
figure;hold on;
for i=1:num
if b1(i,1)^2+b1(i,2)^2&<1
circleNum=circleNum+1;
plot(b1(i,1),b1(i,2),or);
else
plot(b1(i,1),b1(i,2),ob);
end
end
%圓周率計算
spi=4*circleNum/num;title(布豐投針實驗);
disp([圓周率=,num2str(spi)]);
複雜一點的,利用蒙特卡洛模擬評估勝率和盈虧比:你的期貨勝率是多少?你是如何提高開倉勝率的? - kindxie 的回答
蒙特卡洛在金融特別是衍生品方面的應用:金融工程中的蒙特卡羅方法 (豆瓣)具體看你需要什麼樣的應用。我個人在商學院期間有幾個不同的場景下分別做過Monte Carlo simulation。如果是管理決策、營收優化或者估值模型(DCF之類)的話,最好還是用Crystal ball或者@risk吧,特別是@risk 我覺得真的很好,易用、直觀又強大。在portfolio management和quantitative investment這些課上主要用matlab做,主要限制因素在於excel能夠處理的數據有限。因為不是搞技術的,純粹是當作工具來用,越簡單越好,所以我個人更多還是傾向於使用@risk
SUN的crystal ball或者找@Risk
推薦閱讀:
※學習 蒙特卡羅方法 必須預先學習哪些知識?
※離散型隨機變數的模擬-逆變換法
※布豐用投針實驗估計了 π 值,那麼用什麼簡單方法可以估計自然對數的底數 e 的值?