蒙特卡洛模擬的簡單例子

2021-01-13 量化與交易

蒙特卡羅模擬法的理論基礎是大數定律。其發展得益於計算能力的提升和計算成本的下降。蒙特卡羅模擬法在很多領域都有廣泛的應用。

引子

圖片來源:Wikipedia

旋輪線的面積的證明:

車輪在地上旋轉一圈的過程中,車輪圓周上的某一點划過的曲線就叫做「旋輪線」。在數學和物理中,旋輪線都有著非常重要而優美的性質。比如說,一段旋輪線下方的面積恰好是這個圓的面積的三倍。這個結論最早是由伽利略(Galileo Galilei,1564-1642)發現的。不過,在沒有微積分的時代,計算曲線下方的面積幾乎是一件不可能完成的任務。伽利略是如何求出旋輪線下方的面積的呢?

他的方法簡單得實在是出人意料:它在金屬板上切出旋輪線的形狀,拿到秤上稱了稱,發現重量正好是對應的圓形金屬片的三倍。

「稱重」是對蒙特卡羅模擬法最形象的解釋。

 

蒙特卡洛模擬

我們首先把旋輪線放在坐標系中:

旋輪線的方程為:

x=r*(θ-sinθ)

y=r*(1-cosθ)

旋輪線內切於一個矩形,並且將這個矩形分為兩部分:旋輪線上方平面和下方平面。

假設點在平面上的分布是均勻的,而且所有點的面積、質量相等。則,旋輪線上方平面和下方平面的面積之比等於質量之比,也等於平面內點的個數之比。

如果從矩形區域內隨機取點,隨著次數的增加,在旋輪線上方平面內的總數與下方平面內的總數之比將趨向一個固定的數值。

這個數值,就是兩個平面的面積之比。只要有了這個比例,計算上下兩個平面的面積就簡單了。

由於旋輪線是軸對稱的,所以我們只研究[0,pi]區間內的面積比。

具體過程如下:

首先,在[0,2]內取一個隨機數作為y,在[0,pi]內取一個隨機數作為x,並且保證x和y是完全獨立的。

然後,根據旋輪線方程,用y求解θ,再用θ計算x′。則(x′ , y)在旋輪線上。

最後,比較x和x′。如果x>x′,則隨機取到的點(x , y)在旋輪線下平面內,計數變量counter增加1。否則,(x , y)在旋輪線上平面內。

重複以上過程N次,當N足夠大時,counter/N的值就是上平面與下平面的面積之比。

用Matlab做100000次隨機抽樣,counter/N最後收斂至0.7502(這是旋輪線下方平面與矩形面積的比例)。

容易得到,旋輪線下方平面的面積為3.0008pi=0.7502*(2*2pi)。圓面積為pi。結論得證。

對於一些特殊分布的問題,只要調整產生隨機數的算法就可以了。

 

隨機數是蒙特卡洛模擬的關鍵

在TB上,用以下程序進行測試,只要K線根數足夠多,Pips最終將收斂至0.75。

但是,在通達信上同樣的邏輯,

Pips並不能收斂至0.75。

經過分析,TB中同一根K線上的Seed1和Seed2是兩個獨立的隨機數。

但是在通達信中,同一根K線上的Seed1和Seed2是相同的。也就是說,隨機數X和Y並不獨立,存在線性關係Y=2/pi*X。

並且,這條直線在旋輪線下方平面內,所以,不管我們計算多少次,條件X2<X總是滿足,Pips的值恆等於1。

圖中Pips對1的偏離,並不是基於大數定理的收斂,而是計算誤差。

(來源:文華程序化)


相關焦點

  • 蒙特卡洛模擬(Python)深入教程
    蒙特卡洛模擬使我們能夠看到決策的所有可能結果,並評估風險影響,從而在不確定的情況下更好地做出決策。在本文中,我們將通過五個不同的例子來理解蒙特卡羅模擬方法。在這個例子中,我們將使用蒙特卡羅方法迭代地模擬拋硬幣5000次,以找出為什麼頭部或尾巴的概率總是1/2。如果我們重複拋硬幣很多很多次,那麼我們可以在概率值的準確答案上獲得更高的精確度。在這個例子中,我們將使用Monte-Carlo方法反覆模擬拋硬幣5000次,以找出頭部或尾部的概率始終是1/2的概率。圖2:正面和反面,數學表示。
  • 什麼是蒙特卡洛模擬?
    蒙特卡洛方法正是以概率為基礎的方法,因為偶然性和隨機結果是建模技術的核心,就像輪盤賭,骰子和老虎機等遊戲一樣。蒙特卡洛方法(Monte Carlo method),也稱統計模擬方法,是二十世紀40年代中期由於科學技術的發展和電子計算機的發明,而提出的一種以概率統計理論為指導的數值計算方法。其使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。
  • 蒙特卡洛模擬(Monte Carlo Simulation)
    一、介紹蒙特卡洛模擬是一種統計學方法,用來模擬大量的數據。
  • 蒙特卡洛模擬方法
    在本文中您可以學習到以下幾點知識蒙特卡洛定積分算法原理講解(公式篇)python實現算法(代碼篇)蒙特卡洛算法起源       蒙特卡羅方法於20世紀40年代美國在第二次世界大戰中研製原子彈的「曼哈頓計劃」計劃的成員S.M.烏拉姆和J.馮·諾伊曼首先提出。
  • 蒙特卡洛模擬算法|公開課3
    本篇是「微慕課」公開課系列第3講——蒙特卡洛模擬算法蒙特卡洛(Monte Carlo)模擬方法是一種廣受好評的算法,
  • 蒙特卡洛模擬方法及應用案例
    是把概率現象作為研究對象的數值模擬方法。是按抽樣調查法求取統計值來推定未知特性量的計算方法。蒙特卡羅法作為一種計算方法,是由美國數學家烏拉姆與美籍匈牙利數學家馮·諾伊曼在20世紀40年代中葉,為研製核武器的需要而首先提出來的。蒙特卡羅是摩納哥的著名賭城,該法為表明其隨機抽樣的本質而命名,故適用於對離散系統進行計算仿真試驗。
  • 蒙特卡洛模擬算法的探討與應用
    附錄一  蒲豐投針實驗與蒙特卡洛算法的相關代碼1.%以P開頭為畫圖程序,具體詳見附錄  13.Pmyanov(n,myanov,is);  14.Pmyerr(n,myerr,is);  15.Prep(mypi_n);  16.is = 0;  17.Pmyanov(n,myanov,is);  18.Pmyerr(n,myerr,is);  ……附錄二  蒙特卡洛模擬結果方差分析的相關代碼匯總
  • 蒙特卡洛方法在美式期權定價中的應用
    藉助計算機技術,蒙特卡洛方法兼具了兩大優點:一是簡單,省卻了繁複的數學推導和演算過程,使得一般人也能夠理解和掌握;二是快速,簡單和快速是蒙特卡洛方法在現代項目管理中獲得應用的技術基礎。在實際應用中,蒙特卡洛方法通過執行統計抽樣實驗來解決各種數學問題,提供了近似的解決方案。
  • 蒙特卡洛算法在程序化研究中簡單應用
    微觀方面,筆者認為,可以講傳統的指標組合方法進行升華,引入在物理數學中成熟的數學模型,改進傳統的程序化交易模型,如運用數值計算中的蟻群算法和模擬退火算法等,本文介紹的也是數值計算中的蒙特卡洛算法。
  • 蒙特卡洛方法到底有什麼用?
    蒙特卡洛方法(Monte Carlo method,也有翻譯成「蒙特卡羅方法」)是以概率和統計的理論、方法為基礎的一種數值計算方法,將所求解的問題同一定的概率模型相聯繫,用計算機實現統計模擬或抽樣,以獲得問題的近似解,故又稱隨機抽樣法或統計試驗法。上述就是蒙特卡洛方法的基本概念,比較抽象,下面結合實際工作中的理解,談一談對蒙特卡洛方法的一些認識。
  • Python學習第130課——蒙特卡洛模擬隨機遊走
    現在我們用蒙特卡洛模擬計算一下,醉漢在不同的條件下打車回家的概率。我們先定義幾個參數。how_many_steps,表示醉漢走多少步數算完成一次隨機遊走。foot_limit,表示醉漢超過出發的原點多少米就不走了,要打車回家。how_many_simulations,表示我們模擬多少次醉漢遊走的過程。
  • 一文了解AlphaGo中蒙特卡洛方法的由來與發展
    AlphaGo想必大家都相當熟悉了,除了卷積神經網絡技術的應用,蒙特卡洛搜索方法也是起到關鍵性作用的技術手段。接下來就簡單介紹蒙特卡洛方法的由來與發展過程。,主要是為核武器的研發和製作而工作,蒙特卡洛方法以概率統計為理論指導,由於一個簡單的隨機數發生器一輪盤賭,外加烏拉姆的叔叔十分嗜好賭博且經常在蒙特卡洛賭場輸錢,方法便以摩納哥的馳名世界的賭城-蒙特卡洛來命名,蒙特卡洛方法的名稱和系統開發由此開始。
  • 無需數學知識:快速了解馬爾可夫鏈蒙特卡洛方法
    這裡再次強調,MCMC的全稱即為馬爾可夫鏈蒙特卡洛方法。為了理解其工作原理,我將首先介紹蒙特卡洛模擬,而後再討論馬爾可夫鏈概念。所謂蒙特卡洛模擬(Monte Carlo simulations),是指一種通過重複生成隨機數來估計固定參數的方法。通過生成隨機數並對其進行一些計算,蒙特卡洛模擬能夠為某一無法直接計算(或者直接計算成本過於高昂)的參數提供近似值。
  • 【學習心得032】期權定價之蒙特卡洛模擬法
    期權定價的方法主要有蒙特卡洛模擬以及二叉樹的方法,我們首先介紹使用蒙特卡洛模擬的方法。
  • 一份數學小白也能讀懂的「馬爾可夫鏈蒙特卡洛方法」入門指南
    為了理解其工作原理,我將首先介紹蒙特卡洛模擬(Monte Carlo simulation),接著討論馬爾可夫鏈。蒙特卡洛模擬只是一種通過不斷地生成隨機數來評估固定參數的方法。通過生成隨機數並對其做一些計算,蒙特卡洛模擬給出了一個參數的近似值(其中直接計算是不可能的或者計算量過大)。
  • 自學習蒙特卡洛三部曲推動凝聚態量子領域發展
    蒙特卡洛方法(Monte Carlo method),也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的發展和電子計算機的發明,而被提出的以概率統計理論為指導的一類非常重要的數值計算方法
  • 【技術園地】如何應用蒙特卡洛模擬法解決「不確定度」計算難題
    一、蒙特卡洛模擬法介紹1、什麼是蒙特卡洛模擬法2、蒙特卡洛模擬法兩個例子3、蒙特卡洛法計算圓周率4、蒙特卡洛法計算定積分二、蒙特卡洛法用於分析方法不確定度評定1、什麼是不確定度以及評定的目的2、與不確定度評定相關的計量學名詞
  • 蒙特卡洛模擬法計算VaR的場景生成技術
    部分未聯繫到作者和原始出處的文章,請原作者聯繫506743560@qq.com或直接在公眾號留言,或致電15034081448,「私募工場」會在第一時間處理。一個場景是所有風險因子的表現序列。歷史場景是指風險因子在歷史上某天的實際表現,隨機場景則是計算機隨機模擬生成的。
  • MCMC、蒙特卡洛近似和Metropolis算法簡介
    MCMC 是Markov Chain Monte Carlo 的簡稱,但在傳統模擬中有一個很重要的假設是樣本是獨立的(independent samples),這一點在貝葉斯統計尤其是高緯度的模型中很難做到。所以MCMC的目的就是運用蒙特卡洛模擬出一個馬可鏈(Markov chain)。
  • 蒙特卡洛模擬法的實施步驟
    蒙特卡洛模擬法的實施步驟一般分為三步:  (1)分析每一可變因素的可能變化範圍及其概率分布。  (2)通過模擬試驗隨機選取各隨機變量的值,並使選擇的隨機值符合各自的概率分布。為此可使用隨機數或直接用計算機求出隨機數。  (3)反覆重複以上步驟,進行多次模擬試驗,即可求出開發項目各項效益指標的概率分布或其他特徵值。