市場隨機遊走和蒙特卡洛分析法

隨機遊走(random walk),即無規則運動,概念接近於布朗運動,是布朗運動的理想數學狀態,而布朗運動是一個物理概念,學術概念太深奧,舉一個最簡單的例子,在裝滿水的水缸中滴幾滴墨水,那麼墨水的路徑就叫做布朗運動。再回到隨機遊走,隨機遊走模型的提出是與證券價格的變動模式緊密聯繫在一起的。

最早使用統計方法分析收益率的著作是在 1900年由路易·巴舍利耶(Louis Bachelier)發表的,他把用於分析賭博的方法用於股票、債券、期貨和期權。在巴舍利耶的論文中,其具有開拓性的貢獻就在於認識到隨機遊走過程是布朗運動。1953年,英國統計學家肯德爾在應用時間序列分析研究股票價格波動並試圖得出股票價格波動的模式時,得到了一個令人大感意外的結論:股票價格沒有任何規律可尋,它就像“一個醉漢走步一樣,幾乎宛若機會之魔每週扔出一個隨機數字,把它加在目前的價格上,以此決定下一週的價格。”即股價遵循的是隨機遊走規律。

在很多系統都存在不同類型的無規則行走,他們都具有相似結構。單個的隨機事件我們不可預測,但隨機大量的群體行為,卻是精確可知的,這就是概率世界的魅力,在偶然中隱含著必然。隨機性造成了低尺度下的差異性,但在高尺度下又表現為共同的特徵的相似性。按照概率的觀點“宇宙即是所有隨機事件概率的總和”。於是,我們再引出蒙特卡洛模擬概念。

蒙特卡洛(Monte Carlo)方法,又稱隨機抽樣或統計試驗方法,因摩納哥著名的賭場蒙特卡洛而得名,數學家們稱這種表述為“模式”,而當一種模式足夠精確時,他能產生與實際操作中對同一條件相同的反應。傳統的經驗方法由於不能逼近真實的物理過程,很難得到滿意的結果,而蒙特卡羅方法由於能夠真實地模擬實際物理過程,故解決問題與實際非常符合,可以得到很圓滿的結果。當所要求解的問題是某種事件出現的概率,或者是某個隨機變量的期望值時,它們可以通過某種“試驗”的方法,得到這種事件出現的頻率,或者這個隨機變數的平均值,並用它們作為問題的解。這就是蒙特卡羅方法的基本思想。蒙特卡羅方法通過抓住事物運動的幾何數量和幾何特徵,利用數學方法來加以模擬,即進行一種數字模擬實驗。

蒙塔卡洛模擬有很多種方法,今天,給大家介紹的方法叫做幾何布朗運動(GBM),它的數學定義如下:

dSt=μtStdt+σtStdz

其中,St 代表價格

μt 代表瞬時漂移項

σt 代表瞬時波動率

dz 代表服從均值為0,方差為dt的正態隨機變量

即dz~ N(0,dt)

簡單起見,我們還可以把上述公式寫成如下這樣:

市場隨機遊走和蒙特卡洛分析法

接下來,我們就結合真實數據來給大家講講蒙特卡洛模擬到底是怎麼一回事。

我們選取倫敦現銀2016年7月22日到2016年8月22日每日收盤價的數據,得下圖:

市場隨機遊走和蒙特卡洛分析法

其中紅線代表真實價格走勢,其餘代表根據上述公式模擬出來的走勢線,其中我們假設μ=0,σ=0.1,由於總共22個交易日,每條模擬線代表22個交易日,也就有22個獨立同分布的ε,?t=1/22,S0=19.619為7月22日的收盤價,如果我們進行了1000次模擬,也就會有1000條模擬線(這裡為了美觀就不畫出了),所以我們會有1000個通過蒙特卡洛模擬出來的2016年8月22日的收盤價,我們取一個均值,得到8月22日模擬收盤價為19.604,而8月22日真實的收盤價為18.889,可以看出還是比較接近真實價格的,但不是很精確,原因如下,真實的走勢的漂移項和波動率是會隨時間變化的,並且收益也不服從正態分佈,往往呈現厚尾分佈,對此,我們可以採用蒙特卡洛模擬中的另一個方法---bootstrap,它與GBM的不同之處在於隨機數的產生機制不同,bootstrap的隨機數是基於歷史數據得出的假設分佈產生的。

什麼是蒙特卡洛樹搜索

蒙特卡洛樹搜索(MCTS)是一種在人工智能問題中進行決策優化的方法,通常是對於那些在組合遊戲中需要移動規劃的部分。蒙特卡洛樹搜索將隨機模擬的通用性與樹搜索的準確性進行了結合。

馮·諾依曼於 1928 年提出的極小化極大理論(minimax)為之後的對抗性樹搜索方法鋪平了道路,而這些在計算機科學和人工智能剛剛成立的時候就成為了決策理論的根基。蒙特卡洛方法通過隨機採樣解決問題,隨後在 20 世紀 40 年代,被作為了一種解決模糊定義問題而不適合直接樹搜索的方法。Rémi Coulomb 於 2006 年將這兩種方法結合,來提供一種新的方法作為圍棋中的移動規劃,如今稱為蒙特卡洛樹搜索(MCTS)。

近期由於它在計算機圍棋上的成果和對某些難題具有解決的潛力,科研領域對於 MCTS 的研究興趣快速上升。它的應用領域已不止於博弈,而且理論上 MCTS 可以應用於任何能夠以 {狀態,動作} 形式描述,通過模擬來預測結果的領域。

基本算法

最基本的 MCTS 算法本身就是簡單的:根據模擬出來的結果,建立一棵節點相連的搜索樹。整個過程可以被分解為如下幾步:

市場隨機遊走和蒙特卡洛分析法

1.選擇

從根節點 R 開始,遞歸地選擇最優子節點(下面會解釋)直到一個葉子節點 L 為止。

2.擴展

如果 L 不是終止節點(就是說,博弈尚未結束)那麼就創建一個或多個子節點,並選擇其中一個 C。

3.模擬

從 C 執行一次模擬推出(譯者注:通常稱為 playout 或 rollout)直到得到一個結果。

4.反向傳播

每一個節點必須包含兩部分重要的信息:基於模擬所得結果的估值,和被訪問的次數

在最簡單和最大化利用內存的執行中,MCTS 會在每次迭代中添加一個子節點。注意,在某些情況下每次迭代增加多個子節點可能會更有益。

節點的選擇

老虎機與 UCB 算法

在樹遞歸地向下發展時的節點的選擇,是取決於該節點是否最大化了某些數量,類似於多臂老虎機問題:即玩家每回合都要選擇那個能夠帶給他們最大化收益的老虎機。接下來的上限置信區間(Upper Confidence Bounds, UCB)公式通常會被用到:

市場隨機遊走和蒙特卡洛分析法

其中 vi 是節點的估值,ni 是節點被訪問的次數而 N 是它的父親節點被訪問的總次數。C 是可調的偏置參數。

利用性 vs 探索性

UCB 公式在利用性與探索性之間提供了不錯的平衡,鼓勵訪問未曾訪問過的節點。獎勵是基於隨機模擬的,所以節點在變的可靠之前必須被訪問一定的次數。MCTS 估值往往在開始的表現會非常不可靠,但隨著足夠多的時間而逐漸向可靠的估值收斂,若有無限多的時間則可以收斂至最優估值。

蒙特卡洛樹搜索(MCTS)與上限置信區間樹(UCT)

Kocsis 和 Szepervari (2006)首先利用 UCB 提出了一個完整的 MCTS 算法並命名為上限置信區間樹(UCT)的方法。這個方法正是如今被大多數人採用於 MCTS 的實施中的算法。

UCT 可以被描述為 MCTS 的一種特殊情況,即:

UCT = MCTS + UCB

優點

MCTS最大的好處就在於它無需知道該博弈(或者其他問題領域)的任何戰術或策略。這個算法可以無需知道任何該博弈的信息(除了可進行的動作和終止條件)。這意味著任何的 MCTS 的實現方案可以在僅僅修改一小部分後便移植到其他的博弈中,對於所有的博弈問題來說 MCTS 的這個特性也是一種隱形的好處。

非對稱樹增長(Asymmetric Tree Growth)

MCTS 表現出一種非對稱的樹增長來適應搜索空間的拓撲。算法會訪問其更‘感興趣’的節點,並將搜索空間集中於更加相關的部分。

市場隨機遊走和蒙特卡洛分析法

這使得 MCTS 很適合於擁有大量影響因素的博弈中,如 19x19 大小的圍棋。如此巨大的空間組合往往會使得標準的深度或廣度搜索方法出現問題,但 MCTS 的適應特性意味著它會(最終)找到那些更為優秀的移動(動作)並專注於那裡的搜索。

優雅的退出

算法可以在任意時間中止並返回當前最佳的評估策略。建立的搜索樹可以被拋棄或為以後的複用而保留。

易用性

算法非常易於實現,可見教程。(譯者注:python 及 java 源碼及相關知識點可在此找到)

缺點

MCTS 雖然只有少量缺陷,但他們可以很嚴重(影響樹搜索的效果)。

博弈強度

MCTS 算法,在最基本的形式下,即使針對中等複雜度的博弈也有可能在一定時間內不能夠給出很好的決策。這很可能是由於決策空間的絕對大小和關鍵樹節點在沒有被訪問足夠多的次數的情況下不能夠給出可靠的估值的原因。幸運的是,算法的表現可以通過一些技巧來提升。


分享到:


相關文章: